@sentio/sdk-bundle 2.41.5 → 2.41.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/lib/aptos/builtin/0x1.js +1 -1
  2. package/lib/aptos/builtin/0x3.js +1 -1
  3. package/lib/aptos/builtin/index.js +1 -1
  4. package/lib/aptos/ext/index.js +1 -1
  5. package/lib/aptos/index.js +1 -1
  6. package/lib/btc/index.js +1 -1
  7. package/lib/{chunk-XYISSQEU.js → chunk-BX4KG2ZR.js} +2 -2
  8. package/lib/{chunk-LCUGDGMN.js → chunk-CCQHM2XD.js} +2 -2
  9. package/lib/{chunk-KY5AFKV5.js → chunk-DZVTAQNC.js} +2 -2
  10. package/lib/{chunk-MGIOFRXM.js → chunk-FFA6VNQP.js} +2 -2
  11. package/lib/{chunk-X7K74U6O.js → chunk-HITSEVEI.js} +2 -2
  12. package/lib/{chunk-3C4YSA42.js → chunk-HR3CXVT4.js} +2 -2
  13. package/lib/{chunk-4ACVSPIF.js → chunk-JDW2L37R.js} +2 -2
  14. package/lib/{chunk-RDBX2EIJ.js → chunk-L2WN35BE.js} +2 -2
  15. package/lib/{chunk-CJVPUD6U.js → chunk-LL6GKXEO.js} +2 -2
  16. package/lib/{chunk-BVDLKPY7.js → chunk-OU2BCESY.js} +2 -2
  17. package/lib/{chunk-PSYYSAEX.js → chunk-QC6KHXJD.js} +2 -2
  18. package/lib/{chunk-XZRRBRMQ.js → chunk-RSGRT2DV.js} +2 -2
  19. package/lib/{chunk-VEVTWG5S.js → chunk-RT6IFBHE.js} +2 -2
  20. package/lib/{chunk-CSVBDVD7.js → chunk-RWX5CV5W.js} +2 -2
  21. package/lib/{chunk-TW3ZXDJC.js → chunk-SBU7XQ42.js} +4 -4
  22. package/lib/{chunk-TW3ZXDJC.js.map → chunk-SBU7XQ42.js.map} +1 -1
  23. package/lib/{chunk-3KK6D6YO.js → chunk-WWVBF7HH.js} +2 -2
  24. package/lib/{chunk-VM5J6G66.js → chunk-YCDDNR5A.js} +2 -2
  25. package/lib/{chunk-4QS3NUUW.js → chunk-ZFXV2FHI.js} +2 -2
  26. package/lib/{chunk-JTQMVYTS.js → chunk-ZMRHWH7D.js} +11 -11
  27. package/lib/{chunk-JTQMVYTS.js.map → chunk-ZMRHWH7D.js.map} +1 -1
  28. package/lib/core/index.js +1 -1
  29. package/lib/eth/builtin/eacaggregatorproxy.js +1 -1
  30. package/lib/eth/builtin/erc1155.js +1 -1
  31. package/lib/eth/builtin/erc20.js +1 -1
  32. package/lib/eth/builtin/erc721.js +1 -1
  33. package/lib/eth/builtin/index.js +1 -1
  34. package/lib/eth/builtin/weth9.js +1 -1
  35. package/lib/eth/codegen/index.js +1 -1
  36. package/lib/eth/index.js +1 -1
  37. package/lib/fuel/codegen/index.js +1 -1
  38. package/lib/fuel/codegen/index.js.map +1 -1
  39. package/lib/fuel/index.js +1 -1
  40. package/lib/index.js +1 -1
  41. package/lib/move/index.js +1 -1
  42. package/lib/solana/builtin/index.js +1 -1
  43. package/lib/solana/index.js +1 -1
  44. package/lib/stark/index.js +1 -1
  45. package/lib/store/index.js +1 -1
  46. package/lib/sui/builtin/0x1.js +1 -1
  47. package/lib/sui/builtin/0x2.js +1 -1
  48. package/lib/sui/builtin/0x3.js +1 -1
  49. package/lib/sui/builtin/index.js +1 -1
  50. package/lib/sui/ext/index.js +1 -1
  51. package/lib/sui/index.js +1 -1
  52. package/lib/testing/index.js +1 -1
  53. package/lib/utils/index.js +1 -1
  54. package/package.json +2 -2
  55. /package/lib/{chunk-XYISSQEU.js.map → chunk-BX4KG2ZR.js.map} +0 -0
  56. /package/lib/{chunk-LCUGDGMN.js.map → chunk-CCQHM2XD.js.map} +0 -0
  57. /package/lib/{chunk-KY5AFKV5.js.map → chunk-DZVTAQNC.js.map} +0 -0
  58. /package/lib/{chunk-MGIOFRXM.js.map → chunk-FFA6VNQP.js.map} +0 -0
  59. /package/lib/{chunk-X7K74U6O.js.map → chunk-HITSEVEI.js.map} +0 -0
  60. /package/lib/{chunk-3C4YSA42.js.map → chunk-HR3CXVT4.js.map} +0 -0
  61. /package/lib/{chunk-4ACVSPIF.js.map → chunk-JDW2L37R.js.map} +0 -0
  62. /package/lib/{chunk-RDBX2EIJ.js.map → chunk-L2WN35BE.js.map} +0 -0
  63. /package/lib/{chunk-CJVPUD6U.js.map → chunk-LL6GKXEO.js.map} +0 -0
  64. /package/lib/{chunk-BVDLKPY7.js.map → chunk-OU2BCESY.js.map} +0 -0
  65. /package/lib/{chunk-PSYYSAEX.js.map → chunk-QC6KHXJD.js.map} +0 -0
  66. /package/lib/{chunk-XZRRBRMQ.js.map → chunk-RSGRT2DV.js.map} +0 -0
  67. /package/lib/{chunk-VEVTWG5S.js.map → chunk-RT6IFBHE.js.map} +0 -0
  68. /package/lib/{chunk-CSVBDVD7.js.map → chunk-RWX5CV5W.js.map} +0 -0
  69. /package/lib/{chunk-3KK6D6YO.js.map → chunk-WWVBF7HH.js.map} +0 -0
  70. /package/lib/{chunk-VM5J6G66.js.map → chunk-YCDDNR5A.js.map} +0 -0
  71. /package/lib/{chunk-4QS3NUUW.js.map → chunk-ZFXV2FHI.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.1/node_modules/@fuel-ts/versions/src/lib/getBuiltinVersions.ts","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.1/node_modules/@fuel-ts/versions/src/lib/semver.ts","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.1/node_modules/@fuel-ts/versions/src/lib/checkFuelCoreVersionCompatibility.ts","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.1/node_modules/@fuel-ts/versions/src/index.ts","../../../node_modules/.pnpm/@fuel-ts+errors@0.94.1/node_modules/@fuel-ts/errors/src/error-codes.ts","../../../node_modules/.pnpm/@fuel-ts+errors@0.94.1/node_modules/@fuel-ts/errors/src/fuel-error.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.1/node_modules/@fuel-ts/math/src/bn.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.1/node_modules/@fuel-ts/math/src/configs.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.1/node_modules/@fuel-ts/math/src/decimal.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.1/node_modules/@fuel-ts/math/src/functional.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.1/node_modules/@fuel-ts/math/src/math.ts","../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/capitalizeString.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/chunkAndPadBytes.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/arrayify.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/concat.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/hexlify.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/normalizeString.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/date-time.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/sleep.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/defaultSnapshots/chainConfig.json","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/defaultSnapshots/metadata.json","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/defaultSnapshots/stateConfig.json","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/defaultSnapshotConfigs.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/isDefined.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/base58.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/dataSlice.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/toUtf8Bytes.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/toUtf8String.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/utils/bytecode.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.1/node_modules/@fuel-ts/utils/src/index.ts","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_cloneRegExp.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isPlaceholder.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry1.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/type.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_clone.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/clone.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_identity.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/identity.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry2.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_arrayFromIterator.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_includesWith.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_functionName.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_has.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_objectIs.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isArguments.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/keys.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_equals.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/equals.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_indexOf.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_includes.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_Set.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isArray.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isTransformer.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_dispatchable.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xfBase.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xuniqBy.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/uniqBy.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/uniq.js"],"sourcesContent":["(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import type { Versions } from './types';\n\nexport function getBuiltinVersions(): Versions {\n return {\n FORC: '0.63.1',\n FUEL_CORE: '0.33.0',\n FUELS: '0.94.1',\n };\n}\n","function parseVersion(version: string): { major: number; minor: number; patch: number } {\n const [major, minor, patch] = version.split('.').map((v) => parseInt(v, 10));\n return { major, minor, patch };\n}\n\nfunction versionDiffs(\n version1: string,\n version2: string\n): { major: number; minor: number; patch: number; fullVersionDiff: number } {\n const semver1 = parseVersion(version1);\n const semver2 = parseVersion(version2);\n const major = semver1.major - semver2.major;\n const minor = semver1.minor - semver2.minor;\n const patch = semver1.patch - semver2.patch;\n return {\n major,\n minor,\n patch,\n fullVersionDiff: major || minor || patch,\n };\n}\n\nexport function gt(version1: string, version2: string): boolean {\n const { fullVersionDiff } = versionDiffs(version1, version2);\n return fullVersionDiff > 0;\n}\n\nexport function eq(version1: string, version2: string): boolean {\n const { fullVersionDiff } = versionDiffs(version1, version2);\n return fullVersionDiff === 0;\n}\n\nexport function majorEq(version1: string, version2: string): boolean {\n const { major } = versionDiffs(version1, version2);\n return major === 0;\n}\n\nexport function minorEq(version1: string, version2: string): boolean {\n const { minor } = versionDiffs(version1, version2);\n return minor === 0;\n}\n\nexport function patchEq(version1: string, version2: string): boolean {\n const { patch } = versionDiffs(version1, version2);\n return patch === 0;\n}\n","import { getBuiltinVersions } from './getBuiltinVersions';\nimport { majorEq, minorEq, patchEq } from './semver';\n\nexport function checkFuelCoreVersionCompatibility(networkVersion: string) {\n const { FUEL_CORE: supportedVersion } = getBuiltinVersions();\n\n if (/^\\d+\\.\\d+\\.\\d+\\D+/m.test(networkVersion)) {\n // eslint-disable-next-line no-console\n console.warn(`You're running against an unreleased fuel-core version: ${networkVersion}. Things may work as expected, but it's not guaranteed. Please use a released version. \nThis unreleased fuel-core build may include features and updates not yet supported by this version of the TS-SDK.`);\n }\n\n return {\n supportedVersion,\n isMajorSupported: majorEq(networkVersion, supportedVersion),\n isMinorSupported: minorEq(networkVersion, supportedVersion),\n isPatchSupported: patchEq(networkVersion, supportedVersion),\n };\n}\n","/*\n 1) Variables\n ------------\n `FUELS` — comes from `/packages/fuels/package.json`\n `FUEL_CORE` — comes from `/internal/fuel-core/VERSION`\n `FORC` — comes from `/internal/forc/VERSION`\n\n 3) Pre Build\n ------------\n There's a `prebuild` script in:\n - packages/versions/package.json\n\n Before build, it will call this file:\n - packages/versions/scripts/replaceVersions.ts\n\n Which will replace static versions at:\n - packages/versions/src/lib/getBuiltinVersions.ts\n\n If no env variables are set, it uses the current versions\n from the original locations mentioned in the 1st step.\n\n 3) CI\n ------------\n As part of the CI release (1) routine, the changes made\n to the versions package by the `prebuild` routine will\n be committed by the same script (2) that handles the\n docs versioning.\n\n - (1) <repoRoot>/.github/workflows/release.yaml\n - (2) <repoRoot>/changeset-version-with-docs.ts\n\n 4) Build\n ------------\n By the time we get to the `build` step, everything is in\n place already and ready to be built and released.\n*/\n\nimport { getBuiltinVersions } from './lib/getBuiltinVersions';\n\nexport const versions = getBuiltinVersions();\n\nexport * from './lib/types';\nexport * from './lib/checkFuelCoreVersionCompatibility';\n","/**\n * Represents the different error codes thrown by the SDK\n */\nexport enum ErrorCode {\n // abi\n NO_ABIS_FOUND = 'no-abis-found',\n ABI_TYPES_AND_VALUES_MISMATCH = 'abi-types-and-values-mismatch',\n ABI_MAIN_METHOD_MISSING = 'abi-main-method-missing',\n INVALID_COMPONENT = 'invalid-component',\n CONFIGURABLE_NOT_FOUND = 'configurable-not-found',\n TYPE_NOT_FOUND = 'type-not-found',\n LOG_TYPE_NOT_FOUND = 'log-type-not-found',\n TYPE_NOT_SUPPORTED = 'type-not-supported',\n INVALID_DECODE_VALUE = 'invalid-decode-value',\n JSON_ABI_ERROR = 'json-abi-error',\n TYPE_ID_NOT_FOUND = 'type-id-not-found',\n BIN_FILE_NOT_FOUND = 'bin-file-not-found',\n CODER_NOT_FOUND = 'coder-not-found',\n INVALID_DATA = 'invalid-data',\n FUNCTION_NOT_FOUND = 'function-not-found',\n UNSUPPORTED_ENCODING_VERSION = 'unsupported-encoding-version',\n TIMEOUT_EXCEEDED = 'timeout-exceeded',\n CONFIG_FILE_NOT_FOUND = 'config-file-not-found',\n CONFIG_FILE_ALREADY_EXISTS = 'config-file-already-exists',\n WORKSPACE_NOT_DETECTED = 'workspace-not-detected',\n\n // address\n INVALID_BECH32_ADDRESS = 'invalid-bech32-address',\n INVALID_EVM_ADDRESS = 'invalid-evm-address',\n INVALID_B256_ADDRESS = 'invalid-b256-address',\n\n // provider\n CHAIN_INFO_CACHE_EMPTY = 'chain-info-cache-empty',\n NODE_INFO_CACHE_EMPTY = 'node-info-cache-empty',\n MISSING_PROVIDER = 'missing-provider',\n INVALID_PROVIDER = 'invalid-provider',\n CONNECTION_REFUSED = 'connection-refused',\n\n // wallet\n INVALID_PUBLIC_KEY = 'invalid-public-key',\n WALLET_MANAGER_ERROR = 'wallet-manager-error',\n HD_WALLET_ERROR = 'hd-wallet-error',\n MISSING_CONNECTOR = 'missing-connector',\n\n // errors\n PARSE_FAILED = 'parse-failed',\n ENCODE_ERROR = 'encode-error',\n DECODE_ERROR = 'decode-error',\n ENV_DEPENDENCY_MISSING = 'env-dependency-missing',\n INVALID_TTL = 'invalid-ttl',\n INVALID_INPUT_PARAMETERS = 'invalid-input-parameters',\n NOT_IMPLEMENTED = 'not-implemented',\n NOT_SUPPORTED = 'not-supported',\n CONVERTING_FAILED = 'converting-error',\n ELEMENT_NOT_FOUND = 'element-not-found',\n MISSING_REQUIRED_PARAMETER = 'missing-required-parameter',\n INVALID_REQUEST = 'invalid-request',\n INVALID_TRANSFER_AMOUNT = 'invalid-transfer-amount',\n NOT_ENOUGH_FUNDS = 'not-enough-funds',\n\n // crypto\n INVALID_CREDENTIALS = 'invalid-credentials',\n HASHER_LOCKED = 'hasher-locked',\n\n // transaction\n GAS_PRICE_TOO_LOW = 'gas-price-too-low',\n GAS_LIMIT_TOO_LOW = 'gas-limit-too-low',\n MAX_FEE_TOO_LOW = 'max-fee-too-low',\n TRANSACTION_NOT_FOUND = 'transaction-not-found',\n TRANSACTION_FAILED = 'transaction-failed',\n INVALID_CONFIGURABLE_CONSTANTS = 'invalid-configurable-constants',\n INVALID_TRANSACTION_INPUT = 'invalid-transaction-input',\n INVALID_TRANSACTION_OUTPUT = 'invalid-transaction-output',\n INVALID_TRANSACTION_STATUS = 'invalid-transaction-status',\n UNSUPPORTED_TRANSACTION_TYPE = 'unsupported-transaction-type',\n TRANSACTION_ERROR = 'transaction-error',\n INVALID_POLICY_TYPE = 'invalid-policy-type',\n DUPLICATED_POLICY = 'duplicated-policy',\n TRANSACTION_SQUEEZED_OUT = 'transaction-squeezed-out',\n CONTRACT_SIZE_EXCEEDS_LIMIT = 'contract-size-exceeds-limit',\n INVALID_CHUNK_SIZE_MULTIPLIER = 'invalid-chunk-size-multiplier',\n MAX_INPUTS_EXCEEDED = 'max-inputs-exceeded',\n FUNDS_TOO_LOW = 'funds-too-low',\n MAX_OUTPUTS_EXCEEDED = 'max-outputs-exceeded',\n\n // receipt\n INVALID_RECEIPT_TYPE = 'invalid-receipt-type',\n\n // mnemonic\n INVALID_WORD_LIST = 'invalid-word-list',\n INVALID_MNEMONIC = 'invalid-mnemonic',\n INVALID_ENTROPY = 'invalid-entropy',\n INVALID_SEED = 'invalid-seed',\n INVALID_CHECKSUM = 'invalid-checksum',\n\n // wallet / account\n INVALID_PASSWORD = 'invalid-password',\n ACCOUNT_REQUIRED = 'account-required',\n UNLOCKED_WALLET_REQUIRED = 'unlocked-wallet-required',\n\n // chain\n ERROR_BUILDING_BLOCK_EXPLORER_URL = 'error-building-block-explorer-url',\n\n // docs\n VITEPRESS_PLUGIN_ERROR = 'vitepress-plugin-error',\n\n // script\n SCRIPT_REVERTED = 'script-reverted',\n SCRIPT_RETURN_INVALID_TYPE = 'script-return-invalid-type',\n\n // graphql\n STREAM_PARSING_ERROR = 'stream-parsing-error',\n\n // launchNode\n NODE_LAUNCH_FAILED = 'node-launch-failed',\n\n // Unknown\n UNKNOWN = 'unknown',\n}\n","import { versions } from '@fuel-ts/versions';\n\nimport { ErrorCode } from './error-codes';\n\nexport class FuelError extends Error {\n static readonly CODES = ErrorCode;\n readonly VERSIONS = versions;\n readonly metadata: Record<string, unknown>;\n readonly rawError: unknown;\n\n static parse(e: unknown) {\n const error = e as FuelError;\n\n if (error.code === undefined) {\n throw new FuelError(\n ErrorCode.PARSE_FAILED,\n \"Failed to parse the error object. The required 'code' property is missing.\"\n );\n }\n\n const enumValues = Object.values(ErrorCode);\n const codeIsKnown = enumValues.includes(error.code);\n\n if (!codeIsKnown) {\n throw new FuelError(\n ErrorCode.PARSE_FAILED,\n `Unknown error code: ${error.code}. Accepted codes: ${enumValues.join(', ')}.`\n );\n }\n\n return new FuelError(error.code, error.message);\n }\n\n code: ErrorCode;\n\n constructor(\n code: ErrorCode,\n message: string,\n metadata: Record<string, unknown> = {},\n rawError: unknown = {}\n ) {\n super(message);\n this.code = code;\n this.name = 'FuelError';\n this.metadata = metadata;\n this.rawError = rawError;\n }\n\n toObject() {\n const { code, name, message, metadata, VERSIONS, rawError } = this;\n return { code, name, message, metadata, VERSIONS, rawError };\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport BnJs from 'bn.js';\n\nimport { DEFAULT_DECIMAL_UNITS, DEFAULT_MIN_PRECISION, DEFAULT_PRECISION } from './configs';\nimport { toFixed } from './decimal';\nimport type { FormatConfig } from './types';\n\ntype CompareResult = -1 | 0 | 1;\nexport type BNInput = number | string | number[] | Uint8Array | Buffer | BnJs;\n\ninterface BNHelper {\n caller(v: BNInput, methodName: string): BN | boolean | CompareResult;\n toHex: (bytesPadding?: number) => string;\n toBytes: (bytesPadding?: number) => Uint8Array;\n toJSON: () => string;\n}\ninterface BNInputOverrides {\n add: (v: BNInput) => BN;\n pow: (v: BNInput) => BN;\n sub: (v: BNInput) => BN;\n div: (v: BNInput) => BN;\n mul: (v: BNInput) => BN;\n mod: (v: BNInput) => BN;\n divRound: (v: BNInput) => BN;\n lt: (v: BNInput) => boolean;\n lte: (v: BNInput) => boolean;\n gt: (v: BNInput) => boolean;\n gte: (v: BNInput) => boolean;\n eq: (v: BNInput) => boolean;\n cmp: (v: BNInput) => CompareResult;\n}\ninterface BNOverrides {\n sqr: () => BN;\n neg: () => BN;\n abs: () => BN;\n toTwos: (width: number) => BN;\n fromTwos: (width: number) => BN;\n}\ninterface BNHiddenTypes {\n mulTo: (num: BN, out: BN) => BN;\n divmod: (num: BNInput, mode?: string, positive?: boolean) => { mod: BN; div: BN };\n}\ntype BNInputOverridesKeys = keyof BNInputOverrides;\n\nexport class BN extends BnJs implements BNInputOverrides, BNHiddenTypes, BNHelper, BNOverrides {\n MAX_U64 = '0xFFFFFFFFFFFFFFFF';\n\n constructor(value?: BNInput | null, base?: number | 'hex', endian?: BnJs.Endianness) {\n let bnValue = value;\n let bnBase = base;\n\n if (BN.isBN(value)) {\n bnValue = value.toArray();\n }\n // trim '0x' from hex strings as BN doesn't support it - https://github.com/ChainSafe/web3.js/issues/3847\n else if (typeof value === 'string' && value.slice(0, 2) === '0x') {\n bnValue = value.substring(2);\n bnBase = base || 'hex';\n }\n\n super(bnValue == null ? 0 : bnValue, bnBase, endian);\n }\n\n // ANCHOR: HELPERS\n // make sure we always include `0x` in hex strings\n toString(base?: number | 'hex', length?: number) {\n const output = super.toString(base, length);\n\n if (base === 16 || base === 'hex') {\n return `0x${output}`;\n }\n\n return output;\n }\n\n toHex(bytesPadding?: number): string {\n const bytes = bytesPadding || 0;\n const bytesLength = bytes * 2;\n\n if (this.isNeg()) {\n throw new FuelError(ErrorCode.CONVERTING_FAILED, 'Cannot convert negative value to hex.');\n }\n if (bytesPadding && this.byteLength() > bytesPadding) {\n throw new FuelError(\n ErrorCode.CONVERTING_FAILED,\n `Provided value ${this} is too large. It should fit within ${bytesPadding} bytes.`\n );\n }\n\n return this.toString(16, bytesLength);\n }\n\n toBytes(bytesPadding?: number): Uint8Array {\n if (this.isNeg()) {\n throw new FuelError(ErrorCode.CONVERTING_FAILED, 'Cannot convert negative value to bytes.');\n }\n\n return Uint8Array.from(this.toArray(undefined, bytesPadding));\n }\n\n toJSON(): string {\n return this.toString(16);\n }\n\n valueOf(): string {\n return this.toString();\n }\n\n format(options?: FormatConfig): string {\n const {\n units = DEFAULT_DECIMAL_UNITS,\n precision = DEFAULT_PRECISION,\n minPrecision = DEFAULT_MIN_PRECISION,\n } = options || {};\n\n const formattedUnits = this.formatUnits(units);\n const formattedFixed = toFixed(formattedUnits, { precision, minPrecision });\n\n // increase precision if formatted is zero, but has more numbers out of precision\n if (!parseFloat(formattedFixed)) {\n const [, originalDecimals = '0'] = formattedUnits.split('.');\n const firstNonZero = originalDecimals.match(/[1-9]/);\n\n if (firstNonZero && firstNonZero.index && firstNonZero.index + 1 > precision) {\n const [valueUnits = '0'] = formattedFixed.split('.');\n return `${valueUnits}.${originalDecimals.slice(0, firstNonZero.index + 1)}`;\n }\n }\n\n return formattedFixed;\n }\n\n formatUnits(units: number = DEFAULT_DECIMAL_UNITS): string {\n const valueUnits = this.toString().slice(0, units * -1);\n const valueDecimals = this.toString().slice(units * -1);\n const length = valueDecimals.length;\n const defaultDecimals = Array.from({ length: units - length })\n .fill('0')\n .join('');\n const integerPortion = valueUnits ? `${valueUnits}.` : '0.';\n\n return `${integerPortion}${defaultDecimals}${valueDecimals}`;\n }\n // END ANCHOR: HELPERS\n\n // ANCHOR: OVERRIDES to accept better inputs\n add(v: BNInput): BN {\n return this.caller(v, 'add') as BN;\n }\n\n pow(v: BNInput): BN {\n return this.caller(v, 'pow') as BN;\n }\n\n sub(v: BNInput): BN {\n return this.caller(v, 'sub') as BN;\n }\n\n div(v: BNInput): BN {\n return this.caller(v, 'div') as BN;\n }\n\n mul(v: BNInput): BN {\n return this.caller(v, 'mul') as BN;\n }\n\n mod(v: BNInput): BN {\n return this.caller(v, 'mod') as BN;\n }\n\n divRound(v: BNInput): BN {\n return this.caller(v, 'divRound') as BN;\n }\n\n lt(v: BNInput): boolean {\n return this.caller(v, 'lt') as boolean;\n }\n\n lte(v: BNInput): boolean {\n return this.caller(v, 'lte') as boolean;\n }\n\n gt(v: BNInput): boolean {\n return this.caller(v, 'gt') as boolean;\n }\n\n gte(v: BNInput): boolean {\n return this.caller(v, 'gte') as boolean;\n }\n\n eq(v: BNInput): boolean {\n return this.caller(v, 'eq') as boolean;\n }\n\n cmp(v: BNInput): CompareResult {\n return this.caller(v, 'cmp') as CompareResult;\n }\n // END ANCHOR: OVERRIDES to accept better inputs\n\n // ANCHOR: OVERRIDES to output our BN type\n sqr(): BN {\n return new BN(super.sqr().toArray());\n }\n\n neg(): BN {\n return new BN(super.neg().toArray());\n }\n\n abs(): BN {\n return new BN(super.abs().toArray());\n }\n\n toTwos(width: number): BN {\n return new BN(super.toTwos(width).toArray());\n }\n\n fromTwos(width: number): BN {\n return new BN(super.fromTwos(width).toArray());\n }\n // END ANCHOR: OVERRIDES to output our BN type\n\n // ANCHOR: OVERRIDES to avoid losing references\n caller(v: BNInput, methodName: BNInputOverridesKeys): BN | boolean | CompareResult {\n const output = super[methodName](new BN(v));\n\n if (BN.isBN(output)) {\n return new BN(output.toArray());\n }\n\n if (typeof output === 'boolean') {\n return output as boolean;\n }\n\n return output as CompareResult;\n }\n\n clone() {\n return new BN(this.toArray());\n }\n\n mulTo(num: BN, out: BN) {\n const output: BnJs = (new BnJs(this.toArray()) as BN).mulTo(num, out);\n\n return new BN(output.toArray());\n }\n\n egcd(p: BnJs) {\n const { a, b, gcd } = new BnJs(this.toArray()).egcd(p);\n\n return {\n a: new BN(a.toArray()),\n b: new BN(b.toArray()),\n gcd: new BN(gcd.toArray()),\n };\n }\n\n divmod(num: BNInput, mode?: string, positive?: boolean): { mod: BN; div: BN } {\n const { div, mod } = (new BnJs(this.toArray()) as BN).divmod(new BN(num), mode, positive);\n\n return {\n div: new BN(div?.toArray()),\n mod: new BN(mod?.toArray()),\n };\n }\n\n maxU64(): BN {\n return this.gte(this.MAX_U64) ? new BN(this.MAX_U64) : this;\n }\n\n normalizeZeroToOne(): BN {\n return this.isZero() ? new BN(1) : this;\n }\n // END ANCHOR: OVERRIDES to avoid losing references\n}\n\n// functional shortcut to create BN\nexport const bn = (value?: BNInput | null, base?: number | 'hex', endian?: BnJs.Endianness) =>\n new BN(value, base, endian);\n\nbn.parseUnits = (value: string, units: number = DEFAULT_DECIMAL_UNITS): BN => {\n const valueToParse = value === '.' ? '0.' : value;\n const [valueUnits = '0', valueDecimals = '0'] = valueToParse.split('.');\n const length = valueDecimals.length;\n\n if (length > units) {\n throw new FuelError(\n ErrorCode.CONVERTING_FAILED,\n `Decimal can't have more than ${units} digits.`\n );\n }\n\n const decimals = Array.from({ length: units }).fill('0');\n decimals.splice(0, length, valueDecimals);\n const amount = `${valueUnits.replaceAll(',', '')}${decimals.join('')}`;\n return bn(amount);\n};\n","export const DEFAULT_PRECISION = 9;\nexport const DEFAULT_MIN_PRECISION = 3;\nexport const DEFAULT_DECIMAL_UNITS = 9;\n\n// Decimal units on the Fuel Network\nexport const DECIMAL_FUEL = 9;\n\n// Decimal units on the Ethereum network\nexport const DECIMAL_WEI = 18;\nexport const DECIMAL_KWEI = 15;\nexport const DECIMAL_MWEI = 12;\nexport const DECIMAL_GWEI = 9;\n","import { DEFAULT_PRECISION, DEFAULT_MIN_PRECISION } from './configs';\nimport type { ToFixedConfig } from './types';\n\nexport function toFixed(value?: string | number, options?: ToFixedConfig) {\n const { precision = DEFAULT_PRECISION, minPrecision = DEFAULT_MIN_PRECISION } = options || {};\n\n const [valueUnits = '0', valueDecimals = '0'] = String(value || '0.0').split('.');\n const groupRegex = /(\\d)(?=(\\d{3})+\\b)/g;\n const units = valueUnits.replace(groupRegex, '$1,');\n let decimals = valueDecimals.slice(0, precision);\n\n // strip traling zeros limited by minPrecision\n if (minPrecision < precision) {\n const trimmedDecimal = decimals.match(/.*[1-9]{1}/);\n const lastNonZeroIndex = trimmedDecimal?.[0].length || 0;\n const keepChars = Math.max(minPrecision, lastNonZeroIndex);\n decimals = decimals.slice(0, keepChars);\n }\n\n const decimalPortion = decimals ? `.${decimals}` : '';\n return `${units}${decimalPortion}`;\n}\n","import type { BNInput } from './bn';\nimport { bn } from './bn';\nimport type { FormatConfig } from './types';\n\n/**\n * Functional shortcuts\n */\n\n// Shortcut to bn(value).toNumber\nexport function toNumber(value: BNInput): number {\n return bn(value).toNumber();\n}\n\n// Shortcut to bn(value).toHex\nexport function toHex(value: BNInput, bytesPadding?: number): string {\n return bn(value).toHex(bytesPadding);\n}\n\n// Shortcut to bn(value).toBytes\nexport function toBytes(value: BNInput, bytesPadding?: number): Uint8Array {\n return bn(value).toBytes(bytesPadding);\n}\n\n// Shortcut to bn.(value).formatUnits\nexport function formatUnits(value: BNInput, units?: number): string {\n return bn(value).formatUnits(units);\n}\n\n// Shortcut to bn.(value).format\nexport function format(value: BNInput, options?: FormatConfig): string {\n return bn(value).format(options);\n}\n","import type { BN } from './bn';\nimport { bn } from './bn';\nimport type { BigNumberish } from './types';\n\nexport function max(...numbers: Array<BigNumberish>): BN {\n return numbers.reduce<BN>((prev, cur) => (bn(cur).gt(prev) ? bn(cur) : prev), bn(0));\n}\n\nexport function multiply(...numbers: Array<BigNumberish>): BN {\n return bn(Math.ceil(numbers.reduce<BN>((a, b) => bn(a).mul(b), bn(1)).toNumber()));\n}\n","import { createRequire } from 'module';\nvar require = createRequire('/');\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\n// Mediocre shim\nvar Worker;\nvar workerAdd = \";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global\";\ntry {\n Worker = require('worker_threads').Worker;\n}\ncatch (e) {\n}\nvar wk = Worker ? function (c, _, msg, transfer, cb) {\n var done = false;\n var w = new Worker(c + workerAdd, { eval: true })\n .on('error', function (e) { return cb(e, null); })\n .on('message', function (m) { return cb(null, m); })\n .on('exit', function (c) {\n if (c && !done)\n cb(new Error('exited with code ' + c), null);\n });\n w.postMessage(msg, transfer);\n w.terminate = function () {\n done = true;\n return Worker.prototype.terminate.call(w);\n };\n return w;\n} : function (_, __, ___, ____, cb) {\n setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });\n var NOP = function () { };\n return {\n terminate: NOP,\n postMessage: NOP\n };\n};\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","export const capitalizeString = (str: string) => {\n if (!str.length) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n};\n","/**\n * Function to take a byte array and split into chunks of a given size\n *\n * @param bytes - The byte array to chunk\n * @param chunkSize - The size of each chunk\n * @returns An array of byte arrays of a specified size\n */\nexport const chunkAndPadBytes = (bytes: Uint8Array, chunkSize: number): Uint8Array[] => {\n const chunks: Uint8Array[] = [];\n\n for (let offset = 0; offset < bytes.length; offset += chunkSize) {\n const chunk = new Uint8Array(chunkSize);\n chunk.set(bytes.slice(offset, offset + chunkSize));\n chunks.push(chunk);\n }\n\n const lastChunk = chunks[chunks.length - 1];\n const remainingBytes = bytes.length % chunkSize;\n const paddedChunkLength = remainingBytes + ((8 - (remainingBytes % 8)) % 8);\n const newChunk = lastChunk.slice(0, paddedChunkLength);\n chunks[chunks.length - 1] = newChunk;\n\n return chunks;\n};\n","import { FuelError, ErrorCode } from '@fuel-ts/errors';\nimport type { BytesLike } from '@fuel-ts/interfaces';\n\n/**\n * Get a typed Uint8Array from a BytesLike object.\n *\n * @param value - the BytesLike data.\n * @param name - a display name for the error result.\n * @param copy - create a copy of the original data (if applicable).\n * @returns - a typed Uint8Array.\n */\nexport const arrayify = (value: BytesLike, name?: string, copy: boolean = true): Uint8Array => {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n\n if (typeof value === 'string' && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n\n const nameMessage = name ? ` ${name} -` : '';\n const message = `invalid data:${nameMessage} ${value}\\nIf you are attempting to transform a hex value, please make sure it is being passed as a string and wrapped in quotes.`;\n throw new FuelError(ErrorCode.INVALID_DATA, message);\n};\n","import type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\n\n/**\n * Concatenates multiple Uint8Arrays into a single Uint8Array.\n *\n * @param arrays - The arrays to concatenate.\n * @returns - The concatenated array.\n */\nexport const concatBytes = (\n arrays: ReadonlyArray<Uint8Array> | ReadonlyArray<number[]>\n): Uint8Array => {\n const byteArrays = arrays.map((array) => {\n if (array instanceof Uint8Array) {\n return array;\n }\n return Uint8Array.from(array);\n });\n\n const totalSize = byteArrays.reduce((accum, item) => accum + item.length, 0);\n const concatenated = new Uint8Array(totalSize);\n\n byteArrays.reduce((offset, object) => {\n concatenated.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return concatenated;\n};\n\n/**\n * Concatenates multiple BytesLike into a single Uint8Array.\n *\n * @param arrays - The arrays to concatenate.\n * @returns - The concatenated array.\n */\nexport const concat = (arrays: ReadonlyArray<BytesLike>): Uint8Array => {\n const bytes = arrays.map((v) => arrayify(v));\n\n return concatBytes(bytes);\n};\n","import type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\n\nconst HexCharacters: string = '0123456789abcdef';\n\n/**\n * Returns a hex representation of the inputted bytes.\n */\nexport function hexlify(data: BytesLike): string {\n const bytes = arrayify(data);\n\n let result = '0x';\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\n/**\n * Converts `some.string-value` into `SomeStringValue`.\n *\n * Examples:\n * my-simple.test —— MySimpleTest\n * myFile.ts —— MyFileTs\n * my-abi.json —— MyAbiJson\n */\nexport const normalizeString = (str: string): string => {\n const transformations: ((s: string) => string)[] = [\n (s) => s.replace(/\\s+/g, '-'), // spaces to -\n (s) => s.replace(/\\./g, '-'), // dots to -\n (s) => s.replace(/_/g, '-'), // underscore to -\n (s) => s.replace(/-[a-z]/g, (match) => match.slice(-1).toUpperCase()), // delete '-' and capitalize the letter after them\n (s) => s.replace(/-/g, ''), // delete any '-' left\n (s) => s.replace(/^\\d+/, ''), // removes leading digits\n (s) => s[0].toUpperCase() + s.slice(1), // capitalize first letter\n ];\n\n const output = transformations.reduce((s, t) => t(s), str);\n\n if (output === '') {\n const errMsg = `The provided string '${str}' results in an empty output after`.concat(\n ` normalization, therefore, it can't normalize string.`\n );\n throw new FuelError(ErrorCode.PARSE_FAILED, errMsg);\n }\n\n return output;\n};\n","/**\n * Tai64 timestamp.\n */\ntype Tai64Timestamp = string;\n\n/**\n * This constant is used to calculate the offset between the Unix epoch and the TAI64 epoch.\n * It allows for a **rough** conversion between the two time formats.\n *\n * // Value expires on: 28 June 2024\n * {@link https://data.iana.org/time-zones/data/leap-seconds.list}\n * {@link https://github.com/hl2/tai64/blob/master/src/leapSeconds.ts}\n */\nconst TAI64_LEAP_SECONDS: number = 37;\n\n/**\n * Tai64 (Temps Atomique International) is a time format\n *\n * The offset between the Unix epoch and the TAI64 epoch.\n * The TAI64 epoch is 2^62 nanoseconds after the Unix epoch (+ the offset of \"leap seconds\" relevant to the date).\n *\n * {@link https://cr.yp.to/libtai/tai64.html}\n * {@link https://cr.yp.to/proto/tai64.txt}\n */\nconst TAI64_UNIX_OFFSET: bigint = BigInt(2 ** 62) + BigInt(TAI64_LEAP_SECONDS);\n\n/**\n * Converts milliseconds to seconds and vice versa.\n *\n * @param ms - milliseconds to convert\n * @returns seconds\n */\nconst msToSeconds = (ms: number): number => Math.floor(ms / 1000);\n\n/**\n * Converts seconds to milliseconds and vice versa.\n *\n * @param seconds - seconds to convert\n * @returns milliseconds\n */\nconst secondsToMs = (seconds: number): number => seconds * 1000;\n\n/**\n * Converts Tai64 (seconds) time units to UNIX (seconds) time units.\n *\n * @param tai64 - Tai64 timestamp\n * @returns Unix seconds timestamp\n */\nconst tai64ToUnixSeconds = (tai64: Tai64Timestamp): number =>\n Number(BigInt(tai64) - TAI64_UNIX_OFFSET);\n\n/**\n * Converts Unix (seconds) to Tai64 (seconds).\n *\n * @param unixSeconds - unix seconds timestamp\n * @returns Tai64 timestamp\n */\nconst unixSecondsToTai64 = (unixSeconds: number): string =>\n String(BigInt(unixSeconds) + TAI64_UNIX_OFFSET);\n\n/**\n * Helper to convert Tai64 (seconds) time units to UNIX (milliseconds) time units and vice.\n *\n * @param tai64 - Tai64 timestamp\n * @returns Unix milliseconds timestamp\n */\nconst tai64ToUnixMilliseconds = (tai64: Tai64Timestamp): number =>\n secondsToMs(tai64ToUnixSeconds(tai64));\n\n/**\n * This class is used to represent a date and time in the Tai64 format.\n *\n * ```typescript\n * import { DateTime } from 'fuels';\n *\n * // Constants\n * const tai64 = '4611686020108779340';\n * const unixMilliseconds = 1681391398000;\n * const seconds = 1681391398;\n *\n * // Instantiation\n * let date: DateTime = DateTime.now();\n * date = DateTime.fromTai64(tai64);\n * date = DateTime.fromUnixMilliseconds(unixMilliseconds);\n * date = DateTime.fromUnixSeconds(seconds);\n *\n * // Utility functions\n * tai64.toTai64() // '4611686020108779340'\n * milliseconds.toUnixMilliseconds() // 1681391398000\n * seconds.toUnixSeconds() // 1681391398\n *\n * // All date methods are available\n * const now: Date = DateTime.now();\n * now.toISOString(); // '2023-04-13T13:09:58.000Z'\n * now.getTime(); // 1681391398000\n * ```\n */\nexport class DateTime extends Date implements Date {\n static TAI64_NULL: Tai64Timestamp = '';\n\n /**\n * Generates a new DateTime instance from a Tai64 timestamp.\n *\n * @param tai64 - Tai64 timestamp\n * @returns a new DateTime instance\n */\n static fromTai64(tai64: Tai64Timestamp): DateTime {\n return new DateTime(tai64ToUnixMilliseconds(tai64));\n }\n\n /**\n * @param unixMilliseconds - unix milliseconds timestamp\n * @returns a new DateTime instance\n */\n static fromUnixMilliseconds(unixMilliseconds: number): DateTime {\n return new DateTime(unixMilliseconds);\n }\n\n /**\n * @param unixSeconds - unix seconds timestamp\n * @returns a new DateTime instance\n */\n static fromUnixSeconds(unixSeconds: number): DateTime {\n return new DateTime(secondsToMs(unixSeconds));\n }\n\n /**\n * Hide the constructor to prevent direct instantiation.\n */\n private constructor(date: Date | number | string) {\n super(date);\n }\n\n /**\n * Returns the Tai64 timestamp.\n *\n * @returns the Tai64 timestamp\n */\n toTai64(): Tai64Timestamp {\n return unixSecondsToTai64(this.toUnixSeconds());\n }\n\n /**\n * @returns the unix milliseconds timestamp\n */\n toUnixMilliseconds(): number {\n return this.getTime();\n }\n\n /**\n * @returns the unix seconds timestamp\n */\n toUnixSeconds(): number {\n return msToSeconds(this.getTime());\n }\n}\n","export function sleep(time: number) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, time);\n });\n}\n","{\n \"chain_name\": \"local_testnet\",\n \"consensus_parameters\": {\n \"V1\": {\n \"tx_params\": {\n \"V1\": {\n \"max_inputs\": 255,\n \"max_outputs\": 255,\n \"max_witnesses\": 255,\n \"max_gas_per_tx\": 100000000,\n \"max_size\": 262144,\n \"max_bytecode_subsections\": 256\n }\n },\n \"predicate_params\": {\n \"V1\": {\n \"max_predicate_length\": 102400,\n \"max_predicate_data_length\": 102400,\n \"max_message_data_length\": 102400,\n \"max_gas_per_predicate\": 100000000\n }\n },\n \"script_params\": {\n \"V1\": {\n \"max_script_length\": 102400,\n \"max_script_data_length\": 102400\n }\n },\n \"contract_params\": {\n \"V1\": {\n \"contract_max_size\": 262144,\n \"max_storage_slots\": 1760\n }\n },\n \"fee_params\": {\n \"V1\": {\n \"gas_price_factor\": 92,\n \"gas_per_byte\": 63\n }\n },\n \"chain_id\": 0,\n \"gas_costs\": {\n \"V4\": {\n \"add\": 2,\n \"addi\": 2,\n \"and\": 2,\n \"andi\": 2,\n \"bal\": 29,\n \"bhei\": 2,\n \"bhsh\": 2,\n \"burn\": 19976,\n \"cb\": 2,\n \"cfsi\": 2,\n \"div\": 2,\n \"divi\": 2,\n \"eck1\": 1907,\n \"ecr1\": 26135,\n \"eq\": 2,\n \"exp\": 2,\n \"expi\": 2,\n \"flag\": 2,\n \"gm\": 2,\n \"gt\": 2,\n \"gtf\": 13,\n \"ji\": 2,\n \"jmp\": 2,\n \"jne\": 2,\n \"jnei\": 2,\n \"jnzi\": 2,\n \"jmpf\": 2,\n \"jmpb\": 2,\n \"jnzf\": 2,\n \"jnzb\": 2,\n \"jnef\": 2,\n \"jneb\": 2,\n \"lb\": 2,\n \"log\": 102,\n \"lt\": 2,\n \"lw\": 2,\n \"mint\": 18042,\n \"mlog\": 2,\n \"modi\": 2,\n \"mod_op\": 2,\n \"movi\": 2,\n \"mroo\": 4,\n \"mul\": 2,\n \"muli\": 2,\n \"mldv\": 3,\n \"noop\": 1,\n \"not\": 2,\n \"or\": 2,\n \"ori\": 2,\n \"poph\": 3,\n \"popl\": 3,\n \"pshh\": 5,\n \"pshl\": 5,\n \"move_op\": 2,\n \"ret\": 53,\n \"sb\": 2,\n \"sll\": 2,\n \"slli\": 2,\n \"srl\": 2,\n \"srli\": 2,\n \"srw\": 177,\n \"sub\": 2,\n \"subi\": 2,\n \"sw\": 2,\n \"sww\": 17302,\n \"time\": 35,\n \"tr\": 27852,\n \"tro\": 19718,\n \"wdcm\": 2,\n \"wqcm\": 2,\n \"wdop\": 3,\n \"wqop\": 3,\n \"wdml\": 3,\n \"wqml\": 3,\n \"wddv\": 4,\n \"wqdv\": 5,\n \"wdmd\": 8,\n \"wqmd\": 12,\n \"wdam\": 7,\n \"wqam\": 8,\n \"wdmm\": 8,\n \"wqmm\": 8,\n \"xor\": 2,\n \"xori\": 2,\n \"rvrt\": 2,\n \"aloc\": {\n \"HeavyOperation\": {\n \"base\": 2,\n \"gas_per_unit\": 0\n }\n },\n \"bsiz\": {\n \"LightOperation\": {\n \"base\": 17,\n \"units_per_gas\": 790\n }\n },\n \"bldd\": {\n \"LightOperation\": {\n \"base\": 15,\n \"units_per_gas\": 272\n }\n },\n \"cfe\": {\n \"HeavyOperation\": {\n \"base\": 2,\n \"gas_per_unit\": 0\n }\n },\n \"cfei\": {\n \"HeavyOperation\": {\n \"base\": 2,\n \"gas_per_unit\": 0\n }\n },\n \"call\": {\n \"LightOperation\": {\n \"base\": 18190,\n \"units_per_gas\": 5\n }\n },\n \"ccp\": {\n \"LightOperation\": {\n \"base\": 48,\n \"units_per_gas\": 22\n }\n },\n \"croo\": {\n \"LightOperation\": {\n \"base\": 131,\n \"units_per_gas\": 2\n }\n },\n \"csiz\": {\n \"LightOperation\": {\n \"base\": 45,\n \"units_per_gas\": 237\n }\n },\n \"ed19\": {\n \"LightOperation\": {\n \"base\": 45,\n \"units_per_gas\": 237\n }\n },\n \"k256\": {\n \"LightOperation\": {\n \"base\": 37,\n \"units_per_gas\": 3\n }\n },\n \"ldc\": {\n \"LightOperation\": {\n \"base\": 39,\n \"units_per_gas\": 68\n }\n },\n \"logd\": {\n \"LightOperation\": {\n \"base\": 565,\n \"units_per_gas\": 2\n }\n },\n \"mcl\": {\n \"LightOperation\": {\n \"base\": 3,\n \"units_per_gas\": 564\n }\n },\n \"mcli\": {\n \"LightOperation\": {\n \"base\": 3,\n \"units_per_gas\": 560\n }\n },\n \"mcp\": {\n \"LightOperation\": {\n \"base\": 4,\n \"units_per_gas\": 185\n }\n },\n \"mcpi\": {\n \"LightOperation\": {\n \"base\": 9,\n \"units_per_gas\": 455\n }\n },\n \"meq\": {\n \"LightOperation\": {\n \"base\": 3,\n \"units_per_gas\": 766\n }\n },\n \"retd\": {\n \"LightOperation\": {\n \"base\": 485,\n \"units_per_gas\": 3\n }\n },\n \"s256\": {\n \"LightOperation\": {\n \"base\": 42,\n \"units_per_gas\": 3\n }\n },\n \"scwq\": {\n \"HeavyOperation\": {\n \"base\": 21672,\n \"gas_per_unit\": 22146\n }\n },\n \"smo\": {\n \"LightOperation\": {\n \"base\": 44437,\n \"units_per_gas\": 1\n }\n },\n \"srwq\": {\n \"HeavyOperation\": {\n \"base\": 239,\n \"gas_per_unit\": 234\n }\n },\n \"swwq\": {\n \"HeavyOperation\": {\n \"base\": 22724,\n \"gas_per_unit\": 21231\n }\n },\n \"contract_root\": {\n \"LightOperation\": {\n \"base\": 42,\n \"units_per_gas\": 2\n }\n },\n \"state_root\": {\n \"HeavyOperation\": {\n \"base\": 323,\n \"gas_per_unit\": 169\n }\n },\n \"new_storage_per_byte\": 63,\n \"vm_initialization\": {\n \"HeavyOperation\": {\n \"base\": 5254820,\n \"gas_per_unit\": 0\n }\n }\n }\n },\n \"base_asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\",\n \"block_gas_limit\": 100000000,\n \"privileged_address\": \"0000000000000000000000000000000000000000000000000000000000000000\"\n }\n },\n \"consensus\": {\n \"PoA\": {\n \"signing_key\": \"0x94ffcc53b892684acefaebc8a3d4a595e528a8cf664eeb3ef36f1020b0809d0d\"\n }\n }\n}\n","{\n \"chain_config\": \"chainConfig.json\",\n \"table_encoding\": {\n \"Json\": {\n \"filepath\": \"stateConfig.json\"\n }\n }\n}\n","{\n \"coins\": [\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x94ffcc53b892684acefaebc8a3d4a595e528a8cf664eeb3ef36f1020b0809d0d\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09c0b2d1a486c439a87bcba6b46a7a1a23f3897cc83a94521a96da5c23bc58db\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09c0b2d1a486c439a87bcba6b46a7a1a23f3897cc83a94521a96da5c23bc58db\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09c0b2d1a486c439a87bcba6b46a7a1a23f3897cc83a94521a96da5c23bc58db\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x5d99ee966b42cd8fc7bdd1364b389153a9e78b42b7d4a691470674e817888d4e\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x5d99ee966b42cd8fc7bdd1364b389153a9e78b42b7d4a691470674e817888d4e\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000007\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x5d99ee966b42cd8fc7bdd1364b389153a9e78b42b7d4a691470674e817888d4e\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000008\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbdaad6a89e073e177895b3e5a9ccd15806749eda134a6438dae32fc5b6601f3f\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000009\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbdaad6a89e073e177895b3e5a9ccd15806749eda134a6438dae32fc5b6601f3f\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000010\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbdaad6a89e073e177895b3e5a9ccd15806749eda134a6438dae32fc5b6601f3f\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000011\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x95a7aa6cc32743f8706c40ef49a7423b47da763bb4bbc055b1f07254dc729036\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000012\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x95a7aa6cc32743f8706c40ef49a7423b47da763bb4bbc055b1f07254dc729036\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000013\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x95a7aa6cc32743f8706c40ef49a7423b47da763bb4bbc055b1f07254dc729036\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000014\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xcee104acd38b940c8f1c62c6d7ea00a0ad2241d6dee0509a4bf27297508870d3\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000015\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xcee104acd38b940c8f1c62c6d7ea00a0ad2241d6dee0509a4bf27297508870d3\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000016\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xcee104acd38b940c8f1c62c6d7ea00a0ad2241d6dee0509a4bf27297508870d3\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000017\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x7e3626e306588eba79cafab73f0709e55ab8f4bdfe8c8b75034a430fc56ece89\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000018\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x7e3626e306588eba79cafab73f0709e55ab8f4bdfe8c8b75034a430fc56ece89\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000019\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x7e3626e306588eba79cafab73f0709e55ab8f4bdfe8c8b75034a430fc56ece89\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000020\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x1c31df52b6df56407dd95f83082e8beb9cfc9532ac111d5bd8491651d95ba775\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000021\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x1c31df52b6df56407dd95f83082e8beb9cfc9532ac111d5bd8491651d95ba775\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000022\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x1c31df52b6df56407dd95f83082e8beb9cfc9532ac111d5bd8491651d95ba775\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000023\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09dd7a49174d6fcc9f4c6f7942c18060a935ddd03ee69b594189b8c3581276ea\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000024\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09dd7a49174d6fcc9f4c6f7942c18060a935ddd03ee69b594189b8c3581276ea\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000025\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09dd7a49174d6fcc9f4c6f7942c18060a935ddd03ee69b594189b8c3581276ea\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000026\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x86604282dc604481b809845be49667607c470644f6822fc01eb0d22f167e08cf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000027\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x86604282dc604481b809845be49667607c470644f6822fc01eb0d22f167e08cf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000028\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x86604282dc604481b809845be49667607c470644f6822fc01eb0d22f167e08cf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000029\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbca334a06d19db5041c78fe2f465b07be5bec828f38b7796b2877e7d1542c950\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000030\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbca334a06d19db5041c78fe2f465b07be5bec828f38b7796b2877e7d1542c950\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000031\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbca334a06d19db5041c78fe2f465b07be5bec828f38b7796b2877e7d1542c950\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000032\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbd9a1dc8d3ec3521c43f6c2c01611b4d0204c7610204ff0178488c8738a30bd2\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000033\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbd9a1dc8d3ec3521c43f6c2c01611b4d0204c7610204ff0178488c8738a30bd2\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000034\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbd9a1dc8d3ec3521c43f6c2c01611b4d0204c7610204ff0178488c8738a30bd2\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000035\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xb32197cf75efe05bf453c26178139f09b391582065549c1422bc92555ecffb64\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000036\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xb32197cf75efe05bf453c26178139f09b391582065549c1422bc92555ecffb64\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000037\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xb32197cf75efe05bf453c26178139f09b391582065549c1422bc92555ecffb64\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000038\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x3b24509ed4ab3c7959f5c9391c1445c59290cdb5f13d6f780922f376b7029f30\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000039\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x3b24509ed4ab3c7959f5c9391c1445c59290cdb5f13d6f780922f376b7029f30\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000040\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x3b24509ed4ab3c7959f5c9391c1445c59290cdb5f13d6f780922f376b7029f30\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000041\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x77c6f40b7da70d885f68efaad7c661327482a63ea10dcb4271de819438254ae1\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000042\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x77c6f40b7da70d885f68efaad7c661327482a63ea10dcb4271de819438254ae1\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000043\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x77c6f40b7da70d885f68efaad7c661327482a63ea10dcb4271de819438254ae1\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000044\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x6a2c4691c547c43924650dbd30620b184b5fe3fb6dbe5c4446110b08f6f405bf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x6a2c4691c547c43924650dbd30620b184b5fe3fb6dbe5c4446110b08f6f405bf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000046\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x6a2c4691c547c43924650dbd30620b184b5fe3fb6dbe5c4446110b08f6f405bf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000047\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x49075a7538e2c88ebe1926ce4d898198a2a4e790d14512943a9864bc536b3c82\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000048\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x49075a7538e2c88ebe1926ce4d898198a2a4e790d14512943a9864bc536b3c82\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000049\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x49075a7538e2c88ebe1926ce4d898198a2a4e790d14512943a9864bc536b3c82\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n }\n ],\n \"messages\": [\n {\n \"sender\": \"0xc43454aa38dd91f88109a4b7aef5efb96ce34e3f24992fe0f81d233ca686f80f\",\n \"recipient\": \"0x69a2b736b60159b43bb8a4f98c0589f6da5fa3a3d101e8e269c499eb942753ba\",\n \"nonce\": \"0101010101010101010101010101010101010101010101010101010101010101\",\n \"amount\": 18446744073709551615,\n \"data\": \"\",\n \"da_height\": 0\n },\n {\n \"sender\": \"0x69a2b736b60159b43bb8a4f98c0589f6da5fa3a3d101e8e269c499eb942753ba\",\n \"recipient\": \"0xc43454aa38dd91f88109a4b7aef5efb96ce34e3f24992fe0f81d233ca686f80f\",\n \"nonce\": \"0e1ef2963832068b0e1ef2963832068b0e1ef2963832068b0e1ef2963832068b\",\n \"amount\": 12704439083013451934,\n \"data\": \"\",\n \"da_height\": 0\n },\n {\n \"sender\": \"0x22cae5308938e8b4caf217b6464884f6331eff05e81468df8ccd08126effc8d0\",\n \"recipient\": \"0x8d2af98a4198732a46bf65d87a73427dd7608acaad2414585d8ccdd6f59c437b\",\n \"nonce\": \"0x381de90750098776c71544527fd253412908dec3d07ce9a7367bd1ba975908a0\",\n \"amount\": 18446744073709551615,\n \"data\": \"\",\n \"da_height\": 0\n }\n ],\n \"contracts\": [],\n \"blobs\": [],\n \"block_height\": 0,\n \"da_block_height\": 0\n}\n","import chainConfigJson from './defaultSnapshots/chainConfig.json';\nimport metadataJson from './defaultSnapshots/metadata.json';\nimport stateConfigJson from './defaultSnapshots/stateConfig.json';\nimport type { SnapshotConfigs } from './types';\n\nexport const defaultSnapshotConfigs: SnapshotConfigs = {\n chainConfig: chainConfigJson,\n metadata: metadataJson,\n stateConfig: stateConfigJson,\n};\n\nexport const defaultConsensusKey =\n '0xa449b1ffee0e2205fa924c6740cc48b3b473aa28587df6dab12abc245d1f5298';\n","export function isDefined<T>(value: T | undefined): value is T {\n return value !== undefined;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport type { BytesLike } from '@fuel-ts/interfaces';\nimport type { BN } from '@fuel-ts/math';\nimport { bn } from '@fuel-ts/math';\n\nimport { arrayify } from './arrayify';\n\nconst BN_0 = bn(0);\nconst BN_58 = bn(58);\nconst Alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nlet Lookup: null | Record<string, BN> = null;\n\nfunction getAlpha(letter: string): BN {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = bn(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n throw new FuelError(ErrorCode.INVALID_DATA, `invalid base58 value ${letter}`);\n }\n return bn(result);\n}\n\n/**\n * Encode value as a Base58-encoded string.\n */\nexport function encodeBase58(_value: BytesLike): string {\n const bytes = arrayify(_value);\n\n let value = bn(bytes);\n let result = '';\n while (value.gt(BN_0)) {\n result = Alphabet[Number(value.mod(BN_58))] + result;\n value = value.div(BN_58);\n }\n\n // Account for leading padding zeros\n for (let i = 0; i < bytes.length; i++) {\n if (bytes[i]) {\n break;\n }\n result = Alphabet[0] + result;\n }\n\n return result;\n}\n\nexport function decodeBase58(value: string): BN {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result.mul(BN_58);\n result = result.add(getAlpha(value[i].toString()));\n }\n return result;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\nimport { hexlify } from './hexlify';\n\n/**\n * Returns a hex string by slicing data from the start offset to the end offset.\n *\n * @param data - the data to be sliced.\n * @param start - the start offset (default: 0).\n * @param end - the end offset (default: length of data).\n * @returns - a sliced hex string from start to end.\n */\nexport function dataSlice(data: BytesLike, start?: number, end?: number): string {\n const bytes = arrayify(data);\n if (end != null && end > bytes.length) {\n throw new FuelError(ErrorCode.INVALID_DATA, 'cannot slice beyond data bounds');\n }\n return hexlify(bytes.slice(start == null ? 0 : start, end == null ? bytes.length : end));\n}\n","import { FuelError, ErrorCode } from '@fuel-ts/errors';\n\n/**\n * Returns the UTF-8 byte representation of str.\n *\n * If form is disabled, the string is not normalized.\n * @param stri - the string to convert to UTF-8 bytes.\n * @param form - whether to normalize the string.\n * @returns - the UTF-8 byte representation of str.\n */\nexport function toUtf8Bytes(stri: string, form = true): Uint8Array {\n let str = stri;\n\n if (form) {\n str = stri.normalize('NFC');\n }\n\n const result: Array<number> = [];\n\n for (let i = 0; i < str.length; i += 1) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n } else if ((c & 0xfc00) === 0xd800) {\n i += 1;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new FuelError(\n ErrorCode.INVALID_INPUT_PARAMETERS,\n 'Invalid UTF-8 in the input string.'\n );\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return new Uint8Array(result);\n}\n","/* eslint-disable no-continue */\nimport type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\n\n/**\n * These errors are logged when decoding a UTF-8 string fails.\n *\n * `\"UNEXPECTED_CONTINUE\"` - a continuation byte was present where there\n * was nothing to continue.\n *\n * `\"BAD_PREFIX\"` - an invalid (non-continuation) byte to start a\n * UTF-8 codepoint was found.\n *\n * `\"OVERRUN\"` - the string is too short to process the expected\n * codepoint length.\n *\n * `\"MISSING_CONTINUE\"` - a missing continuation byte was expected but\n * not found. The offset indicates the index the continuation byte\n * was expected at.\n *\n * `\"OUT_OF_RANGE\"` - the computed code point is outside the range\n * for UTF-8. The badCodepoint indicates the computed codepoint, which was\n * outside the valid UTF-8 range.\n *\n * `\"UTF16_SURROGATE\"` - the UTF-8 strings contained a UTF-16 surrogate\n * pair. The badCodepoint is the computed codepoint, which was inside the\n * UTF-16 surrogate range.\n *\n * `\"OVERLONG\"` - the string is an overlong representation. The\n * badCodepoint indicates the computed codepoint, which has already\n * been bounds checked.\n *\n *\n * @returns string\n */\ntype Utf8ErrorReason =\n | 'UNEXPECTED_CONTINUE'\n | 'BAD_PREFIX'\n | 'OVERRUN'\n | 'MISSING_CONTINUE'\n | 'OUT_OF_RANGE'\n | 'UTF16_SURROGATE'\n | 'OVERLONG';\n\nfunction onError(\n reason: Utf8ErrorReason,\n offset: number,\n bytes: Uint8Array,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n output: Array<number>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n badCodepoint?: number\n): number {\n // #TODO: Log these as warnings after https://github.com/FuelLabs/fuels-ts/issues/2298 is implemented.\n // eslint-disable-next-line no-console\n console.log(`invalid codepoint at offset ${offset}; ${reason}, bytes: ${bytes}`);\n return offset;\n}\n\nfunction helper(codePoints: Array<number>): string {\n return codePoints\n .map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n // eslint-disable-next-line no-param-reassign\n codePoint -= 0x10000;\n return String.fromCharCode(\n ((codePoint >> 10) & 0x3ff) + 0xd800,\n (codePoint & 0x3ff) + 0xdc00\n );\n })\n .join('');\n}\n\nfunction getUtf8CodePoints(_bytes: BytesLike): Array<number> {\n const bytes = arrayify(_bytes, 'bytes');\n\n const result: Array<number> = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength: null | number = null;\n let overlongMask: null | number = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError('UNEXPECTED_CONTINUE', i - 1, bytes, result);\n } else {\n i += onError('BAD_PREFIX', i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError('OVERRUN', i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res: null | number = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n const nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) !== 0x80) {\n i += onError('MISSING_CONTINUE', i, bytes, result);\n res = null;\n break;\n }\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError('OUT_OF_RANGE', i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError('UTF16_SURROGATE', i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError('OVERLONG', i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n/**\n * Returns the string represented by the UTF-8 data bytes.\n *\n * @param bytes - the UTF-8 data bytes\n * @returns the string represented by the UTF-8 data bytes\n */\n\nexport function toUtf8String(bytes: BytesLike): string {\n return helper(getUtf8CodePoints(bytes));\n}\n","import type { BytesLike } from '@fuel-ts/interfaces';\nimport { gzipSync, gunzipSync } from 'fflate';\n\nimport { arrayify } from './arrayify';\n\nexport const compressBytecode = (bytecodeAsBinary?: BytesLike) => {\n if (!bytecodeAsBinary) {\n return '';\n }\n\n const bytecodeCompressBytes = arrayify(bytecodeAsBinary);\n const bytecodeCompressGzipped = gzipSync(bytecodeCompressBytes);\n const bytecodeCompressBinary = String.fromCharCode.apply(\n null,\n new Uint8Array(bytecodeCompressGzipped) as unknown as number[]\n );\n const bytecodeCompressEncoded = btoa(bytecodeCompressBinary);\n\n return bytecodeCompressEncoded;\n};\n\nexport const decompressBytecode = (bytecodeAsBase64: string) => {\n const bytecodeDecompressBinary = atob(bytecodeAsBase64);\n const bytecodeDecompressDecoded = new Uint8Array(bytecodeDecompressBinary.length).map((_, i) =>\n bytecodeDecompressBinary.charCodeAt(i)\n );\n const bytecodeDecompressBytes = gunzipSync(bytecodeDecompressDecoded);\n\n return bytecodeDecompressBytes;\n};\n","export * from './utils/capitalizeString';\nexport * from './utils/chunkAndPadBytes';\nexport * from './utils/concat';\nexport * from './utils/arrayify';\nexport * from './utils/hexlify';\nexport * from './utils/normalizeString';\nexport * from './utils/date-time';\nexport * from './utils/types';\nexport * from './utils/sleep';\nexport * from './utils/defaultSnapshotConfigs';\nexport * from './utils/isDefined';\nexport * from './utils/base58';\nexport * from './utils/dataSlice';\nexport * from './utils/toUtf8Bytes';\nexport * from './utils/toUtf8String';\nexport * from './utils/bytecode';\n\n/**\n * Used to verify that a switch statement exhausts all variants.\n */\nexport function assertUnreachable(_x: never): never {\n throw new Error(\"Didn't expect to get here\");\n}\n","export default function _cloneRegExp(pattern) {\n return new RegExp(pattern.source, pattern.flags ? pattern.flags : (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : '') + (pattern.dotAll ? 's' : ''));\n}","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig * -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(async () => {}); //=> \"AsyncFunction\"\n * R.type(undefined); //=> \"Undefined\"\n * R.type(BigInt(123)); //=> \"BigInt\"\n */\nvar type = /*#__PURE__*/_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\nexport default type;","import _cloneRegExp from \"./_cloneRegExp.js\";\nimport type from \"../type.js\";\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\nexport default function _clone(value, deep, map) {\n map || (map = new _ObjectMap());\n\n // this avoids the slower switch with a quick if decision removing some milliseconds in each run.\n if (_isPrimitive(value)) {\n return value;\n }\n var copy = function copy(copiedValue) {\n // Check for circular and same references on the object graph and return its corresponding clone.\n var cachedCopy = map.get(value);\n if (cachedCopy) {\n return cachedCopy;\n }\n map.set(value, copiedValue);\n for (var key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n copiedValue[key] = deep ? _clone(value[key], true, map) : value[key];\n }\n }\n return copiedValue;\n };\n switch (type(value)) {\n case 'Object':\n return copy(Object.create(Object.getPrototypeOf(value)));\n case 'Array':\n return copy(Array(value.length));\n case 'Date':\n return new Date(value.valueOf());\n case 'RegExp':\n return _cloneRegExp(value);\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n return value.slice();\n default:\n return value;\n }\n}\nfunction _isPrimitive(param) {\n var type = typeof param;\n return param == null || type != 'object' && type != 'function';\n}\nvar _ObjectMap = /*#__PURE__*/function () {\n function _ObjectMap() {\n this.map = {};\n this.length = 0;\n }\n _ObjectMap.prototype.set = function (key, value) {\n var hashedKey = this.hash(key);\n var bucket = this.map[hashedKey];\n if (!bucket) {\n this.map[hashedKey] = bucket = [];\n }\n bucket.push([key, value]);\n this.length += 1;\n };\n _ObjectMap.prototype.hash = function (key) {\n var hashedKey = [];\n for (var value in key) {\n hashedKey.push(Object.prototype.toString.call(key[value]));\n }\n return hashedKey.join();\n };\n _ObjectMap.prototype.get = function (key) {\n /**\n * depending on the number of objects to be cloned is faster to just iterate over the items in the map just because the hash function is so costly,\n * on my tests this number is 180, anything above that using the hash function is faster.\n */\n if (this.length <= 180) {\n for (var p in this.map) {\n var bucket = this.map[p];\n for (var i = 0; i < bucket.length; i += 1) {\n var element = bucket[i];\n if (element[0] === key) {\n return element[1];\n }\n }\n }\n return;\n }\n var hashedKey = this.hash(key);\n var bucket = this.map[hashedKey];\n if (!bucket) {\n return;\n }\n for (var i = 0; i < bucket.length; i += 1) {\n var element = bucket[i];\n if (element[0] === key) {\n return element[1];\n }\n }\n };\n return _ObjectMap;\n}();","import _clone from \"./internal/_clone.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Creates a deep copy of the source that can be used in place of the source\n * object without retaining any references to it.\n * The source object may contain (nested) `Array`s and `Object`s,\n * `Number`s, `String`s, `Boolean`s and `Date`s.\n * `Function`s are assigned by reference rather than copied.\n *\n * Dispatches to a `clone` method if present.\n *\n * Note that if the source object has multiple nodes that share a reference,\n * the returned object will have the same structure, but the references will\n * be pointed to the location within the cloned value.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n * const objects = [{}, {}, {}];\n * const objectsClone = R.clone(objects);\n * objects === objectsClone; //=> false\n * objects[0] === objectsClone[0]; //=> false\n */\nvar clone = /*#__PURE__*/_curry1(function clone(value) {\n return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, true);\n});\nexport default clone;","export default function _identity(x) {\n return x;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _identity from \"./internal/_identity.js\";\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\nvar identity = /*#__PURE__*/_curry1(_identity);\nexport default identity;","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n return list;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\nvar _isArguments = /*#__PURE__*/function () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\n\n// cover IE < 9 keys issues\nvar hasEnumBug = ! /*#__PURE__*/{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n// Safari bug\nvar hasArgsEnumBug = /*#__PURE__*/function () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\nvar contains = function contains(list, item) {\n var idx = 0;\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\n\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values, R.toPairs\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) : /*#__PURE__*/_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n var prop, nIdx;\n var ks = [];\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n nIdx -= 1;\n }\n }\n return ks;\n});\nexport default keys;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparison of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n var b = _arrayFromIterator(bIterator);\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n }\n\n // if *a* array contains any element that is not included in *b*\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n var typeA = type(a);\n if (typeA !== type(b)) {\n return false;\n }\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n break;\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n break;\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n break;\n case 'Error':\n return a.name === b.name && a.message === b.message;\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n break;\n }\n var idx = stackA.length - 1;\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n idx -= 1;\n }\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n var keysA = keys(a);\n if (keysA.length !== keys(b).length) {\n return false;\n }\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n while (idx >= 0) {\n var key = keysA[idx];\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n idx -= 1;\n }\n return true;\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\nvar equals = /*#__PURE__*/_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\nexport default equals;","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n var inf, item;\n // Array.prototype.indexOf doesn't exist below IE9\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n while (idx < list.length) {\n item = list[idx];\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n }\n // non-zero numbers can utilise Set\n return list.indexOf(a, idx);\n\n // all these types can utilise Set\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n }\n }\n // anything else not covered above, defer to R.equals\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","import _includes from \"./_includes.js\";\nvar _Set = /*#__PURE__*/function () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n };\n\n //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n };\n\n //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n return _Set;\n}();\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n return false;\n }\n }\n // these types can all utilise the native Set\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n return false;\n }\n }\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n return false;\n }\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n return false;\n }\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n return false;\n }\n return true;\n }\n /* falls through */\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n // scan through all previously applied items\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n}\n\n// A simple Set type that honours R.equals semantics\nexport default _Set;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from \"./_isArray.js\";\nimport _isTransformer from \"./_isTransformer.js\";\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer created by [transducerCreator] to return a new transformer\n * (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} transducerCreator transducer factory if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\nexport default function _dispatchable(methodNames, transducerCreator, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n var obj = arguments[arguments.length - 1];\n if (!_isArray(obj)) {\n var idx = 0;\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, Array.prototype.slice.call(arguments, 0, -1));\n }\n idx += 1;\n }\n if (_isTransformer(obj)) {\n var transducer = transducerCreator.apply(null, Array.prototype.slice.call(arguments, 0, -1));\n return transducer(obj);\n }\n }\n return fn.apply(this, arguments);\n };\n}","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _Set from \"./_Set.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XUniqBy = /*#__PURE__*/function () {\n function XUniqBy(f, xf) {\n this.xf = xf;\n this.f = f;\n this.set = new _Set();\n }\n XUniqBy.prototype['@@transducer/init'] = _xfBase.init;\n XUniqBy.prototype['@@transducer/result'] = _xfBase.result;\n XUniqBy.prototype['@@transducer/step'] = function (result, input) {\n return this.set.add(this.f(input)) ? this.xf['@@transducer/step'](result, input) : result;\n };\n return XUniqBy;\n}();\nexport default function _xuniqBy(f) {\n return function (xf) {\n return new XUniqBy(f, xf);\n };\n}","import _Set from \"./internal/_Set.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xuniqBy from \"./internal/_xuniqBy.js\";\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\nvar uniqBy = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xuniqBy, function (fn, list) {\n var set = new _Set();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n if (set.add(appliedItem)) {\n result.push(item);\n }\n idx += 1;\n }\n return result;\n}));\nexport default uniqBy;","import identity from \"./identity.js\";\nimport uniqBy from \"./uniqBy.js\";\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\nvar uniq = /*#__PURE__*/uniqBy(identity);\nexport default uniq;"],"mappings":"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","names":["require_bn","__commonJSMin","exports","module","assert","val","msg","inherits","ctor","superCtor","TempCtor","BN","number","base","endian","Buffer","num","left","right","start","i","j","w","off","parseHex4Bits","string","index","c","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","mul","b","len","limbLen","limbPow","total","mod","word","pow","dest","move","src","size","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","ret","length","allocate","ArrayType","byteLength","reqLength","res","postfix","position","shift","t","hi","toBitArray","bit","wbit","width","a","bytesNeeded","bitsLeft","cmp","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","x","y","N","l","rb","rbt","rws","iws","rtws","itws","s","rtwdf","itwdf","p","rtwdf_","itwdf_","re","ie","ro","io","rx","n","m","odd","ws","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","isNegNum","q","bits","carryMask","newCarry","hint","extended","h","mask","maskedWords","mode","bhi","bhiBits","diff","qj","positive","div","dm","half","r2","acc","A","B","C","D","g","yp","xp","im","jm","x1","x2","delta","negative","Red","ctx","primes","MPrime","name","tmp","rlen","input","K256","output","outLen","prev","next","P224","P192","P25519","prime","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","Mont","u","getBuiltinVersions","parseVersion","version","major","minor","patch","v","versionDiffs","version1","version2","semver1","semver2","majorEq","minorEq","patchEq","checkFuelCoreVersionCompatibility","networkVersion","supportedVersion","versions","ErrorCode","_FuelError","versions","error","enumValues","code","message","metadata","rawError","name","VERSIONS","FuelError","__publicField","import_bn","DEFAULT_PRECISION","DEFAULT_MIN_PRECISION","DEFAULT_DECIMAL_UNITS","toFixed","value","options","precision","minPrecision","valueUnits","valueDecimals","groupRegex","units","decimals","lastNonZeroIndex","keepChars","decimalPortion","BN","BnJs","base","endian","bnValue","bnBase","length","output","bytesPadding","bytesLength","FuelError","ErrorCode","formattedUnits","formattedFixed","originalDecimals","firstNonZero","defaultDecimals","v","width","methodName","num","out","p","b","gcd","mode","positive","div","mod","bn","valueToParse","amount","toNumber","toHex","toBytes","createRequire","require","Worker","Worker","require","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","b","i","r","j","_a","fl","revfl","_b","fd","revfd","rev","x","hMap","cd","mb","s","l","le","co","rvb","sv","r_1","v","m","flt","fdt","flm","fdm","hMap","fdt","shft","p","slc","v","s","e","u8","wbits","d","p","v","o","wbits16","hTree","mb","t","i","s","t2","et","u8","a","b","l","r","i0","i1","i2","maxSym","tr","u16","mbt","ln","dt","lft","cst","i2_1","i2_2","i2_3","n","lc","c","cl","cli","cln","cls","w","clen","cf","wfblk","out","pos","dat","shft","wblk","final","syms","lf","df","eb","li","bs","bl","_a","dlt","mlb","_b","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","_e","lct","mlcb","nlcc","clim","flen","ftlen","flt","fdt","dtlen","lm","ll","dm","dl","hMap","llm","lcts","it","clct","len","flm","fdm","sym","fleb","dst","fdeb","deo","i32","dflt","lvl","plvl","pre","post","st","lst","opt","msk_1","prev","head","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","j","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","pti","cd","revfl","revfd","lin","din","e","slc","crct","k","crc","cr","dopt","dat","opt","pre","post","st","dict","newDat","u8","dflt","wbytes","d","b","v","gzh","c","o","fn","i","gzhl","o","gzipSync","data","opts","c","crc","l","d","dopt","gzhl","s","gzh","wbytes","td","tds","et","chunkAndPadBytes","bytes","chunkSize","chunks","offset","chunk","lastChunk","remainingBytes","paddedChunkLength","newChunk","arrayify","value","name","copy","result","i","message","FuelError","ErrorCode","concatBytes","arrays","byteArrays","array","totalSize","accum","item","concatenated","object","concat","v","HexCharacters","hexlify","data","normalizeString","str","output","s","match","t","errMsg","TAI64_LEAP_SECONDS","TAI64_UNIX_OFFSET","msToSeconds","ms","secondsToMs","seconds","tai64ToUnixSeconds","tai64","unixSecondsToTai64","unixSeconds","tai64ToUnixMilliseconds","_DateTime","unixMilliseconds","date","DateTime","__publicField","sleep","time","resolve","isDefined","value","BN_0","bn","BN_58","Alphabet","Lookup","getAlpha","letter","i","result","FuelError","ErrorCode","encodeBase58","_value","bytes","arrayify","decodeBase58","dataSlice","data","start","end","hexlify","toUtf8Bytes","stri","form","str","c","c2","pair","onError","reason","offset","output","badCodepoint","helper","codePoints","codePoint","getUtf8CodePoints","_bytes","extraLength","overlongMask","res","j","nextChar","toUtf8String","compressBytecode","bytecodeAsBinary","bytecodeCompressBytes","bytecodeCompressGzipped","gzipSync","bytecodeCompressBinary","assertUnreachable","_x","_cloneRegExp","pattern","_isPlaceholder","a","_curry1","fn","f1","a","_isPlaceholder","type","_curry1","val","type_default","_clone","value","deep","map","_ObjectMap","_isPrimitive","copy","copiedValue","cachedCopy","key","type_default","_cloneRegExp","param","type","hashedKey","bucket","p","i","element","clone","_curry1","value","_clone","clone_default","_identity","x","identity","_curry1","_identity","identity_default","_curry2","fn","f2","a","b","_isPlaceholder","_curry1","_b","_a","_arrayFromIterator","iter","list","next","_includesWith","pred","x","list","idx","len","_functionName","f","match","_has","prop","obj","_objectIs","a","b","objectIs_default","toString","_isArguments","x","_has","isArguments_default","hasEnumBug","nonEnumerableProps","hasArgsEnumBug","contains","list","item","idx","keys","_curry1","obj","prop","nIdx","ks","checkArgsLength","isArguments_default","_has","keys_default","_uniqContentEquals","aIterator","bIterator","stackA","stackB","a","_arrayFromIterator","b","eq","_a","_b","_equals","_includesWith","aItem","objectIs_default","typeA","type_default","_functionName","idx","keysA","keys_default","extendedStackA","extendedStackB","key","_has","equals","_curry2","b","_equals","equals_default","_indexOf","list","idx","inf","item","equals_default","_includes","a","list","_indexOf","_Set","item","hasOrAdd","shouldAdd","set","type","prevSize","newSize","bIdx","_includes","Set_default","isArray_default","val","_isTransformer","obj","_dispatchable","methodNames","transducerCreator","fn","obj","isArray_default","idx","_isTransformer","transducer","xfBase_default","result","XUniqBy","f","xf","Set_default","xfBase_default","result","input","_xuniqBy","uniqBy","_curry2","_dispatchable","_xuniqBy","fn","list","set","Set_default","result","idx","appliedItem","item","uniqBy_default","uniq","uniqBy_default","identity_default","uniq_default"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.3/node_modules/@fuel-ts/versions/src/lib/getBuiltinVersions.ts","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.3/node_modules/@fuel-ts/versions/src/lib/semver.ts","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.3/node_modules/@fuel-ts/versions/src/lib/checkFuelCoreVersionCompatibility.ts","../../../node_modules/.pnpm/@fuel-ts+versions@0.94.3/node_modules/@fuel-ts/versions/src/index.ts","../../../node_modules/.pnpm/@fuel-ts+errors@0.94.3/node_modules/@fuel-ts/errors/src/error-codes.ts","../../../node_modules/.pnpm/@fuel-ts+errors@0.94.3/node_modules/@fuel-ts/errors/src/fuel-error.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.3/node_modules/@fuel-ts/math/src/bn.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.3/node_modules/@fuel-ts/math/src/configs.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.3/node_modules/@fuel-ts/math/src/decimal.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.3/node_modules/@fuel-ts/math/src/functional.ts","../../../node_modules/.pnpm/@fuel-ts+math@0.94.3/node_modules/@fuel-ts/math/src/math.ts","../../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/capitalizeString.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/chunkAndPadBytes.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/arrayify.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/concat.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/hexlify.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/normalizeString.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/date-time.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/sleep.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/defaultSnapshots/chainConfig.json","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/defaultSnapshots/metadata.json","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/defaultSnapshots/stateConfig.json","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/defaultSnapshotConfigs.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/isDefined.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/base58.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/dataSlice.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/toUtf8Bytes.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/toUtf8String.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/utils/bytecode.ts","../../../node_modules/.pnpm/@fuel-ts+utils@0.94.3/node_modules/@fuel-ts/utils/src/index.ts","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_cloneRegExp.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isPlaceholder.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry1.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/type.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_clone.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/clone.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_identity.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/identity.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_curry2.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_arrayFromIterator.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_includesWith.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_functionName.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_has.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_objectIs.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isArguments.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/keys.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_equals.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/equals.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_indexOf.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_includes.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_Set.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isArray.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_isTransformer.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_dispatchable.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xfBase.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/internal/_xuniqBy.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/uniqBy.js","../../../node_modules/.pnpm/ramda@0.30.1/node_modules/ramda/es/uniq.js"],"sourcesContent":["(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import type { Versions } from './types';\n\nexport function getBuiltinVersions(): Versions {\n return {\n FORC: '0.63.3',\n FUEL_CORE: '0.34.0',\n FUELS: '0.94.3',\n };\n}\n","function parseVersion(version: string): { major: number; minor: number; patch: number } {\n const [major, minor, patch] = version.split('.').map((v) => parseInt(v, 10));\n return { major, minor, patch };\n}\n\nfunction versionDiffs(\n version1: string,\n version2: string\n): { major: number; minor: number; patch: number; fullVersionDiff: number } {\n const semver1 = parseVersion(version1);\n const semver2 = parseVersion(version2);\n const major = semver1.major - semver2.major;\n const minor = semver1.minor - semver2.minor;\n const patch = semver1.patch - semver2.patch;\n return {\n major,\n minor,\n patch,\n fullVersionDiff: major || minor || patch,\n };\n}\n\nexport function gt(version1: string, version2: string): boolean {\n const { fullVersionDiff } = versionDiffs(version1, version2);\n return fullVersionDiff > 0;\n}\n\nexport function eq(version1: string, version2: string): boolean {\n const { fullVersionDiff } = versionDiffs(version1, version2);\n return fullVersionDiff === 0;\n}\n\nexport function majorEq(version1: string, version2: string): boolean {\n const { major } = versionDiffs(version1, version2);\n return major === 0;\n}\n\nexport function minorEq(version1: string, version2: string): boolean {\n const { minor } = versionDiffs(version1, version2);\n return minor === 0;\n}\n\nexport function patchEq(version1: string, version2: string): boolean {\n const { patch } = versionDiffs(version1, version2);\n return patch === 0;\n}\n","import { getBuiltinVersions } from './getBuiltinVersions';\nimport { majorEq, minorEq, patchEq } from './semver';\n\nexport function checkFuelCoreVersionCompatibility(networkVersion: string) {\n const { FUEL_CORE: supportedVersion } = getBuiltinVersions();\n\n if (/^\\d+\\.\\d+\\.\\d+\\D+/m.test(networkVersion)) {\n // eslint-disable-next-line no-console\n console.warn(`You're running against an unreleased fuel-core version: ${networkVersion}. Things may work as expected, but it's not guaranteed. Please use a released version. \nThis unreleased fuel-core build may include features and updates not yet supported by this version of the TS-SDK.`);\n }\n\n return {\n supportedVersion,\n isMajorSupported: majorEq(networkVersion, supportedVersion),\n isMinorSupported: minorEq(networkVersion, supportedVersion),\n isPatchSupported: patchEq(networkVersion, supportedVersion),\n };\n}\n","/*\n 1) Variables\n ------------\n `FUELS` — comes from `/packages/fuels/package.json`\n `FUEL_CORE` — comes from `/internal/fuel-core/VERSION`\n `FORC` — comes from `/internal/forc/VERSION`\n\n 3) Pre Build\n ------------\n There's a `prebuild` script in:\n - packages/versions/package.json\n\n Before build, it will call this file:\n - packages/versions/scripts/replaceVersions.ts\n\n Which will replace static versions at:\n - packages/versions/src/lib/getBuiltinVersions.ts\n\n If no env variables are set, it uses the current versions\n from the original locations mentioned in the 1st step.\n\n 3) CI\n ------------\n As part of the CI release (1) routine, the changes made\n to the versions package by the `prebuild` routine will\n be committed by the same script (2) that handles the\n docs versioning.\n\n - (1) <repoRoot>/.github/workflows/release.yaml\n - (2) <repoRoot>/changeset-version-with-docs.ts\n\n 4) Build\n ------------\n By the time we get to the `build` step, everything is in\n place already and ready to be built and released.\n*/\n\nimport { getBuiltinVersions } from './lib/getBuiltinVersions';\n\nexport const versions = getBuiltinVersions();\n\nexport * from './lib/types';\nexport * from './lib/checkFuelCoreVersionCompatibility';\n","/**\n * Represents the different error codes thrown by the SDK\n */\nexport enum ErrorCode {\n // abi\n NO_ABIS_FOUND = 'no-abis-found',\n ABI_TYPES_AND_VALUES_MISMATCH = 'abi-types-and-values-mismatch',\n ABI_MAIN_METHOD_MISSING = 'abi-main-method-missing',\n INVALID_COMPONENT = 'invalid-component',\n CONFIGURABLE_NOT_FOUND = 'configurable-not-found',\n TYPE_NOT_FOUND = 'type-not-found',\n LOG_TYPE_NOT_FOUND = 'log-type-not-found',\n TYPE_NOT_SUPPORTED = 'type-not-supported',\n INVALID_DECODE_VALUE = 'invalid-decode-value',\n JSON_ABI_ERROR = 'json-abi-error',\n TYPE_ID_NOT_FOUND = 'type-id-not-found',\n BIN_FILE_NOT_FOUND = 'bin-file-not-found',\n CODER_NOT_FOUND = 'coder-not-found',\n INVALID_DATA = 'invalid-data',\n FUNCTION_NOT_FOUND = 'function-not-found',\n UNSUPPORTED_ENCODING_VERSION = 'unsupported-encoding-version',\n TIMEOUT_EXCEEDED = 'timeout-exceeded',\n CONFIG_FILE_NOT_FOUND = 'config-file-not-found',\n CONFIG_FILE_ALREADY_EXISTS = 'config-file-already-exists',\n WORKSPACE_NOT_DETECTED = 'workspace-not-detected',\n\n // address\n INVALID_BECH32_ADDRESS = 'invalid-bech32-address',\n INVALID_EVM_ADDRESS = 'invalid-evm-address',\n INVALID_B256_ADDRESS = 'invalid-b256-address',\n\n // provider\n CHAIN_INFO_CACHE_EMPTY = 'chain-info-cache-empty',\n NODE_INFO_CACHE_EMPTY = 'node-info-cache-empty',\n MISSING_PROVIDER = 'missing-provider',\n INVALID_PROVIDER = 'invalid-provider',\n CONNECTION_REFUSED = 'connection-refused',\n\n // wallet\n INVALID_PUBLIC_KEY = 'invalid-public-key',\n WALLET_MANAGER_ERROR = 'wallet-manager-error',\n HD_WALLET_ERROR = 'hd-wallet-error',\n MISSING_CONNECTOR = 'missing-connector',\n\n // errors\n PARSE_FAILED = 'parse-failed',\n ENCODE_ERROR = 'encode-error',\n DECODE_ERROR = 'decode-error',\n ENV_DEPENDENCY_MISSING = 'env-dependency-missing',\n INVALID_TTL = 'invalid-ttl',\n INVALID_INPUT_PARAMETERS = 'invalid-input-parameters',\n NOT_IMPLEMENTED = 'not-implemented',\n NOT_SUPPORTED = 'not-supported',\n CONVERTING_FAILED = 'converting-error',\n ELEMENT_NOT_FOUND = 'element-not-found',\n MISSING_REQUIRED_PARAMETER = 'missing-required-parameter',\n INVALID_REQUEST = 'invalid-request',\n INVALID_TRANSFER_AMOUNT = 'invalid-transfer-amount',\n NOT_ENOUGH_FUNDS = 'not-enough-funds',\n\n // crypto\n INVALID_CREDENTIALS = 'invalid-credentials',\n HASHER_LOCKED = 'hasher-locked',\n\n // transaction\n GAS_PRICE_TOO_LOW = 'gas-price-too-low',\n GAS_LIMIT_TOO_LOW = 'gas-limit-too-low',\n MAX_FEE_TOO_LOW = 'max-fee-too-low',\n TRANSACTION_NOT_FOUND = 'transaction-not-found',\n TRANSACTION_FAILED = 'transaction-failed',\n INVALID_CONFIGURABLE_CONSTANTS = 'invalid-configurable-constants',\n INVALID_TRANSACTION_INPUT = 'invalid-transaction-input',\n INVALID_TRANSACTION_OUTPUT = 'invalid-transaction-output',\n INVALID_TRANSACTION_STATUS = 'invalid-transaction-status',\n UNSUPPORTED_TRANSACTION_TYPE = 'unsupported-transaction-type',\n TRANSACTION_ERROR = 'transaction-error',\n INVALID_POLICY_TYPE = 'invalid-policy-type',\n DUPLICATED_POLICY = 'duplicated-policy',\n TRANSACTION_SQUEEZED_OUT = 'transaction-squeezed-out',\n CONTRACT_SIZE_EXCEEDS_LIMIT = 'contract-size-exceeds-limit',\n INVALID_CHUNK_SIZE_MULTIPLIER = 'invalid-chunk-size-multiplier',\n MAX_INPUTS_EXCEEDED = 'max-inputs-exceeded',\n FUNDS_TOO_LOW = 'funds-too-low',\n MAX_OUTPUTS_EXCEEDED = 'max-outputs-exceeded',\n\n // receipt\n INVALID_RECEIPT_TYPE = 'invalid-receipt-type',\n\n // mnemonic\n INVALID_WORD_LIST = 'invalid-word-list',\n INVALID_MNEMONIC = 'invalid-mnemonic',\n INVALID_ENTROPY = 'invalid-entropy',\n INVALID_SEED = 'invalid-seed',\n INVALID_CHECKSUM = 'invalid-checksum',\n\n // wallet / account\n INVALID_PASSWORD = 'invalid-password',\n ACCOUNT_REQUIRED = 'account-required',\n UNLOCKED_WALLET_REQUIRED = 'unlocked-wallet-required',\n\n // chain\n ERROR_BUILDING_BLOCK_EXPLORER_URL = 'error-building-block-explorer-url',\n\n // docs\n VITEPRESS_PLUGIN_ERROR = 'vitepress-plugin-error',\n\n // script\n SCRIPT_REVERTED = 'script-reverted',\n SCRIPT_RETURN_INVALID_TYPE = 'script-return-invalid-type',\n\n // graphql\n STREAM_PARSING_ERROR = 'stream-parsing-error',\n\n // launchNode\n NODE_LAUNCH_FAILED = 'node-launch-failed',\n\n // Unknown\n UNKNOWN = 'unknown',\n}\n","import { versions } from '@fuel-ts/versions';\n\nimport { ErrorCode } from './error-codes';\n\nexport class FuelError extends Error {\n static readonly CODES = ErrorCode;\n readonly VERSIONS = versions;\n readonly metadata: Record<string, unknown>;\n readonly rawError: unknown;\n\n static parse(e: unknown) {\n const error = e as FuelError;\n\n if (error.code === undefined) {\n throw new FuelError(\n ErrorCode.PARSE_FAILED,\n \"Failed to parse the error object. The required 'code' property is missing.\"\n );\n }\n\n const enumValues = Object.values(ErrorCode);\n const codeIsKnown = enumValues.includes(error.code);\n\n if (!codeIsKnown) {\n throw new FuelError(\n ErrorCode.PARSE_FAILED,\n `Unknown error code: ${error.code}. Accepted codes: ${enumValues.join(', ')}.`\n );\n }\n\n return new FuelError(error.code, error.message);\n }\n\n code: ErrorCode;\n\n constructor(\n code: ErrorCode,\n message: string,\n metadata: Record<string, unknown> = {},\n rawError: unknown = {}\n ) {\n super(message);\n this.code = code;\n this.name = 'FuelError';\n this.metadata = metadata;\n this.rawError = rawError;\n }\n\n toObject() {\n const { code, name, message, metadata, VERSIONS, rawError } = this;\n return { code, name, message, metadata, VERSIONS, rawError };\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport BnJs from 'bn.js';\n\nimport { DEFAULT_DECIMAL_UNITS, DEFAULT_MIN_PRECISION, DEFAULT_PRECISION } from './configs';\nimport { toFixed } from './decimal';\nimport type { FormatConfig } from './types';\n\ntype CompareResult = -1 | 0 | 1;\nexport type BNInput = number | string | number[] | Uint8Array | Buffer | BnJs;\n\ninterface BNHelper {\n caller(v: BNInput, methodName: string): BN | boolean | CompareResult;\n toHex: (bytesPadding?: number) => string;\n toBytes: (bytesPadding?: number) => Uint8Array;\n toJSON: () => string;\n}\ninterface BNInputOverrides {\n add: (v: BNInput) => BN;\n pow: (v: BNInput) => BN;\n sub: (v: BNInput) => BN;\n div: (v: BNInput) => BN;\n mul: (v: BNInput) => BN;\n mod: (v: BNInput) => BN;\n divRound: (v: BNInput) => BN;\n lt: (v: BNInput) => boolean;\n lte: (v: BNInput) => boolean;\n gt: (v: BNInput) => boolean;\n gte: (v: BNInput) => boolean;\n eq: (v: BNInput) => boolean;\n cmp: (v: BNInput) => CompareResult;\n}\ninterface BNOverrides {\n sqr: () => BN;\n neg: () => BN;\n abs: () => BN;\n toTwos: (width: number) => BN;\n fromTwos: (width: number) => BN;\n}\ninterface BNHiddenTypes {\n mulTo: (num: BN, out: BN) => BN;\n divmod: (num: BNInput, mode?: string, positive?: boolean) => { mod: BN; div: BN };\n}\ntype BNInputOverridesKeys = keyof BNInputOverrides;\n\nexport class BN extends BnJs implements BNInputOverrides, BNHiddenTypes, BNHelper, BNOverrides {\n MAX_U64 = '0xFFFFFFFFFFFFFFFF';\n\n constructor(value?: BNInput | null, base?: number | 'hex', endian?: BnJs.Endianness) {\n let bnValue = value;\n let bnBase = base;\n\n if (BN.isBN(value)) {\n bnValue = value.toArray();\n }\n // trim '0x' from hex strings as BN doesn't support it - https://github.com/ChainSafe/web3.js/issues/3847\n else if (typeof value === 'string' && value.slice(0, 2) === '0x') {\n bnValue = value.substring(2);\n bnBase = base || 'hex';\n }\n\n super(bnValue == null ? 0 : bnValue, bnBase, endian);\n }\n\n // ANCHOR: HELPERS\n // make sure we always include `0x` in hex strings\n toString(base?: number | 'hex', length?: number) {\n const output = super.toString(base, length);\n\n if (base === 16 || base === 'hex') {\n return `0x${output}`;\n }\n\n return output;\n }\n\n toHex(bytesPadding?: number): string {\n const bytes = bytesPadding || 0;\n const bytesLength = bytes * 2;\n\n if (this.isNeg()) {\n throw new FuelError(ErrorCode.CONVERTING_FAILED, 'Cannot convert negative value to hex.');\n }\n if (bytesPadding && this.byteLength() > bytesPadding) {\n throw new FuelError(\n ErrorCode.CONVERTING_FAILED,\n `Provided value ${this} is too large. It should fit within ${bytesPadding} bytes.`\n );\n }\n\n return this.toString(16, bytesLength);\n }\n\n toBytes(bytesPadding?: number): Uint8Array {\n if (this.isNeg()) {\n throw new FuelError(ErrorCode.CONVERTING_FAILED, 'Cannot convert negative value to bytes.');\n }\n\n return Uint8Array.from(this.toArray(undefined, bytesPadding));\n }\n\n toJSON(): string {\n return this.toString(16);\n }\n\n valueOf(): string {\n return this.toString();\n }\n\n format(options?: FormatConfig): string {\n const {\n units = DEFAULT_DECIMAL_UNITS,\n precision = DEFAULT_PRECISION,\n minPrecision = DEFAULT_MIN_PRECISION,\n } = options || {};\n\n const formattedUnits = this.formatUnits(units);\n const formattedFixed = toFixed(formattedUnits, { precision, minPrecision });\n\n // increase precision if formatted is zero, but has more numbers out of precision\n if (!parseFloat(formattedFixed)) {\n const [, originalDecimals = '0'] = formattedUnits.split('.');\n const firstNonZero = originalDecimals.match(/[1-9]/);\n\n if (firstNonZero && firstNonZero.index && firstNonZero.index + 1 > precision) {\n const [valueUnits = '0'] = formattedFixed.split('.');\n return `${valueUnits}.${originalDecimals.slice(0, firstNonZero.index + 1)}`;\n }\n }\n\n return formattedFixed;\n }\n\n formatUnits(units: number = DEFAULT_DECIMAL_UNITS): string {\n const valueUnits = this.toString().slice(0, units * -1);\n const valueDecimals = this.toString().slice(units * -1);\n const length = valueDecimals.length;\n const defaultDecimals = Array.from({ length: units - length })\n .fill('0')\n .join('');\n const integerPortion = valueUnits ? `${valueUnits}.` : '0.';\n\n return `${integerPortion}${defaultDecimals}${valueDecimals}`;\n }\n // END ANCHOR: HELPERS\n\n // ANCHOR: OVERRIDES to accept better inputs\n add(v: BNInput): BN {\n return this.caller(v, 'add') as BN;\n }\n\n pow(v: BNInput): BN {\n return this.caller(v, 'pow') as BN;\n }\n\n sub(v: BNInput): BN {\n return this.caller(v, 'sub') as BN;\n }\n\n div(v: BNInput): BN {\n return this.caller(v, 'div') as BN;\n }\n\n mul(v: BNInput): BN {\n return this.caller(v, 'mul') as BN;\n }\n\n mod(v: BNInput): BN {\n return this.caller(v, 'mod') as BN;\n }\n\n divRound(v: BNInput): BN {\n return this.caller(v, 'divRound') as BN;\n }\n\n lt(v: BNInput): boolean {\n return this.caller(v, 'lt') as boolean;\n }\n\n lte(v: BNInput): boolean {\n return this.caller(v, 'lte') as boolean;\n }\n\n gt(v: BNInput): boolean {\n return this.caller(v, 'gt') as boolean;\n }\n\n gte(v: BNInput): boolean {\n return this.caller(v, 'gte') as boolean;\n }\n\n eq(v: BNInput): boolean {\n return this.caller(v, 'eq') as boolean;\n }\n\n cmp(v: BNInput): CompareResult {\n return this.caller(v, 'cmp') as CompareResult;\n }\n // END ANCHOR: OVERRIDES to accept better inputs\n\n // ANCHOR: OVERRIDES to output our BN type\n sqr(): BN {\n return new BN(super.sqr().toArray());\n }\n\n neg(): BN {\n return new BN(super.neg().toArray());\n }\n\n abs(): BN {\n return new BN(super.abs().toArray());\n }\n\n toTwos(width: number): BN {\n return new BN(super.toTwos(width).toArray());\n }\n\n fromTwos(width: number): BN {\n return new BN(super.fromTwos(width).toArray());\n }\n // END ANCHOR: OVERRIDES to output our BN type\n\n // ANCHOR: OVERRIDES to avoid losing references\n caller(v: BNInput, methodName: BNInputOverridesKeys): BN | boolean | CompareResult {\n const output = super[methodName](new BN(v));\n\n if (BN.isBN(output)) {\n return new BN(output.toArray());\n }\n\n if (typeof output === 'boolean') {\n return output as boolean;\n }\n\n return output as CompareResult;\n }\n\n clone() {\n return new BN(this.toArray());\n }\n\n mulTo(num: BN, out: BN) {\n const output: BnJs = (new BnJs(this.toArray()) as BN).mulTo(num, out);\n\n return new BN(output.toArray());\n }\n\n egcd(p: BnJs) {\n const { a, b, gcd } = new BnJs(this.toArray()).egcd(p);\n\n return {\n a: new BN(a.toArray()),\n b: new BN(b.toArray()),\n gcd: new BN(gcd.toArray()),\n };\n }\n\n divmod(num: BNInput, mode?: string, positive?: boolean): { mod: BN; div: BN } {\n const { div, mod } = (new BnJs(this.toArray()) as BN).divmod(new BN(num), mode, positive);\n\n return {\n div: new BN(div?.toArray()),\n mod: new BN(mod?.toArray()),\n };\n }\n\n maxU64(): BN {\n return this.gte(this.MAX_U64) ? new BN(this.MAX_U64) : this;\n }\n\n normalizeZeroToOne(): BN {\n return this.isZero() ? new BN(1) : this;\n }\n // END ANCHOR: OVERRIDES to avoid losing references\n}\n\n// functional shortcut to create BN\nexport const bn = (value?: BNInput | null, base?: number | 'hex', endian?: BnJs.Endianness) =>\n new BN(value, base, endian);\n\nbn.parseUnits = (value: string, units: number = DEFAULT_DECIMAL_UNITS): BN => {\n const valueToParse = value === '.' ? '0.' : value;\n const [valueUnits = '0', valueDecimals = '0'] = valueToParse.split('.');\n const length = valueDecimals.length;\n\n if (length > units) {\n throw new FuelError(\n ErrorCode.CONVERTING_FAILED,\n `Decimal can't have more than ${units} digits.`\n );\n }\n\n const decimals = Array.from({ length: units }).fill('0');\n decimals.splice(0, length, valueDecimals);\n const amount = `${valueUnits.replaceAll(',', '')}${decimals.join('')}`;\n return bn(amount);\n};\n","export const DEFAULT_PRECISION = 9;\nexport const DEFAULT_MIN_PRECISION = 3;\nexport const DEFAULT_DECIMAL_UNITS = 9;\n\n// Decimal units on the Fuel Network\nexport const DECIMAL_FUEL = 9;\n\n// Decimal units on the Ethereum network\nexport const DECIMAL_WEI = 18;\nexport const DECIMAL_KWEI = 15;\nexport const DECIMAL_MWEI = 12;\nexport const DECIMAL_GWEI = 9;\n","import { DEFAULT_PRECISION, DEFAULT_MIN_PRECISION } from './configs';\nimport type { ToFixedConfig } from './types';\n\nexport function toFixed(value?: string | number, options?: ToFixedConfig) {\n const { precision = DEFAULT_PRECISION, minPrecision = DEFAULT_MIN_PRECISION } = options || {};\n\n const [valueUnits = '0', valueDecimals = '0'] = String(value || '0.0').split('.');\n const groupRegex = /(\\d)(?=(\\d{3})+\\b)/g;\n const units = valueUnits.replace(groupRegex, '$1,');\n let decimals = valueDecimals.slice(0, precision);\n\n // strip traling zeros limited by minPrecision\n if (minPrecision < precision) {\n const trimmedDecimal = decimals.match(/.*[1-9]{1}/);\n const lastNonZeroIndex = trimmedDecimal?.[0].length || 0;\n const keepChars = Math.max(minPrecision, lastNonZeroIndex);\n decimals = decimals.slice(0, keepChars);\n }\n\n const decimalPortion = decimals ? `.${decimals}` : '';\n return `${units}${decimalPortion}`;\n}\n","import type { BNInput } from './bn';\nimport { bn } from './bn';\nimport type { FormatConfig } from './types';\n\n/**\n * Functional shortcuts\n */\n\n// Shortcut to bn(value).toNumber\nexport function toNumber(value: BNInput): number {\n return bn(value).toNumber();\n}\n\n// Shortcut to bn(value).toHex\nexport function toHex(value: BNInput, bytesPadding?: number): string {\n return bn(value).toHex(bytesPadding);\n}\n\n// Shortcut to bn(value).toBytes\nexport function toBytes(value: BNInput, bytesPadding?: number): Uint8Array {\n return bn(value).toBytes(bytesPadding);\n}\n\n// Shortcut to bn.(value).formatUnits\nexport function formatUnits(value: BNInput, units?: number): string {\n return bn(value).formatUnits(units);\n}\n\n// Shortcut to bn.(value).format\nexport function format(value: BNInput, options?: FormatConfig): string {\n return bn(value).format(options);\n}\n","import type { BN } from './bn';\nimport { bn } from './bn';\nimport type { BigNumberish } from './types';\n\nexport function max(...numbers: Array<BigNumberish>): BN {\n return numbers.reduce<BN>((prev, cur) => (bn(cur).gt(prev) ? bn(cur) : prev), bn(0));\n}\n\nexport function multiply(...numbers: Array<BigNumberish>): BN {\n return bn(Math.ceil(numbers.reduce<BN>((a, b) => bn(a).mul(b), bn(1)).toNumber()));\n}\n","import { createRequire } from 'module';\nvar require = createRequire('/');\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\n// Mediocre shim\nvar Worker;\nvar workerAdd = \";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global\";\ntry {\n Worker = require('worker_threads').Worker;\n}\ncatch (e) {\n}\nvar wk = Worker ? function (c, _, msg, transfer, cb) {\n var done = false;\n var w = new Worker(c + workerAdd, { eval: true })\n .on('error', function (e) { return cb(e, null); })\n .on('message', function (m) { return cb(null, m); })\n .on('exit', function (c) {\n if (c && !done)\n cb(new Error('exited with code ' + c), null);\n });\n w.postMessage(msg, transfer);\n w.terminate = function () {\n done = true;\n return Worker.prototype.terminate.call(w);\n };\n return w;\n} : function (_, __, ___, ____, cb) {\n setImmediate(function () { return cb(new Error('async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)'), null); });\n var NOP = function () { };\n return {\n terminate: NOP,\n postMessage: NOP\n };\n};\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","export const capitalizeString = (str: string) => {\n if (!str.length) {\n return str;\n }\n return str[0].toUpperCase() + str.slice(1);\n};\n","/**\n * Function to take a byte array and split into chunks of a given size\n *\n * @param bytes - The byte array to chunk\n * @param chunkSize - The size of each chunk\n * @returns An array of byte arrays of a specified size\n */\nexport const chunkAndPadBytes = (bytes: Uint8Array, chunkSize: number): Uint8Array[] => {\n const chunks: Uint8Array[] = [];\n\n for (let offset = 0; offset < bytes.length; offset += chunkSize) {\n const chunk = new Uint8Array(chunkSize);\n chunk.set(bytes.slice(offset, offset + chunkSize));\n chunks.push(chunk);\n }\n\n const lastChunk = chunks[chunks.length - 1];\n const remainingBytes = bytes.length % chunkSize;\n const paddedChunkLength = remainingBytes + ((8 - (remainingBytes % 8)) % 8);\n const newChunk = lastChunk.slice(0, paddedChunkLength);\n chunks[chunks.length - 1] = newChunk;\n\n return chunks;\n};\n","import { FuelError, ErrorCode } from '@fuel-ts/errors';\nimport type { BytesLike } from '@fuel-ts/interfaces';\n\n/**\n * Get a typed Uint8Array from a BytesLike object.\n *\n * @param value - the BytesLike data.\n * @param name - a display name for the error result.\n * @param copy - create a copy of the original data (if applicable).\n * @returns - a typed Uint8Array.\n */\nexport const arrayify = (value: BytesLike, name?: string, copy: boolean = true): Uint8Array => {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n\n if (typeof value === 'string' && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n\n const nameMessage = name ? ` ${name} -` : '';\n const message = `invalid data:${nameMessage} ${value}\\nIf you are attempting to transform a hex value, please make sure it is being passed as a string and wrapped in quotes.`;\n throw new FuelError(ErrorCode.INVALID_DATA, message);\n};\n","import type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\n\n/**\n * Concatenates multiple Uint8Arrays into a single Uint8Array.\n *\n * @param arrays - The arrays to concatenate.\n * @returns - The concatenated array.\n */\nexport const concatBytes = (\n arrays: ReadonlyArray<Uint8Array> | ReadonlyArray<number[]>\n): Uint8Array => {\n const byteArrays = arrays.map((array) => {\n if (array instanceof Uint8Array) {\n return array;\n }\n return Uint8Array.from(array);\n });\n\n const totalSize = byteArrays.reduce((accum, item) => accum + item.length, 0);\n const concatenated = new Uint8Array(totalSize);\n\n byteArrays.reduce((offset, object) => {\n concatenated.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return concatenated;\n};\n\n/**\n * Concatenates multiple BytesLike into a single Uint8Array.\n *\n * @param arrays - The arrays to concatenate.\n * @returns - The concatenated array.\n */\nexport const concat = (arrays: ReadonlyArray<BytesLike>): Uint8Array => {\n const bytes = arrays.map((v) => arrayify(v));\n\n return concatBytes(bytes);\n};\n","import type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\n\nconst HexCharacters: string = '0123456789abcdef';\n\n/**\n * Returns a hex representation of the inputted bytes.\n */\nexport function hexlify(data: BytesLike): string {\n const bytes = arrayify(data);\n\n let result = '0x';\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\n/**\n * Converts `some.string-value` into `SomeStringValue`.\n *\n * Examples:\n * my-simple.test —— MySimpleTest\n * myFile.ts —— MyFileTs\n * my-abi.json —— MyAbiJson\n */\nexport const normalizeString = (str: string): string => {\n const transformations: ((s: string) => string)[] = [\n (s) => s.replace(/\\s+/g, '-'), // spaces to -\n (s) => s.replace(/\\./g, '-'), // dots to -\n (s) => s.replace(/_/g, '-'), // underscore to -\n (s) => s.replace(/-[a-z]/g, (match) => match.slice(-1).toUpperCase()), // delete '-' and capitalize the letter after them\n (s) => s.replace(/-/g, ''), // delete any '-' left\n (s) => s.replace(/^\\d+/, ''), // removes leading digits\n (s) => s[0].toUpperCase() + s.slice(1), // capitalize first letter\n ];\n\n const output = transformations.reduce((s, t) => t(s), str);\n\n if (output === '') {\n const errMsg = `The provided string '${str}' results in an empty output after`.concat(\n ` normalization, therefore, it can't normalize string.`\n );\n throw new FuelError(ErrorCode.PARSE_FAILED, errMsg);\n }\n\n return output;\n};\n","/**\n * Tai64 timestamp.\n */\ntype Tai64Timestamp = string;\n\n/**\n * This constant is used to calculate the offset between the Unix epoch and the TAI64 epoch.\n * It allows for a **rough** conversion between the two time formats.\n *\n * // Value expires on: 28 June 2024\n * {@link https://data.iana.org/time-zones/data/leap-seconds.list}\n * {@link https://github.com/hl2/tai64/blob/master/src/leapSeconds.ts}\n */\nconst TAI64_LEAP_SECONDS: number = 37;\n\n/**\n * Tai64 (Temps Atomique International) is a time format\n *\n * The offset between the Unix epoch and the TAI64 epoch.\n * The TAI64 epoch is 2^62 nanoseconds after the Unix epoch (+ the offset of \"leap seconds\" relevant to the date).\n *\n * {@link https://cr.yp.to/libtai/tai64.html}\n * {@link https://cr.yp.to/proto/tai64.txt}\n */\nconst TAI64_UNIX_OFFSET: bigint = BigInt(2 ** 62) + BigInt(TAI64_LEAP_SECONDS);\n\n/**\n * Converts milliseconds to seconds and vice versa.\n *\n * @param ms - milliseconds to convert\n * @returns seconds\n */\nconst msToSeconds = (ms: number): number => Math.floor(ms / 1000);\n\n/**\n * Converts seconds to milliseconds and vice versa.\n *\n * @param seconds - seconds to convert\n * @returns milliseconds\n */\nconst secondsToMs = (seconds: number): number => seconds * 1000;\n\n/**\n * Converts Tai64 (seconds) time units to UNIX (seconds) time units.\n *\n * @param tai64 - Tai64 timestamp\n * @returns Unix seconds timestamp\n */\nconst tai64ToUnixSeconds = (tai64: Tai64Timestamp): number =>\n Number(BigInt(tai64) - TAI64_UNIX_OFFSET);\n\n/**\n * Converts Unix (seconds) to Tai64 (seconds).\n *\n * @param unixSeconds - unix seconds timestamp\n * @returns Tai64 timestamp\n */\nconst unixSecondsToTai64 = (unixSeconds: number): string =>\n String(BigInt(unixSeconds) + TAI64_UNIX_OFFSET);\n\n/**\n * Helper to convert Tai64 (seconds) time units to UNIX (milliseconds) time units and vice.\n *\n * @param tai64 - Tai64 timestamp\n * @returns Unix milliseconds timestamp\n */\nconst tai64ToUnixMilliseconds = (tai64: Tai64Timestamp): number =>\n secondsToMs(tai64ToUnixSeconds(tai64));\n\n/**\n * This class is used to represent a date and time in the Tai64 format.\n *\n * ```typescript\n * import { DateTime } from 'fuels';\n *\n * // Constants\n * const tai64 = '4611686020108779340';\n * const unixMilliseconds = 1681391398000;\n * const seconds = 1681391398;\n *\n * // Instantiation\n * let date: DateTime = DateTime.now();\n * date = DateTime.fromTai64(tai64);\n * date = DateTime.fromUnixMilliseconds(unixMilliseconds);\n * date = DateTime.fromUnixSeconds(seconds);\n *\n * // Utility functions\n * tai64.toTai64() // '4611686020108779340'\n * milliseconds.toUnixMilliseconds() // 1681391398000\n * seconds.toUnixSeconds() // 1681391398\n *\n * // All date methods are available\n * const now: Date = DateTime.now();\n * now.toISOString(); // '2023-04-13T13:09:58.000Z'\n * now.getTime(); // 1681391398000\n * ```\n */\nexport class DateTime extends Date implements Date {\n static TAI64_NULL: Tai64Timestamp = '';\n\n /**\n * Generates a new DateTime instance from a Tai64 timestamp.\n *\n * @param tai64 - Tai64 timestamp\n * @returns a new DateTime instance\n */\n static fromTai64(tai64: Tai64Timestamp): DateTime {\n return new DateTime(tai64ToUnixMilliseconds(tai64));\n }\n\n /**\n * @param unixMilliseconds - unix milliseconds timestamp\n * @returns a new DateTime instance\n */\n static fromUnixMilliseconds(unixMilliseconds: number): DateTime {\n return new DateTime(unixMilliseconds);\n }\n\n /**\n * @param unixSeconds - unix seconds timestamp\n * @returns a new DateTime instance\n */\n static fromUnixSeconds(unixSeconds: number): DateTime {\n return new DateTime(secondsToMs(unixSeconds));\n }\n\n /**\n * Hide the constructor to prevent direct instantiation.\n */\n private constructor(date: Date | number | string) {\n super(date);\n }\n\n /**\n * Returns the Tai64 timestamp.\n *\n * @returns the Tai64 timestamp\n */\n toTai64(): Tai64Timestamp {\n return unixSecondsToTai64(this.toUnixSeconds());\n }\n\n /**\n * @returns the unix milliseconds timestamp\n */\n toUnixMilliseconds(): number {\n return this.getTime();\n }\n\n /**\n * @returns the unix seconds timestamp\n */\n toUnixSeconds(): number {\n return msToSeconds(this.getTime());\n }\n}\n","export function sleep(time: number) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, time);\n });\n}\n","{\n \"chain_name\": \"local_testnet\",\n \"consensus_parameters\": {\n \"V1\": {\n \"tx_params\": {\n \"V1\": {\n \"max_inputs\": 255,\n \"max_outputs\": 255,\n \"max_witnesses\": 255,\n \"max_gas_per_tx\": 30000000,\n \"max_size\": 262144,\n \"max_bytecode_subsections\": 256\n }\n },\n \"predicate_params\": {\n \"V1\": {\n \"max_predicate_length\": 102400,\n \"max_predicate_data_length\": 102400,\n \"max_message_data_length\": 102400,\n \"max_gas_per_predicate\": 30000000\n }\n },\n \"script_params\": {\n \"V1\": {\n \"max_script_length\": 102400,\n \"max_script_data_length\": 102400\n }\n },\n \"contract_params\": {\n \"V1\": {\n \"contract_max_size\": 262144,\n \"max_storage_slots\": 1760\n }\n },\n \"fee_params\": {\n \"V1\": {\n \"gas_price_factor\": 92000,\n \"gas_per_byte\": 63\n }\n },\n \"chain_id\": 0,\n \"gas_costs\": {\n \"V4\": {\n \"add\": 2,\n \"addi\": 2,\n \"and\": 2,\n \"andi\": 2,\n \"bal\": 29,\n \"bhei\": 2,\n \"bhsh\": 2,\n \"burn\": 19976,\n \"cb\": 2,\n \"cfsi\": 2,\n \"div\": 2,\n \"divi\": 2,\n \"eck1\": 1907,\n \"ecr1\": 26135,\n \"eq\": 2,\n \"exp\": 2,\n \"expi\": 2,\n \"flag\": 2,\n \"gm\": 2,\n \"gt\": 2,\n \"gtf\": 13,\n \"ji\": 2,\n \"jmp\": 2,\n \"jne\": 2,\n \"jnei\": 2,\n \"jnzi\": 2,\n \"jmpf\": 2,\n \"jmpb\": 2,\n \"jnzf\": 2,\n \"jnzb\": 2,\n \"jnef\": 2,\n \"jneb\": 2,\n \"lb\": 2,\n \"log\": 102,\n \"lt\": 2,\n \"lw\": 2,\n \"mint\": 18042,\n \"mlog\": 2,\n \"mod\": 2,\n \"modi\": 2,\n \"move\": 2,\n \"movi\": 2,\n \"mroo\": 4,\n \"mul\": 2,\n \"muli\": 2,\n \"mldv\": 3,\n \"noop\": 1,\n \"not\": 2,\n \"or\": 2,\n \"ori\": 2,\n \"poph\": 3,\n \"popl\": 3,\n \"pshh\": 5,\n \"pshl\": 5,\n \"ret_contract\": 53,\n \"rvrt_contract\": 52,\n \"sb\": 2,\n \"sll\": 2,\n \"slli\": 2,\n \"srl\": 2,\n \"srli\": 2,\n \"srw\": 177,\n \"sub\": 2,\n \"subi\": 2,\n \"sw\": 2,\n \"sww\": 17302,\n \"time\": 35,\n \"tr\": 27852,\n \"tro\": 19718,\n \"wdcm\": 2,\n \"wqcm\": 2,\n \"wdop\": 3,\n \"wqop\": 3,\n \"wdml\": 3,\n \"wqml\": 3,\n \"wddv\": 4,\n \"wqdv\": 5,\n \"wdmd\": 8,\n \"wqmd\": 12,\n \"wdam\": 7,\n \"wqam\": 8,\n \"wdmm\": 8,\n \"wqmm\": 8,\n \"xor\": 2,\n \"xori\": 2,\n \"aloc\": {\n \"LightOperation\": {\n \"base\": 2,\n \"units_per_gas\": 15\n }\n },\n \"bsiz\": {\n \"LightOperation\": {\n \"base\": 17,\n \"units_per_gas\": 790\n }\n },\n \"bldd\": {\n \"LightOperation\": {\n \"base\": 15,\n \"units_per_gas\": 272\n }\n },\n \"cfe\": {\n \"LightOperation\": {\n \"base\": 10,\n \"units_per_gas\": 1818181\n }\n },\n \"cfei\": {\n \"LightOperation\": {\n \"base\": 2,\n \"units_per_gas\": 1000000\n }\n },\n \"call\": {\n \"LightOperation\": {\n \"base\": 13513,\n \"units_per_gas\": 7\n }\n },\n \"ccp\": {\n \"LightOperation\": {\n \"base\": 34,\n \"units_per_gas\": 39\n }\n },\n \"croo\": {\n \"LightOperation\": {\n \"base\": 91,\n \"units_per_gas\": 3\n }\n },\n \"csiz\": {\n \"LightOperation\": {\n \"base\": 31,\n \"units_per_gas\": 438\n }\n },\n \"ed19\": {\n \"LightOperation\": {\n \"base\": 3000,\n \"units_per_gas\": 214\n }\n },\n \"k256\": {\n \"LightOperation\": {\n \"base\": 27,\n \"units_per_gas\": 5\n }\n },\n \"ldc\": {\n \"LightOperation\": {\n \"base\": 43,\n \"units_per_gas\": 102\n }\n },\n \"logd\": {\n \"LightOperation\": {\n \"base\": 363,\n \"units_per_gas\": 4\n }\n },\n \"mcl\": {\n \"LightOperation\": {\n \"base\": 2,\n \"units_per_gas\": 1041\n }\n },\n \"mcli\": {\n \"LightOperation\": {\n \"base\": 2,\n \"units_per_gas\": 1025\n }\n },\n \"mcp\": {\n \"LightOperation\": {\n \"base\": 4,\n \"units_per_gas\": 325\n }\n },\n \"mcpi\": {\n \"LightOperation\": {\n \"base\": 8,\n \"units_per_gas\": 511\n }\n },\n \"meq\": {\n \"LightOperation\": {\n \"base\": 3,\n \"units_per_gas\": 940\n }\n },\n \"retd_contract\": {\n \"LightOperation\": {\n \"base\": 305,\n \"units_per_gas\": 4\n }\n },\n \"s256\": {\n \"LightOperation\": {\n \"base\": 31,\n \"units_per_gas\": 4\n }\n },\n \"scwq\": {\n \"HeavyOperation\": {\n \"base\": 16346,\n \"gas_per_unit\": 17163\n }\n },\n \"smo\": {\n \"LightOperation\": {\n \"base\": 40860,\n \"units_per_gas\": 2\n }\n },\n \"srwq\": {\n \"HeavyOperation\": {\n \"base\": 187,\n \"gas_per_unit\": 179\n }\n },\n \"swwq\": {\n \"HeavyOperation\": {\n \"base\": 17046,\n \"gas_per_unit\": 16232\n }\n },\n \"contract_root\": {\n \"LightOperation\": {\n \"base\": 31,\n \"units_per_gas\": 2\n }\n },\n \"state_root\": {\n \"HeavyOperation\": {\n \"base\": 236,\n \"gas_per_unit\": 122\n }\n },\n \"new_storage_per_byte\": 63,\n \"vm_initialization\": {\n \"LightOperation\": {\n \"base\": 3957,\n \"units_per_gas\": 48\n }\n }\n }\n },\n \"base_asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\",\n \"block_gas_limit\": 30000000,\n \"privileged_address\": \"0000000000000000000000000000000000000000000000000000000000000000\"\n }\n },\n \"consensus\": {\n \"PoA\": {\n \"signing_key\": \"0x94ffcc53b892684acefaebc8a3d4a595e528a8cf664eeb3ef36f1020b0809d0d\"\n }\n }\n}\n","{\n \"chain_config\": \"chainConfig.json\",\n \"table_encoding\": {\n \"Json\": {\n \"filepath\": \"stateConfig.json\"\n }\n }\n}\n","{\n \"coins\": [\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x94ffcc53b892684acefaebc8a3d4a595e528a8cf664eeb3ef36f1020b0809d0d\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09c0b2d1a486c439a87bcba6b46a7a1a23f3897cc83a94521a96da5c23bc58db\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09c0b2d1a486c439a87bcba6b46a7a1a23f3897cc83a94521a96da5c23bc58db\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09c0b2d1a486c439a87bcba6b46a7a1a23f3897cc83a94521a96da5c23bc58db\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x5d99ee966b42cd8fc7bdd1364b389153a9e78b42b7d4a691470674e817888d4e\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x5d99ee966b42cd8fc7bdd1364b389153a9e78b42b7d4a691470674e817888d4e\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000007\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x5d99ee966b42cd8fc7bdd1364b389153a9e78b42b7d4a691470674e817888d4e\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000008\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbdaad6a89e073e177895b3e5a9ccd15806749eda134a6438dae32fc5b6601f3f\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000009\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbdaad6a89e073e177895b3e5a9ccd15806749eda134a6438dae32fc5b6601f3f\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000010\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbdaad6a89e073e177895b3e5a9ccd15806749eda134a6438dae32fc5b6601f3f\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000011\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x95a7aa6cc32743f8706c40ef49a7423b47da763bb4bbc055b1f07254dc729036\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000012\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x95a7aa6cc32743f8706c40ef49a7423b47da763bb4bbc055b1f07254dc729036\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000013\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x95a7aa6cc32743f8706c40ef49a7423b47da763bb4bbc055b1f07254dc729036\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000014\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xcee104acd38b940c8f1c62c6d7ea00a0ad2241d6dee0509a4bf27297508870d3\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000015\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xcee104acd38b940c8f1c62c6d7ea00a0ad2241d6dee0509a4bf27297508870d3\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000016\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xcee104acd38b940c8f1c62c6d7ea00a0ad2241d6dee0509a4bf27297508870d3\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000017\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x7e3626e306588eba79cafab73f0709e55ab8f4bdfe8c8b75034a430fc56ece89\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000018\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x7e3626e306588eba79cafab73f0709e55ab8f4bdfe8c8b75034a430fc56ece89\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000019\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x7e3626e306588eba79cafab73f0709e55ab8f4bdfe8c8b75034a430fc56ece89\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000020\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x1c31df52b6df56407dd95f83082e8beb9cfc9532ac111d5bd8491651d95ba775\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000021\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x1c31df52b6df56407dd95f83082e8beb9cfc9532ac111d5bd8491651d95ba775\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000022\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x1c31df52b6df56407dd95f83082e8beb9cfc9532ac111d5bd8491651d95ba775\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000023\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09dd7a49174d6fcc9f4c6f7942c18060a935ddd03ee69b594189b8c3581276ea\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000024\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09dd7a49174d6fcc9f4c6f7942c18060a935ddd03ee69b594189b8c3581276ea\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000025\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x09dd7a49174d6fcc9f4c6f7942c18060a935ddd03ee69b594189b8c3581276ea\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000026\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x86604282dc604481b809845be49667607c470644f6822fc01eb0d22f167e08cf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000027\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x86604282dc604481b809845be49667607c470644f6822fc01eb0d22f167e08cf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000028\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x86604282dc604481b809845be49667607c470644f6822fc01eb0d22f167e08cf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000029\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbca334a06d19db5041c78fe2f465b07be5bec828f38b7796b2877e7d1542c950\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000030\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbca334a06d19db5041c78fe2f465b07be5bec828f38b7796b2877e7d1542c950\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000031\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbca334a06d19db5041c78fe2f465b07be5bec828f38b7796b2877e7d1542c950\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000032\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbd9a1dc8d3ec3521c43f6c2c01611b4d0204c7610204ff0178488c8738a30bd2\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000033\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbd9a1dc8d3ec3521c43f6c2c01611b4d0204c7610204ff0178488c8738a30bd2\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000034\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xbd9a1dc8d3ec3521c43f6c2c01611b4d0204c7610204ff0178488c8738a30bd2\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000035\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xb32197cf75efe05bf453c26178139f09b391582065549c1422bc92555ecffb64\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000036\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xb32197cf75efe05bf453c26178139f09b391582065549c1422bc92555ecffb64\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000037\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0xb32197cf75efe05bf453c26178139f09b391582065549c1422bc92555ecffb64\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000038\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x3b24509ed4ab3c7959f5c9391c1445c59290cdb5f13d6f780922f376b7029f30\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000039\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x3b24509ed4ab3c7959f5c9391c1445c59290cdb5f13d6f780922f376b7029f30\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000040\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x3b24509ed4ab3c7959f5c9391c1445c59290cdb5f13d6f780922f376b7029f30\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000041\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x77c6f40b7da70d885f68efaad7c661327482a63ea10dcb4271de819438254ae1\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000042\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x77c6f40b7da70d885f68efaad7c661327482a63ea10dcb4271de819438254ae1\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000043\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x77c6f40b7da70d885f68efaad7c661327482a63ea10dcb4271de819438254ae1\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000044\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x6a2c4691c547c43924650dbd30620b184b5fe3fb6dbe5c4446110b08f6f405bf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x6a2c4691c547c43924650dbd30620b184b5fe3fb6dbe5c4446110b08f6f405bf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000046\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x6a2c4691c547c43924650dbd30620b184b5fe3fb6dbe5c4446110b08f6f405bf\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000047\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x49075a7538e2c88ebe1926ce4d898198a2a4e790d14512943a9864bc536b3c82\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000048\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x49075a7538e2c88ebe1926ce4d898198a2a4e790d14512943a9864bc536b3c82\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0101010101010101010101010101010101010101010101010101010101010101\"\n },\n {\n \"tx_id\": \"0x0000000000000000000000000000000000000000000000000000000000000049\",\n \"output_index\": 0,\n \"tx_pointer_block_height\": 0,\n \"tx_pointer_tx_idx\": 0,\n \"owner\": \"0x49075a7538e2c88ebe1926ce4d898198a2a4e790d14512943a9864bc536b3c82\",\n \"amount\": 18446744073709551615,\n \"asset_id\": \"0x0202020202020202020202020202020202020202020202020202020202020202\"\n }\n ],\n \"messages\": [\n {\n \"sender\": \"0xc43454aa38dd91f88109a4b7aef5efb96ce34e3f24992fe0f81d233ca686f80f\",\n \"recipient\": \"0x69a2b736b60159b43bb8a4f98c0589f6da5fa3a3d101e8e269c499eb942753ba\",\n \"nonce\": \"0101010101010101010101010101010101010101010101010101010101010101\",\n \"amount\": 18446744073709551615,\n \"data\": \"\",\n \"da_height\": 0\n },\n {\n \"sender\": \"0x69a2b736b60159b43bb8a4f98c0589f6da5fa3a3d101e8e269c499eb942753ba\",\n \"recipient\": \"0xc43454aa38dd91f88109a4b7aef5efb96ce34e3f24992fe0f81d233ca686f80f\",\n \"nonce\": \"0e1ef2963832068b0e1ef2963832068b0e1ef2963832068b0e1ef2963832068b\",\n \"amount\": 12704439083013451934,\n \"data\": \"\",\n \"da_height\": 0\n },\n {\n \"sender\": \"0x22cae5308938e8b4caf217b6464884f6331eff05e81468df8ccd08126effc8d0\",\n \"recipient\": \"0x8d2af98a4198732a46bf65d87a73427dd7608acaad2414585d8ccdd6f59c437b\",\n \"nonce\": \"0x381de90750098776c71544527fd253412908dec3d07ce9a7367bd1ba975908a0\",\n \"amount\": 18446744073709551615,\n \"data\": \"\",\n \"da_height\": 0\n }\n ],\n \"contracts\": [],\n \"blobs\": [],\n \"block_height\": 0,\n \"da_block_height\": 0\n}\n","import chainConfigJson from './defaultSnapshots/chainConfig.json';\nimport metadataJson from './defaultSnapshots/metadata.json';\nimport stateConfigJson from './defaultSnapshots/stateConfig.json';\nimport type { SnapshotConfigs } from './types';\n\nexport const defaultSnapshotConfigs: SnapshotConfigs = {\n chainConfig: chainConfigJson,\n metadata: metadataJson,\n stateConfig: stateConfigJson,\n};\n\nexport const defaultConsensusKey =\n '0xa449b1ffee0e2205fa924c6740cc48b3b473aa28587df6dab12abc245d1f5298';\n","export function isDefined<T>(value: T | undefined): value is T {\n return value !== undefined;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport type { BytesLike } from '@fuel-ts/interfaces';\nimport type { BN } from '@fuel-ts/math';\nimport { bn } from '@fuel-ts/math';\n\nimport { arrayify } from './arrayify';\n\nconst BN_0 = bn(0);\nconst BN_58 = bn(58);\nconst Alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nlet Lookup: null | Record<string, BN> = null;\n\nfunction getAlpha(letter: string): BN {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = bn(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n throw new FuelError(ErrorCode.INVALID_DATA, `invalid base58 value ${letter}`);\n }\n return bn(result);\n}\n\n/**\n * Encode value as a Base58-encoded string.\n */\nexport function encodeBase58(_value: BytesLike): string {\n const bytes = arrayify(_value);\n\n let value = bn(bytes);\n let result = '';\n while (value.gt(BN_0)) {\n result = Alphabet[Number(value.mod(BN_58))] + result;\n value = value.div(BN_58);\n }\n\n // Account for leading padding zeros\n for (let i = 0; i < bytes.length; i++) {\n if (bytes[i]) {\n break;\n }\n result = Alphabet[0] + result;\n }\n\n return result;\n}\n\nexport function decodeBase58(value: string): BN {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result.mul(BN_58);\n result = result.add(getAlpha(value[i].toString()));\n }\n return result;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\nimport { hexlify } from './hexlify';\n\n/**\n * Returns a hex string by slicing data from the start offset to the end offset.\n *\n * @param data - the data to be sliced.\n * @param start - the start offset (default: 0).\n * @param end - the end offset (default: length of data).\n * @returns - a sliced hex string from start to end.\n */\nexport function dataSlice(data: BytesLike, start?: number, end?: number): string {\n const bytes = arrayify(data);\n if (end != null && end > bytes.length) {\n throw new FuelError(ErrorCode.INVALID_DATA, 'cannot slice beyond data bounds');\n }\n return hexlify(bytes.slice(start == null ? 0 : start, end == null ? bytes.length : end));\n}\n","import { FuelError, ErrorCode } from '@fuel-ts/errors';\n\n/**\n * Returns the UTF-8 byte representation of str.\n *\n * If form is disabled, the string is not normalized.\n * @param stri - the string to convert to UTF-8 bytes.\n * @param form - whether to normalize the string.\n * @returns - the UTF-8 byte representation of str.\n */\nexport function toUtf8Bytes(stri: string, form = true): Uint8Array {\n let str = stri;\n\n if (form) {\n str = stri.normalize('NFC');\n }\n\n const result: Array<number> = [];\n\n for (let i = 0; i < str.length; i += 1) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n } else if ((c & 0xfc00) === 0xd800) {\n i += 1;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new FuelError(\n ErrorCode.INVALID_INPUT_PARAMETERS,\n 'Invalid UTF-8 in the input string.'\n );\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return new Uint8Array(result);\n}\n","/* eslint-disable no-continue */\nimport type { BytesLike } from '@fuel-ts/interfaces';\n\nimport { arrayify } from './arrayify';\n\n/**\n * These errors are logged when decoding a UTF-8 string fails.\n *\n * `\"UNEXPECTED_CONTINUE\"` - a continuation byte was present where there\n * was nothing to continue.\n *\n * `\"BAD_PREFIX\"` - an invalid (non-continuation) byte to start a\n * UTF-8 codepoint was found.\n *\n * `\"OVERRUN\"` - the string is too short to process the expected\n * codepoint length.\n *\n * `\"MISSING_CONTINUE\"` - a missing continuation byte was expected but\n * not found. The offset indicates the index the continuation byte\n * was expected at.\n *\n * `\"OUT_OF_RANGE\"` - the computed code point is outside the range\n * for UTF-8. The badCodepoint indicates the computed codepoint, which was\n * outside the valid UTF-8 range.\n *\n * `\"UTF16_SURROGATE\"` - the UTF-8 strings contained a UTF-16 surrogate\n * pair. The badCodepoint is the computed codepoint, which was inside the\n * UTF-16 surrogate range.\n *\n * `\"OVERLONG\"` - the string is an overlong representation. The\n * badCodepoint indicates the computed codepoint, which has already\n * been bounds checked.\n *\n *\n * @returns string\n */\ntype Utf8ErrorReason =\n | 'UNEXPECTED_CONTINUE'\n | 'BAD_PREFIX'\n | 'OVERRUN'\n | 'MISSING_CONTINUE'\n | 'OUT_OF_RANGE'\n | 'UTF16_SURROGATE'\n | 'OVERLONG';\n\nfunction onError(\n reason: Utf8ErrorReason,\n offset: number,\n bytes: Uint8Array,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n output: Array<number>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n badCodepoint?: number\n): number {\n // #TODO: Log these as warnings after https://github.com/FuelLabs/fuels-ts/issues/2298 is implemented.\n // eslint-disable-next-line no-console\n console.log(`invalid codepoint at offset ${offset}; ${reason}, bytes: ${bytes}`);\n return offset;\n}\n\nfunction helper(codePoints: Array<number>): string {\n return codePoints\n .map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n // eslint-disable-next-line no-param-reassign\n codePoint -= 0x10000;\n return String.fromCharCode(\n ((codePoint >> 10) & 0x3ff) + 0xd800,\n (codePoint & 0x3ff) + 0xdc00\n );\n })\n .join('');\n}\n\nfunction getUtf8CodePoints(_bytes: BytesLike): Array<number> {\n const bytes = arrayify(_bytes, 'bytes');\n\n const result: Array<number> = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength: null | number = null;\n let overlongMask: null | number = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError('UNEXPECTED_CONTINUE', i - 1, bytes, result);\n } else {\n i += onError('BAD_PREFIX', i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError('OVERRUN', i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res: null | number = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n const nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) !== 0x80) {\n i += onError('MISSING_CONTINUE', i, bytes, result);\n res = null;\n break;\n }\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError('OUT_OF_RANGE', i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError('UTF16_SURROGATE', i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError('OVERLONG', i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n/**\n * Returns the string represented by the UTF-8 data bytes.\n *\n * @param bytes - the UTF-8 data bytes\n * @returns the string represented by the UTF-8 data bytes\n */\n\nexport function toUtf8String(bytes: BytesLike): string {\n return helper(getUtf8CodePoints(bytes));\n}\n","import type { BytesLike } from '@fuel-ts/interfaces';\nimport { gzipSync, gunzipSync } from 'fflate';\n\nimport { arrayify } from './arrayify';\n\nexport const compressBytecode = (bytecodeAsBinary?: BytesLike) => {\n if (!bytecodeAsBinary) {\n return '';\n }\n\n const bytecodeCompressBytes = arrayify(bytecodeAsBinary);\n const bytecodeCompressGzipped = gzipSync(bytecodeCompressBytes, { mtime: 0 });\n const bytecodeCompressBinary = String.fromCharCode.apply(\n null,\n new Uint8Array(bytecodeCompressGzipped) as unknown as number[]\n );\n const bytecodeCompressEncoded = btoa(bytecodeCompressBinary);\n\n return bytecodeCompressEncoded;\n};\n\nexport const decompressBytecode = (bytecodeAsBase64: string) => {\n const bytecodeDecompressBinary = atob(bytecodeAsBase64);\n const bytecodeDecompressDecoded = new Uint8Array(bytecodeDecompressBinary.length).map((_, i) =>\n bytecodeDecompressBinary.charCodeAt(i)\n );\n const bytecodeDecompressBytes = gunzipSync(bytecodeDecompressDecoded);\n\n return bytecodeDecompressBytes;\n};\n","export * from './utils/capitalizeString';\nexport * from './utils/chunkAndPadBytes';\nexport * from './utils/concat';\nexport * from './utils/arrayify';\nexport * from './utils/hexlify';\nexport * from './utils/normalizeString';\nexport * from './utils/date-time';\nexport * from './utils/types';\nexport * from './utils/sleep';\nexport * from './utils/defaultSnapshotConfigs';\nexport * from './utils/isDefined';\nexport * from './utils/base58';\nexport * from './utils/dataSlice';\nexport * from './utils/toUtf8Bytes';\nexport * from './utils/toUtf8String';\nexport * from './utils/bytecode';\n\n/**\n * Used to verify that a switch statement exhausts all variants.\n */\nexport function assertUnreachable(_x: never): never {\n throw new Error(\"Didn't expect to get here\");\n}\n","export default function _cloneRegExp(pattern) {\n return new RegExp(pattern.source, pattern.flags ? pattern.flags : (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : '') + (pattern.dotAll ? 's' : ''));\n}","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig * -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(async () => {}); //=> \"AsyncFunction\"\n * R.type(undefined); //=> \"Undefined\"\n * R.type(BigInt(123)); //=> \"BigInt\"\n */\nvar type = /*#__PURE__*/_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\nexport default type;","import _cloneRegExp from \"./_cloneRegExp.js\";\nimport type from \"../type.js\";\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\nexport default function _clone(value, deep, map) {\n map || (map = new _ObjectMap());\n\n // this avoids the slower switch with a quick if decision removing some milliseconds in each run.\n if (_isPrimitive(value)) {\n return value;\n }\n var copy = function copy(copiedValue) {\n // Check for circular and same references on the object graph and return its corresponding clone.\n var cachedCopy = map.get(value);\n if (cachedCopy) {\n return cachedCopy;\n }\n map.set(value, copiedValue);\n for (var key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n copiedValue[key] = deep ? _clone(value[key], true, map) : value[key];\n }\n }\n return copiedValue;\n };\n switch (type(value)) {\n case 'Object':\n return copy(Object.create(Object.getPrototypeOf(value)));\n case 'Array':\n return copy(Array(value.length));\n case 'Date':\n return new Date(value.valueOf());\n case 'RegExp':\n return _cloneRegExp(value);\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n return value.slice();\n default:\n return value;\n }\n}\nfunction _isPrimitive(param) {\n var type = typeof param;\n return param == null || type != 'object' && type != 'function';\n}\nvar _ObjectMap = /*#__PURE__*/function () {\n function _ObjectMap() {\n this.map = {};\n this.length = 0;\n }\n _ObjectMap.prototype.set = function (key, value) {\n var hashedKey = this.hash(key);\n var bucket = this.map[hashedKey];\n if (!bucket) {\n this.map[hashedKey] = bucket = [];\n }\n bucket.push([key, value]);\n this.length += 1;\n };\n _ObjectMap.prototype.hash = function (key) {\n var hashedKey = [];\n for (var value in key) {\n hashedKey.push(Object.prototype.toString.call(key[value]));\n }\n return hashedKey.join();\n };\n _ObjectMap.prototype.get = function (key) {\n /**\n * depending on the number of objects to be cloned is faster to just iterate over the items in the map just because the hash function is so costly,\n * on my tests this number is 180, anything above that using the hash function is faster.\n */\n if (this.length <= 180) {\n for (var p in this.map) {\n var bucket = this.map[p];\n for (var i = 0; i < bucket.length; i += 1) {\n var element = bucket[i];\n if (element[0] === key) {\n return element[1];\n }\n }\n }\n return;\n }\n var hashedKey = this.hash(key);\n var bucket = this.map[hashedKey];\n if (!bucket) {\n return;\n }\n for (var i = 0; i < bucket.length; i += 1) {\n var element = bucket[i];\n if (element[0] === key) {\n return element[1];\n }\n }\n };\n return _ObjectMap;\n}();","import _clone from \"./internal/_clone.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n\n/**\n * Creates a deep copy of the source that can be used in place of the source\n * object without retaining any references to it.\n * The source object may contain (nested) `Array`s and `Object`s,\n * `Number`s, `String`s, `Boolean`s and `Date`s.\n * `Function`s are assigned by reference rather than copied.\n *\n * Dispatches to a `clone` method if present.\n *\n * Note that if the source object has multiple nodes that share a reference,\n * the returned object will have the same structure, but the references will\n * be pointed to the location within the cloned value.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n * const objects = [{}, {}, {}];\n * const objectsClone = R.clone(objects);\n * objects === objectsClone; //=> false\n * objects[0] === objectsClone[0]; //=> false\n */\nvar clone = /*#__PURE__*/_curry1(function clone(value) {\n return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, true);\n});\nexport default clone;","export default function _identity(x) {\n return x;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _identity from \"./internal/_identity.js\";\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\nvar identity = /*#__PURE__*/_curry1(_identity);\nexport default identity;","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n return list;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\nvar _isArguments = /*#__PURE__*/function () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\n\n// cover IE < 9 keys issues\nvar hasEnumBug = ! /*#__PURE__*/{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n// Safari bug\nvar hasArgsEnumBug = /*#__PURE__*/function () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\nvar contains = function contains(list, item) {\n var idx = 0;\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\n\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values, R.toPairs\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) : /*#__PURE__*/_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n var prop, nIdx;\n var ks = [];\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n nIdx -= 1;\n }\n }\n return ks;\n});\nexport default keys;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparison of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n var b = _arrayFromIterator(bIterator);\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n }\n\n // if *a* array contains any element that is not included in *b*\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n var typeA = type(a);\n if (typeA !== type(b)) {\n return false;\n }\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n break;\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n break;\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n break;\n case 'Error':\n return a.name === b.name && a.message === b.message;\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n break;\n }\n var idx = stackA.length - 1;\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n idx -= 1;\n }\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n var keysA = keys(a);\n if (keysA.length !== keys(b).length) {\n return false;\n }\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n while (idx >= 0) {\n var key = keysA[idx];\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n idx -= 1;\n }\n return true;\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\nvar equals = /*#__PURE__*/_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\nexport default equals;","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n var inf, item;\n // Array.prototype.indexOf doesn't exist below IE9\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n while (idx < list.length) {\n item = list[idx];\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n }\n // non-zero numbers can utilise Set\n return list.indexOf(a, idx);\n\n // all these types can utilise Set\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n }\n }\n // anything else not covered above, defer to R.equals\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","import _includes from \"./_includes.js\";\nvar _Set = /*#__PURE__*/function () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n };\n\n //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n };\n\n //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n return _Set;\n}();\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n return false;\n }\n }\n // these types can all utilise the native Set\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n return false;\n }\n }\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n return false;\n }\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n return false;\n }\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n return false;\n }\n return true;\n }\n /* falls through */\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n // scan through all previously applied items\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n}\n\n// A simple Set type that honours R.equals semantics\nexport default _Set;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from \"./_isArray.js\";\nimport _isTransformer from \"./_isTransformer.js\";\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer created by [transducerCreator] to return a new transformer\n * (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} transducerCreator transducer factory if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\nexport default function _dispatchable(methodNames, transducerCreator, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n var obj = arguments[arguments.length - 1];\n if (!_isArray(obj)) {\n var idx = 0;\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, Array.prototype.slice.call(arguments, 0, -1));\n }\n idx += 1;\n }\n if (_isTransformer(obj)) {\n var transducer = transducerCreator.apply(null, Array.prototype.slice.call(arguments, 0, -1));\n return transducer(obj);\n }\n }\n return fn.apply(this, arguments);\n };\n}","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _Set from \"./_Set.js\";\nimport _xfBase from \"./_xfBase.js\";\nvar XUniqBy = /*#__PURE__*/function () {\n function XUniqBy(f, xf) {\n this.xf = xf;\n this.f = f;\n this.set = new _Set();\n }\n XUniqBy.prototype['@@transducer/init'] = _xfBase.init;\n XUniqBy.prototype['@@transducer/result'] = _xfBase.result;\n XUniqBy.prototype['@@transducer/step'] = function (result, input) {\n return this.set.add(this.f(input)) ? this.xf['@@transducer/step'](result, input) : result;\n };\n return XUniqBy;\n}();\nexport default function _xuniqBy(f) {\n return function (xf) {\n return new XUniqBy(f, xf);\n };\n}","import _Set from \"./internal/_Set.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xuniqBy from \"./internal/_xuniqBy.js\";\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\nvar uniqBy = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xuniqBy, function (fn, list) {\n var set = new _Set();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n if (set.add(appliedItem)) {\n result.push(item);\n }\n idx += 1;\n }\n return result;\n}));\nexport default uniqBy;","import identity from \"./identity.js\";\nimport uniqBy from \"./uniqBy.js\";\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\nvar uniq = /*#__PURE__*/uniqBy(identity);\nexport default uniq;"],"mappings":"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","names":["require_bn","__commonJSMin","exports","module","assert","val","msg","inherits","ctor","superCtor","TempCtor","BN","number","base","endian","Buffer","num","left","right","start","i","j","w","off","parseHex4Bits","string","index","c","parseHexByte","lowerBound","r","parseLength","parseBase","str","end","mul","b","len","limbLen","limbPow","total","mod","word","pow","dest","move","src","size","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","ret","length","allocate","ArrayType","byteLength","reqLength","res","postfix","position","shift","t","hi","toBitArray","bit","wbit","width","a","bytesNeeded","bitsLeft","cmp","smallMulTo","self","lo","k","ncarry","rword","maxJ","comb10MulTo","o","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","x","y","N","l","rb","rbt","rws","iws","rtws","itws","s","rtwdf","itwdf","p","rtwdf_","itwdf_","re","ie","ro","io","rx","n","m","odd","ws","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","isNegNum","q","bits","carryMask","newCarry","hint","extended","h","mask","maskedWords","mode","bhi","bhiBits","diff","qj","positive","div","dm","half","r2","acc","A","B","C","D","g","yp","xp","im","jm","x1","x2","delta","negative","Red","ctx","primes","MPrime","name","tmp","rlen","input","K256","output","outLen","prev","next","P224","P192","P25519","prime","mod3","one","nOne","lpow","z","inv","windowSize","wnd","current","currentLen","Mont","u","getBuiltinVersions","parseVersion","version","major","minor","patch","v","versionDiffs","version1","version2","semver1","semver2","majorEq","minorEq","patchEq","checkFuelCoreVersionCompatibility","networkVersion","supportedVersion","versions","ErrorCode","_FuelError","versions","error","enumValues","code","message","metadata","rawError","name","VERSIONS","FuelError","__publicField","import_bn","DEFAULT_PRECISION","DEFAULT_MIN_PRECISION","DEFAULT_DECIMAL_UNITS","toFixed","value","options","precision","minPrecision","valueUnits","valueDecimals","groupRegex","units","decimals","lastNonZeroIndex","keepChars","decimalPortion","BN","BnJs","base","endian","bnValue","bnBase","length","output","bytesPadding","bytesLength","FuelError","ErrorCode","formattedUnits","formattedFixed","originalDecimals","firstNonZero","defaultDecimals","v","width","methodName","num","out","p","b","gcd","mode","positive","div","mod","bn","valueToParse","amount","toNumber","toHex","toBytes","createRequire","require","Worker","Worker","require","u8","u16","i32","fleb","fdeb","clim","freb","eb","start","b","i","r","j","_a","fl","revfl","_b","fd","revfd","rev","x","hMap","cd","mb","s","l","le","co","rvb","sv","r_1","v","m","flt","fdt","flm","fdm","hMap","fdt","shft","p","slc","v","s","e","u8","wbits","d","p","v","o","wbits16","hTree","mb","t","i","s","t2","et","u8","a","b","l","r","i0","i1","i2","maxSym","tr","u16","mbt","ln","dt","lft","cst","i2_1","i2_2","i2_3","n","lc","c","cl","cli","cln","cls","w","clen","cf","wfblk","out","pos","dat","shft","wblk","final","syms","lf","df","eb","li","bs","bl","_a","dlt","mlb","_b","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","_e","lct","mlcb","nlcc","clim","flen","ftlen","flt","fdt","dtlen","lm","ll","dm","dl","hMap","llm","lcts","it","clct","len","flm","fdm","sym","fleb","dst","fdeb","deo","i32","dflt","lvl","plvl","pre","post","st","lst","opt","msk_1","prev","head","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","j","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","pti","cd","revfl","revfd","lin","din","e","slc","crct","k","crc","cr","dopt","dat","opt","pre","post","st","dict","newDat","u8","dflt","wbytes","d","b","v","gzh","c","o","fn","i","gzhl","o","gzipSync","data","opts","c","crc","l","d","dopt","gzhl","s","gzh","wbytes","td","tds","et","chunkAndPadBytes","bytes","chunkSize","chunks","offset","chunk","lastChunk","remainingBytes","paddedChunkLength","newChunk","arrayify","value","name","copy","result","i","message","FuelError","ErrorCode","concatBytes","arrays","byteArrays","array","totalSize","accum","item","concatenated","object","concat","v","HexCharacters","hexlify","data","normalizeString","str","output","s","match","t","errMsg","TAI64_LEAP_SECONDS","TAI64_UNIX_OFFSET","msToSeconds","ms","secondsToMs","seconds","tai64ToUnixSeconds","tai64","unixSecondsToTai64","unixSeconds","tai64ToUnixMilliseconds","_DateTime","unixMilliseconds","date","DateTime","__publicField","sleep","time","resolve","isDefined","value","BN_0","bn","BN_58","Alphabet","Lookup","getAlpha","letter","i","result","FuelError","ErrorCode","encodeBase58","_value","bytes","arrayify","decodeBase58","dataSlice","data","start","end","hexlify","toUtf8Bytes","stri","form","str","c","c2","pair","onError","reason","offset","output","badCodepoint","helper","codePoints","codePoint","getUtf8CodePoints","_bytes","extraLength","overlongMask","res","j","nextChar","toUtf8String","compressBytecode","bytecodeAsBinary","bytecodeCompressBytes","bytecodeCompressGzipped","gzipSync","bytecodeCompressBinary","assertUnreachable","_x","_cloneRegExp","pattern","_isPlaceholder","a","_curry1","fn","f1","a","_isPlaceholder","type","_curry1","val","type_default","_clone","value","deep","map","_ObjectMap","_isPrimitive","copy","copiedValue","cachedCopy","key","type_default","_cloneRegExp","param","type","hashedKey","bucket","p","i","element","clone","_curry1","value","_clone","clone_default","_identity","x","identity","_curry1","_identity","identity_default","_curry2","fn","f2","a","b","_isPlaceholder","_curry1","_b","_a","_arrayFromIterator","iter","list","next","_includesWith","pred","x","list","idx","len","_functionName","f","match","_has","prop","obj","_objectIs","a","b","objectIs_default","toString","_isArguments","x","_has","isArguments_default","hasEnumBug","nonEnumerableProps","hasArgsEnumBug","contains","list","item","idx","keys","_curry1","obj","prop","nIdx","ks","checkArgsLength","isArguments_default","_has","keys_default","_uniqContentEquals","aIterator","bIterator","stackA","stackB","a","_arrayFromIterator","b","eq","_a","_b","_equals","_includesWith","aItem","objectIs_default","typeA","type_default","_functionName","idx","keysA","keys_default","extendedStackA","extendedStackB","key","_has","equals","_curry2","b","_equals","equals_default","_indexOf","list","idx","inf","item","equals_default","_includes","a","list","_indexOf","_Set","item","hasOrAdd","shouldAdd","set","type","prevSize","newSize","bIdx","_includes","Set_default","isArray_default","val","_isTransformer","obj","_dispatchable","methodNames","transducerCreator","fn","obj","isArray_default","idx","_isTransformer","transducer","xfBase_default","result","XUniqBy","f","xf","Set_default","xfBase_default","result","input","_xuniqBy","uniqBy","_curry2","_dispatchable","_xuniqBy","fn","list","set","Set_default","result","idx","appliedItem","item","uniqBy_default","uniq","uniqBy_default","identity_default","uniq_default"]}