@jpool/bond-sdk 0.10.5 → 0.11.0-next.3

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.5.0_@swc+core@1.13.5_@swc+helpers@0.5.17__jiti@2.5.1_postcss@8.5.6_tsx@4.20.5_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../../node_modules/.pnpm/bn.js@5.2.2/node_modules/bn.js/lib/bn.js","../src/index.ts","../src/client.ts","../src/constants.ts","../src/history.ts","../src/types/index.ts","../src/idl/jbond.json","../src/utils/index.ts","../src/utils/enum.ts","../src/utils/wallet.ts","../src/utils/web3.ts"],"names":["len","i","len2","Buffer","byteLength","module","exports","BN","allocate","comb10MulTo","prime","SessionStatus","BondType","BondTransactionType","utils","LAMPORTS_PER_SOL","BondClientEnv","Program","AnchorProvider","PublicKey","Transaction","getAssociatedTokenAddressSync","bondState","ACCOUNT_SIZE","AccountLayout"],"mappings":"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","file":"index.js","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL(`file:${__filename}`).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '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 this.length = num === 0 ? 1 : this.length;\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export * from './client'\nexport * from './constants'\nexport * from './types'\n\nexport type { Jbond } from './types/jbond'\n\nexport { NodeWallet } from './utils'\n","import { AnchorProvider, Program, Provider } from '@coral-xyz/anchor'\n\nimport {\n ACCOUNT_SIZE,\n AccountLayout,\n getAssociatedTokenAddressSync,\n} from '@solana/spl-token'\nimport {\n Connection,\n Keypair,\n PublicKey,\n PublicKeyInitData,\n Transaction,\n TransactionInstruction,\n} from '@solana/web3.js'\nimport { BN } from 'bn.js'\nimport { BOND_STATE_SEED, ENV_PROGRAM_ID, GLOBAL_STATE_SEED, VALIDATOR_BOND_SEED } from './constants'\nimport { HistoryManager } from './history'\nimport IDL from './idl/jbond.json'\nimport {\n BondConfigureProps, BondFinishProps,\n BondInitializeProps, BondStartProps,\n BondState,\n BondType,\n ClaimProps,\n GlobalConfigureProps,\n GlobalInitializeProps,\n Jbond,\n RegisterValidatorProps,\n SessionStatus,\n SetWithdrawAuthorityProps,\n TopUpCollateralProps, WithdrawCollateralProps,\n} from './types'\nimport {\n anchorToBondType,\n bondTypeToAnchor, getBondTypeSeed, matchVariant, NodeWallet, sameVariant, solToLamports, Wallet,\n} from './utils'\n\n/**\n * Enum for different client environments.\n */\nexport enum BondClientEnv { DEV = 'dev', STAGE = 'stage', PROD = 'prod' }\n\n/**\n * Options for configuring the JBondClient.\n */\nexport type ClientOptions = { debug?: boolean } & Record<string, any>\n\nexport class JBondClient {\n readonly options: ClientOptions\n readonly program: Program<Jbond>\n\n constructor(readonly provider: Provider, options?: ClientOptions) {\n this.options = options ?? {}\n this.program = new Program(IDL, this.provider)\n }\n\n get history() {\n return new HistoryManager(this)\n }\n\n /**\n * Creates an instance of `JBondClient` using a provided connection and wallet.\n */\n static fromWallet(connection: Connection, wallet?: Wallet, options?: ClientOptions) {\n return new this(\n new AnchorProvider(\n connection,\n wallet ?? { publicKey: PublicKey.default } as Wallet,\n AnchorProvider.defaultOptions(),\n ),\n options,\n )\n }\n\n /**\n * Creates an instance of `JBondClient` using the provided connection and keypair.\n */\n static fromKeypair(connection: Connection, keypair: Keypair, options?: ClientOptions) {\n return JBondClient.fromWallet(connection, new NodeWallet(keypair), options)\n }\n\n /**\n * Get the current program ID.\n */\n get programId() {\n return this.options.programId ?? this.program.programId\n }\n\n /**\n * Get the current connection.\n */\n private get connection() {\n return this.provider.connection\n }\n\n /**\n * Set the environment.\n */\n env(env: BondClientEnv) {\n return this.configure('programId', ENV_PROGRAM_ID[env])\n }\n\n /**\n * Configure a specific option.\n */\n configure<K extends keyof ClientOptions>(key: K, val: ClientOptions[K]) {\n this.options[key] = val\n return this\n }\n\n /**\n * Debug logging\n * @param args\n */\n debug(...args: any[]) {\n if (this.options.debug) {\n console.log(`%c[JBondClient]`, 'color: #009999;', ...args)\n }\n }\n\n /**\n * Program Derived Addresses (PDAs)\n */\n pda = {\n globalState: () => PublicKey.findProgramAddressSync(\n [Buffer.from(GLOBAL_STATE_SEED)],\n this.programId,\n ),\n bondState: (bondType: BondType, bondName: string) => {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(BOND_STATE_SEED), Buffer.from(getBondTypeSeed(bondType)), Buffer.from(bondName)],\n this.programId,\n )\n },\n validatorBond: (bondType: BondType, bondName: string, vote: PublicKeyInitData) => {\n const [bondState] = this.pda.bondState(bondType, bondName)\n return PublicKey.findProgramAddressSync(\n [Buffer.from(VALIDATOR_BOND_SEED), bondState.toBuffer(), new PublicKey(vote).toBuffer()],\n this.programId,\n )\n },\n }\n\n /**\n * Initialize global state\n */\n async globalInitialize(props: GlobalInitializeProps) {\n const ix = await this.getGlobalInitializeIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Initialize the program\n */\n async bondInitialize(props: BondInitializeProps) {\n const ix = await this.getBondInitializeIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Register a new validator\n */\n async registerValidator(props: RegisterValidatorProps) {\n const ix = await this.getRegisterValidatorIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Top up collateral\n */\n async topUpCollateral(props: TopUpCollateralProps) {\n const ixs = await this.getTopUpIxs(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(...ixs))\n }\n\n /**\n * Withdraw collateral\n */\n async withdrawCollateral(props: WithdrawCollateralProps) {\n const ix = await this.getWithdrawIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Claim compensation\n */\n async claimCompensation(props: ClaimProps) {\n const ix = await this.getClaimIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Update global configuration for the program\n */\n async globalConfigure(props: GlobalConfigureProps) {\n const ix = await this.getGlobalConfigureIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Update global configuration for the program\n */\n async bondConfigure(props: BondConfigureProps) {\n const ix = await this.getBondConfigureIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Set withdrawal authority for validator bond\n */\n async setWithdrawAuthority(props: SetWithdrawAuthorityProps) {\n const ix = await this.getSetWithdrawAuthorityIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Start crowdfunding bond session\n */\n async bondStart(props: BondStartProps) {\n const ix = await this.getBondSessionStartIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Finish crowdfunding bond session\n */\n async bondFinish(props: BondFinishProps) {\n const ix = await this.getBondSessionFinishIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Build global state initialize instruction\n */\n async getGlobalInitializeIx(props: GlobalInitializeProps) {\n const [globalState] = this.pda.globalState()\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n return this.program.methods\n .globalInitialize()\n .accountsPartial({ globalState, authority })\n .instruction()\n }\n\n /**\n * Build configure instruction\n */\n async getGlobalConfigureIx(props: GlobalConfigureProps) {\n const [globalState] = this.pda.globalState()\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n return this.program.methods\n .globalConfigure({\n newAuthority: props.newAuthority ?? null,\n })\n .accountsStrict({ globalState, authority })\n .instruction()\n }\n\n /**\n * Build bond initialize instruction\n */\n async getBondInitializeIx(props: BondInitializeProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n const accounts: Record<string, any> = {\n bondState,\n authority,\n reserve: props.reserve,\n reserveTokenAccount: null,\n mint: null,\n }\n\n matchVariant(props.collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.reserveTokenAccount = getAssociatedTokenAddressSync(mint, props.reserve)\n accounts.mint = mint\n },\n })\n\n return this.program.methods\n .bondInitialize({\n name: props.name,\n bondType: bondTypeToAnchor(props.bondType),\n reserve: props.reserve,\n collateralType: props.collateralType,\n })\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build bond configure instruction\n */\n async getBondConfigureIx(props: BondConfigureProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n return this.program.methods\n .bondConfigure({\n status: props.status ?? null,\n newReserve: props.newReserve ?? null,\n newAuthority: props.newAuthority ?? null,\n })\n .accountsStrict({ bondState, authority })\n .instruction()\n }\n\n /**\n * Build register validator instruction\n */\n async getRegisterValidatorIx(props: RegisterValidatorProps) {\n const { bondType, voteAccount, identity, name } = props\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, voteAccount)\n const creator = props.creator ?? this.provider.wallet?.publicKey\n\n if (!creator) {\n throw new Error('Missing creator')\n }\n\n let collateralType = props.collateralType\n if (!collateralType) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = bondState.collateralType\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n identity,\n voteAccount,\n creator,\n bondTokenAccount: null,\n mint: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n accounts.mint = mint\n },\n })\n\n return this.program.methods\n .bondRegister(bondTypeToAnchor(bondType), name)\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build top up collateral instructions\n */\n async getTopUpIxs(props: TopUpCollateralProps) {\n const { bondType, voteAccount, amount, name } = props\n\n const payer = props.payer ?? this.provider.wallet?.publicKey\n if (!payer) {\n throw new Error('Missing payer')\n }\n\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, voteAccount)\n\n let collateralType = props.collateralType\n if (!collateralType) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = bondState.collateralType\n }\n\n const instructions: TransactionInstruction[] = []\n\n // Apply register validator instruction if not exists\n try {\n await this.getValidatorBond(props.bondType, props.name, props.voteAccount)\n } catch {\n instructions.push(\n await this.getRegisterValidatorIx({\n bondType: props.bondType,\n name: props.name,\n voteAccount: props.voteAccount,\n identity: props.identity,\n creator: props.payer,\n collateralType,\n }),\n )\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n payer,\n payerTokenAccount: null,\n bondTokenAccount: null,\n stakeAccount: null,\n stakeProgram: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.payerTokenAccount = getAssociatedTokenAddressSync(mint, payer)\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n },\n })\n\n instructions.push(await this.program.methods\n .bondTopUp(solToLamports(amount))\n .accountsPartial(accounts)\n .instruction(),\n )\n\n return instructions\n }\n\n /**\n * Build withdraw collateral instruction\n */\n async getWithdrawIx(props: WithdrawCollateralProps) {\n const { bondType, voteAccount, amount, name } = props\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, voteAccount)\n\n const payer = this.provider.wallet?.publicKey\n const destination = props.destination ?? payer\n\n if (!payer || !destination) {\n throw new Error('Missing payer/destination')\n }\n\n let collateralType = props.collateralType\n if (!collateralType) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = bondState.collateralType\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n destination,\n withdrawalAuthority: props.withdrawalAuthority ?? payer,\n destinationTokenAccount: null,\n bondTokenAccount: null,\n stakeAccount: null,\n stakeProgram: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.destinationTokenAccount = getAssociatedTokenAddressSync(mint, destination, true)\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n },\n })\n\n return this.program.methods\n .bondWithdraw(solToLamports(amount))\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build claim instruction\n */\n async getClaimIx(props: ClaimProps) {\n const { bondType, name, amount } = props\n\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, props.voteAccount)\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n let reserve = props.reserve\n let collateralType = props.collateralType\n if (!collateralType || !reserve) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = collateralType ?? bondState.collateralType\n reserve = reserve ?? bondState.reserve\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n reserve,\n authority,\n destinationTokenAccount: null,\n bondTokenAccount: null,\n reserveTokenAccount: null,\n stakeAccount: null,\n stakeProgram: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.destinationTokenAccount = getAssociatedTokenAddressSync(mint, reserve, true)\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n accounts.reserveTokenAccount = getAssociatedTokenAddressSync(mint, reserve, true)\n },\n })\n\n return this.program.methods\n .bondClaim(solToLamports(amount))\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build set withdraw authority instruction\n */\n async getSetWithdrawAuthorityIx(props: SetWithdrawAuthorityProps) {\n const [validatorBond] = this.pda.validatorBond(props.bondType, props.name, props.voteAccount)\n const identity = props.identity ?? this.provider.wallet?.publicKey\n return this.program.methods\n .bondSetWithdrawAuthority()\n .accountsPartial({\n validatorBond,\n identity,\n newWithdrawAuthority: props.newWithdrawAuthority ?? null,\n })\n .instruction()\n }\n\n /**\n * Build finish crowdfunding session instruction\n */\n async getBondSessionFinishIx(props: BondFinishProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = this.provider.wallet?.publicKey\n return this.program.methods\n .sessionFinish()\n .accountsPartial({ bondState, authority })\n .instruction()\n }\n\n /**\n * Build start crowdfunding session instruction\n */\n async getBondSessionStartIx(props: BondStartProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = this.provider.wallet?.publicKey\n return this.program.methods\n .sessionStart(new BN(props.duration))\n .accountsPartial({ bondState, authority })\n .instruction()\n }\n\n /**\n * Get all bond states with total collected collateral\n */\n async getAllBondStates(bondType: BondType, sessionStatus?: SessionStatus) {\n const result = []\n\n const accounts = await this.program.account.bondState.all()\n\n for (const { publicKey, account } of accounts) {\n if (!sameVariant(account.bondType, bondTypeToAnchor(bondType))) {\n continue\n }\n\n if (sessionStatus !== undefined && this.getBondStateSessionStatus(account) !== sessionStatus) {\n continue\n }\n\n const stateStats = await this.getBondStateStats(account)\n\n result.push({ publicKey, bondState: account, stateStats })\n }\n\n return result\n }\n\n /**\n * Fetch global state or throw if not found\n */\n async getGlobalState() {\n const [publicKey] = this.pda.globalState()\n this.debug(`Fetching global state ${publicKey}...`)\n const data = await this.program.account.globalState.fetch(publicKey)\n return { publicKey, ...data }\n }\n\n /**\n * Fetch bond state with stats\n */\n async getBondState(bondType: BondType, bondName: string) {\n const [publicKey] = this.pda.bondState(bondType, bondName)\n this.debug(`Fetching bond state ${publicKey}...`)\n const data = await this.program.account.bondState.fetch(publicKey)\n return { publicKey, ...data }\n }\n\n /**\n * Fetch validator bond data or null if not found\n */\n async getValidatorBond(bondType: BondType, bondName: string, vote: PublicKeyInitData) {\n const [publicKey] = this.pda.validatorBond(bondType, bondName, new PublicKey(vote))\n const data = await this.program.account.validatorBond.fetch(publicKey)\n return { publicKey, ...data }\n }\n\n /**\n * Get validator bond account balance (in SOL)\n */\n async getValidatorBondBalance(bondType: BondType, bondName: string, vote: PublicKeyInitData): Promise<number> {\n const [address] = this.pda.validatorBond(bondType, bondName, new PublicKey(vote))\n const bondState = await this.getBondState(bondType, bondName)\n const collateralType = bondState.collateralType\n\n return await matchVariant(collateralType, {\n native: async () => {\n const accountInfo = await this.connection.getAccountInfo(address).catch(() => null)\n if (!accountInfo) {\n return 0\n }\n const { data, lamports } = accountInfo\n const rentExempt = await this.connection.getMinimumBalanceForRentExemption(data.length)\n return Math.max(0, lamports - rentExempt)\n },\n token: async (mint: PublicKey) => {\n const tokenAccount = getAssociatedTokenAddressSync(mint, address, true)\n try {\n const balance = await this.connection.getTokenAccountBalance(tokenAccount)\n return solToLamports(balance.value.amount).toNumber()\n } catch {\n return 0\n }\n },\n })\n }\n\n /**\n * Get total collected collateral for a bond state\n */\n async getBondStateTotalCollected(bondType: BondType, bondName: string, votes: PublicKeyInitData[]) {\n const bondState = await this.getBondState(bondType, bondName)\n const collateralType = bondState.collateralType\n\n const chunk = <T>(arr: T[], n = 100) => {\n const res: T[][] = []\n for (let i = 0; i < arr.length; i += n) {\n res.push(arr.slice(i, i + n))\n }\n return res\n }\n\n // TODO: move to utils\n return await matchVariant(collateralType, {\n native: async () => {\n const addresses = votes.map((vote) => {\n const [address] = this.pda.validatorBond(bondType, bondName, new PublicKey(vote))\n return address\n })\n\n const accountInfos = await this.connection.getMultipleAccountsInfo(addresses)\n\n const balances = await Promise.all(\n accountInfos.map(async (accountInfo) => {\n if (!accountInfo) {\n return 0\n }\n const { lamports } = accountInfo\n return lamports\n }),\n )\n\n return balances.reduce((sum, v) => sum + v, 0)\n },\n token: async (mint: PublicKey) => {\n const tokenAccounts = votes.map((vote) => {\n const [validatorBondAddress] = this.pda.validatorBond(bondType, bondName, new PublicKey(vote))\n return getAssociatedTokenAddressSync(mint, validatorBondAddress, true)\n })\n\n if (tokenAccounts.length === 0) {\n return 0\n }\n\n let total: bigint = 0n\n\n for (const part of chunk(tokenAccounts, 100)) {\n const infos = await this.connection.getMultipleAccountsInfo(part).catch(() => [])\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i]\n if (!info) {\n continue\n }\n if (info.data.length !== ACCOUNT_SIZE) {\n continue\n }\n try {\n const acc = AccountLayout.decode(info.data)\n const raw = BigInt(acc.amount.toString())\n total += raw\n } catch {\n }\n }\n }\n\n const asNumber = Number(total)\n return Number.isFinite(asNumber) ? asNumber : Number.MAX_SAFE_INTEGER\n },\n })\n }\n\n /**\n * Get bond state stats\n * @param state\n * @private\n */\n private async getBondStateStats(state: BondState) {\n const bondType = anchorToBondType(state.bondType)\n const validatorBonds = await this.getBondValidatorStates(bondType, state.name)\n\n const totalCollected = await this.getBondStateTotalCollected(\n bondType,\n state.name,\n validatorBonds.map(vb => vb.voteAccount),\n )\n\n return {\n totalCollected,\n status: this.getBondStateSessionStatus(state),\n }\n }\n\n /**\n * Get all validator bonds for a given bond state\n */\n private async getBondValidatorStates(bondType: BondType, bondName: string) {\n const [bondState] = this.pda.bondState(bondType, bondName)\n\n const accounts = await this.program.account.validatorBond.all([\n {\n memcmp: {\n offset: 8, // discriminator\n bytes: bondState.toBase58(),\n },\n },\n ])\n\n const result = []\n\n for (const { publicKey, account } of accounts) {\n result.push({ publicKey, ...account })\n }\n\n return result\n }\n\n /**\n * Get session status for bond state\n */\n private getBondStateSessionStatus(bondState: BondState) {\n const now = Math.floor(Date.now() / 1000)\n\n if (bondState.sessionFinishTs.toNumber() > now) {\n return SessionStatus.Live\n } else {\n return SessionStatus.Finished\n }\n }\n}\n","import { PublicKey } from '@solana/web3.js'\n\n// Account seeds\nexport const GLOBAL_STATE_SEED = 'global_state'\nexport const BOND_STATE_SEED = 'bond_state'\nexport const VALIDATOR_BOND_SEED = 'validator_bond'\n\n// Bond type seeds\nexport const STANDARD_BOND_SEED = 'standard'\nexport const CROWDFUNDING_BOND_SEED = 'crowdfunding'\n\n/**\n * Program IDs for different environments\n */\nexport const ENV_PROGRAM_ID: Record<string, PublicKey> = {\n // [BondClientEnv.DEV]: new PublicKey('...'),\n}\n","import { BN, utils } from '@coral-xyz/anchor'\nimport {\n Cluster,\n LAMPORTS_PER_SOL,\n ParsedTransactionWithMeta,\n PublicKey,\n PublicKeyInitData,\n} from '@solana/web3.js'\nimport { JBondClient } from './client'\nimport {\n BondTransactionType,\n BondType,\n TransactionHistoryItem,\n} from './types'\n\nexport type GetHistoryOpts = {\n cluster?: Cluster\n limit?: number\n before?: string\n until?: string\n}\n\nconst { bs58 } = utils.bytes\n\nexport class HistoryManager {\n // Cache of instruction discriminators\n private discCache = new Map<string, Uint8Array>()\n\n constructor(readonly client: JBondClient) {\n }\n\n get program() {\n return this.client.program\n }\n\n get programId() {\n return this.client.programId\n }\n\n get connection() {\n return this.client.provider.connection\n }\n\n debug(...args: any[]) {\n this.client.debug(...args)\n }\n\n async getHistory(\n bondType: BondType,\n bondName: string,\n vote: PublicKeyInitData,\n opts?: GetHistoryOpts,\n ): Promise<TransactionHistoryItem[]> {\n const [validatorBondAccount] = this.client.pda.validatorBond(bondType, bondName, vote)\n\n this.debug(`Fetching history for validator bond account: ${validatorBondAccount.toBase58()}`)\n\n const signatures = await this.fetchSignaturesForAddress(validatorBondAccount, {\n limit: opts?.limit,\n before: opts?.before,\n until: opts?.until,\n })\n\n if (!signatures.length) {\n return []\n }\n\n const sigs = signatures.map(s => s.signature)\n const parsed = await this.fetchParsedTransactions(sigs)\n\n const txBySig = new Map<string, ParsedTransactionWithMeta | null>()\n\n for (let i = 0; i < sigs.length; i++) {\n const want = sigs[i]\n const tx = parsed[i] ?? null\n if (tx?.transaction?.signatures?.[0] && tx.transaction.signatures[0] !== want) {\n const found = parsed.find(t => t?.transaction?.signatures?.[0] === want) ?? null\n txBySig.set(want, found)\n } else {\n txBySig.set(want, tx)\n }\n }\n\n const history: TransactionHistoryItem[] = []\n\n for (const sigInfo of signatures) {\n const sig = sigInfo.signature\n const tx = txBySig.get(sig)\n if (!tx || !tx.meta || tx.meta.err) {\n continue\n }\n\n const slot = tx.slot ?? 0\n const ixs = tx.transaction.message.instructions\n\n for (const ix of ixs) {\n if (!('programId' in ix)) {\n continue\n }\n if (!ix.programId.equals(this.programId)) {\n continue\n }\n if ((ix as any).parsed) {\n continue\n }\n\n const { type, amount } = this.decodeInstructionData((ix as any).data)\n if (!type || amount <= 0) {\n continue\n }\n\n history.push({\n signature: sig,\n slot,\n epoch: slotToEpoch(slot, opts?.cluster),\n type,\n amount,\n })\n }\n }\n\n return history.sort((a, b) => b.slot - a.slot)\n }\n\n private async fetchSignaturesForAddress(\n address: PublicKey,\n options?: { limit?: number, before?: string, until?: string },\n ) {\n const sigs = await this.connection.getSignaturesForAddress(address, {\n limit: options?.limit || 1000,\n before: options?.before,\n until: options?.until,\n }, 'confirmed')\n console.log(sigs)\n return sigs.filter(s => !s.err)\n }\n\n private async fetchParsedTransactions(\n sigs: string[],\n batchSize = 100,\n ): Promise<(ParsedTransactionWithMeta | null)[]> {\n const all: (ParsedTransactionWithMeta | null)[] = []\n for (let i = 0; i < sigs.length; i += batchSize) {\n const batch = sigs.slice(i, i + batchSize)\n const txs = await this.connection.getParsedTransactions(batch, {\n commitment: 'confirmed',\n maxSupportedTransactionVersion: 0,\n })\n all.push(...txs)\n }\n return all\n }\n\n private getInstructionDiscriminator(name: string): Uint8Array {\n const cached = this.discCache.get(name)\n if (cached) {\n return cached\n }\n\n const ix = this.program.idl.instructions.find(i => i.name === name)\n if (!ix || !Array.isArray(ix.discriminator)) {\n throw new Error(`Discriminator not found for instruction ${name}`)\n }\n const disc = new Uint8Array(ix.discriminator)\n this.discCache.set(name, disc)\n return disc\n }\n\n private decodeInstructionData(\n data: string | undefined,\n ): { type: BondTransactionType | null, amount: number } {\n if (!data) {\n return {\n type: null, amount: 0 }\n }\n\n try {\n const buf = bs58.decode(data)\n if (buf.length < 16) {\n return {\n type: null, amount: 0,\n }\n }\n\n const disc = buf.slice(0, 8)\n const amountBytes = buf.slice(8, 16)\n const amount = new BN(amountBytes, 'le').toNumber() / LAMPORTS_PER_SOL\n\n const perfRegister = this.getInstructionDiscriminator('perfBondRegister')\n const perfTopUp = this.getInstructionDiscriminator('perfBondTopUp')\n const perfClaim = this.getInstructionDiscriminator('perfBondClaim')\n const perfWithdraw = this.getInstructionDiscriminator('perfBondWithdraw')\n\n if (Buffer.from(disc).equals(Buffer.from(perfRegister))) {\n return { type: BondTransactionType.Deposit, amount }\n }\n if (Buffer.from(disc).equals(Buffer.from(perfTopUp))) {\n return { type: BondTransactionType.Deposit, amount }\n }\n if (Buffer.from(disc).equals(Buffer.from(perfClaim))) {\n return { type: BondTransactionType.Compensation, amount }\n }\n if (Buffer.from(disc).equals(Buffer.from(perfWithdraw))) {\n return { type: BondTransactionType.Withdrawal, amount }\n }\n\n return { type: null, amount: 0 }\n } catch {\n return { type: null, amount: 0 }\n }\n }\n}\n\nfunction slotToEpoch(slot: number, cluster?: Cluster): number {\n const isMainnet = !cluster || cluster === 'mainnet-beta'\n const slotsPerEpoch = isMainnet ? 432_000 : 400_000\n return Math.floor(slot / slotsPerEpoch)\n}\n","import { IdlAccounts, IdlTypes } from '@coral-xyz/anchor'\nimport { PublicKey } from '@solana/web3.js'\nimport { Jbond } from './jbond'\n\nexport * from './jbond'\n\nexport type GlobalState = IdlAccounts<Jbond>['globalState']\nexport type BondState = IdlAccounts<Jbond>['bondState']\nexport type ValidatorBond = IdlAccounts<Jbond>['validatorBond']\n\n// export type BondType = IdlTypes<Jbond>['bondType']\nexport type CollateralType = IdlTypes<Jbond>['collateralType']\nexport type BondStateStatus = IdlTypes<Jbond>['bondStatus']\n\nexport enum SessionStatus {\n Live,\n Finished,\n}\n\nexport enum BondType {\n Standard = 'standard',\n Crowdfunding = 'crowdfunding',\n}\n\nexport enum BondTransactionType {\n Deposit = 'deposit',\n Withdrawal = 'withdrawal',\n Compensation = 'compensation',\n}\n\nexport type BondStateStats = {\n totalCollected: number\n status: SessionStatus\n}\n\nexport type GlobalInitializeProps = {\n authority?: PublicKey\n}\n\nexport type BondInitializeProps = {\n bondType: BondType\n name: string\n authority?: PublicKey\n collateralType: CollateralType\n reserve: PublicKey\n}\n\nexport type RegisterValidatorProps = {\n bondType: BondType\n name: string\n identity: PublicKey\n voteAccount: PublicKey\n creator?: PublicKey\n collateralType?: CollateralType\n}\n\nexport type TopUpCollateralProps = {\n bondType: BondType\n name: string\n identity: PublicKey\n voteAccount: PublicKey\n amount: number\n // stakeAccount?: PublicKey // for Stake type\n collateralType?: CollateralType\n payer?: PublicKey\n}\n\nexport type WithdrawCollateralProps = {\n bondType: BondType\n name: string\n amount: number\n collateralType?: CollateralType\n voteAccount: PublicKey\n destination?: PublicKey\n withdrawalAuthority?: PublicKey\n}\n\nexport type ClaimProps = {\n bondType: BondType\n name: string\n amount: number\n collateralType?: CollateralType\n voteAccount: PublicKey\n reserve?: PublicKey\n authority?: PublicKey\n}\n\nexport type GetHistoryProps = {\n voteAccount: PublicKey\n options?: {\n limit?: number\n before?: string\n until?: string\n }\n}\n\nexport type GetHistoryGroupedProps = {\n voteAccount: PublicKey\n epochsCount?: number\n}\n\nexport type BondConfigureProps = {\n bondType: BondType\n name: string\n authority?: PublicKey\n status?: BondStateStatus\n newAuthority?: PublicKey\n newReserve?: PublicKey\n}\n\nexport type GlobalConfigureProps = {\n authority?: PublicKey\n newAuthority?: PublicKey\n}\n\nexport type SetWithdrawAuthorityProps = {\n bondType: BondType\n name: string\n voteAccount: PublicKey\n newWithdrawAuthority?: PublicKey | null\n identity?: PublicKey\n}\n\nexport type EpochHistoryItem = {\n epoch: number\n deposits: number\n withdrawals: number\n balanceChange: number\n signatures: string[]\n}\n\nexport type TransactionHistoryItem = {\n signature: string\n slot: number\n epoch: number\n type: BondTransactionType\n amount: number\n}\n\nexport type BondStartProps = {\n bondType: BondType\n name: string\n duration: number\n}\n\nexport type BondFinishProps = {\n bondType: BondType\n name: string\n}\n","{\n \"address\": \"BondQ7KqZreTcW2UbeTNDcLCJQ3aXAtLn2Fm6ftaJDU\",\n \"metadata\": {\n \"name\": \"jbond\",\n \"version\": \"0.2.1\",\n \"spec\": \"0.1.0\",\n \"description\": \"Jpool Bond Program\"\n },\n \"instructions\": [\n {\n \"name\": \"bond_claim\",\n \"docs\": [\n \"Claims compensation for a validator.\",\n \"Transfers funds from the validator's bond account to reserve.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount of compensation to claim (must be positive).\",\n \"\",\n \"# Errors\",\n \"Fails if the authority is invalid, if the validator is not active,\",\n \"if the amount is zero, or if there are insufficient funds.\"\n ],\n \"discriminator\": [\n 151,\n 92,\n 10,\n 205,\n 66,\n 250,\n 188,\n 129\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"reserve\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"reserve_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"stake_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true,\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"stake_program\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"bond_configure\",\n \"docs\": [\n \"Updates bond configuration, including authority and reserve fields.\",\n \"Allows changing the bond's authority and updating the reserve account.\"\n ],\n \"discriminator\": [\n 61,\n 42,\n 106,\n 235,\n 108,\n 57,\n 65,\n 20\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"bond_state\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondConfigureData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"bond_initialize\",\n \"docs\": [\n \"Initializes state for the bond.\",\n \"Sets the authority and reserve account for managing validator bonds.\",\n \"\",\n \"# Errors\",\n \"Fails if the global state account is already initialized or if the payer lacks\",\n \"sufficient funds.\"\n ],\n \"discriminator\": [\n 230,\n 3,\n 121,\n 94,\n 147,\n 203,\n 175,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 98,\n 111,\n 110,\n 100,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"data.bond_type\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"data.name\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"reserve\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"reserve_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"mint\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondInitializeData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"bond_register\",\n \"docs\": [\n \"Registers a new validator with the bond.\",\n \"Sets up the validator's bond account and deposits initial collateral.\",\n \"\",\n \"# Arguments\",\n \"* `initial_collateral` - Amount of collateral to lock (must be positive).\",\n \"* `withdrawal_authority` - Optional key that can withdraw collateral later.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is already registered, if the vote account is invalid,\",\n \"or if the initial collateral transfer fails.\"\n ],\n \"discriminator\": [\n 117,\n 127,\n 78,\n 103,\n 166,\n 175,\n 163,\n 83\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vote_account\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\"\n },\n {\n \"name\": \"vote_account\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"mint\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"bond_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondType\"\n }\n }\n },\n {\n \"name\": \"bond_name\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"bond_set_withdraw_authority\",\n \"docs\": [\n \"Sets a new withdrawal authority for a validator's bond account.\",\n \"Allows changing who can withdraw collateral in the future.\",\n \"\",\n \"# Arguments\",\n \"* `new_withdraw_authority` - Optional new withdrawal authority key (None to restrict to\",\n \"identity).\",\n \"\",\n \"# Errors\",\n \"Fails if the signer is not authorized to change the withdrawal authority.\"\n ],\n \"discriminator\": [\n 212,\n 162,\n 53,\n 130,\n 91,\n 158,\n 61,\n 166\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\"\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\",\n \"signer\": true\n },\n {\n \"name\": \"new_withdraw_authority\",\n \"optional\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"bond_top_up\",\n \"docs\": [\n \"Adds additional collateral to an existing validator's bond.\",\n \"Increases the collateral balance, enhancing the validator's stake.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to add.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"or if the transfer of funds fails.\"\n ],\n \"discriminator\": [\n 132,\n 225,\n 254,\n 187,\n 152,\n 162,\n 176,\n 66\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"payer_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"stake_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true,\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"stake_program\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"bond_withdraw\",\n \"docs\": [\n \"Withdraws collateral from a validator's bond.\",\n \"Decreases the collateral balance, allowing the validator to reclaim funds.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to withdraw (must not exceed available balance).\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"if the withdrawal authority is invalid, or if the withdrawal would\",\n \"leave insufficient collateral.\"\n ],\n \"discriminator\": [\n 99,\n 64,\n 127,\n 178,\n 53,\n 117,\n 70,\n 204\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"withdrawal_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"destination_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"stake_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true,\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"stake_program\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"global_configure\",\n \"discriminator\": [\n 67,\n 142,\n 164,\n 250,\n 90,\n 233,\n 144,\n 187\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"global_state\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"GlobalConfigureData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"global_initialize\",\n \"discriminator\": [\n 30,\n 79,\n 193,\n 205,\n 75,\n 42,\n 223,\n 196\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"migrate_bond\",\n \"docs\": [\n \"Migrates validator bond data from legacy structure to new structure.\"\n ],\n \"discriminator\": [\n 107,\n 119,\n 59,\n 110,\n 76,\n 18,\n 37,\n 163\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"legacy_validator_bond\",\n \"writable\": true\n },\n {\n \"name\": \"legacy_vote_account\"\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"legacy_vote_account\"\n }\n ]\n }\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"session_finish\",\n \"docs\": [\n \"Finishes a bond, preventing further deposits and withdrawals.\"\n ],\n \"discriminator\": [\n 230,\n 209,\n 54,\n 205,\n 127,\n 141,\n 137,\n 113\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"bond_state\"\n ]\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"session_start\",\n \"docs\": [\n \"Starts a paused bond, allowing deposits and withdrawals to resume.\"\n ],\n \"discriminator\": [\n 132,\n 93,\n 83,\n 152,\n 141,\n 32,\n 58,\n 92\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"bond_state\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"duration_secs\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"BondState\",\n \"discriminator\": [\n 251,\n 95,\n 76,\n 47,\n 191,\n 108,\n 163,\n 92\n ]\n },\n {\n \"name\": \"GlobalState\",\n \"discriminator\": [\n 163,\n 46,\n 74,\n 168,\n 216,\n 123,\n 133,\n 98\n ]\n },\n {\n \"name\": \"ValidatorBond\",\n \"discriminator\": [\n 82,\n 127,\n 243,\n 208,\n 195,\n 42,\n 80,\n 35\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"BondFinished\",\n \"discriminator\": [\n 223,\n 254,\n 3,\n 161,\n 90,\n 190,\n 150,\n 191\n ]\n },\n {\n \"name\": \"BondStarted\",\n \"discriminator\": [\n 235,\n 69,\n 80,\n 63,\n 209,\n 252,\n 232,\n 64\n ]\n },\n {\n \"name\": \"CollateralToppedUp\",\n \"discriminator\": [\n 189,\n 137,\n 204,\n 58,\n 135,\n 182,\n 19,\n 176\n ]\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"discriminator\": [\n 51,\n 224,\n 133,\n 106,\n 74,\n 173,\n 72,\n 82\n ]\n },\n {\n \"name\": \"CompensationClaimed\",\n \"discriminator\": [\n 36,\n 159,\n 41,\n 178,\n 104,\n 135,\n 220,\n 32\n ]\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"discriminator\": [\n 20,\n 20,\n 190,\n 191,\n 53,\n 174,\n 95,\n 72\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"InvalidVoteAccount\",\n \"msg\": \"Invalid vote account\"\n },\n {\n \"code\": 6001,\n \"name\": \"IdentityMismatch\",\n \"msg\": \"Identity does not match vote account\"\n },\n {\n \"code\": 6002,\n \"name\": \"InsufficientCollateral\",\n \"msg\": \"Insufficient collateral amount\"\n },\n {\n \"code\": 6003,\n \"name\": \"TargetAprTooLow\",\n \"msg\": \"Target APR is below minimum threshold\"\n },\n {\n \"code\": 6004,\n \"name\": \"MathOverflow\",\n \"msg\": \"Math overflow\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid amount\"\n },\n {\n \"code\": 6006,\n \"name\": \"ValidatorNotActive\",\n \"msg\": \"Validator bond account is not active\"\n },\n {\n \"code\": 6007,\n \"name\": \"ValidatorAlreadyRegistered\",\n \"msg\": \"Validator already registered\"\n },\n {\n \"code\": 6008,\n \"name\": \"Unauthorized\",\n \"msg\": \"Unauthorized\"\n },\n {\n \"code\": 6009,\n \"name\": \"WithdrawalLockedNearEpochEnd\",\n \"msg\": \"Withdrawals are locked near the end of the epoch.\"\n },\n {\n \"code\": 6010,\n \"name\": \"MissingTokenAccounts\",\n \"msg\": \"Missing token accounts for token collateral type\"\n },\n {\n \"code\": 6011,\n \"name\": \"MissingTokenProgram\",\n \"msg\": \"Token program is required for token collateral type\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidMint\",\n \"msg\": \"Invalid mint for token collateral type\"\n },\n {\n \"code\": 6013,\n \"name\": \"MissingStakeAccount\",\n \"msg\": \"Stake account is required for stake account collateral type\"\n },\n {\n \"code\": 6014,\n \"name\": \"MissingStakeProgram\",\n \"msg\": \"Stake program is required for stake account collateral type\"\n },\n {\n \"code\": 6015,\n \"name\": \"BondFinished\",\n \"msg\": \"Bond is finished (deposits/withdrawals disabled)\"\n },\n {\n \"code\": 6016,\n \"name\": \"BondNotFinished\",\n \"msg\": \"Bond is not finished\"\n },\n {\n \"code\": 6017,\n \"name\": \"UnsupportedCollateralType\",\n \"msg\": \"Unsupported collateral type\"\n },\n {\n \"code\": 6018,\n \"name\": \"Overflow\",\n \"msg\": \"Math operation overflowed\"\n },\n {\n \"code\": 6019,\n \"name\": \"IncorrectBondType\",\n \"msg\": \"Incorrect bond type for this operation\"\n },\n {\n \"code\": 6020,\n \"name\": \"BondNotFinishable\",\n \"msg\": \"This bond type can't be finished\"\n },\n {\n \"code\": 6021,\n \"name\": \"InvalidArgument\",\n \"msg\": \"Invalid argument provided\"\n },\n {\n \"code\": 6022,\n \"name\": \"BondNotDisabled\",\n \"msg\": \"Bond is not disabled\"\n },\n {\n \"code\": 6023,\n \"name\": \"BondNotEnabled\",\n \"msg\": \"Bond is not enabled\"\n }\n ],\n \"types\": [\n {\n \"name\": \"BondConfigureData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"status\",\n \"type\": {\n \"option\": {\n \"defined\": {\n \"name\": \"BondStatus\"\n }\n }\n }\n },\n {\n \"name\": \"new_reserve\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_authority\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"BondFinished\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bond\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"BondInitializeData\",\n \"docs\": [\n \"Data required to initialize a performance bond\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bond_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondType\"\n }\n }\n },\n {\n \"name\": \"reserve\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"CollateralType\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"BondStarted\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bond\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"BondState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bond_type\",\n \"docs\": [\n \"The type of bond (e.g., Standard, Crowdfunding)\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"BondType\"\n }\n }\n },\n {\n \"name\": \"collateral_type\",\n \"docs\": [\n \"The type of collateral accepted for this bond\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CollateralType\"\n }\n }\n },\n {\n \"name\": \"reserve\",\n \"docs\": [\n \"Reserve account where collateral is held\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority allowed to manage the bond configuration\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"session_id\",\n \"docs\": [\n \"Unique identifier for the bonding session\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_members\",\n \"docs\": [\n \"Total number of users who have participated in the bond\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"total_compensation_amount\",\n \"docs\": [\n \"Total compensation amount paid out\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"session_start_ts\",\n \"docs\": [\n \"Start timestamp of the current session (unix seconds). 0 — not set.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"session_finish_ts\",\n \"docs\": [\n \"Finish timestamp of the current session (unix seconds). 0 — not set.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"status\",\n \"docs\": [\n \"Current status of the bond\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"BondStatus\"\n }\n }\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"BondStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Active\"\n },\n {\n \"name\": \"Disabled\"\n }\n ]\n }\n },\n {\n \"name\": \"BondType\",\n \"docs\": [\n \"Types of bonds supported by the program\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Standard\"\n },\n {\n \"name\": \"Crowdfunding\"\n }\n ]\n }\n },\n {\n \"name\": \"CollateralToppedUp\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CollateralType\",\n \"docs\": [\n \"Types of collateral that can be used for bond deposit\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Native\"\n },\n {\n \"name\": \"StakeAccount\"\n },\n {\n \"name\": \"Token\",\n \"fields\": [\n \"pubkey\"\n ]\n }\n ]\n }\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CompensationClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"GlobalConfigureData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_authority\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"GlobalState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority allowed to manage the program\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorBond\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"state\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"identity\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"withdrawal_authority\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"created_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"identity\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n }\n ],\n \"constants\": [\n {\n \"name\": \"EPOCH_LOCKED_SLOT_TAIL\",\n \"docs\": [\n \"Epoch slot index at the end of an epoch after which withdrawals are locked\"\n ],\n \"type\": \"u64\",\n \"value\": \"420000\"\n }\n ]\n}","import { CROWDFUNDING_BOND_SEED, STANDARD_BOND_SEED } from '../constants'\nimport { BondType } from '../types'\n\nexport * from './enum'\nexport * from './wallet'\nexport * from './web3'\n\n/**\n * Get bond type seed from bond type\n */\nexport function getBondTypeSeed(type: BondType) {\n switch (type) {\n case BondType.Standard: return STANDARD_BOND_SEED\n case BondType.Crowdfunding: return CROWDFUNDING_BOND_SEED\n default:\n throw new Error(`Unknown bond type: ${type}`)\n }\n}\n","import { IdlTypes } from '@coral-xyz/anchor'\nimport { BondType, Jbond } from '../types'\n\n/**\n * Type representing a variant tuple of [key, value]\n */\nexport type VariantTuple<T> = [keyof T & string, T[keyof T & string]]\n\n/**\n * Extracts the variant key and value from an enum-like object\n * @param v The variant object\n * @returns Tuple of [key, value]\n */\nexport function getVariant<T extends Record<string, unknown>>(v: T): VariantTuple<T> {\n const key = Object.keys(v)[0] as keyof T & string\n return [key, (v as any)[key]]\n}\n\n/**\n * Extracts arguments from a variant payload\n * Handles both array and object payloads\n * @param payload The variant payload\n * @returns Array of arguments\n */\nexport function variantArgs(payload: any): any[] {\n if (Array.isArray(payload)) {\n return payload\n }\n if (payload && typeof payload === 'object') {\n const numericKeys = Object.keys(payload).filter(k => String(+k) === k)\n if (numericKeys.length) {\n return numericKeys.sort((a, b) => +a - +b).map(k => (payload as any)[k])\n }\n return [payload]\n }\n return [payload]\n}\n\n/**\n * Pattern match on variant types with type-safe handlers\n * @param v The variant to match\n * @param handlers Object mapping variant keys to handler functions\n * @returns The result of calling the matched handler\n */\nexport function matchVariant<T extends Record<string, unknown>, R>(\n v: T,\n handlers: Partial<Record<keyof T & string, (...args: any[]) => R>>,\n): R {\n const [k, data] = getVariant(v)\n const h = handlers[k]\n if (!h) {\n throw new Error(`Unhandled variant: ${k}`)\n }\n return h(...variantArgs(data))\n}\n\n/**\n * Get the key of a variant object\n * @param v The variant\n * @returns The variant key\n */\nexport function variantKey<T extends Record<string, unknown>>(v: T) {\n return Object.keys(v)[0] as keyof T & string\n}\n\n/**\n * Check if two variants have the same key\n * @param a First variant\n * @param b Second variant\n * @returns True if variants have the same key\n */\nexport function sameVariant<T extends Record<string, unknown>>(a: T, b: T) {\n return variantKey(a) === variantKey(b)\n}\n\n/**\n * Convert enum value to Anchor variant object.\n * Requires enum values to match Anchor variant keys exactly.\n * @param key The enum value (must match an Anchor variant key)\n * @param payload The variant payload\n * @returns Typed variant object\n */\nexport function toAnchor<\n T extends Record<string, unknown>,\n K extends keyof T & string,\n>(\n key: K,\n payload?: T[K],\n): Extract<T, Record<K, unknown>> {\n return { [key]: payload ?? {} } as Extract<T, Record<K, unknown>>\n}\n\n/**\n * Convert Anchor variant to enum value.\n * Returns the variant key directly—type system guarantees it's valid.\n * @param variant The Anchor variant object\n * @returns The variant key (which is the enum value)\n */\nexport function fromAnchor<\n T extends Record<string, unknown>,\n E extends keyof T & string,\n>(\n variant: T,\n): E {\n return variantKey(variant) as E\n}\n\n// Specific functions for BondType and Jbond\n\ntype BondTypeVariant = IdlTypes<Jbond>['bondType']\n\nexport function bondTypeToAnchor<K extends keyof BondTypeVariant & string>(\n type: K,\n payload?: BondTypeVariant[K],\n): Extract<BondTypeVariant, Record<K, unknown>> {\n return toAnchor(type, payload)\n}\n\nexport function anchorToBondType(variant: BondTypeVariant): BondType {\n return fromAnchor(variant)\n}\n","import type { Keypair, PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js'\n\nfunction isVersionedTransaction(tx: Transaction | VersionedTransaction): tx is VersionedTransaction {\n return 'version' in tx\n}\n\nexport type Wallet = {\n publicKey: PublicKey\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>\n signTransaction: <T extends Transaction | VersionedTransaction>(tx: T) => Promise<T>\n signAllTransactions: <T extends Transaction | VersionedTransaction>(txs: T[]) => Promise<T[]>\n}\n\nexport class NodeWallet implements Wallet {\n constructor(readonly payer: Keypair) {}\n\n async signTransaction<T extends Transaction | VersionedTransaction>(\n tx: T,\n ): Promise<T> {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.payer])\n } else {\n tx.partialSign(this.payer)\n }\n\n return tx\n }\n\n async signAllTransactions<T extends Transaction | VersionedTransaction>(\n txs: T[],\n ): Promise<T[]> {\n return txs.map((t) => {\n if (isVersionedTransaction(t)) {\n t.sign([this.payer])\n } else {\n t.partialSign(this.payer)\n }\n return t\n })\n }\n\n get publicKey(): PublicKey {\n return this.payer.publicKey\n }\n}\n","import { BN } from '@coral-xyz/anchor'\nimport { LAMPORTS_PER_SOL } from '@solana/web3.js'\n\nconst SOL_DECIMALS = Math.log10(LAMPORTS_PER_SOL)\n\nexport function lamportsToSol(lamports: number | BN): number {\n if (typeof lamports === 'number') {\n return Math.abs(lamports) / LAMPORTS_PER_SOL\n }\n let signMultiplier = 1\n if (lamports.isNeg()) {\n signMultiplier = -1\n }\n const absLamports = lamports.abs()\n const lamportsString = absLamports.toString(10).padStart(10, '0')\n const splitIndex = lamportsString.length - SOL_DECIMALS\n const solString = `${lamportsString.slice(0, splitIndex)}.${lamportsString.slice(splitIndex)}`\n return signMultiplier * Number.parseFloat(solString)\n}\n\nexport function solToLamports(amount: number | string): BN {\n if (Number.isNaN(amount)) {\n return new BN(0)\n }\n return new BN(Number(amount).toFixed(SOL_DECIMALS).replace('.', ''))\n}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.5.0_@swc+core@1.13.5_@swc+helpers@0.5.17__jiti@2.5.1_postcss@8.5.6_tsx@4.20.5_typescript@5.9.3_yaml@2.8.1/node_modules/tsup/assets/cjs_shims.js","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../../node_modules/.pnpm/bn.js@5.2.2/node_modules/bn.js/lib/bn.js","../src/index.ts","../src/client.ts","../src/constants.ts","../src/history.ts","../src/types/index.ts","../src/idl/jbond.json","../src/utils/index.ts","../src/utils/enum.ts","../src/utils/wallet.ts","../src/utils/web3.ts"],"names":["len","i","len2","Buffer","byteLength","module","exports","BN","allocate","comb10MulTo","prime","SessionStatus","BondType","BondTransactionType","utils","LAMPORTS_PER_SOL","JBondClientEnv","Program","AnchorProvider","PublicKey","Transaction","getAssociatedTokenAddressSync","bondState","ACCOUNT_SIZE","AccountLayout"],"mappings":"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","file":"index.js","sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () =>\n typeof document === 'undefined'\n ? new URL(`file:${__filename}`).href\n : (document.currentScript && document.currentScript.src) ||\n new URL('main.js', document.baseURI).href\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '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 this.length = num === 0 ? 1 : this.length;\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export * from './client'\nexport * from './constants'\nexport * from './types'\n\nexport type { Jbond } from './types/jbond'\n\nexport { NodeWallet } from './utils'\n","import { AnchorProvider, Program, Provider } from '@coral-xyz/anchor'\n\nimport {\n ACCOUNT_SIZE,\n AccountLayout,\n getAssociatedTokenAddressSync,\n} from '@solana/spl-token'\nimport {\n Connection,\n Keypair,\n PublicKey,\n PublicKeyInitData,\n Transaction,\n TransactionInstruction,\n} from '@solana/web3.js'\nimport { BN } from 'bn.js'\nimport { BOND_STATE_SEED, ENV_PROGRAM_ID, GLOBAL_STATE_SEED, VALIDATOR_BOND_SEED } from './constants'\nimport { HistoryManager } from './history'\nimport IDL from './idl/jbond.json'\nimport {\n BondConfigureProps, BondFinishProps,\n BondInitializeProps, BondStartProps,\n BondState,\n BondType,\n ClaimAllProps,\n ClaimProps,\n GlobalConfigureProps,\n GlobalInitializeProps,\n Jbond,\n RegisterValidatorProps,\n SessionStatus,\n SetWithdrawAuthorityProps,\n TopUpCollateralProps, WithdrawCollateralProps,\n} from './types'\nimport {\n anchorToBondType,\n bondTypeToAnchor, getBondTypeSeed, lamportsToSol, matchVariant, NodeWallet, sameVariant, solToLamports, Wallet,\n} from './utils'\n\n/**\n * Enum for different client environments.\n */\nexport enum JBondClientEnv { DEV = 'dev', STAGE = 'stage', PROD = 'prod' }\n\n/**\n * Options for configuring the JBondClient.\n */\nexport type JBondClientOptions = { debug?: boolean } & Record<string, any>\n\nexport class JBondClient {\n readonly options: JBondClientOptions\n readonly program: Program<Jbond>\n\n constructor(readonly provider: Provider, options?: JBondClientOptions) {\n this.options = options ?? {}\n this.program = new Program(IDL, this.provider)\n }\n\n get history() {\n return new HistoryManager(this)\n }\n\n /**\n * Creates a local instance of `JBondClient` for development and testing.\n */\n static local(options?: JBondClientOptions) {\n return new JBondClient(AnchorProvider.local(), options)\n }\n\n /**\n * Creates an instance of `JBondClient` using a provided connection and wallet.\n */\n static fromWallet(connection: Connection, wallet?: Wallet, options?: JBondClientOptions) {\n return new this(\n new AnchorProvider(\n connection,\n wallet ?? { publicKey: PublicKey.default } as Wallet,\n AnchorProvider.defaultOptions(),\n ),\n options,\n )\n }\n\n /**\n * Creates an instance of `JBondClient` using the provided connection and keypair.\n */\n static fromKeypair(connection: Connection, keypair: Keypair, options?: JBondClientOptions) {\n return JBondClient.fromWallet(connection, new NodeWallet(keypair), options)\n }\n\n /**\n * Get the current program ID.\n */\n get programId() {\n return this.options.programId ?? this.program.programId\n }\n\n /**\n * Get the current connection.\n */\n private get connection() {\n return this.provider.connection\n }\n\n /**\n * Set the environment.\n */\n env(env: JBondClientEnv) {\n return this.configure('programId', ENV_PROGRAM_ID[env])\n }\n\n /**\n * Configure a specific option.\n */\n configure<K extends keyof JBondClientOptions>(key: K, val: JBondClientOptions[K]) {\n this.options[key] = val\n return this\n }\n\n /**\n * Debug logging\n * @param args\n */\n debug(...args: any[]) {\n if (this.options.debug) {\n console.log(`%c[JBondClient]`, 'color: #009999;', ...args)\n }\n }\n\n /**\n * Program Derived Addresses (PDAs)\n */\n pda = {\n globalState: () => PublicKey.findProgramAddressSync(\n [Buffer.from(GLOBAL_STATE_SEED)],\n this.programId,\n ),\n bondState: (bondType: BondType, bondName: string) => {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(BOND_STATE_SEED), Buffer.from(getBondTypeSeed(bondType)), Buffer.from(bondName)],\n this.programId,\n )\n },\n validatorBond: (bondType: BondType, bondName: string, vote: PublicKeyInitData) => {\n const [bondState] = this.pda.bondState(bondType, bondName)\n return PublicKey.findProgramAddressSync(\n [Buffer.from(VALIDATOR_BOND_SEED), bondState.toBuffer(), new PublicKey(vote).toBuffer()],\n this.programId,\n )\n },\n }\n\n /**\n * Initialize global state\n */\n async globalInitialize(props: GlobalInitializeProps) {\n const ix = await this.getGlobalInitializeIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Initialize the program\n */\n async bondInitialize(props: BondInitializeProps) {\n const ix = await this.getBondInitializeIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Register a new validator\n */\n async registerValidator(props: RegisterValidatorProps) {\n const ix = await this.getRegisterValidatorIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Top up collateral\n */\n async topUpCollateral(props: TopUpCollateralProps) {\n const ixs = await this.getTopUpIxs(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(...ixs))\n }\n\n /**\n * Withdraw collateral\n */\n async withdrawCollateral(props: WithdrawCollateralProps) {\n const ix = await this.getWithdrawIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Claim compensation for a validator\n */\n async claimCompensation(props: ClaimProps) {\n const ix = await this.getClaimIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Update global configuration for the program\n */\n async globalConfigure(props: GlobalConfigureProps) {\n const ix = await this.getGlobalConfigureIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Update global configuration for the program\n */\n async bondConfigure(props: BondConfigureProps) {\n const ix = await this.getBondConfigureIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Set withdrawal authority for validator bond\n */\n async setWithdrawAuthority(props: SetWithdrawAuthorityProps) {\n const ix = await this.getSetWithdrawAuthorityIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Start crowdfunding bond session\n */\n async bondStart(props: BondStartProps) {\n const ix = await this.getBondSessionStartIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Finish crowdfunding bond session\n */\n async bondFinish(props: BondFinishProps) {\n const ix = await this.getBondSessionFinishIx(props)\n return this.provider.sendAndConfirm?.(new Transaction().add(ix))\n }\n\n /**\n * Build global state initialize instruction\n */\n async getGlobalInitializeIx(props: GlobalInitializeProps) {\n const [globalState] = this.pda.globalState()\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n return this.program.methods\n .globalInitialize()\n .accountsPartial({ globalState, authority })\n .instruction()\n }\n\n /**\n * Build configure instruction\n */\n async getGlobalConfigureIx(props: GlobalConfigureProps) {\n const [globalState] = this.pda.globalState()\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n return this.program.methods\n .globalConfigure({\n newAuthority: props.newAuthority ?? null,\n })\n .accountsStrict({ globalState, authority })\n .instruction()\n }\n\n /**\n * Build bond initialize instruction\n */\n async getBondInitializeIx(props: BondInitializeProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n const accounts: Record<string, any> = {\n bondState,\n authority,\n reserve: props.reserve,\n reserveTokenAccount: null,\n mint: null,\n }\n\n matchVariant(props.collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.reserveTokenAccount = getAssociatedTokenAddressSync(mint, props.reserve)\n accounts.mint = mint\n },\n })\n\n return this.program.methods\n .bondInitialize({\n name: props.name,\n bondType: bondTypeToAnchor(props.bondType),\n reserve: props.reserve,\n collateralType: props.collateralType,\n })\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build bond configure instruction\n */\n async getBondConfigureIx(props: BondConfigureProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n return this.program.methods\n .bondConfigure({\n status: props.status ?? null,\n newReserve: props.newReserve ?? null,\n newAuthority: props.newAuthority ?? null,\n })\n .accountsStrict({ bondState, authority })\n .instruction()\n }\n\n /**\n * Build register validator instruction\n */\n async getRegisterValidatorIx(props: RegisterValidatorProps) {\n const { bondType, voteAccount, identity, name } = props\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, voteAccount)\n const creator = props.creator ?? this.provider.wallet?.publicKey\n\n if (!creator) {\n throw new Error('Missing creator')\n }\n\n let collateralType = props.collateralType\n if (!collateralType) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = bondState.collateralType\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n identity,\n voteAccount,\n creator,\n bondTokenAccount: null,\n mint: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n accounts.mint = mint\n },\n })\n\n return this.program.methods\n .bondRegister(bondTypeToAnchor(bondType), name)\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build top up collateral instructions\n */\n async getTopUpIxs(props: TopUpCollateralProps) {\n const { bondType, voteAccount, amount, name } = props\n\n const payer = props.payer ?? this.provider.wallet?.publicKey\n if (!payer) {\n throw new Error('Missing payer')\n }\n\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, voteAccount)\n\n let collateralType = props.collateralType\n if (!collateralType) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = bondState.collateralType\n }\n\n const instructions: TransactionInstruction[] = []\n\n // Apply register validator instruction if not exists\n try {\n await this.getValidatorBond(props.bondType, props.name, props.voteAccount)\n } catch {\n instructions.push(\n await this.getRegisterValidatorIx({\n bondType: props.bondType,\n name: props.name,\n voteAccount: props.voteAccount,\n identity: props.identity,\n creator: props.payer,\n collateralType,\n }),\n )\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n payer,\n payerTokenAccount: null,\n bondTokenAccount: null,\n stakeAccount: null,\n stakeProgram: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.payerTokenAccount = getAssociatedTokenAddressSync(mint, payer)\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n },\n })\n\n instructions.push(await this.program.methods\n .bondTopUp(solToLamports(amount))\n .accountsPartial(accounts)\n .instruction(),\n )\n\n return instructions\n }\n\n /**\n * Build withdraw collateral instruction\n */\n async getWithdrawIx(props: WithdrawCollateralProps) {\n const { bondType, voteAccount, amount, name } = props\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, voteAccount)\n\n const payer = this.provider.wallet?.publicKey\n const destination = props.destination ?? payer\n\n if (!payer || !destination) {\n throw new Error('Missing payer/destination')\n }\n\n let collateralType = props.collateralType\n if (!collateralType) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = bondState.collateralType\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n destination,\n withdrawalAuthority: props.withdrawalAuthority ?? payer,\n destinationTokenAccount: null,\n bondTokenAccount: null,\n stakeAccount: null,\n stakeProgram: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.destinationTokenAccount = getAssociatedTokenAddressSync(mint, destination, true)\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n },\n })\n\n return this.program.methods\n .bondWithdraw(solToLamports(amount))\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build claim instruction\n */\n async getClaimIx(props: ClaimProps) {\n const { bondType, name, amount } = props\n\n const [bondState] = this.pda.bondState(bondType, name)\n const [validatorBond] = this.pda.validatorBond(bondType, name, props.voteAccount)\n const authority = props.authority ?? this.provider.wallet?.publicKey\n\n let reserve = props.reserve\n let collateralType = props.collateralType\n if (!collateralType || !reserve) {\n const bondState = await this.getBondState(bondType, name)\n collateralType = collateralType ?? bondState.collateralType\n reserve = reserve ?? bondState.reserve\n }\n\n const accounts: Record<string, any> = {\n bondState,\n validatorBond,\n reserve,\n authority,\n destinationTokenAccount: null,\n bondTokenAccount: null,\n reserveTokenAccount: null,\n stakeAccount: null,\n stakeProgram: null,\n }\n\n matchVariant(collateralType, {\n native: () => {},\n token: (mint: PublicKey) => {\n accounts.destinationTokenAccount = getAssociatedTokenAddressSync(mint, reserve, true)\n accounts.bondTokenAccount = getAssociatedTokenAddressSync(mint, validatorBond, true)\n accounts.reserveTokenAccount = getAssociatedTokenAddressSync(mint, reserve, true)\n },\n })\n\n return this.program.methods\n .bondClaim(solToLamports(amount))\n .accountsPartial(accounts)\n .instruction()\n }\n\n /**\n * Build claim all compensations instructions\n */\n async getClaimAllCompensationsIxs(props: ClaimAllProps) {\n const ixs: TransactionInstruction[] = []\n const validatorBonds = await this.getBondValidatorStates(props.bondType, props.name)\n\n const validatorBondBalances = await this.getBondStateValidatorBondBalances(\n props.bondType,\n props.name,\n )\n\n for (const vb of validatorBonds) {\n console.log('Processing claim for validator:', vb.voteAccount.toBase58())\n const validatorBondBalance = lamportsToSol(validatorBondBalances.find(vbb => vbb.voteAccount.equals(vb.voteAccount))?.balance || 0)\n const amountToClaim = validatorBondBalance - (props.collateralType ? 0 : lamportsToSol(await this.validatorBondRentExempt()))\n\n if (amountToClaim <= 0) {\n console.log('No balance to claim for validator:', vb.voteAccount.toBase58())\n continue\n }\n\n console.log('Amount to claim:', amountToClaim)\n\n const ix = await this.getClaimIx({\n bondType: props.bondType,\n name: props.name,\n amount: amountToClaim,\n collateralType: props.collateralType,\n reserve: props.reserve,\n authority: props.authority,\n voteAccount: vb.voteAccount,\n })\n\n ixs.push(ix)\n }\n\n return ixs\n }\n\n /**\n * Build set withdraw authority instruction\n */\n async getSetWithdrawAuthorityIx(props: SetWithdrawAuthorityProps) {\n const [validatorBond] = this.pda.validatorBond(props.bondType, props.name, props.voteAccount)\n const identity = props.identity ?? this.provider.wallet?.publicKey\n return this.program.methods\n .bondSetWithdrawAuthority()\n .accountsPartial({\n validatorBond,\n identity,\n newWithdrawAuthority: props.newWithdrawAuthority ?? null,\n })\n .instruction()\n }\n\n /**\n * Build finish crowdfunding session instruction\n */\n async getBondSessionFinishIx(props: BondFinishProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = this.provider.wallet?.publicKey\n return this.program.methods\n .sessionFinish()\n .accountsPartial({ bondState, authority })\n .instruction()\n }\n\n /**\n * Build start crowdfunding session instruction\n */\n async getBondSessionStartIx(props: BondStartProps) {\n const [bondState] = this.pda.bondState(props.bondType, props.name)\n const authority = this.provider.wallet?.publicKey\n return this.program.methods\n .sessionStart(new BN(props.duration))\n .accountsPartial({ bondState, authority })\n .instruction()\n }\n\n /**\n * Get all bond states with total collected collateral\n */\n async getAllBondStates(bondType: BondType, sessionStatus?: SessionStatus) {\n const result = []\n\n const accounts = await this.program.account.bondState.all()\n\n for (const { publicKey, account } of accounts) {\n if (!sameVariant(account.bondType, bondTypeToAnchor(bondType))) {\n continue\n }\n\n if (sessionStatus !== undefined && this.getBondStateSessionStatus(account) !== sessionStatus) {\n continue\n }\n\n const stateStats = await this.getBondStateStats(account)\n\n result.push({ publicKey, bondState: account, stateStats })\n }\n\n return result\n }\n\n /**\n * Fetch global state or throw if not found\n */\n async getGlobalState() {\n const [publicKey] = this.pda.globalState()\n this.debug(`Fetching global state ${publicKey}...`)\n const data = await this.program.account.globalState.fetch(publicKey)\n return { publicKey, ...data }\n }\n\n /**\n * Fetch bond state with stats\n */\n async getBondState(bondType: BondType, bondName: string) {\n const [publicKey] = this.pda.bondState(bondType, bondName)\n this.debug(`Fetching bond state ${publicKey}...`)\n const data = await this.program.account.bondState.fetch(publicKey)\n return { publicKey, ...data }\n }\n\n /**\n * Fetch validator bond data or null if not found\n */\n async getValidatorBond(bondType: BondType, bondName: string, vote: PublicKeyInitData) {\n const [publicKey] = this.pda.validatorBond(bondType, bondName, new PublicKey(vote))\n const data = await this.program.account.validatorBond.fetch(publicKey)\n return { publicKey, ...data }\n }\n\n /**\n * Get validator bond account balance (in SOL)\n */\n async getValidatorBondBalance(bondType: BondType, bondName: string, vote: PublicKeyInitData): Promise<number> {\n const [address] = this.pda.validatorBond(bondType, bondName, new PublicKey(vote))\n const bondState = await this.getBondState(bondType, bondName)\n const collateralType = bondState.collateralType\n\n return await matchVariant(collateralType, {\n native: async () => {\n const accountInfo = await this.connection.getAccountInfo(address).catch(() => null)\n if (!accountInfo) {\n return 0\n }\n const { data, lamports } = accountInfo\n const rentExempt = await this.connection.getMinimumBalanceForRentExemption(data.length)\n return Math.max(0, lamports - rentExempt)\n },\n token: async (mint: PublicKey) => {\n const tokenAccount = getAssociatedTokenAddressSync(mint, address, true)\n try {\n const balance = await this.connection.getTokenAccountBalance(tokenAccount)\n return solToLamports(balance.value.amount).toNumber()\n } catch {\n return 0\n }\n },\n })\n }\n\n async getBondStateValidatorBondBalances(\n bondType: BondType,\n bondName: string,\n ): Promise<{ voteAccount: PublicKey, balance: number }[]> {\n const bondState = await this.getBondState(bondType, bondName)\n const collateralType = bondState.collateralType\n\n const validatorBonds = await this.getBondValidatorStates(bondType, bondName)\n if (!validatorBonds.length) {\n return []\n }\n\n const chunk = <T>(arr: T[], n = 100) => {\n const res: T[][] = []\n for (let i = 0; i < arr.length; i += n) {\n res.push(arr.slice(i, i + n))\n }\n return res\n }\n\n return await matchVariant(collateralType, {\n native: async () => {\n const addresses = validatorBonds.map(vb => vb.publicKey)\n const accountInfos = await this.connection.getMultipleAccountsInfo(addresses)\n\n return validatorBonds.map((vb, idx) => ({\n voteAccount: vb.voteAccount,\n balance: accountInfos[idx]?.lamports ?? 0,\n }))\n },\n token: async (mint: PublicKey) => {\n const items = validatorBonds.map(vb => ({\n voteAccount: vb.voteAccount,\n tokenAccount: getAssociatedTokenAddressSync(mint, vb.publicKey, true),\n }))\n\n const balances: { voteAccount: PublicKey, balance: number }[] = []\n for (const part of chunk(items, 100)) {\n const infos = await this.connection\n .getMultipleAccountsInfo(part.map(i => i.tokenAccount))\n .catch(() => [])\n\n for (let i = 0; i < part.length; i++) {\n const info = infos[i]\n const voteAccount = part[i].voteAccount\n\n if (!info || info.data.length !== ACCOUNT_SIZE) {\n balances.push({ voteAccount, balance: 0 })\n continue\n }\n\n try {\n const acc = AccountLayout.decode(info.data)\n const raw = BigInt(acc.amount.toString())\n const asNumber = Number(raw)\n balances.push({\n voteAccount,\n balance: Number.isFinite(asNumber) ? asNumber : Number.MAX_SAFE_INTEGER,\n })\n } catch {\n balances.push({ voteAccount, balance: 0 })\n }\n }\n }\n\n return balances\n },\n })\n }\n\n /**\n * Get total collected collateral for a bond state\n */\n async getBondStateTotalCollected(\n bondType: BondType,\n bondName: string,\n ) {\n const allBalances = await this.getBondStateValidatorBondBalances(bondType, bondName)\n\n return allBalances.reduce((sum, vb) => sum + vb.balance, 0)\n }\n\n /**\n * Get bond state stats\n * @param state\n * @private\n */\n private async getBondStateStats(state: BondState) {\n const bondType = anchorToBondType(state.bondType)\n\n const totalCollected = await this.getBondStateTotalCollected(\n bondType,\n state.name,\n )\n\n return {\n totalCollected,\n status: this.getBondStateSessionStatus(state),\n }\n }\n\n /**\n * Get validator bond rent exempt amount\n */\n private validatorBondRentExempt = async () => {\n return this.connection.getMinimumBalanceForRentExemption(this.program.account.validatorBond.size)\n }\n\n /**\n * Get all validator bonds for a given bond state\n */\n private async getBondValidatorStates(bondType: BondType, bondName: string) {\n const [bondState] = this.pda.bondState(bondType, bondName)\n\n const accounts = await this.program.account.validatorBond.all([\n {\n memcmp: {\n offset: 8, // discriminator\n bytes: bondState.toBase58(),\n },\n },\n ])\n\n const result = []\n for (const { publicKey, account } of accounts) {\n result.push({ publicKey, ...account })\n }\n\n return result\n }\n\n /**\n * Get session status for bond state\n */\n private getBondStateSessionStatus(bondState: BondState) {\n const now = Math.floor(Date.now() / 1000)\n\n if (bondState.sessionFinishTs.toNumber() > now) {\n return SessionStatus.Live\n } else {\n return SessionStatus.Finished\n }\n }\n}\n","import { PublicKey } from '@solana/web3.js'\n\n// Account seeds\nexport const GLOBAL_STATE_SEED = 'global_state'\nexport const BOND_STATE_SEED = 'bond_state'\nexport const VALIDATOR_BOND_SEED = 'validator_bond'\n\n// Bond type seeds\nexport const STANDARD_BOND_SEED = 'standard'\nexport const CROWDFUNDING_BOND_SEED = 'crowdfunding'\n\n/**\n * Program IDs for different environments\n */\nexport const ENV_PROGRAM_ID: Record<string, PublicKey> = {\n // [BondClientEnv.DEV]: new PublicKey('...'),\n}\n","import { BN, utils } from '@coral-xyz/anchor'\nimport {\n Cluster,\n LAMPORTS_PER_SOL,\n ParsedTransactionWithMeta,\n PublicKey,\n PublicKeyInitData,\n} from '@solana/web3.js'\nimport { JBondClient } from './client'\nimport {\n BondTransactionType,\n BondType,\n TransactionHistoryItem,\n} from './types'\n\nexport type GetHistoryOpts = {\n cluster?: Cluster\n limit?: number\n before?: string\n until?: string\n}\n\nconst { bs58 } = utils.bytes\n\nexport class HistoryManager {\n // Cache of instruction discriminators\n private discCache = new Map<string, Uint8Array>()\n\n constructor(readonly client: JBondClient) {\n }\n\n get program() {\n return this.client.program\n }\n\n get programId() {\n return this.client.programId\n }\n\n get connection() {\n return this.client.provider.connection\n }\n\n debug(...args: any[]) {\n this.client.debug(...args)\n }\n\n async getHistory(\n bondType: BondType,\n bondName: string,\n vote: PublicKeyInitData,\n opts?: GetHistoryOpts,\n ): Promise<TransactionHistoryItem[]> {\n const [validatorBondAccount] = this.client.pda.validatorBond(bondType, bondName, vote)\n\n this.debug(`Fetching history for validator bond account: ${validatorBondAccount.toBase58()}`)\n\n const signatures = await this.fetchSignaturesForAddress(validatorBondAccount, {\n limit: opts?.limit,\n before: opts?.before,\n until: opts?.until,\n })\n\n if (!signatures.length) {\n return []\n }\n\n const sigs = signatures.map(s => s.signature)\n const parsed = await this.fetchParsedTransactions(sigs)\n\n const txBySig = new Map<string, ParsedTransactionWithMeta | null>()\n\n for (let i = 0; i < sigs.length; i++) {\n const want = sigs[i]\n const tx = parsed[i] ?? null\n if (tx?.transaction?.signatures?.[0] && tx.transaction.signatures[0] !== want) {\n const found = parsed.find(t => t?.transaction?.signatures?.[0] === want) ?? null\n txBySig.set(want, found)\n } else {\n txBySig.set(want, tx)\n }\n }\n\n const history: TransactionHistoryItem[] = []\n\n for (const sigInfo of signatures) {\n const sig = sigInfo.signature\n const tx = txBySig.get(sig)\n if (!tx || !tx.meta || tx.meta.err) {\n continue\n }\n\n const slot = tx.slot ?? 0\n const ixs = tx.transaction.message.instructions\n\n for (const ix of ixs) {\n if (!('programId' in ix)) {\n continue\n }\n if (!ix.programId.equals(this.programId)) {\n continue\n }\n if ((ix as any).parsed) {\n continue\n }\n\n const { type, amount } = this.decodeInstructionData((ix as any).data)\n if (!type || amount <= 0) {\n continue\n }\n\n history.push({\n signature: sig,\n slot,\n epoch: slotToEpoch(slot, opts?.cluster),\n type,\n amount,\n })\n }\n }\n\n return history.sort((a, b) => b.slot - a.slot)\n }\n\n private async fetchSignaturesForAddress(\n address: PublicKey,\n options?: { limit?: number, before?: string, until?: string },\n ) {\n const sigs = await this.connection.getSignaturesForAddress(address, {\n limit: options?.limit || 1000,\n before: options?.before,\n until: options?.until,\n }, 'confirmed')\n console.log(sigs)\n return sigs.filter(s => !s.err)\n }\n\n private async fetchParsedTransactions(\n sigs: string[],\n batchSize = 100,\n ): Promise<(ParsedTransactionWithMeta | null)[]> {\n const all: (ParsedTransactionWithMeta | null)[] = []\n for (let i = 0; i < sigs.length; i += batchSize) {\n const batch = sigs.slice(i, i + batchSize)\n const txs = await this.connection.getParsedTransactions(batch, {\n commitment: 'confirmed',\n maxSupportedTransactionVersion: 0,\n })\n all.push(...txs)\n }\n return all\n }\n\n private getInstructionDiscriminator(name: string): Uint8Array {\n const cached = this.discCache.get(name)\n if (cached) {\n return cached\n }\n\n const ix = this.program.idl.instructions.find(i => i.name === name)\n if (!ix || !Array.isArray(ix.discriminator)) {\n throw new Error(`Discriminator not found for instruction ${name}`)\n }\n const disc = new Uint8Array(ix.discriminator)\n this.discCache.set(name, disc)\n return disc\n }\n\n private decodeInstructionData(\n data: string | undefined,\n ): { type: BondTransactionType | null, amount: number } {\n if (!data) {\n return {\n type: null, amount: 0 }\n }\n\n try {\n const buf = bs58.decode(data)\n if (buf.length < 16) {\n return {\n type: null, amount: 0,\n }\n }\n\n const disc = buf.slice(0, 8)\n const amountBytes = buf.slice(8, 16)\n const amount = new BN(amountBytes, 'le').toNumber() / LAMPORTS_PER_SOL\n\n const perfRegister = this.getInstructionDiscriminator('perfBondRegister')\n const perfTopUp = this.getInstructionDiscriminator('perfBondTopUp')\n const perfClaim = this.getInstructionDiscriminator('perfBondClaim')\n const perfWithdraw = this.getInstructionDiscriminator('perfBondWithdraw')\n\n if (Buffer.from(disc).equals(Buffer.from(perfRegister))) {\n return { type: BondTransactionType.Deposit, amount }\n }\n if (Buffer.from(disc).equals(Buffer.from(perfTopUp))) {\n return { type: BondTransactionType.Deposit, amount }\n }\n if (Buffer.from(disc).equals(Buffer.from(perfClaim))) {\n return { type: BondTransactionType.Compensation, amount }\n }\n if (Buffer.from(disc).equals(Buffer.from(perfWithdraw))) {\n return { type: BondTransactionType.Withdrawal, amount }\n }\n\n return { type: null, amount: 0 }\n } catch {\n return { type: null, amount: 0 }\n }\n }\n}\n\nfunction slotToEpoch(slot: number, cluster?: Cluster): number {\n const isMainnet = !cluster || cluster === 'mainnet-beta'\n const slotsPerEpoch = isMainnet ? 432_000 : 400_000\n return Math.floor(slot / slotsPerEpoch)\n}\n","import { IdlAccounts, IdlTypes } from '@coral-xyz/anchor'\nimport { PublicKey } from '@solana/web3.js'\nimport { Jbond } from './jbond'\n\nexport * from './jbond'\n\nexport type GlobalState = IdlAccounts<Jbond>['globalState']\nexport type BondState = IdlAccounts<Jbond>['bondState']\nexport type ValidatorBond = IdlAccounts<Jbond>['validatorBond']\n\n// export type BondType = IdlTypes<Jbond>['bondType']\nexport type CollateralType = IdlTypes<Jbond>['collateralType']\nexport type BondStateStatus = IdlTypes<Jbond>['bondStatus']\n\nexport enum SessionStatus {\n Live,\n Finished,\n}\n\nexport enum BondType {\n Standard = 'standard',\n Crowdfunding = 'crowdfunding',\n}\n\nexport enum BondTransactionType {\n Deposit = 'deposit',\n Withdrawal = 'withdrawal',\n Compensation = 'compensation',\n}\n\nexport type BondStateStats = {\n totalCollected: number\n status: SessionStatus\n}\n\nexport type GlobalInitializeProps = {\n authority?: PublicKey\n}\n\nexport type BondInitializeProps = {\n bondType: BondType\n name: string\n authority?: PublicKey\n collateralType: CollateralType\n reserve: PublicKey\n}\n\nexport type RegisterValidatorProps = {\n bondType: BondType\n name: string\n identity: PublicKey\n voteAccount: PublicKey\n creator?: PublicKey\n collateralType?: CollateralType\n}\n\nexport type TopUpCollateralProps = {\n bondType: BondType\n name: string\n identity: PublicKey\n voteAccount: PublicKey\n amount: number\n // stakeAccount?: PublicKey // for Stake type\n collateralType?: CollateralType\n payer?: PublicKey\n}\n\nexport type WithdrawCollateralProps = {\n bondType: BondType\n name: string\n amount: number\n collateralType?: CollateralType\n voteAccount: PublicKey\n destination?: PublicKey\n withdrawalAuthority?: PublicKey\n}\n\nexport type ClaimProps = {\n bondType: BondType\n name: string\n amount: number\n collateralType?: CollateralType\n voteAccount: PublicKey\n reserve?: PublicKey\n authority?: PublicKey\n}\n\nexport type ClaimAllProps = {\n bondType: BondType\n name: string\n collateralType?: CollateralType\n reserve?: PublicKey\n authority?: PublicKey\n}\n\nexport type GetHistoryProps = {\n voteAccount: PublicKey\n options?: {\n limit?: number\n before?: string\n until?: string\n }\n}\n\nexport type GetHistoryGroupedProps = {\n voteAccount: PublicKey\n epochsCount?: number\n}\n\nexport type BondConfigureProps = {\n bondType: BondType\n name: string\n authority?: PublicKey\n status?: BondStateStatus\n newAuthority?: PublicKey\n newReserve?: PublicKey\n}\n\nexport type GlobalConfigureProps = {\n authority?: PublicKey\n newAuthority?: PublicKey\n}\n\nexport type SetWithdrawAuthorityProps = {\n bondType: BondType\n name: string\n voteAccount: PublicKey\n newWithdrawAuthority?: PublicKey | null\n identity?: PublicKey\n}\n\nexport type EpochHistoryItem = {\n epoch: number\n deposits: number\n withdrawals: number\n balanceChange: number\n signatures: string[]\n}\n\nexport type TransactionHistoryItem = {\n signature: string\n slot: number\n epoch: number\n type: BondTransactionType\n amount: number\n}\n\nexport type BondStartProps = {\n bondType: BondType\n name: string\n duration: number\n}\n\nexport type BondFinishProps = {\n bondType: BondType\n name: string\n}\n","{\n \"address\": \"Fo17edWRJewZNTRibgx9iTfjywCW6dzS81VwBLmPFVq1\",\n \"metadata\": {\n \"name\": \"jbond\",\n \"version\": \"0.2.1\",\n \"spec\": \"0.1.0\",\n \"description\": \"Jpool Bond Program\"\n },\n \"instructions\": [\n {\n \"name\": \"bond_claim\",\n \"docs\": [\n \"Claims compensation for a validator.\",\n \"Transfers funds from the validator's bond account to reserve.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount of compensation to claim (must be positive).\",\n \"\",\n \"# Errors\",\n \"Fails if the authority is invalid, if the validator is not active,\",\n \"if the amount is zero, or if there are insufficient funds.\"\n ],\n \"discriminator\": [\n 151,\n 92,\n 10,\n 205,\n 66,\n 250,\n 188,\n 129\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"reserve\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"reserve_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"stake_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true,\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"stake_program\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"bond_configure\",\n \"docs\": [\n \"Updates bond configuration, including authority and reserve fields.\",\n \"Allows changing the bond's authority and updating the reserve account.\"\n ],\n \"discriminator\": [\n 61,\n 42,\n 106,\n 235,\n 108,\n 57,\n 65,\n 20\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"bond_state\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondConfigureData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"bond_initialize\",\n \"docs\": [\n \"Initializes state for the bond.\",\n \"Sets the authority and reserve account for managing validator bonds.\",\n \"\",\n \"# Errors\",\n \"Fails if the global state account is already initialized or if the payer lacks\",\n \"sufficient funds.\"\n ],\n \"discriminator\": [\n 230,\n 3,\n 121,\n 94,\n 147,\n 203,\n 175,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 98,\n 111,\n 110,\n 100,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"data.bond_type\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"data.name\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"reserve\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"reserve_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"mint\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondInitializeData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"bond_register\",\n \"docs\": [\n \"Registers a new validator with the bond.\",\n \"Sets up the validator's bond account and deposits initial collateral.\",\n \"\",\n \"# Arguments\",\n \"* `initial_collateral` - Amount of collateral to lock (must be positive).\",\n \"* `withdrawal_authority` - Optional key that can withdraw collateral later.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is already registered, if the vote account is invalid,\",\n \"or if the initial collateral transfer fails.\"\n ],\n \"discriminator\": [\n 117,\n 127,\n 78,\n 103,\n 166,\n 175,\n 163,\n 83\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vote_account\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\"\n },\n {\n \"name\": \"vote_account\"\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"mint\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"bond_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondType\"\n }\n }\n },\n {\n \"name\": \"bond_name\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"bond_set_withdraw_authority\",\n \"docs\": [\n \"Sets a new withdrawal authority for a validator's bond account.\",\n \"Allows changing who can withdraw collateral in the future.\",\n \"\",\n \"# Arguments\",\n \"* `new_withdraw_authority` - Optional new withdrawal authority key (None to restrict to\",\n \"identity).\",\n \"\",\n \"# Errors\",\n \"Fails if the signer is not authorized to change the withdrawal authority.\"\n ],\n \"discriminator\": [\n 212,\n 162,\n 53,\n 130,\n 91,\n 158,\n 61,\n 166\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\"\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"identity\",\n \"signer\": true\n },\n {\n \"name\": \"new_withdraw_authority\",\n \"optional\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"bond_top_up\",\n \"docs\": [\n \"Adds additional collateral to an existing validator's bond.\",\n \"Increases the collateral balance, enhancing the validator's stake.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to add.\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"or if the transfer of funds fails.\"\n ],\n \"discriminator\": [\n 132,\n 225,\n 254,\n 187,\n 152,\n 162,\n 176,\n 66\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"payer_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"stake_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true,\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"stake_program\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"bond_withdraw\",\n \"docs\": [\n \"Withdraws collateral from a validator's bond.\",\n \"Decreases the collateral balance, allowing the validator to reclaim funds.\",\n \"\",\n \"# Arguments\",\n \"* `amount` - Amount to withdraw (must not exceed available balance).\",\n \"\",\n \"# Errors\",\n \"Fails if the validator is not active, if the amount is zero,\",\n \"if the withdrawal authority is invalid, or if the withdrawal would\",\n \"leave insufficient collateral.\"\n ],\n \"discriminator\": [\n 99,\n 64,\n 127,\n 178,\n 53,\n 117,\n 70,\n 204\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"validator_bond.vote_account\",\n \"account\": \"ValidatorBond\"\n }\n ]\n }\n },\n {\n \"name\": \"withdrawal_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"destination_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"bond_token_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"stake_account\",\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"optional\": true,\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"stake_program\",\n \"optional\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"global_configure\",\n \"discriminator\": [\n 67,\n 142,\n 164,\n 250,\n 90,\n 233,\n 144,\n 187\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"global_state\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"defined\": {\n \"name\": \"GlobalConfigureData\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"global_initialize\",\n \"discriminator\": [\n 30,\n 79,\n 193,\n 205,\n 75,\n 42,\n 223,\n 196\n ],\n \"accounts\": [\n {\n \"name\": \"global_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 115,\n 116,\n 97,\n 116,\n 101\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"migrate_bond\",\n \"docs\": [\n \"Migrates validator bond data from legacy structure to new structure.\"\n ],\n \"discriminator\": [\n 107,\n 119,\n 59,\n 110,\n 76,\n 18,\n 37,\n 163\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"legacy_validator_bond\",\n \"writable\": true\n },\n {\n \"name\": \"legacy_vote_account\"\n },\n {\n \"name\": \"validator_bond\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 108,\n 105,\n 100,\n 97,\n 116,\n 111,\n 114,\n 95,\n 98,\n 111,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"bond_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"legacy_vote_account\"\n }\n ]\n }\n },\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"session_finish\",\n \"docs\": [\n \"Finishes a bond, preventing further deposits and withdrawals.\"\n ],\n \"discriminator\": [\n 230,\n 209,\n 54,\n 205,\n 127,\n 141,\n 137,\n 113\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"bond_state\"\n ]\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"session_start\",\n \"docs\": [\n \"Starts a paused bond, allowing deposits and withdrawals to resume.\"\n ],\n \"discriminator\": [\n 132,\n 93,\n 83,\n 152,\n 141,\n 32,\n 58,\n 92\n ],\n \"accounts\": [\n {\n \"name\": \"bond_state\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"bond_state\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"duration_secs\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"BondState\",\n \"discriminator\": [\n 251,\n 95,\n 76,\n 47,\n 191,\n 108,\n 163,\n 92\n ]\n },\n {\n \"name\": \"GlobalState\",\n \"discriminator\": [\n 163,\n 46,\n 74,\n 168,\n 216,\n 123,\n 133,\n 98\n ]\n },\n {\n \"name\": \"ValidatorBond\",\n \"discriminator\": [\n 82,\n 127,\n 243,\n 208,\n 195,\n 42,\n 80,\n 35\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"BondFinished\",\n \"discriminator\": [\n 223,\n 254,\n 3,\n 161,\n 90,\n 190,\n 150,\n 191\n ]\n },\n {\n \"name\": \"BondStarted\",\n \"discriminator\": [\n 235,\n 69,\n 80,\n 63,\n 209,\n 252,\n 232,\n 64\n ]\n },\n {\n \"name\": \"CollateralToppedUp\",\n \"discriminator\": [\n 189,\n 137,\n 204,\n 58,\n 135,\n 182,\n 19,\n 176\n ]\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"discriminator\": [\n 51,\n 224,\n 133,\n 106,\n 74,\n 173,\n 72,\n 82\n ]\n },\n {\n \"name\": \"CompensationClaimed\",\n \"discriminator\": [\n 36,\n 159,\n 41,\n 178,\n 104,\n 135,\n 220,\n 32\n ]\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"discriminator\": [\n 20,\n 20,\n 190,\n 191,\n 53,\n 174,\n 95,\n 72\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"InvalidVoteAccount\",\n \"msg\": \"Invalid vote account\"\n },\n {\n \"code\": 6001,\n \"name\": \"IdentityMismatch\",\n \"msg\": \"Identity does not match vote account\"\n },\n {\n \"code\": 6002,\n \"name\": \"InsufficientCollateral\",\n \"msg\": \"Insufficient collateral amount\"\n },\n {\n \"code\": 6003,\n \"name\": \"TargetAprTooLow\",\n \"msg\": \"Target APR is below minimum threshold\"\n },\n {\n \"code\": 6004,\n \"name\": \"MathOverflow\",\n \"msg\": \"Math overflow\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid amount\"\n },\n {\n \"code\": 6006,\n \"name\": \"ValidatorNotActive\",\n \"msg\": \"Validator bond account is not active\"\n },\n {\n \"code\": 6007,\n \"name\": \"ValidatorAlreadyRegistered\",\n \"msg\": \"Validator already registered\"\n },\n {\n \"code\": 6008,\n \"name\": \"Unauthorized\",\n \"msg\": \"Unauthorized\"\n },\n {\n \"code\": 6009,\n \"name\": \"WithdrawalLockedNearEpochEnd\",\n \"msg\": \"Withdrawals are locked near the end of the epoch.\"\n },\n {\n \"code\": 6010,\n \"name\": \"MissingTokenAccounts\",\n \"msg\": \"Missing token accounts for token collateral type\"\n },\n {\n \"code\": 6011,\n \"name\": \"MissingTokenProgram\",\n \"msg\": \"Token program is required for token collateral type\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidMint\",\n \"msg\": \"Invalid mint for token collateral type\"\n },\n {\n \"code\": 6013,\n \"name\": \"MissingStakeAccount\",\n \"msg\": \"Stake account is required for stake account collateral type\"\n },\n {\n \"code\": 6014,\n \"name\": \"MissingStakeProgram\",\n \"msg\": \"Stake program is required for stake account collateral type\"\n },\n {\n \"code\": 6015,\n \"name\": \"BondFinished\",\n \"msg\": \"Bond is finished (deposits/withdrawals disabled)\"\n },\n {\n \"code\": 6016,\n \"name\": \"BondNotFinished\",\n \"msg\": \"Bond is not finished\"\n },\n {\n \"code\": 6017,\n \"name\": \"UnsupportedCollateralType\",\n \"msg\": \"Unsupported collateral type\"\n },\n {\n \"code\": 6018,\n \"name\": \"Overflow\",\n \"msg\": \"Math operation overflowed\"\n },\n {\n \"code\": 6019,\n \"name\": \"IncorrectBondType\",\n \"msg\": \"Incorrect bond type for this operation\"\n },\n {\n \"code\": 6020,\n \"name\": \"BondNotFinishable\",\n \"msg\": \"This bond type can't be finished\"\n },\n {\n \"code\": 6021,\n \"name\": \"InvalidArgument\",\n \"msg\": \"Invalid argument provided\"\n },\n {\n \"code\": 6022,\n \"name\": \"BondNotDisabled\",\n \"msg\": \"Bond is not disabled\"\n },\n {\n \"code\": 6023,\n \"name\": \"BondNotEnabled\",\n \"msg\": \"Bond is not enabled\"\n }\n ],\n \"types\": [\n {\n \"name\": \"BondConfigureData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"status\",\n \"type\": {\n \"option\": {\n \"defined\": {\n \"name\": \"BondStatus\"\n }\n }\n }\n },\n {\n \"name\": \"new_reserve\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_authority\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"BondFinished\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bond\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"BondInitializeData\",\n \"docs\": [\n \"Data required to initialize a performance bond\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bond_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"BondType\"\n }\n }\n },\n {\n \"name\": \"reserve\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"CollateralType\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"BondStarted\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bond\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"BondState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"bond_type\",\n \"docs\": [\n \"The type of bond (e.g., Standard, Crowdfunding)\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"BondType\"\n }\n }\n },\n {\n \"name\": \"collateral_type\",\n \"docs\": [\n \"The type of collateral accepted for this bond\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CollateralType\"\n }\n }\n },\n {\n \"name\": \"reserve\",\n \"docs\": [\n \"Reserve account where collateral is held\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority allowed to manage the bond configuration\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"session_id\",\n \"docs\": [\n \"Unique identifier for the bonding session\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_members\",\n \"docs\": [\n \"Total number of users who have participated in the bond\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"total_compensation_amount\",\n \"docs\": [\n \"Total compensation amount paid out\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"session_start_ts\",\n \"docs\": [\n \"Start timestamp of the current session (unix seconds). 0 — not set.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"session_finish_ts\",\n \"docs\": [\n \"Finish timestamp of the current session (unix seconds). 0 — not set.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"status\",\n \"docs\": [\n \"Current status of the bond\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"BondStatus\"\n }\n }\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"BondStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Active\"\n },\n {\n \"name\": \"Disabled\"\n }\n ]\n }\n },\n {\n \"name\": \"BondType\",\n \"docs\": [\n \"Types of bonds supported by the program\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Standard\"\n },\n {\n \"name\": \"Crowdfunding\"\n }\n ]\n }\n },\n {\n \"name\": \"CollateralToppedUp\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CollateralType\",\n \"docs\": [\n \"Types of collateral that can be used for bond deposit\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Native\"\n },\n {\n \"name\": \"StakeAccount\"\n },\n {\n \"name\": \"Token\",\n \"fields\": [\n \"pubkey\"\n ]\n }\n ]\n }\n },\n {\n \"name\": \"CollateralWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"CompensationClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"validator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"post_balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"GlobalConfigureData\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_authority\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"GlobalState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority allowed to manage the program\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorBond\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"state\",\n \"docs\": [\n \"The bond state address\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"identity\",\n \"docs\": [\n \"Validator identity pubkey\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"docs\": [\n \"Validator vote account pubkey\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"The bond creator pubkey\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"withdrawal_authority\",\n \"docs\": [\n \"Optional withdrawal authority pubkey (if set, can withdraw on behalf of the validator,\",\n \"otherwise only identity can withdraw)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"created_at\",\n \"docs\": [\n \"Bond creation timestamp\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for the PDA\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ValidatorRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"identity\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vote_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"i64\"\n }\n ]\n }\n }\n ],\n \"constants\": [\n {\n \"name\": \"EPOCH_LOCKED_SLOT_TAIL\",\n \"docs\": [\n \"Epoch slot index at the end of an epoch after which withdrawals are locked\"\n ],\n \"type\": \"u64\",\n \"value\": \"420000\"\n }\n ]\n}","import { CROWDFUNDING_BOND_SEED, STANDARD_BOND_SEED } from '../constants'\nimport { BondType } from '../types'\n\nexport * from './enum'\nexport * from './wallet'\nexport * from './web3'\n\n/**\n * Get bond type seed from bond type\n */\nexport function getBondTypeSeed(type: BondType) {\n switch (type) {\n case BondType.Standard: return STANDARD_BOND_SEED\n case BondType.Crowdfunding: return CROWDFUNDING_BOND_SEED\n default:\n throw new Error(`Unknown bond type: ${type}`)\n }\n}\n","import { IdlTypes } from '@coral-xyz/anchor'\nimport { BondType, Jbond } from '../types'\n\n/**\n * Type representing a variant tuple of [key, value]\n */\nexport type VariantTuple<T> = [keyof T & string, T[keyof T & string]]\n\n/**\n * Extracts the variant key and value from an enum-like object\n * @param v The variant object\n * @returns Tuple of [key, value]\n */\nexport function getVariant<T extends Record<string, unknown>>(v: T): VariantTuple<T> {\n const key = Object.keys(v)[0] as keyof T & string\n return [key, (v as any)[key]]\n}\n\n/**\n * Extracts arguments from a variant payload\n * Handles both array and object payloads\n * @param payload The variant payload\n * @returns Array of arguments\n */\nexport function variantArgs(payload: any): any[] {\n if (Array.isArray(payload)) {\n return payload\n }\n if (payload && typeof payload === 'object') {\n const numericKeys = Object.keys(payload).filter(k => String(+k) === k)\n if (numericKeys.length) {\n return numericKeys.sort((a, b) => +a - +b).map(k => (payload as any)[k])\n }\n return [payload]\n }\n return [payload]\n}\n\n/**\n * Pattern match on variant types with type-safe handlers\n * @param v The variant to match\n * @param handlers Object mapping variant keys to handler functions\n * @returns The result of calling the matched handler\n */\nexport function matchVariant<T extends Record<string, unknown>, R>(\n v: T,\n handlers: Partial<Record<keyof T & string, (...args: any[]) => R>>,\n): R {\n const [k, data] = getVariant(v)\n const h = handlers[k]\n if (!h) {\n throw new Error(`Unhandled variant: ${k}`)\n }\n return h(...variantArgs(data))\n}\n\n/**\n * Get the key of a variant object\n * @param v The variant\n * @returns The variant key\n */\nexport function variantKey<T extends Record<string, unknown>>(v: T) {\n return Object.keys(v)[0] as keyof T & string\n}\n\n/**\n * Check if two variants have the same key\n * @param a First variant\n * @param b Second variant\n * @returns True if variants have the same key\n */\nexport function sameVariant<T extends Record<string, unknown>>(a: T, b: T) {\n return variantKey(a) === variantKey(b)\n}\n\n/**\n * Convert enum value to Anchor variant object.\n * Requires enum values to match Anchor variant keys exactly.\n * @param key The enum value (must match an Anchor variant key)\n * @param payload The variant payload\n * @returns Typed variant object\n */\nexport function toAnchor<\n T extends Record<string, unknown>,\n K extends keyof T & string,\n>(\n key: K,\n payload?: T[K],\n): Extract<T, Record<K, unknown>> {\n return { [key]: payload ?? {} } as Extract<T, Record<K, unknown>>\n}\n\n/**\n * Convert Anchor variant to enum value.\n * Returns the variant key directly—type system guarantees it's valid.\n * @param variant The Anchor variant object\n * @returns The variant key (which is the enum value)\n */\nexport function fromAnchor<\n T extends Record<string, unknown>,\n E extends keyof T & string,\n>(\n variant: T,\n): E {\n return variantKey(variant) as E\n}\n\n// Specific functions for BondType and Jbond\n\ntype BondTypeVariant = IdlTypes<Jbond>['bondType']\n\nexport function bondTypeToAnchor<K extends keyof BondTypeVariant & string>(\n type: K,\n payload?: BondTypeVariant[K],\n): Extract<BondTypeVariant, Record<K, unknown>> {\n return toAnchor(type, payload)\n}\n\nexport function anchorToBondType(variant: BondTypeVariant): BondType {\n return fromAnchor(variant)\n}\n","import type { Keypair, PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js'\n\nfunction isVersionedTransaction(tx: Transaction | VersionedTransaction): tx is VersionedTransaction {\n return 'version' in tx\n}\n\nexport type Wallet = {\n publicKey: PublicKey\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>\n signTransaction: <T extends Transaction | VersionedTransaction>(tx: T) => Promise<T>\n signAllTransactions: <T extends Transaction | VersionedTransaction>(txs: T[]) => Promise<T[]>\n}\n\nexport class NodeWallet implements Wallet {\n constructor(readonly payer: Keypair) {}\n\n async signTransaction<T extends Transaction | VersionedTransaction>(\n tx: T,\n ): Promise<T> {\n if (isVersionedTransaction(tx)) {\n tx.sign([this.payer])\n } else {\n tx.partialSign(this.payer)\n }\n\n return tx\n }\n\n async signAllTransactions<T extends Transaction | VersionedTransaction>(\n txs: T[],\n ): Promise<T[]> {\n return txs.map((t) => {\n if (isVersionedTransaction(t)) {\n t.sign([this.payer])\n } else {\n t.partialSign(this.payer)\n }\n return t\n })\n }\n\n get publicKey(): PublicKey {\n return this.payer.publicKey\n }\n}\n","import { BN } from '@coral-xyz/anchor'\nimport { LAMPORTS_PER_SOL } from '@solana/web3.js'\n\nconst SOL_DECIMALS = Math.log10(LAMPORTS_PER_SOL)\n\nexport function lamportsToSol(lamports: number | BN): number {\n if (typeof lamports === 'number') {\n return Math.abs(lamports) / LAMPORTS_PER_SOL\n }\n let signMultiplier = 1\n if (lamports.isNeg()) {\n signMultiplier = -1\n }\n const absLamports = lamports.abs()\n const lamportsString = absLamports.toString(10).padStart(10, '0')\n const splitIndex = lamportsString.length - SOL_DECIMALS\n const solString = `${lamportsString.slice(0, splitIndex)}.${lamportsString.slice(splitIndex)}`\n return signMultiplier * Number.parseFloat(solString)\n}\n\nexport function solToLamports(amount: number | string): BN {\n if (Number.isNaN(amount)) {\n return new BN(0)\n }\n return new BN(Number(amount).toFixed(SOL_DECIMALS).replace('.', ''))\n}\n"]}