@learncard/ethereum-plugin 1.0.4 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/ethereum-plugin.cjs.development.js +11 -1
- package/dist/ethereum-plugin.cjs.development.js.map +2 -2
- package/dist/ethereum-plugin.cjs.production.min.js +1 -1
- package/dist/ethereum-plugin.cjs.production.min.js.map +2 -2
- package/dist/ethereum-plugin.esm.js +11 -1
- package/dist/ethereum-plugin.esm.js.map +2 -2
- package/package.json +2 -2
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
3
|
"sources": ["../../../../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@5.7.1/node_modules/buffer/index.js", "../../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js", "../../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js", "../../../../node_modules/.pnpm/js-sha3@0.8.0/node_modules/js-sha3/src/sha3.js", "../../../../node_modules/.pnpm/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js", "../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/utils.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/common.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/common.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/1.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/256.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/224.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/512.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha/384.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/sha.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/ripemd.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash/hmac.js", "../../../../node_modules/.pnpm/hash.js@1.1.7/node_modules/hash.js/lib/hash.js", "../../../../node_modules/.pnpm/aes-js@3.0.0/node_modules/aes-js/index.js", "../../../../node_modules/.pnpm/scrypt-js@3.0.1/node_modules/scrypt-js/scrypt.js", "../../../../node_modules/.pnpm/bech32@1.1.4/node_modules/bech32/index.js", "../src/index.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/ethers.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.6.2/node_modules/@ethersproject/bignumber/src.ts/bignumber.ts", "../../../../node_modules/.pnpm/@ethersproject+logger@5.6.0/node_modules/@ethersproject/logger/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+logger@5.6.0/node_modules/@ethersproject/logger/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+bytes@5.6.1/node_modules/@ethersproject/bytes/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+bytes@5.6.1/node_modules/@ethersproject/bytes/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.6.2/node_modules/@ethersproject/bignumber/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+bignumber@5.6.2/node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts", "../../../../node_modules/.pnpm/@ethersproject+properties@5.6.0/node_modules/@ethersproject/properties/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+properties@5.6.0/node_modules/@ethersproject/properties/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/fragments.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts", "../../../../node_modules/.pnpm/@ethersproject+keccak256@5.6.1/node_modules/@ethersproject/keccak256/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+rlp@5.6.1/node_modules/@ethersproject/rlp/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+rlp@5.6.1/node_modules/@ethersproject/rlp/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+address@5.6.1/node_modules/@ethersproject/address/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+address@5.6.1/node_modules/@ethersproject/address/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/address.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/array.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/boolean.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/bytes.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/null.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/addresses.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/bignumbers.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/hashes.ts", "../../../../node_modules/.pnpm/@ethersproject+constants@5.6.1/node_modules/@ethersproject/constants/src.ts/strings.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/number.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/utf8.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/bytes32.ts", "../../../../node_modules/.pnpm/@ethersproject+strings@5.6.1/node_modules/@ethersproject/strings/src.ts/idna.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/string.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/coders/tuple.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/abi-coder.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/id.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/namehash.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/message.ts", "../../../../node_modules/.pnpm/@ethersproject+hash@5.6.1/node_modules/@ethersproject/hash/src.ts/typed-data.ts", "../../../../node_modules/.pnpm/@ethersproject+abi@5.6.4/node_modules/@ethersproject/abi/src.ts/interface.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.6.1/node_modules/@ethersproject/abstract-provider/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-provider@5.6.1/node_modules/@ethersproject/abstract-provider/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.6.2/node_modules/@ethersproject/abstract-signer/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+abstract-signer@5.6.2/node_modules/@ethersproject/abstract-signer/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/minimalistic-assert/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/utils.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curve/base.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/inherits/inherits_browser.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curve/short.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curve/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/curves.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/ec/key.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic/ec/index.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/node_modules/elliptic/lib/elliptic.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/@ethersproject/signing-key/lib.esm/elliptic.js", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/@ethersproject/signing-key/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+signing-key@5.6.2/node_modules/@ethersproject/signing-key/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+transactions@5.6.2/node_modules/@ethersproject/transactions/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+transactions@5.6.2/node_modules/@ethersproject/transactions/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+contracts@5.6.2/node_modules/@ethersproject/contracts/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+contracts@5.6.2/node_modules/@ethersproject/contracts/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+basex@5.6.1/node_modules/@ethersproject/basex/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.6.1/node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.6.1/node_modules/@ethersproject/sha2/src.ts/types.ts", "../../../../node_modules/.pnpm/@ethersproject+sha2@5.6.1/node_modules/@ethersproject/sha2/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+pbkdf2@5.6.1/node_modules/@ethersproject/pbkdf2/src.ts/browser-pbkdf2.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/wordlist.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/lang-en.ts", "../../../../node_modules/.pnpm/@ethersproject+wordlists@5.6.1/node_modules/@ethersproject/wordlists/src.ts/browser-wordlists.ts", "../../../../node_modules/.pnpm/@ethersproject+hdnode@5.6.2/node_modules/@ethersproject/hdnode/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+hdnode@5.6.2/node_modules/@ethersproject/hdnode/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.6.1/node_modules/@ethersproject/random/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.6.1/node_modules/@ethersproject/random/src.ts/browser-random.ts", "../../../../node_modules/.pnpm/@ethersproject+random@5.6.1/node_modules/@ethersproject/random/src.ts/shuffle.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/crowdsale.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/utils.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/inspect.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/keystore.ts", "../../../../node_modules/.pnpm/@ethersproject+json-wallets@5.6.1/node_modules/@ethersproject/json-wallets/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+wallet@5.6.2/node_modules/@ethersproject/wallet/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+wallet@5.6.2/node_modules/@ethersproject/wallet/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+networks@5.6.4/node_modules/@ethersproject/networks/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+networks@5.6.4/node_modules/@ethersproject/networks/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+base64@5.6.1/node_modules/@ethersproject/base64/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+base64@5.6.1/node_modules/@ethersproject/base64/src.ts/browser-base64.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.6.1/node_modules/@ethersproject/web/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.6.1/node_modules/@ethersproject/web/src.ts/browser-geturl.ts", "../../../../node_modules/.pnpm/@ethersproject+web@5.6.1/node_modules/@ethersproject/web/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/base-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/formatter.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/browser-ws.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/websocket-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/ankr-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/fallback-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/browser-ipc-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/infura-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/pocket-provider.ts", "../../../../node_modules/.pnpm/@ethersproject+providers@5.6.8/node_modules/@ethersproject/providers/src.ts/web3-provider.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/utils.ts", "../../../../node_modules/.pnpm/@ethersproject+solidity@5.6.1/node_modules/@ethersproject/solidity/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+solidity@5.6.1/node_modules/@ethersproject/solidity/src.ts/index.ts", "../../../../node_modules/.pnpm/@ethersproject+units@5.6.1/node_modules/@ethersproject/units/src.ts/_version.ts", "../../../../node_modules/.pnpm/@ethersproject+units@5.6.1/node_modules/@ethersproject/units/src.ts/index.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/_version.ts", "../../../../node_modules/.pnpm/ethers@5.6.9/node_modules/ethers/src.ts/index.ts", "../src/helpers.ts", "../src/hardcodedTokens.ts"],
|
4
|
-
"sourcesContent": ["'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\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar 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\nvar 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 var arr = new Uint8Array(1)\n var 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 var 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 var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var 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(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\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 var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var 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 var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var 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 var 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 var 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 var len = checked(obj.length) | 0\n var 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 var x = a.length\n var y = b.length\n\n for (var 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 var 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 var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(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 var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var 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 var 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 var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var 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 var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var 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 var 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 var str = ''\n var 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 var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var 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 var indexSize = 1\n var arrLength = arr.length\n var 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 var i\n if (dir) {\n var 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 var found = true\n for (var 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 var 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 var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var 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 var 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 var 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 var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var 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\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var 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 var res = ''\n var 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 var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var 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 var 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 var 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 var val = this[offset]\n var mul = 1\n var 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 var val = this[offset + --byteLength]\n var 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.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var 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 var i = byteLength\n var mul = 1\n var 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 var 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 var 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.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 var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var 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 var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var 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\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var 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 var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var 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\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 var 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 var 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 var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var 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// HELPER FUNCTIONS\n// ================\n\nvar 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 var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var 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 var byteArray = []\n for (var 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 var c, hi, lo\n var byteArray = []\n for (var 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 for (var 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\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\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\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", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n", "\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "import { Buffer } from 'buffer';\n\nimport { LearnCard } from '@learncard/core';\nimport { ethers } from 'ethers';\n\nimport { EthereumConfig, EthereumPlugin, TokenList } from './types';\nimport {\n formatUnits,\n parseUnits,\n getTokenFromSymbolOrAddress,\n getChainIdFromProvider,\n} from './helpers';\nimport hardcodedTokens from './hardcodedTokens';\n\nexport * from './types';\n\nconst ERC20ABI = require('./erc20.abi.json');\n\n/**\n * @group Plugins\n */\nexport const getEthereumPlugin = (\n initLearnCard: LearnCard<any, 'id'>,\n config: EthereumConfig\n): EthereumPlugin => {\n let { infuraProjectId, network = 'mainnet' } = config;\n\n // Ethers wallet\n const secpKeypair = initLearnCard.id.keypair('secp256k1');\n\n if (!secpKeypair) {\n throw new Error('LearnCard must support secp256k1 JWK in order to add Ethereum Plugin');\n }\n\n const privateKey = Buffer.from(secpKeypair.d, 'base64').toString('hex');\n let ethersWallet = new ethers.Wallet(privateKey);\n const publicKey: string = ethersWallet.address;\n\n // Provider\n const getProvider = () => {\n let provider: ethers.providers.Provider;\n if (infuraProjectId) {\n provider = new ethers.providers.InfuraProvider(network, infuraProjectId);\n } else {\n provider = ethers.getDefaultProvider(network);\n }\n\n ethersWallet = ethersWallet.connect(provider);\n return provider;\n };\n let provider = getProvider();\n\n const getDefaultTokenList = (): TokenList => {\n return require('@uniswap/default-token-list/build/uniswap-default.tokenlist.json').tokens.concat(\n hardcodedTokens\n );\n };\n const defaultTokenList: TokenList = getDefaultTokenList();\n\n const getTokenAddress = async (tokenSymbolOrAddress: string) => {\n return (\n await getTokenFromSymbolOrAddress(\n tokenSymbolOrAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )?.address;\n };\n\n const getErc20TokenBalance = async (\n tokenContractAddress: string,\n walletPublicAddress = publicKey\n ) => {\n const contract = new ethers.Contract(tokenContractAddress, ERC20ABI, provider);\n\n const balance = await contract.balanceOf(walletPublicAddress);\n const formattedBalance = formatUnits(\n balance,\n tokenContractAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n );\n\n return formattedBalance;\n };\n\n // Core Methods\n const getBalance = async (walletAddress = publicKey, tokenSymbolOrAddress = 'ETH') => {\n if (!tokenSymbolOrAddress || tokenSymbolOrAddress === 'ETH') {\n // check ETH by default\n const balance = await provider.getBalance(walletAddress);\n const formattedBalance = ethers.utils.formatEther(balance);\n\n return formattedBalance;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n\n if (!tokenAddress) {\n throw new Error(`Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`);\n }\n\n const balance = await getErc20TokenBalance(tokenAddress, walletAddress);\n\n return balance;\n };\n\n return {\n name: 'Ethereum',\n displayName: 'Ethereum',\n description: 'Provides access to currency',\n methods: {\n getEthereumAddress: () => publicKey,\n\n getBalance: async (_learnCard, symbolOrAddress = 'ETH') =>\n getBalance(publicKey, symbolOrAddress),\n getBalanceForAddress: async (_learnCard, walletAddress, symbolOrAddress) =>\n getBalance(walletAddress, symbolOrAddress),\n\n transferTokens: async (_learnCard, tokenSymbolOrAddress, amount, toAddress) => {\n if (tokenSymbolOrAddress === 'ETH') {\n const transaction = {\n to: toAddress,\n\n // Convert ETH to wei\n value: ethers.utils.parseEther(amount.toString()),\n };\n\n return (await ethersWallet.sendTransaction(transaction)).hash;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n if (!tokenAddress) {\n throw new Error(\n `Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`\n );\n }\n\n const tokenContract = new ethers.Contract(tokenAddress, ERC20ABI, ethersWallet);\n\n return (\n await tokenContract.transfer(\n toAddress,\n await parseUnits(\n amount.toString(),\n tokenContract.address,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )\n ).hash;\n },\n\n getGasPrice: async () => {\n return ethers.utils.formatUnits(await provider.getGasPrice());\n },\n\n /* Configuration-type methods */\n getCurrentNetwork: () => {\n return network;\n },\n changeNetwork: (_learnCard, _network: ethers.providers.Networkish) => {\n const oldNetwork = network;\n try {\n network = _network;\n provider = getProvider();\n } catch (e) {\n network = oldNetwork;\n provider = getProvider();\n throw e;\n }\n },\n addInfuraProjectId: (_learnCard, infuraProjectIdToAdd) => {\n infuraProjectId = infuraProjectIdToAdd;\n provider = getProvider();\n },\n },\n };\n};\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "import { ethers } from 'ethers';\n\nimport { Token, TokenList } from './types';\n\nexport const isAddress = (maybeAddress: string) => {\n return maybeAddress.startsWith('0x') && maybeAddress.length === 42;\n};\n\n/* From Ethereum-compatible numbers to human-readable numbers */\nexport const formatUnits = async (\n units: ethers.BigNumberish,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.formatUnits(units, token?.decimals);\n};\n\n/* From human-readable numbers to Ethereum-compatible numbers */\nexport const parseUnits = async (\n units: string,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.parseUnits(units, token?.decimals);\n};\n\nexport const getTokenFromSymbolOrAddress = async (\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n): Promise<Token | undefined> => {\n let token;\n if (isAddress(symbolOrAddress)) {\n token = await getTokenFromAddress(symbolOrAddress, tokenList, chainId);\n } else {\n token = await getTokenFromSymbol(symbolOrAddress, tokenList, chainId);\n }\n return token;\n};\n\nconst getTokenFromAddress = async (address: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(token => token.chainId === chainId && token.address === address);\n\n return token;\n};\n\nconst getTokenFromSymbol = async (symbol: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(\n token => token.chainId === chainId && token.symbol.toUpperCase() === symbol.toUpperCase()\n );\n\n return token;\n};\n\nexport const getChainIdFromProvider = async (provider: ethers.providers.Provider) => {\n return (await provider.getNetwork()).chainId;\n};\n", "export const hardcodedTokens = [\n {\n name: 'USDCoin',\n address: '0x07865c6e87b9f70255377e024ace6630c1eaa37f',\n symbol: 'USDC',\n decimals: 6,\n chainId: 5,\n logoURI:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png',\n extensions: {\n bridgeInfo: {\n '10': {\n tokenAddress: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607',\n },\n '137': {\n tokenAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n },\n '42161': {\n tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8',\n },\n },\n },\n },\n];\n\nexport default hardcodedTokens;\n"],
|
5
|
-
"mappings": "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G,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACp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AM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,EACngD,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAI,EAGngD,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EAGpgG,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAU,EAGpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,W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",
|
4
|
+
"sourcesContent": ["'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\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar 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\nvar 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 var arr = new Uint8Array(1)\n var 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 var 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 var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var 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(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\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 var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var 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 var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var 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 var 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 var 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 var len = checked(obj.length) | 0\n var 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 var x = a.length\n var y = b.length\n\n for (var 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 var 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 var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(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 var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var 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 var 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 var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var 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 var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var 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 var 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 var str = ''\n var 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 var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var 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 var indexSize = 1\n var arrLength = arr.length\n var 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 var i\n if (dir) {\n var 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 var found = true\n for (var 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 var 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 var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var 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 var 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 var 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 var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var 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\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var 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 var res = ''\n var 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 var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var 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 var 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 var 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 var val = this[offset]\n var mul = 1\n var 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 var val = this[offset + --byteLength]\n var 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.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var 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 var i = byteLength\n var mul = 1\n var 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 var 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 var 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.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 var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var 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 var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var 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\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var 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 var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var 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\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 var 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 var 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 var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var 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// HELPER FUNCTIONS\n// ================\n\nvar 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 var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var 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 var byteArray = []\n for (var 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 var c, hi, lo\n var byteArray = []\n for (var 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 for (var 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\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\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\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", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n", "\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "import { Buffer } from 'buffer';\n\nimport { LearnCard } from '@learncard/core';\nimport { ethers } from 'ethers';\n\nimport { EthereumConfig, EthereumPlugin, TokenList } from './types';\nimport {\n formatUnits,\n parseUnits,\n getTokenFromSymbolOrAddress,\n getChainIdFromProvider,\n} from './helpers';\nimport hardcodedTokens from './hardcodedTokens';\n\nexport * from './types';\n\nconst ERC20ABI = require('./erc20.abi.json');\n\n/**\n * @group Plugins\n */\nexport const getEthereumPlugin = (\n initLearnCard: LearnCard<any, 'id'>,\n config: EthereumConfig\n): EthereumPlugin => {\n let { infuraProjectId, network = 'mainnet' } = config;\n\n // Ethers wallet\n const secpKeypair = initLearnCard.id.keypair('secp256k1');\n\n if (!secpKeypair) {\n throw new Error('LearnCard must support secp256k1 JWK in order to add Ethereum Plugin');\n }\n\n const privateKey = Buffer.from(secpKeypair.d, 'base64').toString('hex');\n let ethersWallet = new ethers.Wallet(privateKey);\n const publicKey: string = ethersWallet.address;\n\n // Provider\n const getProvider = () => {\n let provider: ethers.providers.Provider;\n if (infuraProjectId) {\n provider = new ethers.providers.InfuraProvider(network, infuraProjectId);\n } else {\n provider = ethers.getDefaultProvider(network);\n }\n\n ethersWallet = ethersWallet.connect(provider);\n return provider;\n };\n let provider: ethers.providers.Provider;\n\n const getDefaultTokenList = (): TokenList => {\n return require('@uniswap/default-token-list/build/uniswap-default.tokenlist.json').tokens.concat(\n hardcodedTokens\n );\n };\n const defaultTokenList: TokenList = getDefaultTokenList();\n\n const getTokenAddress = async (tokenSymbolOrAddress: string) => {\n if (!provider) provider = getProvider();\n\n return (\n await getTokenFromSymbolOrAddress(\n tokenSymbolOrAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )?.address;\n };\n\n const getErc20TokenBalance = async (\n tokenContractAddress: string,\n walletPublicAddress = publicKey\n ) => {\n if (!provider) provider = getProvider();\n\n const contract = new ethers.Contract(tokenContractAddress, ERC20ABI, provider);\n\n const balance = await contract.balanceOf(walletPublicAddress);\n const formattedBalance = formatUnits(\n balance,\n tokenContractAddress,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n );\n\n return formattedBalance;\n };\n\n // Core Methods\n const getBalance = async (walletAddress = publicKey, tokenSymbolOrAddress = 'ETH') => {\n if (!provider) provider = getProvider();\n\n if (!tokenSymbolOrAddress || tokenSymbolOrAddress === 'ETH') {\n // check ETH by default\n const balance = await provider.getBalance(walletAddress);\n const formattedBalance = ethers.utils.formatEther(balance);\n\n return formattedBalance;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n\n if (!tokenAddress) {\n throw new Error(`Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`);\n }\n\n const balance = await getErc20TokenBalance(tokenAddress, walletAddress);\n\n return balance;\n };\n\n return {\n name: 'Ethereum',\n displayName: 'Ethereum',\n description: 'Provides access to currency',\n methods: {\n getEthereumAddress: () => publicKey,\n\n getBalance: async (_learnCard, symbolOrAddress = 'ETH') =>\n getBalance(publicKey, symbolOrAddress),\n getBalanceForAddress: async (_learnCard, walletAddress, symbolOrAddress) =>\n getBalance(walletAddress, symbolOrAddress),\n\n transferTokens: async (_learnCard, tokenSymbolOrAddress, amount, toAddress) => {\n if (!provider) provider = getProvider();\n\n if (tokenSymbolOrAddress === 'ETH') {\n const transaction = {\n to: toAddress,\n\n // Convert ETH to wei\n value: ethers.utils.parseEther(amount.toString()),\n };\n\n return (await ethersWallet.sendTransaction(transaction)).hash;\n }\n\n const tokenAddress = await getTokenAddress(tokenSymbolOrAddress);\n if (!tokenAddress) {\n throw new Error(\n `Unable to determine token address for \\\"${tokenSymbolOrAddress}\\\"`\n );\n }\n\n const tokenContract = new ethers.Contract(tokenAddress, ERC20ABI, ethersWallet);\n\n return (\n await tokenContract.transfer(\n toAddress,\n await parseUnits(\n amount.toString(),\n tokenContract.address,\n defaultTokenList,\n await getChainIdFromProvider(provider)\n )\n )\n ).hash;\n },\n\n getGasPrice: async () => {\n if (!provider) provider = getProvider();\n\n return ethers.utils.formatUnits(await provider.getGasPrice());\n },\n\n /* Configuration-type methods */\n getCurrentNetwork: () => {\n return network;\n },\n changeNetwork: (_learnCard, _network: ethers.providers.Networkish) => {\n const oldNetwork = network;\n try {\n network = _network;\n provider = getProvider();\n } catch (e) {\n network = oldNetwork;\n provider = getProvider();\n throw e;\n }\n },\n addInfuraProjectId: (_learnCard, infuraProjectIdToAdd) => {\n infuraProjectId = infuraProjectIdToAdd;\n provider = getProvider();\n },\n },\n };\n};\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "import { ethers } from 'ethers';\n\nimport { Token, TokenList } from './types';\n\nexport const isAddress = (maybeAddress: string) => {\n return maybeAddress.startsWith('0x') && maybeAddress.length === 42;\n};\n\n/* From Ethereum-compatible numbers to human-readable numbers */\nexport const formatUnits = async (\n units: ethers.BigNumberish,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.formatUnits(units, token?.decimals);\n};\n\n/* From human-readable numbers to Ethereum-compatible numbers */\nexport const parseUnits = async (\n units: string,\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n) => {\n const token = await getTokenFromSymbolOrAddress(symbolOrAddress, tokenList, chainId);\n\n return ethers.utils.parseUnits(units, token?.decimals);\n};\n\nexport const getTokenFromSymbolOrAddress = async (\n symbolOrAddress: string,\n tokenList: TokenList,\n chainId: number\n): Promise<Token | undefined> => {\n let token;\n if (isAddress(symbolOrAddress)) {\n token = await getTokenFromAddress(symbolOrAddress, tokenList, chainId);\n } else {\n token = await getTokenFromSymbol(symbolOrAddress, tokenList, chainId);\n }\n return token;\n};\n\nconst getTokenFromAddress = async (address: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(token => token.chainId === chainId && token.address === address);\n\n return token;\n};\n\nconst getTokenFromSymbol = async (symbol: string, tokenList: TokenList, chainId: number) => {\n const token = tokenList.find(\n token => token.chainId === chainId && token.symbol.toUpperCase() === symbol.toUpperCase()\n );\n\n return token;\n};\n\nexport const getChainIdFromProvider = async (provider: ethers.providers.Provider) => {\n return (await provider.getNetwork()).chainId;\n};\n", "export const hardcodedTokens = [\n {\n name: 'USDCoin',\n address: '0x07865c6e87b9f70255377e024ace6630c1eaa37f',\n symbol: 'USDC',\n decimals: 6,\n chainId: 5,\n logoURI:\n 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png',\n extensions: {\n bridgeInfo: {\n '10': {\n tokenAddress: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607',\n },\n '137': {\n tokenAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n },\n '42161': {\n tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8',\n },\n },\n },\n },\n];\n\nexport default hardcodedTokens;\n"],
|
5
|
+
"mappings": "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G,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,EAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,EAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAM,EAAK,KAAK,KAAK,GAAK,EAAG,EAAK,EAClC,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,EAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SAEP,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,EAAM,KAAK,KAAK,GAAK,EAAG,EACxB,EAAO,EAAM,KAAK,KAAK,GAAK,EAAG,EAAK,EACpC,EAAK,KAAK,KAAK,GAAK,EAAG,EACvB,GAAI,IAAS,GAAI,EAAM,GAAO,IAAM,OAAW,IAAO,EACtD,SAAO,GAAM,KAAQ,IAAO,GAAM,MAAQ,IAAO,EACjD,IAAO,SACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,GAAK,GACP,EAAE,IAAM,GACR,EAAE,IAAM,GACR,EAAE,IAAM,GACR,EAAE,IAAM,GACR,EAAE,IAAM,GACR,EAAE,IAAM,GACR,EAAE,IAAM,GACR,EAAE,IAAM,GACR,EAAE,IAAM,GACJ,IAAM,GACR,GAAE,IAAM,EACR,EAAI,UAEC,CACT,EA3jBkB,eA8jBlB,AAAK,KAAK,MACR,GAAc,GAGhB,WAAmB,EAAM,EAAK,EAAK,CACjC,EAAI,SAAW,EAAI,SAAW,EAAK,SACnC,EAAI,OAAS,EAAK,OAAS,EAAI,OAI/B,OAFI,GAAQ,EACR,EAAU,EACL,EAAI,EAAG,EAAI,EAAI,OAAS,EAAG,IAAK,CAGvC,GAAI,GAAS,EACb,EAAU,EAGV,OAFI,GAAQ,EAAQ,SAChB,EAAO,KAAK,IAAI,EAAG,EAAI,OAAS,CAAC,EAC5B,EAAI,KAAK,IAAI,EAAG,EAAI,EAAK,OAAS,CAAC,EAAG,GAAK,EAAM,IAAK,CAC7D,GAAI,GAAI,EAAI,EACR,EAAI,EAAK,MAAM,GAAK,EACpB,EAAI,EAAI,MAAM,GAAK,EACnB,EAAI,EAAI,EAER,EAAK,EAAI,SACb,EAAU,EAAW,GAAI,SAAa,GAAM,EAC5C,EAAM,EAAK,EAAS,EACpB,EAAQ,EAAK,SACb,EAAU,EAAU,KAAO,IAAO,EAElC,GAAW,IAAW,GACtB,GAAU,QACZ,CACA,EAAI,MAAM,GAAK,EACf,EAAQ,EACR,EAAS,CACX,CACA,MAAI,KAAU,EACZ,EAAI,MAAM,GAAK,EAEf,EAAI,SAGC,EAAI,OAAO,CACpB,CAvCS,gBAyCT,WAAqB,EAAM,EAAK,EAAK,CAInC,MAAO,GAAS,EAAM,EAAK,CAAG,CAChC,CALS,kBAOT,EAAG,UAAU,MAAQ,WAAgB,EAAK,EAAK,CAC7C,GAAI,GACA,EAAM,KAAK,OAAS,EAAI,OAC5B,MAAI,MAAK,SAAW,IAAM,EAAI,SAAW,GACvC,EAAM,EAAY,KAAM,EAAK,CAAG,EAC3B,AAAI,EAAM,GACf,EAAM,EAAW,KAAM,EAAK,CAAG,EAC1B,AAAI,EAAM,KACf,EAAM,EAAS,KAAM,EAAK,CAAG,EAE7B,EAAM,EAAW,KAAM,EAAK,CAAG,EAG1B,CACT,EAdqB,SAmBrB,WAAe,EAAG,EAAG,CACnB,KAAK,EAAI,EACT,KAAK,EAAI,CACX,CAHS,YAKT,EAAK,UAAU,QAAU,WAAkB,EAAG,CAG5C,OAFI,GAAI,GAAI,OAAM,CAAC,EACf,EAAI,EAAG,UAAU,WAAW,CAAC,EAAI,EAC5B,EAAI,EAAG,EAAI,EAAG,IACrB,EAAE,GAAK,KAAK,OAAO,EAAG,EAAG,CAAC,EAG5B,MAAO,EACT,EARyB,WAWzB,EAAK,UAAU,OAAS,WAAiB,EAAG,EAAG,EAAG,CAChD,GAAI,IAAM,GAAK,IAAM,EAAI,EAAG,MAAO,GAGnC,OADI,GAAK,EACA,EAAI,EAAG,EAAI,EAAG,IACrB,GAAO,GAAI,IAAO,EAAI,EAAI,EAC1B,IAAM,EAGR,MAAO,EACT,EAVwB,UAcxB,EAAK,UAAU,QAAU,WAAkB,EAAK,EAAK,EAAK,EAAM,EAAM,EAAG,CACvE,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAK,GAAK,EAAI,EAAI,IAClB,EAAK,GAAK,EAAI,EAAI,GAEtB,EALyB,WAOzB,EAAK,UAAU,UAAY,WAAoB,EAAK,EAAK,EAAM,EAAM,EAAG,EAAK,CAC3E,KAAK,QAAQ,EAAK,EAAK,EAAK,EAAM,EAAM,CAAC,EAEzC,OAAS,GAAI,EAAG,EAAI,EAAG,IAAM,EAM3B,OALI,GAAI,GAAK,EAET,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAK,CAAC,EAChC,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAK,CAAC,EAE3B,EAAI,EAAG,EAAI,EAAG,GAAK,EAI1B,OAHI,GAAS,EACT,EAAS,EAEJ,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,GAAI,GAAK,EAAK,EAAI,GACd,EAAK,EAAK,EAAI,GAEd,EAAK,EAAK,EAAI,EAAI,GAClB,EAAK,EAAK,EAAI,EAAI,GAElB,EAAK,EAAS,EAAK,EAAS,EAEhC,EAAK,EAAS,EAAK,EAAS,EAC5B,EAAK,EAEL,EAAK,EAAI,GAAK,EAAK,EACnB,EAAK,EAAI,GAAK,EAAK,EAEnB,EAAK,EAAI,EAAI,GAAK,EAAK,EACvB,EAAK,EAAI,EAAI,GAAK,EAAK,EAGnB,IAAM,GACR,GAAK,EAAQ,EAAS,EAAQ,EAE9B,EAAS,EAAQ,EAAS,EAAQ,EAClC,EAAS,EAEb,CAGN,EAzC2B,aA2C3B,EAAK,UAAU,YAAc,WAAsB,EAAG,EAAG,CACvD,GAAI,GAAI,KAAK,IAAI,EAAG,CAAC,EAAI,EACrB,EAAM,EAAI,EACV,EAAI,EACR,IAAK,EAAI,EAAI,EAAI,EAAG,EAAG,EAAI,IAAM,EAC/B,IAGF,MAAO,IAAK,EAAI,EAAI,CACtB,EAT6B,eAW7B,EAAK,UAAU,UAAY,WAAoB,EAAK,EAAK,EAAG,CAC1D,GAAI,KAAK,GAET,OAAS,GAAI,EAAG,EAAI,EAAI,EAAG,IAAK,CAC9B,GAAI,GAAI,EAAI,GAEZ,EAAI,GAAK,EAAI,EAAI,EAAI,GACrB,EAAI,EAAI,EAAI,GAAK,EAEjB,EAAI,EAAI,GAER,EAAI,GAAK,CAAC,EAAI,EAAI,EAAI,GACtB,EAAI,EAAI,EAAI,GAAK,CAAC,CACpB,CACF,EAd2B,aAgB3B,EAAK,UAAU,aAAe,WAAuB,EAAI,EAAG,CAE1D,OADI,GAAQ,EACH,EAAI,EAAG,EAAI,EAAI,EAAG,IAAK,CAC9B,GAAI,GAAI,KAAK,MAAM,EAAG,EAAI,EAAI,GAAK,CAAC,EAAI,KACtC,KAAK,MAAM,EAAG,EAAI,GAAK,CAAC,EACxB,EAEF,EAAG,GAAK,EAAI,SAEZ,AAAI,EAAI,SACN,EAAQ,EAER,EAAQ,EAAI,SAAY,CAE5B,CAEA,MAAO,EACT,EAjB8B,gBAmB9B,EAAK,UAAU,WAAa,WAAqB,EAAI,EAAK,EAAK,EAAG,CAEhE,OADI,GAAQ,EACH,EAAI,EAAG,EAAI,EAAK,IACvB,EAAQ,EAAS,GAAG,GAAK,GAEzB,EAAI,EAAI,GAAK,EAAQ,KAAQ,EAAQ,IAAU,GAC/C,EAAI,EAAI,EAAI,GAAK,EAAQ,KAAQ,EAAQ,IAAU,GAIrD,IAAK,EAAI,EAAI,EAAK,EAAI,EAAG,EAAE,EACzB,EAAI,GAAK,EAGX,EAAO,IAAU,CAAC,EAClB,EAAQ,GAAQ,SAAa,CAAC,CAChC,EAhB4B,cAkB5B,EAAK,UAAU,KAAO,WAAe,EAAG,CAEtC,OADI,GAAK,GAAI,OAAM,CAAC,EACX,EAAI,EAAG,EAAI,EAAG,IACrB,EAAG,GAAK,EAGV,MAAO,EACT,EAPsB,QAStB,EAAK,UAAU,KAAO,WAAe,EAAG,EAAG,EAAK,CAC9C,GAAI,GAAI,EAAI,KAAK,YAAY,EAAE,OAAQ,EAAE,MAAM,EAE3C,EAAM,KAAK,QAAQ,CAAC,EAEpB,EAAI,KAAK,KAAK,CAAC,EAEf,EAAM,GAAI,OAAM,CAAC,EACjB,EAAO,GAAI,OAAM,CAAC,EAClB,EAAO,GAAI,OAAM,CAAC,EAElB,EAAO,GAAI,OAAM,CAAC,EAClB,EAAQ,GAAI,OAAM,CAAC,EACnB,EAAQ,GAAI,OAAM,CAAC,EAEnB,EAAO,EAAI,MACf,EAAK,OAAS,EAEd,KAAK,WAAW,EAAE,MAAO,EAAE,OAAQ,EAAK,CAAC,EACzC,KAAK,WAAW,EAAE,MAAO,EAAE,OAAQ,EAAM,CAAC,EAE1C,KAAK,UAAU,EAAK,EAAG,EAAM,EAAM,EAAG,CAAG,EACzC,KAAK,UAAU,EAAM,EAAG,EAAO,EAAO,EAAG,CAAG,EAE5C,OAAS,GAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,GAAI,GAAK,EAAK,GAAK,EAAM,GAAK,EAAK,GAAK,EAAM,GAC9C,EAAK,GAAK,EAAK,GAAK,EAAM,GAAK,EAAK,GAAK,EAAM,GAC/C,EAAK,GAAK,CACZ,CAEA,YAAK,UAAU,EAAM,EAAM,CAAC,EAC5B,KAAK,UAAU,EAAM,EAAM,EAAM,EAAG,EAAG,CAAG,EAC1C,KAAK,UAAU,EAAM,EAAG,CAAC,EACzB,KAAK,aAAa,EAAM,CAAC,EAEzB,EAAI,SAAW,EAAE,SAAW,EAAE,SAC9B,EAAI,OAAS,EAAE,OAAS,EAAE,OACnB,EAAI,OAAO,CACpB,EAtCsB,QAyCtB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,GAAI,GAAM,GAAI,GAAG,IAAI,EACrB,SAAI,MAAQ,GAAI,OAAM,KAAK,OAAS,EAAI,MAAM,EACvC,KAAK,MAAM,EAAK,CAAG,CAC5B,EAJmB,OAOnB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,GAAI,GAAM,GAAI,GAAG,IAAI,EACrB,SAAI,MAAQ,GAAI,OAAM,KAAK,OAAS,EAAI,MAAM,EACvC,EAAW,KAAM,EAAK,CAAG,CAClC,EAJoB,QAOpB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,MAAM,EAAE,MAAM,EAAK,IAAI,CACrC,EAFoB,QAIpB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CACxC,GAAI,GAAW,EAAM,EACrB,AAAI,GAAU,GAAM,CAAC,GAErB,EAAO,MAAO,IAAQ,QAAQ,EAC9B,EAAO,EAAM,QAAS,EAItB,OADI,GAAQ,EACH,EAAI,EAAG,EAAI,KAAK,OAAQ,IAAK,CACpC,GAAI,GAAK,MAAK,MAAM,GAAK,GAAK,EAC1B,EAAM,GAAI,UAAc,GAAQ,UACpC,IAAU,GACV,GAAU,EAAI,SAAa,EAE3B,GAAS,IAAO,GAChB,KAAK,MAAM,GAAK,EAAK,QACvB,CAEA,MAAI,KAAU,GACZ,MAAK,MAAM,GAAK,EAChB,KAAK,UAGA,EAAW,KAAK,KAAK,EAAI,IAClC,EAzBqB,SA2BrB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,MAAM,EAAE,MAAM,CAAG,CAC/B,EAFoB,QAKpB,EAAG,UAAU,IAAM,YAAgB,CACjC,MAAO,MAAK,IAAI,IAAI,CACtB,EAFmB,OAKnB,EAAG,UAAU,KAAO,YAAiB,CACnC,MAAO,MAAK,KAAK,KAAK,MAAM,CAAC,CAC/B,EAFoB,QAKpB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,GAAI,GAAI,EAAW,CAAG,EACtB,GAAI,EAAE,SAAW,EAAG,MAAO,IAAI,GAAG,CAAC,EAInC,OADI,GAAM,KACD,EAAI,EAAG,EAAI,EAAE,QAChB,EAAE,KAAO,EADe,IAAK,EAAM,EAAI,IAAI,EAC/C,CAGF,GAAI,EAAE,EAAI,EAAE,OACV,OAAS,GAAI,EAAI,IAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,EAAI,EAAE,IAAI,EACnD,AAAI,EAAE,KAAO,GAEb,GAAM,EAAI,IAAI,CAAC,GAInB,MAAO,EACT,EAnBmB,OAsBnB,EAAG,UAAU,OAAS,WAAiB,EAAM,CAC3C,EAAO,MAAO,IAAS,UAAY,GAAQ,CAAC,EAC5C,GAAI,GAAI,EAAO,GACX,EAAK,GAAO,GAAK,GACjB,EAAa,WAAe,GAAK,GAAQ,GAAK,EAC9C,EAEJ,GAAI,IAAM,EAAG,CACX,GAAI,GAAQ,EAEZ,IAAK,EAAI,EAAG,EAAI,KAAK,OAAQ,IAAK,CAChC,GAAI,GAAW,KAAK,MAAM,GAAK,EAC3B,EAAM,MAAK,MAAM,GAAK,GAAK,GAAa,EAC5C,KAAK,MAAM,GAAK,EAAI,EACpB,EAAQ,IAAc,GAAK,CAC7B,CAEA,AAAI,GACF,MAAK,MAAM,GAAK,EAChB,KAAK,SAET,CAEA,GAAI,IAAM,EAAG,CACX,IAAK,EAAI,KAAK,OAAS,EAAG,GAAK,EAAG,IAChC,KAAK,MAAM,EAAI,GAAK,KAAK,MAAM,GAGjC,IAAK,EAAI,EAAG,EAAI,EAAG,IACjB,KAAK,MAAM,GAAK,EAGlB,KAAK,QAAU,CACjB,CAEA,MAAO,MAAK,OAAO,CACrB,EApCsB,UAsCtB,EAAG,UAAU,MAAQ,WAAgB,EAAM,CAEzC,SAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAO,CAAI,CACzB,EAJqB,SASrB,EAAG,UAAU,OAAS,WAAiB,EAAM,EAAM,EAAU,CAC3D,EAAO,MAAO,IAAS,UAAY,GAAQ,CAAC,EAC5C,GAAI,GACJ,AAAI,EACF,EAAK,GAAQ,EAAO,IAAO,GAE3B,EAAI,EAGN,GAAI,GAAI,EAAO,GACX,EAAI,KAAK,IAAK,GAAO,GAAK,GAAI,KAAK,MAAM,EACzC,EAAO,SAAc,WAAc,GAAM,EACzC,EAAc,EAMlB,GAJA,GAAK,EACL,EAAI,KAAK,IAAI,EAAG,CAAC,EAGb,EAAa,CACf,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAY,MAAM,GAAK,KAAK,MAAM,GAEpC,EAAY,OAAS,CACvB,CAEA,GAAI,IAAM,EAEH,GAAI,KAAK,OAAS,EAEvB,IADA,KAAK,QAAU,EACV,EAAI,EAAG,EAAI,KAAK,OAAQ,IAC3B,KAAK,MAAM,GAAK,KAAK,MAAM,EAAI,OAGjC,MAAK,MAAM,GAAK,EAChB,KAAK,OAAS,EAGhB,GAAI,GAAQ,EACZ,IAAK,EAAI,KAAK,OAAS,EAAG,GAAK,GAAM,KAAU,GAAK,GAAK,GAAI,IAAK,CAChE,GAAI,GAAO,KAAK,MAAM,GAAK,EAC3B,KAAK,MAAM,GAAM,GAAU,GAAK,EAAO,IAAS,EAChD,EAAQ,EAAO,CACjB,CAGA,MAAI,IAAe,IAAU,GAC3B,GAAY,MAAM,EAAY,UAAY,GAGxC,KAAK,SAAW,GAClB,MAAK,MAAM,GAAK,EAChB,KAAK,OAAS,GAGT,KAAK,OAAO,CACrB,EAvDsB,UAyDtB,EAAG,UAAU,MAAQ,WAAgB,EAAM,EAAM,EAAU,CAEzD,SAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAO,EAAM,EAAM,CAAQ,CACzC,EAJqB,SAOrB,EAAG,UAAU,KAAO,WAAe,EAAM,CACvC,MAAO,MAAK,MAAM,EAAE,MAAM,CAAI,CAChC,EAFoB,QAIpB,EAAG,UAAU,MAAQ,WAAgB,EAAM,CACzC,MAAO,MAAK,MAAM,EAAE,OAAO,CAAI,CACjC,EAFqB,SAKrB,EAAG,UAAU,KAAO,WAAe,EAAM,CACvC,MAAO,MAAK,MAAM,EAAE,MAAM,CAAI,CAChC,EAFoB,QAIpB,EAAG,UAAU,MAAQ,WAAgB,EAAM,CACzC,MAAO,MAAK,MAAM,EAAE,OAAO,CAAI,CACjC,EAFqB,SAKrB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CACxC,EAAO,MAAO,IAAQ,UAAY,GAAO,CAAC,EAC1C,GAAI,GAAI,EAAM,GACV,EAAK,GAAM,GAAK,GAChB,EAAI,GAAK,EAGb,GAAI,KAAK,QAAU,EAAG,MAAO,GAG7B,GAAI,GAAI,KAAK,MAAM,GAEnB,MAAO,CAAC,CAAE,GAAI,EAChB,EAbqB,SAgBrB,EAAG,UAAU,OAAS,WAAiB,EAAM,CAC3C,EAAO,MAAO,IAAS,UAAY,GAAQ,CAAC,EAC5C,GAAI,GAAI,EAAO,GACX,EAAK,GAAO,GAAK,GAIrB,GAFA,EAAO,KAAK,WAAa,EAAG,yCAAyC,EAEjE,KAAK,QAAU,EACjB,MAAO,MAQT,GALI,IAAM,GACR,IAEF,KAAK,OAAS,KAAK,IAAI,EAAG,KAAK,MAAM,EAEjC,IAAM,EAAG,CACX,GAAI,GAAO,SAAc,WAAc,GAAM,EAC7C,KAAK,MAAM,KAAK,OAAS,IAAM,CACjC,CAEA,MAAO,MAAK,OAAO,CACrB,EAtBsB,UAyBtB,EAAG,UAAU,MAAQ,WAAgB,EAAM,CACzC,MAAO,MAAK,MAAM,EAAE,OAAO,CAAI,CACjC,EAFqB,SAKrB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CAGxC,MAFA,GAAO,MAAO,IAAQ,QAAQ,EAC9B,EAAO,EAAM,QAAS,EAClB,EAAM,EAAU,KAAK,MAAM,CAAC,CAAG,EAG/B,KAAK,WAAa,EAChB,KAAK,SAAW,GAAM,MAAK,MAAM,GAAK,IAAM,EAC9C,MAAK,MAAM,GAAK,EAAO,MAAK,MAAM,GAAK,GACvC,KAAK,SAAW,EACT,MAGT,MAAK,SAAW,EAChB,KAAK,MAAM,CAAG,EACd,KAAK,SAAW,EACT,MAIF,KAAK,OAAO,CAAG,CACxB,EArBqB,SAuBrB,EAAG,UAAU,OAAS,WAAiB,EAAK,CAC1C,KAAK,MAAM,IAAM,EAGjB,OAAS,GAAI,EAAG,EAAI,KAAK,QAAU,KAAK,MAAM,IAAM,SAAW,IAC7D,KAAK,MAAM,IAAM,SACjB,AAAI,IAAM,KAAK,OAAS,EACtB,KAAK,MAAM,EAAI,GAAK,EAEpB,KAAK,MAAM,EAAI,KAGnB,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQ,EAAI,CAAC,EAElC,IACT,EAfsB,UAkBtB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CAGxC,GAFA,EAAO,MAAO,IAAQ,QAAQ,EAC9B,EAAO,EAAM,QAAS,EAClB,EAAM,EAAG,MAAO,MAAK,MAAM,CAAC,CAAG,EAEnC,GAAI,KAAK,WAAa,EACpB,YAAK,SAAW,EAChB,KAAK,MAAM,CAAG,EACd,KAAK,SAAW,EACT,KAKT,GAFA,KAAK,MAAM,IAAM,EAEb,KAAK,SAAW,GAAK,KAAK,MAAM,GAAK,EACvC,KAAK,MAAM,GAAK,CAAC,KAAK,MAAM,GAC5B,KAAK,SAAW,MAGhB,QAAS,GAAI,EAAG,EAAI,KAAK,QAAU,KAAK,MAAM,GAAK,EAAG,IACpD,KAAK,MAAM,IAAM,SACjB,KAAK,MAAM,EAAI,IAAM,EAIzB,MAAO,MAAK,OAAO,CACrB,EA1BqB,SA4BrB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,MAAM,EAAE,MAAM,CAAG,CAC/B,EAFoB,QAIpB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,MAAM,EAAE,MAAM,CAAG,CAC/B,EAFoB,QAIpB,EAAG,UAAU,KAAO,YAAiB,CACnC,YAAK,SAAW,EAET,IACT,EAJoB,QAMpB,EAAG,UAAU,IAAM,YAAgB,CACjC,MAAO,MAAK,MAAM,EAAE,KAAK,CAC3B,EAFmB,OAInB,EAAG,UAAU,aAAe,WAAuB,EAAK,EAAK,EAAO,CAClE,GAAI,GAAM,EAAI,OAAS,EACnB,EAEJ,KAAK,QAAQ,CAAG,EAEhB,GAAI,GACA,EAAQ,EACZ,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CAC/B,EAAK,MAAK,MAAM,EAAI,GAAS,GAAK,EAClC,GAAI,GAAS,GAAI,MAAM,GAAK,GAAK,EACjC,GAAK,EAAQ,SACb,EAAS,IAAK,IAAQ,GAAQ,SAAa,GAC3C,KAAK,MAAM,EAAI,GAAS,EAAI,QAC9B,CACA,KAAO,EAAI,KAAK,OAAS,EAAO,IAC9B,EAAK,MAAK,MAAM,EAAI,GAAS,GAAK,EAClC,EAAQ,GAAK,GACb,KAAK,MAAM,EAAI,GAAS,EAAI,SAG9B,GAAI,IAAU,EAAG,MAAO,MAAK,OAAO,EAKpC,IAFA,EAAO,IAAU,EAAE,EACnB,EAAQ,EACH,EAAI,EAAG,EAAI,KAAK,OAAQ,IAC3B,EAAI,CAAE,MAAK,MAAM,GAAK,GAAK,EAC3B,EAAQ,GAAK,GACb,KAAK,MAAM,GAAK,EAAI,SAEtB,YAAK,SAAW,EAET,KAAK,OAAO,CACrB,EAlC4B,gBAoC5B,EAAG,UAAU,SAAW,WAAmB,EAAK,EAAM,CACpD,GAAI,GAAQ,KAAK,OAAS,EAAI,OAE1B,EAAI,KAAK,MAAM,EACf,EAAI,EAGJ,EAAM,EAAE,MAAM,EAAE,OAAS,GAAK,EAC9B,EAAU,KAAK,WAAW,CAAG,EACjC,EAAQ,GAAK,EACT,IAAU,GACZ,GAAI,EAAE,MAAM,CAAK,EACjB,EAAE,OAAO,CAAK,EACd,EAAM,EAAE,MAAM,EAAE,OAAS,GAAK,GAIhC,GAAI,GAAI,EAAE,OAAS,EAAE,OACjB,EAEJ,GAAI,IAAS,MAAO,CAClB,EAAI,GAAI,GAAG,IAAI,EACf,EAAE,OAAS,EAAI,EACf,EAAE,MAAQ,GAAI,OAAM,EAAE,MAAM,EAC5B,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,IAC5B,EAAE,MAAM,GAAK,CAEjB,CAEA,GAAI,GAAO,EAAE,MAAM,EAAE,aAAa,EAAG,EAAG,CAAC,EACzC,AAAI,EAAK,WAAa,GACpB,GAAI,EACA,GACF,GAAE,MAAM,GAAK,IAIjB,OAAS,GAAI,EAAI,EAAG,GAAK,EAAG,IAAK,CAC/B,GAAI,GAAM,GAAE,MAAM,EAAE,OAAS,GAAK,GAAK,SACpC,GAAE,MAAM,EAAE,OAAS,EAAI,GAAK,GAO/B,IAHA,EAAK,KAAK,IAAK,EAAK,EAAO,EAAG,QAAS,EAEvC,EAAE,aAAa,EAAG,EAAI,CAAC,EAChB,EAAE,WAAa,GACpB,IACA,EAAE,SAAW,EACb,EAAE,aAAa,EAAG,EAAG,CAAC,EACjB,EAAE,OAAO,GACZ,GAAE,UAAY,GAGlB,AAAI,GACF,GAAE,MAAM,GAAK,EAEjB,CACA,MAAI,IACF,EAAE,OAAO,EAEX,EAAE,OAAO,EAGL,IAAS,OAAS,IAAU,GAC9B,EAAE,OAAO,CAAK,EAGT,CACL,IAAK,GAAK,KACV,IAAK,CACP,CACF,EAxEwB,YA8ExB,EAAG,UAAU,OAAS,WAAiB,EAAK,EAAM,EAAU,CAG1D,GAFA,EAAO,CAAC,EAAI,OAAO,CAAC,EAEhB,KAAK,OAAO,EACd,MAAO,CACL,IAAK,GAAI,GAAG,CAAC,EACb,IAAK,GAAI,GAAG,CAAC,CACf,EAGF,GAAI,GAAK,EAAK,EACd,MAAI,MAAK,WAAa,GAAK,EAAI,WAAa,EAC1C,GAAM,KAAK,IAAI,EAAE,OAAO,EAAK,CAAI,EAE7B,IAAS,OACX,GAAM,EAAI,IAAI,IAAI,GAGhB,IAAS,OACX,GAAM,EAAI,IAAI,IAAI,EACd,GAAY,EAAI,WAAa,GAC/B,EAAI,KAAK,CAAG,GAIT,CACL,IAAK,EACL,IAAK,CACP,GAGE,KAAK,WAAa,GAAK,EAAI,WAAa,EAC1C,GAAM,KAAK,OAAO,EAAI,IAAI,EAAG,CAAI,EAE7B,IAAS,OACX,GAAM,EAAI,IAAI,IAAI,GAGb,CACL,IAAK,EACL,IAAK,EAAI,GACX,GAGG,MAAK,SAAW,EAAI,YAAc,EACrC,GAAM,KAAK,IAAI,EAAE,OAAO,EAAI,IAAI,EAAG,CAAI,EAEnC,IAAS,OACX,GAAM,EAAI,IAAI,IAAI,EACd,GAAY,EAAI,WAAa,GAC/B,EAAI,KAAK,CAAG,GAIT,CACL,IAAK,EAAI,IACT,IAAK,CACP,GAME,EAAI,OAAS,KAAK,QAAU,KAAK,IAAI,CAAG,EAAI,EACvC,CACL,IAAK,GAAI,GAAG,CAAC,EACb,IAAK,IACP,EAIE,EAAI,SAAW,EACb,IAAS,MACJ,CACL,IAAK,KAAK,KAAK,EAAI,MAAM,EAAE,EAC3B,IAAK,IACP,EAGE,IAAS,MACJ,CACL,IAAK,KACL,IAAK,GAAI,GAAG,KAAK,MAAM,EAAI,MAAM,EAAE,CAAC,CACtC,EAGK,CACL,IAAK,KAAK,KAAK,EAAI,MAAM,EAAE,EAC3B,IAAK,GAAI,GAAG,KAAK,MAAM,EAAI,MAAM,EAAE,CAAC,CACtC,EAGK,KAAK,SAAS,EAAK,CAAI,CAChC,EA7FsB,UAgGtB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,MAAO,MAAK,OAAO,EAAK,MAAO,EAAK,EAAE,GACxC,EAFmB,OAKnB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,MAAO,MAAK,OAAO,EAAK,MAAO,EAAK,EAAE,GACxC,EAFmB,OAInB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,OAAO,EAAK,MAAO,EAAI,EAAE,GACvC,EAFoB,QAKpB,EAAG,UAAU,SAAW,WAAmB,EAAK,CAC9C,GAAI,GAAK,KAAK,OAAO,CAAG,EAGxB,GAAI,EAAG,IAAI,OAAO,EAAG,MAAO,GAAG,IAE/B,GAAI,GAAM,EAAG,IAAI,WAAa,EAAI,EAAG,IAAI,KAAK,CAAG,EAAI,EAAG,IAEpD,EAAO,EAAI,MAAM,CAAC,EAClB,EAAK,EAAI,MAAM,CAAC,EAChB,EAAM,EAAI,IAAI,CAAI,EAGtB,MAAI,GAAM,GAAM,IAAO,GAAK,IAAQ,EAAW,EAAG,IAG3C,EAAG,IAAI,WAAa,EAAI,EAAG,IAAI,MAAM,CAAC,EAAI,EAAG,IAAI,MAAM,CAAC,CACjE,EAjBwB,YAmBxB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CACxC,GAAI,GAAW,EAAM,EACrB,AAAI,GAAU,GAAM,CAAC,GAErB,EAAO,GAAO,QAAS,EAIvB,OAHI,GAAK,IAAK,IAAM,EAEhB,EAAM,EACD,EAAI,KAAK,OAAS,EAAG,GAAK,EAAG,IACpC,EAAO,GAAI,EAAO,MAAK,MAAM,GAAK,IAAM,EAG1C,MAAO,GAAW,CAAC,EAAM,CAC3B,EAbqB,SAgBrB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,MAAM,CAAG,CACvB,EAFoB,QAKpB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CACxC,GAAI,GAAW,EAAM,EACrB,AAAI,GAAU,GAAM,CAAC,GAErB,EAAO,GAAO,QAAS,EAGvB,OADI,GAAQ,EACH,EAAI,KAAK,OAAS,EAAG,GAAK,EAAG,IAAK,CACzC,GAAI,GAAK,MAAK,MAAM,GAAK,GAAK,EAAQ,SACtC,KAAK,MAAM,GAAM,EAAI,EAAO,EAC5B,EAAQ,EAAI,CACd,CAEA,YAAK,OAAO,EACL,EAAW,KAAK,KAAK,EAAI,IAClC,EAfqB,SAiBrB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,MAAM,EAAE,MAAM,CAAG,CAC/B,EAFoB,QAIpB,EAAG,UAAU,KAAO,WAAe,EAAG,CACpC,EAAO,EAAE,WAAa,CAAC,EACvB,EAAO,CAAC,EAAE,OAAO,CAAC,EAElB,GAAI,GAAI,KACJ,EAAI,EAAE,MAAM,EAEhB,AAAI,EAAE,WAAa,EACjB,EAAI,EAAE,KAAK,CAAC,EAEZ,EAAI,EAAE,MAAM,EAad,OATI,GAAI,GAAI,GAAG,CAAC,EACZ,EAAI,GAAI,GAAG,CAAC,EAGZ,EAAI,GAAI,GAAG,CAAC,EACZ,EAAI,GAAI,GAAG,CAAC,EAEZ,EAAI,EAED,EAAE,OAAO,GAAK,EAAE,OAAO,GAC5B,EAAE,OAAO,CAAC,EACV,EAAE,OAAO,CAAC,EACV,EAAE,EAMJ,OAHI,GAAK,EAAE,MAAM,EACb,EAAK,EAAE,MAAM,EAEV,CAAC,EAAE,OAAO,GAAG,CAClB,OAAS,GAAI,EAAG,EAAK,EAAI,GAAE,MAAM,GAAK,KAAQ,GAAK,EAAI,GAAI,EAAE,EAAG,IAAO,EAAE,CACzE,GAAI,EAAI,EAEN,IADA,EAAE,OAAO,CAAC,EACH,KAAM,GACX,AAAI,GAAE,MAAM,GAAK,EAAE,MAAM,IACvB,GAAE,KAAK,CAAE,EACT,EAAE,KAAK,CAAE,GAGX,EAAE,OAAO,CAAC,EACV,EAAE,OAAO,CAAC,EAId,OAAS,GAAI,EAAG,EAAK,EAAI,GAAE,MAAM,GAAK,KAAQ,GAAK,EAAI,GAAI,EAAE,EAAG,IAAO,EAAE,CACzE,GAAI,EAAI,EAEN,IADA,EAAE,OAAO,CAAC,EACH,KAAM,GACX,AAAI,GAAE,MAAM,GAAK,EAAE,MAAM,IACvB,GAAE,KAAK,CAAE,EACT,EAAE,KAAK,CAAE,GAGX,EAAE,OAAO,CAAC,EACV,EAAE,OAAO,CAAC,EAId,AAAI,EAAE,IAAI,CAAC,GAAK,EACd,GAAE,KAAK,CAAC,EACR,EAAE,KAAK,CAAC,EACR,EAAE,KAAK,CAAC,GAER,GAAE,KAAK,CAAC,EACR,EAAE,KAAK,CAAC,EACR,EAAE,KAAK,CAAC,EAEZ,CAEA,MAAO,CACL,EAAG,EACH,EAAG,EACH,IAAK,EAAE,OAAO,CAAC,CACjB,CACF,EA7EoB,QAkFpB,EAAG,UAAU,OAAS,WAAiB,EAAG,CACxC,EAAO,EAAE,WAAa,CAAC,EACvB,EAAO,CAAC,EAAE,OAAO,CAAC,EAElB,GAAI,GAAI,KACJ,EAAI,EAAE,MAAM,EAEhB,AAAI,EAAE,WAAa,EACjB,EAAI,EAAE,KAAK,CAAC,EAEZ,EAAI,EAAE,MAAM,EAQd,OALI,GAAK,GAAI,GAAG,CAAC,EACb,EAAK,GAAI,GAAG,CAAC,EAEb,EAAQ,EAAE,MAAM,EAEb,EAAE,KAAK,CAAC,EAAI,GAAK,EAAE,KAAK,CAAC,EAAI,GAAG,CACrC,OAAS,GAAI,EAAG,EAAK,EAAI,GAAE,MAAM,GAAK,KAAQ,GAAK,EAAI,GAAI,EAAE,EAAG,IAAO,EAAE,CACzE,GAAI,EAAI,EAEN,IADA,EAAE,OAAO,CAAC,EACH,KAAM,GACX,AAAI,EAAG,MAAM,GACX,EAAG,KAAK,CAAK,EAGf,EAAG,OAAO,CAAC,EAIf,OAAS,GAAI,EAAG,EAAK,EAAI,GAAE,MAAM,GAAK,KAAQ,GAAK,EAAI,GAAI,EAAE,EAAG,IAAO,EAAE,CACzE,GAAI,EAAI,EAEN,IADA,EAAE,OAAO,CAAC,EACH,KAAM,GACX,AAAI,EAAG,MAAM,GACX,EAAG,KAAK,CAAK,EAGf,EAAG,OAAO,CAAC,EAIf,AAAI,EAAE,IAAI,CAAC,GAAK,EACd,GAAE,KAAK,CAAC,EACR,EAAG,KAAK,CAAE,GAEV,GAAE,KAAK,CAAC,EACR,EAAG,KAAK,CAAE,EAEd,CAEA,GAAI,GACJ,MAAI,GAAE,KAAK,CAAC,IAAM,EAChB,EAAM,EAEN,EAAM,EAGJ,EAAI,KAAK,CAAC,EAAI,GAChB,EAAI,KAAK,CAAC,EAGL,CACT,EAhEsB,UAkEtB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,GAAI,KAAK,OAAO,EAAG,MAAO,GAAI,IAAI,EAClC,GAAI,EAAI,OAAO,EAAG,MAAO,MAAK,IAAI,EAElC,GAAI,GAAI,KAAK,MAAM,EACf,EAAI,EAAI,MAAM,EAClB,EAAE,SAAW,EACb,EAAE,SAAW,EAGb,OAAS,GAAQ,EAAG,EAAE,OAAO,GAAK,EAAE,OAAO,EAAG,IAC5C,EAAE,OAAO,CAAC,EACV,EAAE,OAAO,CAAC,EAGZ,EAAG,CACD,KAAO,EAAE,OAAO,GACd,EAAE,OAAO,CAAC,EAEZ,KAAO,EAAE,OAAO,GACd,EAAE,OAAO,CAAC,EAGZ,GAAI,GAAI,EAAE,IAAI,CAAC,EACf,GAAI,EAAI,EAAG,CAET,GAAI,GAAI,EACR,EAAI,EACJ,EAAI,CACN,SAAW,IAAM,GAAK,EAAE,KAAK,CAAC,IAAM,EAClC,MAGF,EAAE,KAAK,CAAC,CACV,OAAS,IAET,MAAO,GAAE,OAAO,CAAK,CACvB,EArCmB,OAwCnB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,KAAK,CAAG,EAAE,EAAE,KAAK,CAAG,CAClC,EAFoB,QAIpB,EAAG,UAAU,OAAS,YAAmB,CACvC,MAAQ,MAAK,MAAM,GAAK,KAAO,CACjC,EAFsB,UAItB,EAAG,UAAU,MAAQ,YAAkB,CACrC,MAAQ,MAAK,MAAM,GAAK,KAAO,CACjC,EAFqB,SAKrB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CACxC,MAAO,MAAK,MAAM,GAAK,CACzB,EAFqB,SAKrB,EAAG,UAAU,MAAQ,WAAgB,EAAK,CACxC,EAAO,MAAO,IAAQ,QAAQ,EAC9B,GAAI,GAAI,EAAM,GACV,EAAK,GAAM,GAAK,GAChB,EAAI,GAAK,EAGb,GAAI,KAAK,QAAU,EACjB,YAAK,QAAQ,EAAI,CAAC,EAClB,KAAK,MAAM,IAAM,EACV,KAKT,OADI,GAAQ,EACH,EAAI,EAAG,IAAU,GAAK,EAAI,KAAK,OAAQ,IAAK,CACnD,GAAI,GAAI,KAAK,MAAM,GAAK,EACxB,GAAK,EACL,EAAQ,IAAM,GACd,GAAK,SACL,KAAK,MAAM,GAAK,CAClB,CACA,MAAI,KAAU,GACZ,MAAK,MAAM,GAAK,EAChB,KAAK,UAEA,IACT,EA3BqB,SA6BrB,EAAG,UAAU,OAAS,YAAmB,CACvC,MAAO,MAAK,SAAW,GAAK,KAAK,MAAM,KAAO,CAChD,EAFsB,UAItB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,GAAI,GAAW,EAAM,EAErB,GAAI,KAAK,WAAa,GAAK,CAAC,EAAU,MAAO,GAC7C,GAAI,KAAK,WAAa,GAAK,EAAU,MAAO,GAE5C,KAAK,OAAO,EAEZ,GAAI,GACJ,GAAI,KAAK,OAAS,EAChB,EAAM,MACD,CACL,AAAI,GACF,GAAM,CAAC,GAGT,EAAO,GAAO,SAAW,mBAAmB,EAE5C,GAAI,GAAI,KAAK,MAAM,GAAK,EACxB,EAAM,IAAM,EAAM,EAAI,EAAI,EAAM,GAAK,CACvC,CACA,MAAI,MAAK,WAAa,EAAU,CAAC,EAAM,EAChC,CACT,EAvBoB,QA6BpB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,GAAI,KAAK,WAAa,GAAK,EAAI,WAAa,EAAG,MAAO,GACtD,GAAI,KAAK,WAAa,GAAK,EAAI,WAAa,EAAG,MAAO,GAEtD,GAAI,GAAM,KAAK,KAAK,CAAG,EACvB,MAAI,MAAK,WAAa,EAAU,CAAC,EAAM,EAChC,CACT,EAPmB,OAUnB,EAAG,UAAU,KAAO,WAAe,EAAK,CAEtC,GAAI,KAAK,OAAS,EAAI,OAAQ,MAAO,GACrC,GAAI,KAAK,OAAS,EAAI,OAAQ,MAAO,GAGrC,OADI,GAAM,EACD,EAAI,KAAK,OAAS,EAAG,GAAK,EAAG,IAAK,CACzC,GAAI,GAAI,KAAK,MAAM,GAAK,EACpB,EAAI,EAAI,MAAM,GAAK,EAEvB,GAAI,IAAM,EACV,CAAI,EAAI,EACN,EAAM,GACG,EAAI,GACb,GAAM,GAER,MACF,CACA,MAAO,EACT,EAnBoB,QAqBpB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,MAAO,MAAK,KAAK,CAAG,IAAM,CAC5B,EAFmB,OAInB,EAAG,UAAU,GAAK,WAAa,EAAK,CAClC,MAAO,MAAK,IAAI,CAAG,IAAM,CAC3B,EAFkB,MAIlB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,KAAK,CAAG,GAAK,CAC3B,EAFoB,QAIpB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,MAAO,MAAK,IAAI,CAAG,GAAK,CAC1B,EAFmB,OAInB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,MAAO,MAAK,KAAK,CAAG,IAAM,EAC5B,EAFmB,OAInB,EAAG,UAAU,GAAK,WAAa,EAAK,CAClC,MAAO,MAAK,IAAI,CAAG,IAAM,EAC3B,EAFkB,MAIlB,EAAG,UAAU,KAAO,WAAe,EAAK,CACtC,MAAO,MAAK,KAAK,CAAG,GAAK,CAC3B,EAFoB,QAIpB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,MAAO,MAAK,IAAI,CAAG,GAAK,CAC1B,EAFmB,OAInB,EAAG,UAAU,IAAM,WAAc,EAAK,CACpC,MAAO,MAAK,KAAK,CAAG,IAAM,CAC5B,EAFmB,OAInB,EAAG,UAAU,GAAK,WAAa,EAAK,CAClC,MAAO,MAAK,IAAI,CAAG,IAAM,CAC3B,EAFkB,MAQlB,EAAG,IAAM,WAAc,EAAK,CAC1B,MAAO,IAAI,GAAI,CAAG,CACpB,EAFS,OAIT,EAAG,UAAU,MAAQ,WAAgB,EAAK,CACxC,SAAO,CAAC,KAAK,IAAK,uCAAuC,EACzD,EAAO,KAAK,WAAa,EAAG,+BAA+B,EACpD,EAAI,UAAU,IAAI,EAAE,UAAU,CAAG,CAC1C,EAJqB,SAMrB,EAAG,UAAU,QAAU,YAAoB,CACzC,SAAO,KAAK,IAAK,sDAAsD,EAChE,KAAK,IAAI,YAAY,IAAI,CAClC,EAHuB,WAKvB,EAAG,UAAU,UAAY,WAAoB,EAAK,CAChD,YAAK,IAAM,EACJ,IACT,EAHyB,aAKzB,EAAG,UAAU,SAAW,WAAmB,EAAK,CAC9C,SAAO,CAAC,KAAK,IAAK,uCAAuC,EAClD,KAAK,UAAU,CAAG,CAC3B,EAHwB,YAKxB,EAAG,UAAU,OAAS,WAAiB,EAAK,CAC1C,SAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAM,CAAG,CAC/B,EAHsB,UAKtB,EAAG,UAAU,QAAU,WAAkB,EAAK,CAC5C,SAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAM,CAAG,CAChC,EAHuB,WAKvB,EAAG,UAAU,OAAS,WAAiB,EAAK,CAC1C,SAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAM,CAAG,CAC/B,EAHsB,UAKtB,EAAG,UAAU,QAAU,WAAkB,EAAK,CAC5C,SAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAM,CAAG,CAChC,EAHuB,WAKvB,EAAG,UAAU,OAAS,WAAiB,EAAK,CAC1C,SAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAM,CAAG,CAC/B,EAHsB,UAKtB,EAAG,UAAU,OAAS,WAAiB,EAAK,CAC1C,SAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAM,CAAG,EACpB,KAAK,IAAI,IAAI,KAAM,CAAG,CAC/B,EAJsB,UAMtB,EAAG,UAAU,QAAU,WAAkB,EAAK,CAC5C,SAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAM,CAAG,EACpB,KAAK,IAAI,KAAK,KAAM,CAAG,CAChC,EAJuB,WAMvB,EAAG,UAAU,OAAS,YAAmB,CACvC,SAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAJsB,UAMtB,EAAG,UAAU,QAAU,YAAoB,CACzC,SAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAJuB,WAOvB,EAAG,UAAU,QAAU,YAAoB,CACzC,SAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAJuB,WAMvB,EAAG,UAAU,QAAU,YAAoB,CACzC,SAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAJuB,WAOvB,EAAG,UAAU,OAAS,YAAmB,CACvC,SAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAJsB,UAMtB,EAAG,UAAU,OAAS,WAAiB,EAAK,CAC1C,SAAO,KAAK,KAAO,CAAC,EAAI,IAAK,mBAAmB,EAChD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,KAAM,CAAG,CAC/B,EAJsB,UAOtB,GAAI,GAAS,CACX,KAAM,KACN,KAAM,KACN,KAAM,KACN,OAAQ,IACV,EAGA,WAAiB,EAAM,EAAG,CAExB,KAAK,KAAO,EACZ,KAAK,EAAI,GAAI,GAAG,EAAG,EAAE,EACrB,KAAK,EAAI,KAAK,EAAE,UAAU,EAC1B,KAAK,EAAI,GAAI,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAE7C,KAAK,IAAM,KAAK,KAAK,CACvB,CARS,cAUT,EAAO,UAAU,KAAO,YAAiB,CACvC,GAAI,GAAM,GAAI,GAAG,IAAI,EACrB,SAAI,MAAQ,GAAI,OAAM,KAAK,KAAK,KAAK,EAAI,EAAE,CAAC,EACrC,CACT,EAJwB,QAMxB,EAAO,UAAU,QAAU,WAAkB,EAAK,CAGhD,GAAI,GAAI,EACJ,EAEJ,EACE,MAAK,MAAM,EAAG,KAAK,GAAG,EACtB,EAAI,KAAK,MAAM,CAAC,EAChB,EAAI,EAAE,KAAK,KAAK,GAAG,EACnB,EAAO,EAAE,UAAU,QACZ,EAAO,KAAK,GAErB,GAAI,GAAM,EAAO,KAAK,EAAI,GAAK,EAAE,KAAK,KAAK,CAAC,EAC5C,MAAI,KAAQ,EACV,GAAE,MAAM,GAAK,EACb,EAAE,OAAS,GACN,AAAI,EAAM,EACf,EAAE,KAAK,KAAK,CAAC,EAEb,AAAI,EAAE,QAAU,OAEd,EAAE,MAAM,EAGR,EAAE,OAAO,EAIN,CACT,EA9B2B,WAgC3B,EAAO,UAAU,MAAQ,WAAgB,EAAO,EAAK,CACnD,EAAM,OAAO,KAAK,EAAG,EAAG,CAAG,CAC7B,EAFyB,SAIzB,EAAO,UAAU,MAAQ,WAAgB,EAAK,CAC5C,MAAO,GAAI,KAAK,KAAK,CAAC,CACxB,EAFyB,SAIzB,aAAiB,CACf,EAAO,KACL,KACA,OACA,yEAAyE,CAC7E,CALS,aAMT,EAAS,GAAM,CAAM,EAErB,GAAK,UAAU,MAAQ,WAAgB,EAAO,EAAQ,CAKpD,OAHI,GAAO,QAEP,EAAS,KAAK,IAAI,EAAM,OAAQ,CAAC,EAC5B,EAAI,EAAG,EAAI,EAAQ,IAC1B,EAAO,MAAM,GAAK,EAAM,MAAM,GAIhC,GAFA,EAAO,OAAS,EAEZ,EAAM,QAAU,EAAG,CACrB,EAAM,MAAM,GAAK,EACjB,EAAM,OAAS,EACf,MACF,CAGA,GAAI,GAAO,EAAM,MAAM,GAGvB,IAFA,EAAO,MAAM,EAAO,UAAY,EAAO,EAElC,EAAI,GAAI,EAAI,EAAM,OAAQ,IAAK,CAClC,GAAI,GAAO,EAAM,MAAM,GAAK,EAC5B,EAAM,MAAM,EAAI,IAAQ,GAAO,IAAS,EAAM,IAAS,GACvD,EAAO,CACT,CACA,KAAU,GACV,EAAM,MAAM,EAAI,IAAM,EACtB,AAAI,IAAS,GAAK,EAAM,OAAS,GAC/B,EAAM,QAAU,GAEhB,EAAM,QAAU,CAEpB,EAhCuB,SAkCvB,GAAK,UAAU,MAAQ,WAAgB,EAAK,CAE1C,EAAI,MAAM,EAAI,QAAU,EACxB,EAAI,MAAM,EAAI,OAAS,GAAK,EAC5B,EAAI,QAAU,EAId,OADI,GAAK,EACA,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,GAAI,GAAI,EAAI,MAAM,GAAK,EACvB,GAAM,EAAI,IACV,EAAI,MAAM,GAAK,EAAK,SACpB,EAAK,EAAI,GAAS,GAAK,SAAa,EACtC,CAGA,MAAI,GAAI,MAAM,EAAI,OAAS,KAAO,GAChC,GAAI,SACA,EAAI,MAAM,EAAI,OAAS,KAAO,GAChC,EAAI,UAGD,CACT,EAvBuB,SAyBvB,aAAiB,CACf,EAAO,KACL,KACA,OACA,gEAAgE,CACpE,CALS,aAMT,EAAS,GAAM,CAAM,EAErB,aAAiB,CACf,EAAO,KACL,KACA,OACA,uDAAuD,CAC3D,CALS,aAMT,EAAS,GAAM,CAAM,EAErB,aAAmB,CAEjB,EAAO,KACL,KACA,QACA,qEAAqE,CACzE,CANS,eAOT,EAAS,GAAQ,CAAM,EAEvB,GAAO,UAAU,MAAQ,WAAgB,EAAK,CAG5C,OADI,GAAQ,EACH,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,GAAI,GAAM,GAAI,MAAM,GAAK,GAAK,GAAO,EACjC,EAAK,EAAK,SACd,KAAQ,GAER,EAAI,MAAM,GAAK,EACf,EAAQ,CACV,CACA,MAAI,KAAU,GACZ,GAAI,MAAM,EAAI,UAAY,GAErB,CACT,EAfyB,SAkBzB,EAAG,OAAS,WAAgB,EAAM,CAEhC,GAAI,EAAO,GAAO,MAAO,GAAO,GAEhC,GAAI,GACJ,GAAI,IAAS,OACX,EAAQ,GAAI,YACH,IAAS,OAClB,EAAQ,GAAI,YACH,IAAS,OAClB,EAAQ,GAAI,YACH,IAAS,SAClB,EAAQ,GAAI,QAEZ,MAAM,IAAI,OAAM,iBAAmB,CAAI,EAEzC,SAAO,GAAQ,EAER,CACT,EAnBY,SAwBZ,WAAc,EAAG,CACf,GAAI,MAAO,IAAM,SAAU,CACzB,GAAI,GAAQ,EAAG,OAAO,CAAC,EACvB,KAAK,EAAI,EAAM,EACf,KAAK,MAAQ,CACf,KACE,GAAO,EAAE,IAAI,CAAC,EAAG,gCAAgC,EACjD,KAAK,EAAI,EACT,KAAK,MAAQ,IAEjB,CAVS,WAYT,EAAI,UAAU,SAAW,WAAmB,EAAG,CAC7C,EAAO,EAAE,WAAa,EAAG,+BAA+B,EACxD,EAAO,EAAE,IAAK,iCAAiC,CACjD,EAHyB,YAKzB,EAAI,UAAU,SAAW,WAAmB,EAAG,EAAG,CAChD,EAAQ,GAAE,SAAW,EAAE,YAAc,EAAG,+BAA+B,EACvE,EAAO,EAAE,KAAO,EAAE,MAAQ,EAAE,IAC1B,iCAAiC,CACrC,EAJyB,YAMzB,EAAI,UAAU,KAAO,WAAe,EAAG,CACrC,MAAI,MAAK,MAAc,KAAK,MAAM,QAAQ,CAAC,EAAE,UAAU,IAAI,EAE3D,GAAK,EAAG,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CAAC,EAC/B,EACT,EALqB,QAOrB,EAAI,UAAU,IAAM,WAAc,EAAG,CACnC,MAAI,GAAE,OAAO,EACJ,EAAE,MAAM,EAGV,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,IAAI,CACrC,EANoB,OAQpB,EAAI,UAAU,IAAM,WAAc,EAAG,EAAG,CACtC,KAAK,SAAS,EAAG,CAAC,EAElB,GAAI,GAAM,EAAE,IAAI,CAAC,EACjB,MAAI,GAAI,IAAI,KAAK,CAAC,GAAK,GACrB,EAAI,KAAK,KAAK,CAAC,EAEV,EAAI,UAAU,IAAI,CAC3B,EARoB,OAUpB,EAAI,UAAU,KAAO,WAAe,EAAG,EAAG,CACxC,KAAK,SAAS,EAAG,CAAC,EAElB,GAAI,GAAM,EAAE,KAAK,CAAC,EAClB,MAAI,GAAI,IAAI,KAAK,CAAC,GAAK,GACrB,EAAI,KAAK,KAAK,CAAC,EAEV,CACT,EARqB,QAUrB,EAAI,UAAU,IAAM,WAAc,EAAG,EAAG,CACtC,KAAK,SAAS,EAAG,CAAC,EAElB,GAAI,GAAM,EAAE,IAAI,CAAC,EACjB,MAAI,GAAI,KAAK,CAAC,EAAI,GAChB,EAAI,KAAK,KAAK,CAAC,EAEV,EAAI,UAAU,IAAI,CAC3B,EARoB,OAUpB,EAAI,UAAU,KAAO,WAAe,EAAG,EAAG,CACxC,KAAK,SAAS,EAAG,CAAC,EAElB,GAAI,GAAM,EAAE,KAAK,CAAC,EAClB,MAAI,GAAI,KAAK,CAAC,EAAI,GAChB,EAAI,KAAK,KAAK,CAAC,EAEV,CACT,EARqB,QAUrB,EAAI,UAAU,IAAM,WAAc,EAAG,EAAK,CACxC,YAAK,SAAS,CAAC,EACR,KAAK,KAAK,EAAE,MAAM,CAAG,CAAC,CAC/B,EAHoB,OAKpB,EAAI,UAAU,KAAO,WAAe,EAAG,EAAG,CACxC,YAAK,SAAS,EAAG,CAAC,EACX,KAAK,KAAK,EAAE,KAAK,CAAC,CAAC,CAC5B,EAHqB,QAKrB,EAAI,UAAU,IAAM,WAAc,EAAG,EAAG,CACtC,YAAK,SAAS,EAAG,CAAC,EACX,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,CAC3B,EAHoB,OAKpB,EAAI,UAAU,KAAO,WAAe,EAAG,CACrC,MAAO,MAAK,KAAK,EAAG,EAAE,MAAM,CAAC,CAC/B,EAFqB,QAIrB,EAAI,UAAU,IAAM,WAAc,EAAG,CACnC,MAAO,MAAK,IAAI,EAAG,CAAC,CACtB,EAFoB,OAIpB,EAAI,UAAU,KAAO,WAAe,EAAG,CACrC,GAAI,EAAE,OAAO,EAAG,MAAO,GAAE,MAAM,EAE/B,GAAI,GAAO,KAAK,EAAE,MAAM,CAAC,EAIzB,GAHA,EAAO,EAAO,IAAM,CAAC,EAGjB,IAAS,EAAG,CACd,GAAI,GAAM,KAAK,EAAE,IAAI,GAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxC,MAAO,MAAK,IAAI,EAAG,CAAG,CACxB,CAOA,OAFI,GAAI,KAAK,EAAE,KAAK,CAAC,EACjB,EAAI,EACD,CAAC,EAAE,OAAO,GAAK,EAAE,MAAM,CAAC,IAAM,GACnC,IACA,EAAE,OAAO,CAAC,EAEZ,EAAO,CAAC,EAAE,OAAO,CAAC,EAElB,GAAI,GAAM,GAAI,GAAG,CAAC,EAAE,MAAM,IAAI,EAC1B,EAAO,EAAI,OAAO,EAIlB,EAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9B,EAAI,KAAK,EAAE,UAAU,EAGzB,IAFA,EAAI,GAAI,GAAG,EAAI,EAAI,CAAC,EAAE,MAAM,IAAI,EAEzB,KAAK,IAAI,EAAG,CAAI,EAAE,IAAI,CAAI,IAAM,GACrC,EAAE,QAAQ,CAAI,EAOhB,OAJI,GAAI,KAAK,IAAI,EAAG,CAAC,EACjB,EAAI,KAAK,IAAI,EAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EACnC,EAAI,KAAK,IAAI,EAAG,CAAC,EACjB,EAAI,EACD,EAAE,IAAI,CAAG,IAAM,GAAG,CAEvB,OADI,GAAM,EACD,EAAI,EAAG,EAAI,IAAI,CAAG,IAAM,EAAG,IAClC,EAAM,EAAI,OAAO,EAEnB,EAAO,EAAI,CAAC,EACZ,GAAI,GAAI,KAAK,IAAI,EAAG,GAAI,GAAG,CAAC,EAAE,OAAO,EAAI,EAAI,CAAC,CAAC,EAE/C,EAAI,EAAE,OAAO,CAAC,EACd,EAAI,EAAE,OAAO,EACb,EAAI,EAAE,OAAO,CAAC,EACd,EAAI,CACN,CAEA,MAAO,EACT,EAvDqB,QAyDrB,EAAI,UAAU,KAAO,WAAe,EAAG,CACrC,GAAI,GAAM,EAAE,OAAO,KAAK,CAAC,EACzB,MAAI,GAAI,WAAa,EACnB,GAAI,SAAW,EACR,KAAK,KAAK,CAAG,EAAE,OAAO,GAEtB,KAAK,KAAK,CAAG,CAExB,EARqB,QAUrB,EAAI,UAAU,IAAM,WAAc,EAAG,EAAK,CACxC,GAAI,EAAI,OAAO,EAAG,MAAO,IAAI,GAAG,CAAC,EAAE,MAAM,IAAI,EAC7C,GAAI,EAAI,KAAK,CAAC,IAAM,EAAG,MAAO,GAAE,MAAM,EAEtC,GAAI,GAAa,EACb,EAAM,GAAI,OAAM,GAAK,CAAU,EACnC,EAAI,GAAK,GAAI,GAAG,CAAC,EAAE,MAAM,IAAI,EAC7B,EAAI,GAAK,EACT,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,EAAI,GAAK,KAAK,IAAI,EAAI,EAAI,GAAI,CAAC,EAGjC,GAAI,GAAM,EAAI,GACV,EAAU,EACV,EAAa,EACb,EAAQ,EAAI,UAAU,EAAI,GAK9B,IAJI,IAAU,GACZ,GAAQ,IAGL,EAAI,EAAI,OAAS,EAAG,GAAK,EAAG,IAAK,CAEpC,OADI,GAAO,EAAI,MAAM,GACZ,EAAI,EAAQ,EAAG,GAAK,EAAG,IAAK,CACnC,GAAI,GAAO,GAAQ,EAAK,EAKxB,GAJI,IAAQ,EAAI,IACd,GAAM,KAAK,IAAI,CAAG,GAGhB,IAAQ,GAAK,IAAY,EAAG,CAC9B,EAAa,EACb,QACF,CAKA,AAHA,IAAY,EACZ,GAAW,EACX,IACI,MAAe,GAAe,KAAM,GAAK,IAAM,KAEnD,GAAM,KAAK,IAAI,EAAK,EAAI,EAAQ,EAChC,EAAa,EACb,EAAU,EACZ,CACA,EAAQ,EACV,CAEA,MAAO,EACT,EA9CoB,OAgDpB,EAAI,UAAU,UAAY,WAAoB,EAAK,CACjD,GAAI,GAAI,EAAI,KAAK,KAAK,CAAC,EAEvB,MAAO,KAAM,EAAM,EAAE,MAAM,EAAI,CACjC,EAJ0B,aAM1B,EAAI,UAAU,YAAc,WAAsB,EAAK,CACrD,GAAI,GAAM,EAAI,MAAM,EACpB,SAAI,IAAM,KACH,CACT,EAJ4B,eAU5B,EAAG,KAAO,WAAe,EAAK,CAC5B,MAAO,IAAI,IAAK,CAAG,CACrB,EAFU,QAIV,YAAe,EAAG,CAChB,EAAI,KAAK,KAAM,CAAC,EAEhB,KAAK,MAAQ,KAAK,EAAE,UAAU,EAC1B,KAAK,MAAQ,KAAO,GACtB,MAAK,OAAS,GAAM,KAAK,MAAQ,IAGnC,KAAK,EAAI,GAAI,GAAG,CAAC,EAAE,OAAO,KAAK,KAAK,EACpC,KAAK,GAAK,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,EAChC,KAAK,KAAO,KAAK,EAAE,OAAO,KAAK,CAAC,EAEhC,KAAK,KAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EACrD,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,CAAC,EACjC,KAAK,KAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CAClC,CAfS,aAgBT,EAAS,GAAM,CAAG,EAElB,GAAK,UAAU,UAAY,WAAoB,EAAK,CAClD,MAAO,MAAK,KAAK,EAAI,MAAM,KAAK,KAAK,CAAC,CACxC,EAF2B,aAI3B,GAAK,UAAU,YAAc,WAAsB,EAAK,CACtD,GAAI,GAAI,KAAK,KAAK,EAAI,IAAI,KAAK,IAAI,CAAC,EACpC,SAAE,IAAM,KACD,CACT,EAJ6B,eAM7B,GAAK,UAAU,KAAO,WAAe,EAAG,EAAG,CACzC,GAAI,EAAE,OAAO,GAAK,EAAE,OAAO,EACzB,SAAE,MAAM,GAAK,EACb,EAAE,OAAS,EACJ,EAGT,GAAI,GAAI,EAAE,KAAK,CAAC,EACZ,EAAI,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpE,EAAI,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/B,EAAM,EAEV,MAAI,GAAE,IAAI,KAAK,CAAC,GAAK,EACnB,EAAM,EAAE,KAAK,KAAK,CAAC,EACV,EAAE,KAAK,CAAC,EAAI,GACrB,GAAM,EAAE,KAAK,KAAK,CAAC,GAGd,EAAI,UAAU,IAAI,CAC3B,EAnBsB,QAqBtB,GAAK,UAAU,IAAM,WAAc,EAAG,EAAG,CACvC,GAAI,EAAE,OAAO,GAAK,EAAE,OAAO,EAAG,MAAO,IAAI,GAAG,CAAC,EAAE,UAAU,IAAI,EAE7D,GAAI,GAAI,EAAE,IAAI,CAAC,EACX,EAAI,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpE,EAAI,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/B,EAAM,EACV,MAAI,GAAE,IAAI,KAAK,CAAC,GAAK,EACnB,EAAM,EAAE,KAAK,KAAK,CAAC,EACV,EAAE,KAAK,CAAC,EAAI,GACrB,GAAM,EAAE,KAAK,KAAK,CAAC,GAGd,EAAI,UAAU,IAAI,CAC3B,EAdqB,OAgBrB,GAAK,UAAU,KAAO,WAAe,EAAG,CAEtC,GAAI,GAAM,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EACjD,MAAO,GAAI,UAAU,IAAI,CAC3B,EAJsB,OAKxB,GAAG,MAAO,IAAW,KAAe,GAAQ,EAAI,IC19GhD,oBASA,AAAC,WAAY,CACX,aAEA,GAAI,GAAc,wBACd,EAAiB,0BACjB,EAAS,MAAO,SAAW,SAC3B,EAAO,EAAS,OAAS,CAAC,EAC9B,AAAI,EAAK,mBACP,GAAS,IAEX,GAAI,GAAa,CAAC,GAAU,MAAO,OAAS,SACxC,EAAU,CAAC,EAAK,oBAAsB,MAAO,UAAY,UAAY,QAAQ,UAAY,QAAQ,SAAS,KAC9G,AAAI,EACF,EAAO,OACE,GACT,GAAO,MAET,GAAI,GAAY,CAAC,EAAK,sBAAwB,MAAO,KAAW,UAAY,GAAO,QAC/E,EAAM,MAAO,SAAW,YAAc,OAAO,IAC7C,EAAe,CAAC,EAAK,yBAA2B,MAAO,aAAgB,IACvE,EAAY,mBAAmB,MAAM,EAAE,EACvC,EAAgB,CAAC,GAAI,KAAM,QAAS,SAAS,EAC7C,EAAiB,CAAC,EAAG,KAAM,OAAQ,QAAQ,EAC3C,EAAiB,CAAC,EAAG,IAAK,MAAO,QAAQ,EACzC,EAAU,CAAC,EAAG,KAAM,OAAQ,SAAS,EACrC,EAAQ,CAAC,EAAG,EAAG,GAAI,EAAE,EACrB,EAAK,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAC7E,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAC1E,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAClE,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WACtE,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,UAAU,EAC9E,EAAO,CAAC,IAAK,IAAK,IAAK,GAAG,EAC1B,EAAa,CAAC,IAAK,GAAG,EACtB,EAAe,CAAC,MAAO,SAAU,cAAe,QAAS,QAAQ,EACjE,EAAiB,CACnB,MAAO,IACP,MAAO,GACT,EAEA,AAAI,GAAK,oBAAsB,CAAC,MAAM,UACpC,OAAM,QAAU,SAAU,EAAK,CAC7B,MAAO,QAAO,UAAU,SAAS,KAAK,CAAG,IAAM,gBACjD,GAGE,GAAiB,GAAK,iCAAmC,CAAC,YAAY,SACxE,aAAY,OAAS,SAAU,EAAK,CAClC,MAAO,OAAO,IAAQ,UAAY,EAAI,QAAU,EAAI,OAAO,cAAgB,WAC7E,GA+FF,OA5FI,GAAqB,WAAU,EAAM,EAAS,EAAY,CAC5D,MAAO,UAAU,EAAS,CACxB,MAAO,IAAI,GAAO,EAAM,EAAS,CAAI,EAAE,OAAO,CAAO,EAAE,GAAY,CACrE,CACF,EAJyB,sBAMrB,EAA0B,WAAU,EAAM,EAAS,EAAY,CACjE,MAAO,UAAU,EAAS,EAAY,CACpC,MAAO,IAAI,GAAO,EAAM,EAAS,CAAU,EAAE,OAAO,CAAO,EAAE,GAAY,CAC3E,CACF,EAJ8B,2BAM1B,EAA2B,WAAU,EAAM,EAAS,EAAY,CAClE,MAAO,UAAU,EAAS,EAAY,EAAG,EAAG,CAC1C,MAAO,GAAQ,SAAW,GAAM,OAAO,EAAS,EAAY,EAAG,CAAC,EAAE,GAAY,CAChF,CACF,EAJ+B,4BAM3B,GAAyB,WAAU,EAAM,EAAS,EAAY,CAChE,MAAO,UAAU,EAAK,EAAS,EAAY,EAAG,CAC5C,MAAO,GAAQ,OAAS,GAAM,OAAO,EAAK,EAAS,EAAY,CAAC,EAAE,GAAY,CAChF,CACF,EAJ6B,0BAMzB,GAAsB,WAAU,EAAQ,EAAc,EAAM,EAAS,CACvE,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,EAAE,EAAG,CAC5C,GAAI,GAAO,EAAa,GACxB,EAAO,GAAQ,EAAa,EAAM,EAAS,CAAI,CACjD,CACA,MAAO,EACT,EAN0B,uBAQtB,GAAe,WAAU,EAAM,EAAS,CAC1C,GAAI,GAAS,EAAmB,EAAM,EAAS,KAAK,EACpD,SAAO,OAAS,UAAY,CAC1B,MAAO,IAAI,GAAO,EAAM,EAAS,CAAI,CACvC,EACA,EAAO,OAAS,SAAU,EAAS,CACjC,MAAO,GAAO,OAAO,EAAE,OAAO,CAAO,CACvC,EACO,GAAoB,EAAQ,EAAoB,EAAM,CAAO,CACtE,EATmB,gBAWf,GAAoB,WAAU,EAAM,EAAS,CAC/C,GAAI,GAAS,EAAwB,EAAM,EAAS,KAAK,EACzD,SAAO,OAAS,SAAU,EAAY,CACpC,MAAO,IAAI,GAAO,EAAM,EAAS,CAAU,CAC7C,EACA,EAAO,OAAS,SAAU,EAAS,EAAY,CAC7C,MAAO,GAAO,OAAO,CAAU,EAAE,OAAO,CAAO,CACjD,EACO,GAAoB,EAAQ,EAAyB,EAAM,CAAO,CAC3E,EATwB,qBAWpB,EAAqB,WAAU,EAAM,EAAS,CAChD,GAAI,GAAI,EAAe,GACnB,EAAS,EAAyB,EAAM,EAAS,KAAK,EAC1D,SAAO,OAAS,SAAU,EAAY,EAAG,EAAG,CAC1C,MAAI,CAAC,GAAK,CAAC,EACF,EAAQ,QAAU,GAAM,OAAO,CAAU,EAEzC,GAAI,GAAO,EAAM,EAAS,CAAU,EAAE,QAAQ,CAAC,EAAG,CAAC,EAAG,CAAC,CAElE,EACA,EAAO,OAAS,SAAU,EAAS,EAAY,EAAG,EAAG,CACnD,MAAO,GAAO,OAAO,EAAY,EAAG,CAAC,EAAE,OAAO,CAAO,CACvD,EACO,GAAoB,EAAQ,EAA0B,EAAM,CAAO,CAC5E,EAdyB,sBAgBrB,GAAmB,WAAU,EAAM,EAAS,CAC9C,GAAI,GAAI,EAAe,GACnB,EAAS,GAAuB,EAAM,EAAS,KAAK,EACxD,SAAO,OAAS,SAAU,EAAK,EAAY,EAAG,CAC5C,MAAO,IAAI,GAAK,EAAM,EAAS,CAAU,EAAE,QAAQ,CAAC,OAAQ,CAAC,EAAG,CAAC,EAAE,QAAQ,CAAC,CAAG,EAAG,CAAC,CACrF,EACA,EAAO,OAAS,SAAU,EAAK,EAAS,EAAY,EAAG,CACrD,MAAO,GAAO,OAAO,EAAK,EAAY,CAAC,EAAE,OAAO,CAAO,CACzD,EACO,GAAoB,EAAQ,GAAwB,EAAM,CAAO,CAC1E,EAVuB,oBAYnB,EAAa,CACf,CAAE,KAAM,SAAU,QAAS,EAAgB,KAAM,EAAM,aAAc,EAAa,EAClF,CAAE,KAAM,OAAQ,QAAS,EAAS,KAAM,EAAM,aAAc,EAAa,EACzE,CAAE,KAAM,QAAS,QAAS,EAAe,KAAM,EAAY,aAAc,EAAkB,EAC3F,CAAE,KAAM,SAAU,QAAS,EAAgB,KAAM,EAAY,aAAc,CAAmB,EAC9F,CAAE,KAAM,OAAQ,QAAS,EAAgB,KAAM,EAAY,aAAc,EAAiB,CAC5F,EAEI,EAAU,CAAC,EAAG,EAAc,CAAC,EAExB,EAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EAGvC,OAFI,GAAY,EAAW,GACvB,EAAO,EAAU,KACZ,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAI,GAAa,EAAU,KAAO,IAAM,EAAK,GAG7C,GAFA,EAAY,KAAK,CAAU,EAC3B,EAAQ,GAAc,EAAU,aAAa,EAAK,GAAI,EAAU,OAAO,EACnE,EAAU,OAAS,OAAQ,CAC7B,GAAI,GAAgB,EAAU,KAAO,EAAK,GAC1C,EAAY,KAAK,CAAa,EAC9B,EAAQ,GAAiB,EAAQ,EACnC,CACF,CAGF,WAAgB,EAAM,EAAS,EAAY,CACzC,KAAK,OAAS,CAAC,EACf,KAAK,EAAI,CAAC,EACV,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,MAAQ,GACb,KAAK,UAAY,GACjB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,WAAc,KAAQ,IAAQ,IAAO,EAC1C,KAAK,UAAY,KAAK,YAAc,EACpC,KAAK,aAAe,GAAc,EAClC,KAAK,WAAc,GAAa,KAAO,EAEvC,OAAS,GAAI,EAAG,EAAI,GAAI,EAAE,EACxB,KAAK,EAAE,GAAK,CAEhB,CAjBS,cAmBT,EAAO,UAAU,OAAS,SAAU,EAAS,CAC3C,GAAI,KAAK,UACP,KAAM,IAAI,OAAM,CAAc,EAEhC,GAAI,GAAW,EAAO,MAAO,GAC7B,GAAI,IAAS,SAAU,CACrB,GAAI,IAAS,SAAU,CACrB,GAAI,IAAY,KACd,KAAM,IAAI,OAAM,CAAW,EACtB,GAAI,GAAgB,EAAQ,cAAgB,YACjD,EAAU,GAAI,YAAW,CAAO,UACvB,CAAC,MAAM,QAAQ,CAAO,GAC3B,EAAC,GAAgB,CAAC,YAAY,OAAO,CAAO,GAC9C,KAAM,IAAI,OAAM,CAAW,CAGjC,KACE,MAAM,IAAI,OAAM,CAAW,EAE7B,EAAY,EACd,CAIA,OAHI,GAAS,KAAK,OAAQ,EAAY,KAAK,UAAW,EAAS,EAAQ,OACrE,EAAa,KAAK,WAAY,EAAQ,EAAG,GAAI,KAAK,EAAG,EAAG,GAEnD,EAAQ,GAAQ,CACrB,GAAI,KAAK,MAGP,IAFA,KAAK,MAAQ,GACb,EAAO,GAAK,KAAK,MACZ,EAAI,EAAG,EAAI,EAAa,EAAG,EAAE,EAChC,EAAO,GAAK,EAGhB,GAAI,EACF,IAAK,EAAI,KAAK,MAAO,EAAQ,GAAU,EAAI,EAAW,EAAE,EACtD,EAAO,GAAK,IAAM,EAAQ,IAAU,EAAM,IAAM,OAGlD,KAAK,EAAI,KAAK,MAAO,EAAQ,GAAU,EAAI,EAAW,EAAE,EACtD,GAAO,EAAQ,WAAW,CAAK,EAC/B,AAAI,GAAO,IACT,EAAO,GAAK,IAAM,IAAQ,EAAM,IAAM,GACjC,AAAI,GAAO,KAChB,GAAO,GAAK,IAAO,KAAQ,IAAQ,IAAO,EAAM,IAAM,GACtD,EAAO,GAAK,IAAO,KAAQ,GAAO,KAAU,EAAM,IAAM,IACnD,AAAI,GAAO,OAAU,IAAQ,MAClC,GAAO,GAAK,IAAO,KAAQ,IAAQ,KAAQ,EAAM,IAAM,GACvD,EAAO,GAAK,IAAO,KAAS,IAAQ,EAAK,KAAU,EAAM,IAAM,GAC/D,EAAO,GAAK,IAAO,KAAQ,GAAO,KAAU,EAAM,IAAM,IAExD,IAAO,MAAa,KAAO,OAAU,GAAO,EAAQ,WAAW,EAAE,CAAK,EAAI,MAC1E,EAAO,GAAK,IAAO,KAAQ,IAAQ,KAAQ,EAAM,IAAM,GACvD,EAAO,GAAK,IAAO,KAAS,IAAQ,GAAM,KAAU,EAAM,IAAM,GAChE,EAAO,GAAK,IAAO,KAAS,IAAQ,EAAK,KAAU,EAAM,IAAM,GAC/D,EAAO,GAAK,IAAO,KAAQ,GAAO,KAAU,EAAM,IAAM,IAK9D,GADA,KAAK,cAAgB,EACjB,GAAK,EAAW,CAGlB,IAFA,KAAK,MAAQ,EAAI,EACjB,KAAK,MAAQ,EAAO,GACf,EAAI,EAAG,EAAI,EAAY,EAAE,EAC5B,GAAE,IAAM,EAAO,GAEjB,EAAE,EAAC,EACH,KAAK,MAAQ,EACf,KACE,MAAK,MAAQ,CAEjB,CACA,MAAO,KACT,EAEA,EAAO,UAAU,OAAS,SAAU,EAAG,EAAO,CAC5C,GAAI,GAAI,EAAI,IAAK,EAAI,EACjB,EAAQ,CAAC,CAAC,EAGd,IAFA,EAAI,GAAK,EACT,EAAI,EAAI,IACD,EAAI,GACT,EAAM,QAAQ,CAAC,EACf,EAAI,GAAK,EACT,EAAI,EAAI,IACR,EAAE,EAEJ,MAAI,GACF,EAAM,KAAK,CAAC,EAEZ,EAAM,QAAQ,CAAC,EAEjB,KAAK,OAAO,CAAK,EACV,EAAM,MACf,EAEA,EAAO,UAAU,aAAe,SAAU,EAAK,CAC7C,GAAI,GAAW,EAAO,MAAO,GAC7B,GAAI,IAAS,SAAU,CACrB,GAAI,IAAS,SAAU,CACrB,GAAI,IAAQ,KACV,KAAM,IAAI,OAAM,CAAW,EACtB,GAAI,GAAgB,EAAI,cAAgB,YAC7C,EAAM,GAAI,YAAW,CAAG,UACf,CAAC,MAAM,QAAQ,CAAG,GACvB,EAAC,GAAgB,CAAC,YAAY,OAAO,CAAG,GAC1C,KAAM,IAAI,OAAM,CAAW,CAGjC,KACE,MAAM,IAAI,OAAM,CAAW,EAE7B,EAAY,EACd,CACA,GAAI,GAAQ,EAAG,EAAS,EAAI,OAC5B,GAAI,EACF,EAAQ,MAER,QAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAE,EAAG,CACnC,GAAI,GAAO,EAAI,WAAW,CAAC,EAC3B,AAAI,EAAO,IACT,GAAS,EACJ,AAAI,EAAO,KAChB,GAAS,EACJ,AAAI,EAAO,OAAU,GAAQ,MAClC,GAAS,EAET,GAAO,MAAa,IAAO,OAAU,GAAO,EAAI,WAAW,EAAE,CAAC,EAAI,MAClE,GAAS,EAEb,CAEF,UAAS,KAAK,OAAO,EAAQ,CAAC,EAC9B,KAAK,OAAO,CAAG,EACR,CACT,EAEA,EAAO,UAAU,QAAU,SAAU,EAAM,EAAG,CAE5C,OADI,GAAQ,KAAK,OAAO,CAAC,EAChB,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EACjC,GAAS,KAAK,aAAa,EAAK,EAAE,EAEpC,GAAI,GAAe,EAAI,EAAQ,EAC3B,EAAQ,CAAC,EACb,SAAM,OAAS,EACf,KAAK,OAAO,CAAK,EACV,IACT,EAEA,EAAO,UAAU,SAAW,UAAY,CACtC,GAAI,MAAK,UAGT,MAAK,UAAY,GACjB,GAAI,GAAS,KAAK,OAAQ,EAAI,KAAK,cAAe,EAAa,KAAK,WAAY,EAAI,KAAK,EAEzF,GADA,EAAO,GAAK,IAAM,KAAK,QAAQ,EAAI,GAC/B,KAAK,gBAAkB,KAAK,UAE9B,IADA,EAAO,GAAK,EAAO,GACd,EAAI,EAAG,EAAI,EAAa,EAAG,EAAE,EAChC,EAAO,GAAK,EAIhB,IADA,EAAO,EAAa,IAAM,WACrB,EAAI,EAAG,EAAI,EAAY,EAAE,EAC5B,EAAE,IAAM,EAAO,GAEjB,EAAE,CAAC,EACL,EAEA,EAAO,UAAU,SAAW,EAAO,UAAU,IAAM,UAAY,CAC7D,KAAK,SAAS,EAKd,OAHI,GAAa,KAAK,WAAY,EAAI,KAAK,EAAG,EAAe,KAAK,aAChE,EAAa,KAAK,WAAY,EAAI,EAAG,EAAI,EACvC,EAAM,GAAI,EACP,EAAI,GAAc,CACvB,IAAK,EAAI,EAAG,EAAI,GAAc,EAAI,EAAc,EAAE,EAAG,EAAE,EACrD,EAAQ,EAAE,GACV,GAAO,EAAW,GAAS,EAAK,IAAQ,EAAU,EAAQ,IACxD,EAAW,GAAS,GAAM,IAAQ,EAAW,GAAS,EAAK,IAC3D,EAAW,GAAS,GAAM,IAAQ,EAAW,GAAS,GAAM,IAC5D,EAAW,GAAS,GAAM,IAAQ,EAAW,GAAS,GAAM,IAEhE,AAAI,EAAI,IAAe,GACrB,GAAE,CAAC,EACH,EAAI,EAER,CACA,MAAI,IACF,GAAQ,EAAE,GACV,GAAO,EAAW,GAAS,EAAK,IAAQ,EAAU,EAAQ,IACtD,EAAa,GACf,IAAO,EAAW,GAAS,GAAM,IAAQ,EAAW,GAAS,EAAK,KAEhE,EAAa,GACf,IAAO,EAAW,GAAS,GAAM,IAAQ,EAAW,GAAS,GAAM,MAGhE,CACT,EAEA,EAAO,UAAU,YAAc,UAAY,CACzC,KAAK,SAAS,EAEd,GAAI,GAAa,KAAK,WAAY,EAAI,KAAK,EAAG,EAAe,KAAK,aAChE,EAAa,KAAK,WAAY,EAAI,EAAG,EAAI,EACvC,EAAQ,KAAK,YAAc,EAC3B,EACJ,AAAI,EACF,EAAS,GAAI,aAAa,EAAe,GAAM,CAAC,EAEhD,EAAS,GAAI,aAAY,CAAK,EAGhC,OADI,IAAQ,GAAI,aAAY,CAAM,EAC3B,EAAI,GAAc,CACvB,IAAK,EAAI,EAAG,EAAI,GAAc,EAAI,EAAc,EAAE,EAAG,EAAE,EACrD,GAAM,GAAK,EAAE,GAEf,AAAI,EAAI,IAAe,GACrB,EAAE,CAAC,CAEP,CACA,MAAI,IACF,IAAM,GAAK,EAAE,GACb,EAAS,EAAO,MAAM,EAAG,CAAK,GAEzB,CACT,EAEA,EAAO,UAAU,OAAS,EAAO,UAAU,YAE3C,EAAO,UAAU,OAAS,EAAO,UAAU,MAAQ,UAAY,CAC7D,KAAK,SAAS,EAKd,OAHI,GAAa,KAAK,WAAY,EAAI,KAAK,EAAG,EAAe,KAAK,aAChE,EAAa,KAAK,WAAY,EAAI,EAAG,EAAI,EACvC,EAAQ,CAAC,EAAG,EAAQ,GACjB,EAAI,GAAc,CACvB,IAAK,EAAI,EAAG,EAAI,GAAc,EAAI,EAAc,EAAE,EAAG,EAAE,EACrD,EAAS,GAAK,EACd,GAAQ,EAAE,GACV,EAAM,GAAU,GAAQ,IACxB,EAAM,EAAS,GAAM,IAAS,EAAK,IACnC,EAAM,EAAS,GAAM,IAAS,GAAM,IACpC,EAAM,EAAS,GAAM,IAAS,GAAM,IAEtC,AAAI,EAAI,IAAe,GACrB,EAAE,CAAC,CAEP,CACA,MAAI,IACF,GAAS,GAAK,EACd,GAAQ,EAAE,GACV,EAAM,GAAU,GAAQ,IACpB,EAAa,GACf,GAAM,EAAS,GAAM,IAAS,EAAK,KAEjC,EAAa,GACf,GAAM,EAAS,GAAM,IAAS,GAAM,MAGjC,CACT,EAEA,WAAc,EAAM,EAAS,EAAY,CACvC,EAAO,KAAK,KAAM,EAAM,EAAS,CAAU,CAC7C,CAFS,YAIT,EAAK,UAAY,GAAI,GAErB,EAAK,UAAU,SAAW,UAAY,CACpC,YAAK,OAAO,KAAK,WAAY,EAAI,EAC1B,EAAO,UAAU,SAAS,KAAK,IAAI,CAC5C,EAEA,GAAI,GAAI,WAAU,EAAG,CACnB,GAAI,GAAG,EAAG,EAAG,EAAI,EAAI,EAAI,EAAI,GAAI,EAAI,GAAI,GAAI,GAAI,GAC/C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAC3E,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAC3E,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAC7E,IAAK,EAAI,EAAG,EAAI,GAAI,GAAK,EACvB,EAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,EAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,EAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,EAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,GAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,EAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,GAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,GAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,GAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IACtC,GAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAEtC,EAAI,GAAO,IAAM,EAAM,IAAO,IAC9B,EAAI,GAAO,IAAM,EAAM,IAAO,IAC9B,EAAE,IAAM,EACR,EAAE,IAAM,EACR,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAI,EAAO,KAAM,EAAM,IAAO,IAC9B,EAAI,EAAO,IAAM,EAAM,KAAO,IAC9B,EAAE,IAAM,EACR,EAAE,IAAM,EACR,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAI,EAAO,KAAM,EAAM,KAAO,IAC9B,EAAI,EAAO,KAAM,EAAM,KAAO,IAC9B,EAAE,IAAM,EACR,EAAE,IAAM,EACR,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAI,GAAO,KAAM,EAAM,KAAO,IAC9B,EAAI,EAAO,KAAM,EAAM,KAAO,IAC9B,EAAE,IAAM,EACR,EAAE,IAAM,EACR,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAI,GAAO,IAAM,EAAM,IAAO,IAC9B,EAAI,GAAO,IAAM,EAAM,IAAO,IAC9B,EAAE,IAAM,EACR,EAAE,IAAM,EACR,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EACT,EAAE,KAAO,EAET,GAAK,EAAE,GACP,GAAK,EAAE,GACP,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,IAAM,EAAM,EAAE,KAAO,GAC9B,GAAO,EAAE,IAAM,EAAM,EAAE,KAAO,GAC9B,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAChC,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,IAAM,GAAO,EAAE,KAAO,EAC/B,GAAO,EAAE,IAAM,GAAO,EAAE,KAAO,EAC/B,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAChC,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAO,EAAE,IAAM,GAAO,EAAE,KAAO,EAC/B,GAAO,EAAE,IAAM,GAAO,EAAE,KAAO,EAC/B,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAChC,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,EACjC,GAAO,EAAE,IAAM,GAAO,EAAE,KAAO,EAC/B,GAAO,EAAE,IAAM,GAAO,EAAE,KAAO,EAC/B,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,GAAO,EAAE,MAAQ,GACjC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAO,EAAE,KAAO,EAAM,EAAE,MAAQ,GAChC,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAChC,GAAM,EAAE,KAAO,GAAO,EAAE,MAAQ,GAEhC,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,GAAK,GAAM,CAAC,GAAK,GACnB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GACtB,EAAE,IAAM,GAAO,CAAC,GAAM,GAEtB,EAAE,IAAM,EAAG,GACX,EAAE,IAAM,EAAG,EAAI,EAEnB,EAvLQ,KAyLR,GAAI,EACF,GAAO,QAAU,MACZ,CACL,IAAK,EAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EACpC,EAAK,EAAY,IAAM,EAAQ,EAAY,IAE7C,AAAI,GACF,OAAO,UAAY,CACjB,MAAO,EACT,CAAC,CAEL,CACF,GAAG,IC/oBH,uBAAO,QAAU,GAEjB,YAAgB,EAAK,EAAK,CACxB,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,GAAO,kBAAkB,CAC7C,CAHS,eAKT,GAAO,MAAQ,WAAqB,EAAG,EAAG,EAAK,CAC7C,GAAI,GAAK,EACP,KAAM,IAAI,OAAM,GAAQ,qBAAuB,EAAI,OAAS,CAAE,CAClE,EAHe,iBCPf,oBAAI,MAAO,QAAO,QAAW,WAE3B,GAAO,QAAU,WAAkB,EAAM,EAAW,CAClD,AAAI,GACF,GAAK,OAAS,EACd,EAAK,UAAY,OAAO,OAAO,EAAU,UAAW,CAClD,YAAa,CACX,MAAO,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EAChB,CACF,CAAC,EAEL,EAZiB,YAejB,GAAO,QAAU,WAAkB,EAAM,EAAW,CAClD,GAAI,EAAW,CACb,EAAK,OAAS,EACd,GAAI,GAAW,YAAY,CAAC,EAAb,YACf,EAAS,UAAY,EAAU,UAC/B,EAAK,UAAY,GAAI,GACrB,EAAK,UAAU,YAAc,CAC/B,CACF,EARiB,cCjBnB,4BAEA,GAAI,IAAS,KACT,GAAW,KAEf,GAAQ,SAAW,GAEnB,YAAyB,EAAK,EAAG,CAI/B,MAHK,GAAI,WAAW,CAAC,EAAI,SAAY,OAGjC,EAAI,GAAK,EAAI,GAAK,EAAI,OACjB,GAED,GAAI,WAAW,EAAI,CAAC,EAAI,SAAY,KAC9C,CARS,wBAUT,YAAiB,EAAK,EAAK,CACzB,GAAI,MAAM,QAAQ,CAAG,EACnB,MAAO,GAAI,MAAM,EACnB,GAAI,CAAC,EACH,MAAO,CAAC,EACV,GAAI,GAAM,CAAC,EACX,GAAI,MAAO,IAAQ,SACjB,GAAK,GAyBE,GAAI,IAAQ,MAIjB,IAHA,EAAM,EAAI,QAAQ,eAAgB,EAAE,EAChC,EAAI,OAAS,IAAM,GACrB,GAAM,IAAM,GACT,EAAI,EAAG,EAAI,EAAI,OAAQ,GAAK,EAC/B,EAAI,KAAK,SAAS,EAAI,GAAK,EAAI,EAAI,GAAI,EAAE,CAAC,MAxB5C,QADI,GAAI,EACC,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,GAAI,GAAI,EAAI,WAAW,CAAC,EACxB,AAAI,EAAI,IACN,EAAI,KAAO,EACN,AAAI,EAAI,KACb,GAAI,KAAQ,GAAK,EAAK,IACtB,EAAI,KAAQ,EAAI,GAAM,KACjB,AAAI,GAAgB,EAAK,CAAC,EAC/B,GAAI,MAAY,IAAI,OAAW,IAAO,GAAI,WAAW,EAAE,CAAC,EAAI,MAC5D,EAAI,KAAQ,GAAK,GAAM,IACvB,EAAI,KAAS,GAAK,GAAM,GAAM,IAC9B,EAAI,KAAS,GAAK,EAAK,GAAM,IAC7B,EAAI,KAAQ,EAAI,GAAM,KAEtB,GAAI,KAAQ,GAAK,GAAM,IACvB,EAAI,KAAS,GAAK,EAAK,GAAM,IAC7B,EAAI,KAAQ,EAAI,GAAM,IAE1B,KASF,KAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC1B,EAAI,GAAK,EAAI,GAAK,EAEtB,MAAO,EACT,CA5CS,gBA6CT,GAAQ,QAAU,GAElB,YAAe,EAAK,CAElB,OADI,GAAM,GACD,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,GAAO,GAAM,EAAI,GAAG,SAAS,EAAE,CAAC,EAClC,MAAO,EACT,CALS,cAMT,GAAQ,MAAQ,GAEhB,YAAe,EAAG,CAChB,GAAI,GAAO,IAAM,GACL,IAAM,EAAK,MACX,GAAK,EAAK,SACV,GAAI,MAAS,GACzB,MAAO,KAAQ,CACjB,CANS,cAOT,GAAQ,MAAQ,GAEhB,YAAiB,EAAK,EAAQ,CAE5B,OADI,GAAM,GACD,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,GAAI,GAAI,EAAI,GACZ,AAAI,IAAW,UACb,GAAI,GAAM,CAAC,GACb,GAAO,GAAM,EAAE,SAAS,EAAE,CAAC,CAC7B,CACA,MAAO,EACT,CATS,gBAUT,GAAQ,QAAU,GAElB,YAAe,EAAM,CACnB,MAAI,GAAK,SAAW,EACX,IAAM,EAEN,CACX,CALS,cAMT,GAAQ,MAAQ,GAEhB,YAAe,EAAM,CACnB,MAAI,GAAK,SAAW,EACX,IAAM,EACN,EAAK,SAAW,EAChB,KAAO,EACP,EAAK,SAAW,EAChB,MAAQ,EACR,EAAK,SAAW,EAChB,OAAS,EACT,EAAK,SAAW,EAChB,QAAU,EACV,EAAK,SAAW,EAChB,SAAW,EACX,EAAK,SAAW,EAChB,UAAY,EAEZ,CACX,CAjBS,cAkBT,GAAQ,MAAQ,GAEhB,YAAgB,EAAK,EAAO,EAAK,EAAQ,CACvC,GAAI,GAAM,EAAM,EAChB,GAAO,EAAM,IAAM,CAAC,EAEpB,OADI,GAAM,GAAI,OAAM,EAAM,CAAC,EAClB,EAAI,EAAG,EAAI,EAAO,EAAI,EAAI,OAAQ,IAAK,GAAK,EAAG,CACtD,GAAI,GACJ,AAAI,IAAW,MACb,EAAK,EAAI,IAAM,GAAO,EAAI,EAAI,IAAM,GAAO,EAAI,EAAI,IAAM,EAAK,EAAI,EAAI,GAEtE,EAAK,EAAI,EAAI,IAAM,GAAO,EAAI,EAAI,IAAM,GAAO,EAAI,EAAI,IAAM,EAAK,EAAI,GACxE,EAAI,GAAK,IAAM,CACjB,CACA,MAAO,EACT,CAbS,eAcT,GAAQ,OAAS,GAEjB,YAAiB,EAAK,EAAQ,CAE5B,OADI,GAAM,GAAI,OAAM,EAAI,OAAS,CAAC,EACzB,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,GAAK,EAAG,CAClD,GAAI,GAAI,EAAI,GACZ,AAAI,IAAW,MACb,GAAI,GAAK,IAAM,GACf,EAAI,EAAI,GAAM,IAAM,GAAM,IAC1B,EAAI,EAAI,GAAM,IAAM,EAAK,IACzB,EAAI,EAAI,GAAK,EAAI,KAEjB,GAAI,EAAI,GAAK,IAAM,GACnB,EAAI,EAAI,GAAM,IAAM,GAAM,IAC1B,EAAI,EAAI,GAAM,IAAM,EAAK,IACzB,EAAI,GAAK,EAAI,IAEjB,CACA,MAAO,EACT,CAjBS,gBAkBT,GAAQ,QAAU,GAElB,YAAgB,EAAG,EAAG,CACpB,MAAQ,KAAM,EAAM,GAAM,GAAK,CACjC,CAFS,eAGT,GAAQ,OAAS,GAEjB,YAAgB,EAAG,EAAG,CACpB,MAAQ,IAAK,EAAM,IAAO,GAAK,CACjC,CAFS,eAGT,GAAQ,OAAS,GAEjB,YAAe,EAAG,EAAG,CACnB,MAAQ,GAAI,IAAO,CACrB,CAFS,cAGT,GAAQ,MAAQ,GAEhB,YAAiB,EAAG,EAAG,EAAG,CACxB,MAAQ,GAAI,EAAI,IAAO,CACzB,CAFS,gBAGT,GAAQ,QAAU,GAElB,YAAiB,EAAG,EAAG,EAAG,EAAG,CAC3B,MAAQ,GAAI,EAAI,EAAI,IAAO,CAC7B,CAFS,gBAGT,GAAQ,QAAU,GAElB,YAAiB,EAAG,EAAG,EAAG,EAAG,EAAG,CAC9B,MAAQ,GAAI,EAAI,EAAI,EAAI,IAAO,CACjC,CAFS,gBAGT,GAAQ,QAAU,GAElB,YAAe,EAAK,EAAK,EAAI,EAAI,CAC/B,GAAI,GAAK,EAAI,GACT,EAAK,EAAI,EAAM,GAEf,EAAM,EAAK,IAAQ,EACnB,EAAM,GAAK,EAAK,EAAI,GAAK,EAAK,EAClC,EAAI,GAAO,IAAO,EAClB,EAAI,EAAM,GAAK,CACjB,CARS,cAST,GAAQ,MAAQ,GAEhB,YAAkB,EAAI,EAAI,EAAI,EAAI,CAChC,GAAI,GAAM,EAAK,IAAQ,EACnB,EAAM,GAAK,EAAK,EAAI,GAAK,EAAK,EAClC,MAAO,KAAO,CAChB,CAJS,iBAKT,GAAQ,SAAW,GAEnB,YAAkB,EAAI,EAAI,EAAI,EAAI,CAChC,GAAI,GAAK,EAAK,EACd,MAAO,KAAO,CAChB,CAHS,iBAIT,GAAQ,SAAW,GAEnB,YAAoB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,CAClD,GAAI,GAAQ,EACR,EAAK,EACT,EAAM,EAAK,IAAQ,EACnB,GAAS,EAAK,EAAK,EAAI,EACvB,EAAM,EAAK,IAAQ,EACnB,GAAS,EAAK,EAAK,EAAI,EACvB,EAAM,EAAK,IAAQ,EACnB,GAAS,EAAK,EAAK,EAAI,EAEvB,GAAI,GAAK,EAAK,EAAK,EAAK,EAAK,EAC7B,MAAO,KAAO,CAChB,CAZS,mBAaT,GAAQ,WAAa,GAErB,YAAoB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,CAClD,GAAI,GAAK,EAAK,EAAK,EAAK,EACxB,MAAO,KAAO,CAChB,CAHS,mBAIT,GAAQ,WAAa,GAErB,YAAoB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,CAC1D,GAAI,GAAQ,EACR,EAAK,EACT,EAAM,EAAK,IAAQ,EACnB,GAAS,EAAK,EAAK,EAAI,EACvB,EAAM,EAAK,IAAQ,EACnB,GAAS,EAAK,EAAK,EAAI,EACvB,EAAM,EAAK,IAAQ,EACnB,GAAS,EAAK,EAAK,EAAI,EACvB,EAAM,EAAK,IAAQ,EACnB,GAAS,EAAK,EAAK,EAAI,EAEvB,GAAI,GAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAClC,MAAO,KAAO,CAChB,CAdS,mBAeT,GAAQ,WAAa,GAErB,YAAoB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,CAC1D,GAAI,GAAK,EAAK,EAAK,EAAK,EAAK,EAE7B,MAAO,KAAO,CAChB,CAJS,mBAKT,GAAQ,WAAa,GAErB,YAAmB,EAAI,EAAI,EAAK,CAC9B,GAAI,GAAK,GAAO,GAAK,EAAS,IAAO,EACrC,MAAO,KAAM,CACf,CAHS,kBAIT,GAAQ,UAAY,GAEpB,YAAmB,EAAI,EAAI,EAAK,CAC9B,GAAI,GAAK,GAAO,GAAK,EAAS,IAAO,EACrC,MAAO,KAAM,CACf,CAHS,kBAIT,GAAQ,UAAY,GAEpB,YAAkB,EAAI,EAAI,EAAK,CAC7B,MAAO,KAAO,CAChB,CAFS,iBAGT,GAAQ,SAAW,GAEnB,YAAkB,EAAI,EAAI,EAAK,CAC7B,GAAI,GAAK,GAAO,GAAK,EAAS,IAAO,EACrC,MAAO,KAAM,CACf,CAHS,iBAIT,GAAQ,SAAW,KCrRnB,4BAEA,GAAI,IAAQ,KACR,GAAS,KAEb,aAAqB,CACnB,KAAK,QAAU,KACf,KAAK,aAAe,EACpB,KAAK,UAAY,KAAK,YAAY,UAClC,KAAK,QAAU,KAAK,YAAY,QAChC,KAAK,aAAe,KAAK,YAAY,aACrC,KAAK,UAAY,KAAK,YAAY,UAAY,EAC9C,KAAK,OAAS,MAEd,KAAK,QAAU,KAAK,UAAY,EAChC,KAAK,SAAW,KAAK,UAAY,EACnC,CAXS,kBAYT,GAAQ,UAAY,GAEpB,GAAU,UAAU,OAAS,WAAgB,EAAK,EAAK,CAUrD,GARA,EAAM,GAAM,QAAQ,EAAK,CAAG,EAC5B,AAAK,KAAK,QAGR,KAAK,QAAU,KAAK,QAAQ,OAAO,CAAG,EAFtC,KAAK,QAAU,EAGjB,KAAK,cAAgB,EAAI,OAGrB,KAAK,QAAQ,QAAU,KAAK,QAAS,CACvC,EAAM,KAAK,QAGX,GAAI,GAAI,EAAI,OAAS,KAAK,QAC1B,KAAK,QAAU,EAAI,MAAM,EAAI,OAAS,EAAG,EAAI,MAAM,EAC/C,KAAK,QAAQ,SAAW,GAC1B,MAAK,QAAU,MAEjB,EAAM,GAAM,OAAO,EAAK,EAAG,EAAI,OAAS,EAAG,KAAK,MAAM,EACtD,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,GAAK,KAAK,SACxC,KAAK,QAAQ,EAAK,EAAG,EAAI,KAAK,QAAQ,CAC1C,CAEA,MAAO,KACT,EAzB6B,UA2B7B,GAAU,UAAU,OAAS,WAAgB,EAAK,CAChD,YAAK,OAAO,KAAK,KAAK,CAAC,EACvB,GAAO,KAAK,UAAY,IAAI,EAErB,KAAK,QAAQ,CAAG,CACzB,EAL6B,UAO7B,GAAU,UAAU,KAAO,YAAe,CACxC,GAAI,GAAM,KAAK,aACX,EAAQ,KAAK,QACb,EAAI,EAAU,GAAM,KAAK,WAAa,EACtC,EAAM,GAAI,OAAM,EAAI,KAAK,SAAS,EACtC,EAAI,GAAK,IACT,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAI,GAAK,EAIX,GADA,IAAQ,EACJ,KAAK,SAAW,MAAO,CACzB,OAAS,GAAI,EAAG,EAAI,KAAK,UAAW,IAClC,EAAI,KAAO,EAEb,EAAI,KAAO,EACX,EAAI,KAAO,EACX,EAAI,KAAO,EACX,EAAI,KAAO,EACX,EAAI,KAAQ,IAAQ,GAAM,IAC1B,EAAI,KAAQ,IAAQ,GAAM,IAC1B,EAAI,KAAQ,IAAQ,EAAK,IACzB,EAAI,KAAO,EAAM,GACnB,KAUE,KATA,EAAI,KAAO,EAAM,IACjB,EAAI,KAAQ,IAAQ,EAAK,IACzB,EAAI,KAAQ,IAAQ,GAAM,IAC1B,EAAI,KAAQ,IAAQ,GAAM,IAC1B,EAAI,KAAO,EACX,EAAI,KAAO,EACX,EAAI,KAAO,EACX,EAAI,KAAO,EAEN,EAAI,EAAG,EAAI,KAAK,UAAW,IAC9B,EAAI,KAAO,EAGf,MAAO,EACT,EAtC2B,SCrD3B,4BAEA,GAAI,IAAQ,KACR,GAAS,GAAM,OAEnB,YAAc,EAAG,EAAG,EAAG,EAAG,CACxB,GAAI,IAAM,EACR,MAAO,IAAK,EAAG,EAAG,CAAC,EACrB,GAAI,IAAM,GAAK,IAAM,EACnB,MAAO,IAAI,EAAG,EAAG,CAAC,EACpB,GAAI,IAAM,EACR,MAAO,IAAM,EAAG,EAAG,CAAC,CACxB,CAPS,aAQT,GAAQ,KAAO,GAEf,YAAc,EAAG,EAAG,EAAG,CACrB,MAAQ,GAAI,EAAO,CAAC,EAAK,CAC3B,CAFS,aAGT,GAAQ,KAAO,GAEf,YAAe,EAAG,EAAG,EAAG,CACtB,MAAQ,GAAI,EAAM,EAAI,EAAM,EAAI,CAClC,CAFS,cAGT,GAAQ,MAAQ,GAEhB,YAAa,EAAG,EAAG,EAAG,CACpB,MAAO,GAAI,EAAI,CACjB,CAFS,YAGT,GAAQ,IAAM,GAEd,YAAgB,EAAG,CACjB,MAAO,IAAO,EAAG,CAAC,EAAI,GAAO,EAAG,EAAE,EAAI,GAAO,EAAG,EAAE,CACpD,CAFS,eAGT,GAAQ,OAAS,GAEjB,YAAgB,EAAG,CACjB,MAAO,IAAO,EAAG,CAAC,EAAI,GAAO,EAAG,EAAE,EAAI,GAAO,EAAG,EAAE,CACpD,CAFS,eAGT,GAAQ,OAAS,GAEjB,YAAgB,EAAG,CACjB,MAAO,IAAO,EAAG,CAAC,EAAI,GAAO,EAAG,EAAE,EAAK,IAAM,CAC/C,CAFS,eAGT,GAAQ,OAAS,GAEjB,YAAgB,EAAG,CACjB,MAAO,IAAO,EAAG,EAAE,EAAI,GAAO,EAAG,EAAE,EAAK,IAAM,EAChD,CAFS,eAGT,GAAQ,OAAS,KChDjB,iCAEA,GAAI,IAAQ,KACR,GAAS,KACT,GAAY,KAEZ,GAAS,GAAM,OACf,GAAQ,GAAM,MACd,GAAU,GAAM,QAChB,GAAO,GAAU,KACjB,GAAY,GAAO,UAEnB,GAAS,CACX,WAAY,WACZ,WAAY,UACd,EAEA,aAAgB,CACd,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAEb,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WAAY,WACxB,UAAY,UAAW,EACzB,KAAK,EAAI,GAAI,OAAM,EAAE,CACvB,CATS,aAWT,GAAM,SAAS,GAAM,EAAS,EAC9B,GAAO,QAAU,GAEjB,GAAK,UAAY,IACjB,GAAK,QAAU,IACf,GAAK,aAAe,GACpB,GAAK,UAAY,GAEjB,GAAK,UAAU,QAAU,WAAiB,EAAK,EAAO,CAGpD,OAFI,GAAI,KAAK,EAEJ,EAAI,EAAG,EAAI,GAAI,IACtB,EAAE,GAAK,EAAI,EAAQ,GAErB,KAAM,EAAI,EAAE,OAAQ,IAClB,EAAE,GAAK,GAAO,EAAE,EAAI,GAAK,EAAE,EAAI,GAAK,EAAE,EAAI,IAAM,EAAE,EAAI,IAAK,CAAC,EAE9D,GAAI,GAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GAEf,IAAK,EAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CAC7B,GAAI,GAAI,CAAC,CAAE,GAAI,IACX,EAAI,GAAQ,GAAO,EAAG,CAAC,EAAG,GAAK,EAAG,EAAG,EAAG,CAAC,EAAG,EAAG,EAAE,GAAI,GAAO,EAAE,EAClE,EAAI,EACJ,EAAI,EACJ,EAAI,GAAO,EAAG,EAAE,EAChB,EAAI,EACJ,EAAI,CACN,CAEA,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,CAChC,EA9ByB,WAgCzB,GAAK,UAAU,QAAU,WAAgB,EAAK,CAC5C,MAAI,KAAQ,MACH,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3B,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,EALyB,YCpEzB,iCAEA,GAAI,IAAQ,KACR,GAAS,KACT,GAAY,KACZ,GAAS,KAET,GAAQ,GAAM,MACd,GAAU,GAAM,QAChB,GAAU,GAAM,QAChB,GAAO,GAAU,KACjB,GAAQ,GAAU,MAClB,GAAS,GAAU,OACnB,GAAS,GAAU,OACnB,GAAS,GAAU,OACnB,GAAS,GAAU,OAEnB,GAAY,GAAO,UAEnB,GAAW,CACb,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACtC,EAEA,aAAkB,CAChB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAEb,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACtC,EACA,KAAK,EAAI,GACT,KAAK,EAAI,GAAI,OAAM,EAAE,CACvB,CAXS,eAYT,GAAM,SAAS,GAAQ,EAAS,EAChC,GAAO,QAAU,GAEjB,GAAO,UAAY,IACnB,GAAO,QAAU,IACjB,GAAO,aAAe,IACtB,GAAO,UAAY,GAEnB,GAAO,UAAU,QAAU,WAAiB,EAAK,EAAO,CAGtD,OAFI,GAAI,KAAK,EAEJ,EAAI,EAAG,EAAI,GAAI,IACtB,EAAE,GAAK,EAAI,EAAQ,GACrB,KAAO,EAAI,EAAE,OAAQ,IACnB,EAAE,GAAK,GAAQ,GAAO,EAAE,EAAI,EAAE,EAAG,EAAE,EAAI,GAAI,GAAO,EAAE,EAAI,GAAG,EAAG,EAAE,EAAI,GAAG,EAEzE,GAAI,GAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GAGf,IADA,GAAO,KAAK,EAAE,SAAW,EAAE,MAAM,EAC5B,EAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CAC7B,GAAI,GAAK,GAAQ,EAAG,GAAO,CAAC,EAAG,GAAK,EAAG,EAAG,CAAC,EAAG,KAAK,EAAE,GAAI,EAAE,EAAE,EACzD,EAAK,GAAM,GAAO,CAAC,EAAG,GAAM,EAAG,EAAG,CAAC,CAAC,EACxC,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,GAAM,EAAG,CAAE,EACf,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,GAAM,EAAI,CAAE,CAClB,CAEA,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAK,GAAM,KAAK,EAAE,GAAI,CAAC,CAChC,EAvC2B,WAyC3B,GAAO,UAAU,QAAU,WAAgB,EAAK,CAC9C,MAAI,KAAQ,MACH,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3B,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,EAL2B,YCnG3B,iCAEA,GAAI,IAAQ,KACR,GAAS,KAEb,aAAkB,CAChB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAEb,GAAO,KAAK,IAAI,EAChB,KAAK,EAAI,CACP,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UAAW,CACnD,CARS,eAST,GAAM,SAAS,GAAQ,EAAM,EAC7B,GAAO,QAAU,GAEjB,GAAO,UAAY,IACnB,GAAO,QAAU,IACjB,GAAO,aAAe,IACtB,GAAO,UAAY,GAEnB,GAAO,UAAU,QAAU,WAAgB,EAAK,CAE9C,MAAI,KAAQ,MACH,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,CAAC,EAAG,KAAK,EAEvC,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,CAAC,EAAG,KAAK,CAClD,EAN2B,YCtB3B,iCAEA,GAAI,IAAQ,KACR,GAAS,KACT,GAAS,KAET,GAAY,GAAM,UAClB,GAAY,GAAM,UAClB,GAAW,GAAM,SACjB,GAAW,GAAM,SACjB,GAAQ,GAAM,MACd,GAAW,GAAM,SACjB,GAAW,GAAM,SACjB,GAAa,GAAM,WACnB,GAAa,GAAM,WACnB,GAAa,GAAM,WACnB,GAAa,GAAM,WAEnB,GAAY,GAAO,UAEnB,GAAW,CACb,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACtC,EAEA,aAAkB,CAChB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAEb,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UACZ,UAAY,WACZ,WAAY,SAAW,EACzB,KAAK,EAAI,GACT,KAAK,EAAI,GAAI,OAAM,GAAG,CACxB,CAhBS,eAiBT,GAAM,SAAS,GAAQ,EAAS,EAChC,GAAO,QAAU,GAEjB,GAAO,UAAY,KACnB,GAAO,QAAU,IACjB,GAAO,aAAe,IACtB,GAAO,UAAY,IAEnB,GAAO,UAAU,cAAgB,WAAuB,EAAK,EAAO,CAIlE,OAHI,GAAI,KAAK,EAGJ,EAAI,EAAG,EAAI,GAAI,IACtB,EAAE,GAAK,EAAI,EAAQ,GACrB,KAAO,EAAI,EAAE,OAAQ,GAAK,EAAG,CAC3B,GAAI,GAAQ,GAAU,EAAE,EAAI,GAAI,EAAE,EAAI,EAAE,EACpC,EAAQ,GAAU,EAAE,EAAI,GAAI,EAAE,EAAI,EAAE,EACpC,EAAQ,EAAE,EAAI,IACd,EAAQ,EAAE,EAAI,IACd,EAAQ,GAAU,EAAE,EAAI,IAAK,EAAE,EAAI,GAAG,EACtC,EAAQ,GAAU,EAAE,EAAI,IAAK,EAAE,EAAI,GAAG,EACtC,EAAQ,EAAE,EAAI,IACd,EAAQ,EAAE,EAAI,IAElB,EAAE,GAAK,GACL,EAAO,EACP,EAAO,EACP,EAAO,EACP,EAAO,CAAK,EACd,EAAE,EAAI,GAAK,GACT,EAAO,EACP,EAAO,EACP,EAAO,EACP,EAAO,CAAK,CAChB,CACF,EA3BiC,iBA6BjC,GAAO,UAAU,QAAU,WAAiB,EAAK,EAAO,CACtD,KAAK,cAAc,EAAK,CAAK,EAE7B,GAAI,GAAI,KAAK,EAET,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,GACZ,EAAK,KAAK,EAAE,IACZ,EAAK,KAAK,EAAE,IACZ,EAAK,KAAK,EAAE,IACZ,EAAK,KAAK,EAAE,IACZ,EAAK,KAAK,EAAE,IACZ,EAAK,KAAK,EAAE,IAEhB,GAAO,KAAK,EAAE,SAAW,EAAE,MAAM,EACjC,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,GAAK,EAAG,CACpC,GAAI,GAAQ,EACR,EAAQ,EACR,GAAQ,GAAU,EAAI,CAAE,EACxB,GAAQ,GAAU,EAAI,CAAE,EACxB,GAAQ,GAAQ,EAAI,EAAI,EAAI,EAAI,EAAI,CAAE,EACtC,GAAQ,GAAQ,EAAI,EAAI,EAAI,EAAI,EAAI,CAAE,EACtC,EAAQ,KAAK,EAAE,GACf,GAAQ,KAAK,EAAE,EAAI,GACnB,EAAQ,EAAE,GACV,EAAQ,EAAE,EAAI,GAEd,EAAQ,GACV,EAAO,EACP,GAAO,GACP,GAAO,GACP,EAAO,GACP,EAAO,CAAK,EACV,EAAQ,GACV,EAAO,EACP,GAAO,GACP,GAAO,GACP,EAAO,GACP,EAAO,CAAK,EAEd,EAAQ,GAAU,EAAI,CAAE,EACxB,EAAQ,GAAU,EAAI,CAAE,EACxB,GAAQ,GAAS,EAAI,EAAI,EAAI,EAAI,EAAI,CAAE,EACvC,GAAQ,GAAS,EAAI,EAAI,EAAI,EAAI,EAAI,CAAE,EAEvC,GAAI,GAAQ,GAAS,EAAO,EAAO,GAAO,EAAK,EAC3C,EAAQ,GAAS,EAAO,EAAO,GAAO,EAAK,EAE/C,EAAK,EACL,EAAK,EAEL,EAAK,EACL,EAAK,EAEL,EAAK,EACL,EAAK,EAEL,EAAK,GAAS,EAAI,EAAI,EAAO,CAAK,EAClC,EAAK,GAAS,EAAI,EAAI,EAAO,CAAK,EAElC,EAAK,EACL,EAAK,EAEL,EAAK,EACL,EAAK,EAEL,EAAK,EACL,EAAK,EAEL,EAAK,GAAS,EAAO,EAAO,EAAO,CAAK,EACxC,EAAK,GAAS,EAAO,EAAO,EAAO,CAAK,CAC1C,CAEA,GAAM,KAAK,EAAG,EAAG,EAAI,CAAE,EACvB,GAAM,KAAK,EAAG,EAAG,EAAI,CAAE,EACvB,GAAM,KAAK,EAAG,EAAG,EAAI,CAAE,EACvB,GAAM,KAAK,EAAG,EAAG,EAAI,CAAE,EACvB,GAAM,KAAK,EAAG,EAAG,EAAI,CAAE,EACvB,GAAM,KAAK,EAAG,GAAI,EAAI,CAAE,EACxB,GAAM,KAAK,EAAG,GAAI,EAAI,CAAE,EACxB,GAAM,KAAK,EAAG,GAAI,EAAI,CAAE,CAC1B,EAzF2B,WA2F3B,GAAO,UAAU,QAAU,WAAgB,EAAK,CAC9C,MAAI,KAAQ,MACH,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3B,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,EAL2B,UAO3B,YAAiB,EAAI,EAAI,EAAI,EAAI,EAAI,CACnC,GAAI,GAAK,EAAK,EAAQ,CAAC,EAAM,EAC7B,MAAI,GAAI,GACN,IAAK,YACA,CACT,CALS,gBAOT,YAAiB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,CACvC,GAAI,GAAK,EAAK,EAAQ,CAAC,EAAM,EAC7B,MAAI,GAAI,GACN,IAAK,YACA,CACT,CALS,gBAOT,YAAkB,EAAI,EAAI,EAAI,EAAI,EAAI,CACpC,GAAI,GAAK,EAAK,EAAO,EAAK,EAAO,EAAK,EACtC,MAAI,GAAI,GACN,IAAK,YACA,CACT,CALS,iBAOT,YAAkB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,CACxC,GAAI,GAAK,EAAK,EAAO,EAAK,EAAO,EAAK,EACtC,MAAI,GAAI,GACN,IAAK,YACA,CACT,CALS,iBAOT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAC3B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAE3B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,kBAWT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAC3B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAE3B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,kBAWT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAE3B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,kBAWT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAE3B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,kBAWT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,CAAC,EAC3B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAC3B,EAAQ,GAAS,EAAI,EAAI,CAAC,EAE1B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,kBAWT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,CAAC,EAC3B,EAAQ,GAAU,EAAI,EAAI,CAAC,EAC3B,EAAQ,GAAS,EAAI,EAAI,CAAC,EAE1B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,kBAWT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAS,EAAI,EAAI,CAAC,EAE1B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,kBAWT,YAAmB,EAAI,EAAI,CACzB,GAAI,GAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAU,EAAI,EAAI,EAAE,EAC5B,EAAQ,GAAS,EAAI,EAAI,CAAC,EAE1B,EAAI,EAAQ,EAAQ,EACxB,MAAI,GAAI,GACN,IAAK,YACA,CACT,CATS,oBChUT,iCAEA,GAAI,IAAQ,KAER,GAAS,KAEb,aAAkB,CAChB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAEb,GAAO,KAAK,IAAI,EAChB,KAAK,EAAI,CACP,WAAY,WACZ,WAAY,UACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UAAW,CAC3B,CAdS,eAeT,GAAM,SAAS,GAAQ,EAAM,EAC7B,GAAO,QAAU,GAEjB,GAAO,UAAY,KACnB,GAAO,QAAU,IACjB,GAAO,aAAe,IACtB,GAAO,UAAY,IAEnB,GAAO,UAAU,QAAU,WAAgB,EAAK,CAC9C,MAAI,KAAQ,MACH,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,EAAE,EAAG,KAAK,EAExC,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,EAAE,EAAG,KAAK,CACnD,EAL2B,YC7B3B,4BAEA,GAAQ,KAAO,KACf,GAAQ,OAAS,KACjB,GAAQ,OAAS,KACjB,GAAQ,OAAS,KACjB,GAAQ,OAAS,OCNjB,4BAEA,GAAI,IAAQ,KACR,GAAS,KAET,GAAS,GAAM,OACf,GAAQ,GAAM,MACd,GAAU,GAAM,QAChB,GAAU,GAAM,QAChB,GAAY,GAAO,UAEvB,aAAqB,CACnB,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAEb,GAAU,KAAK,IAAI,EAEnB,KAAK,EAAI,CAAE,WAAY,WAAY,WAAY,UAAY,UAAW,EACtE,KAAK,OAAS,QAChB,CARS,kBAST,GAAM,SAAS,GAAW,EAAS,EACnC,GAAQ,UAAY,GAEpB,GAAU,UAAY,IACtB,GAAU,QAAU,IACpB,GAAU,aAAe,IACzB,GAAU,UAAY,GAEtB,GAAU,UAAU,QAAU,WAAgB,EAAK,EAAO,CAWxD,OAVI,GAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACX,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACA,EAAI,EAAG,EAAI,GAAI,IAAK,CAC3B,GAAI,GAAI,GACN,GACE,GAAQ,EAAG,GAAE,EAAG,EAAG,EAAG,CAAC,EAAG,EAAI,GAAE,GAAK,GAAQ,GAAE,CAAC,CAAC,EACjD,GAAE,EAAE,EACN,CAAC,EACH,EAAI,EACJ,EAAI,EACJ,EAAI,GAAO,EAAG,EAAE,EAChB,EAAI,EACJ,EAAI,EACJ,EAAI,GACF,GACE,GAAQ,EAAI,GAAE,GAAK,EAAG,EAAI,EAAI,CAAE,EAAG,EAAI,GAAG,GAAK,GAAQ,GAAG,CAAC,CAAC,EAC5D,GAAG,EAAE,EACP,CAAE,EACJ,EAAK,EACL,EAAK,EACL,EAAK,GAAO,EAAI,EAAE,EAClB,EAAK,EACL,EAAK,CACP,CACA,EAAI,GAAQ,KAAK,EAAE,GAAI,EAAG,CAAE,EAC5B,KAAK,EAAE,GAAK,GAAQ,KAAK,EAAE,GAAI,EAAG,CAAE,EACpC,KAAK,EAAE,GAAK,GAAQ,KAAK,EAAE,GAAI,EAAG,CAAE,EACpC,KAAK,EAAE,GAAK,GAAQ,KAAK,EAAE,GAAI,EAAG,CAAE,EACpC,KAAK,EAAE,GAAK,GAAQ,KAAK,EAAE,GAAI,EAAG,CAAE,EACpC,KAAK,EAAE,GAAK,CACd,EAvC8B,UAyC9B,GAAU,UAAU,QAAU,WAAgB,EAAK,CACjD,MAAI,KAAQ,MACH,GAAM,QAAQ,KAAK,EAAG,QAAQ,EAE9B,GAAM,QAAQ,KAAK,EAAG,QAAQ,CACzC,EAL8B,UAO9B,YAAW,EAAG,EAAG,EAAG,EAAG,CACrB,MAAI,IAAK,GACA,EAAI,EAAI,EACR,GAAK,GACJ,EAAI,EAAO,CAAC,EAAK,EAClB,GAAK,GACJ,GAAK,CAAC,GAAM,EACb,GAAK,GACJ,EAAI,EAAM,EAAK,CAAC,EAEjB,EAAK,GAAK,CAAC,EACtB,CAXS,UAaT,YAAW,EAAG,CACZ,MAAI,IAAK,GACA,EACA,GAAK,GACL,WACA,GAAK,GACL,WACA,GAAK,GACL,WAEA,UACX,CAXS,UAaT,YAAY,EAAG,CACb,MAAI,IAAK,GACA,WACA,GAAK,GACL,WACA,GAAK,GACL,WACA,GAAK,GACL,WAEA,CACX,CAXS,WAaT,GAAI,IAAI,CACN,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EACpD,EAEI,GAAK,CACP,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAClD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAClD,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EACpD,EAEI,GAAI,CACN,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EACrD,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GACpD,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GACpD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,CACvD,EAEI,GAAK,CACP,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EACrD,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GACpD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EACrD,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACrD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EACtD,ICjJA,iCAEA,GAAI,IAAQ,KACR,GAAS,KAEb,YAAc,EAAM,EAAK,EAAK,CAC5B,GAAI,CAAE,gBAAgB,KACpB,MAAO,IAAI,IAAK,EAAM,EAAK,CAAG,EAChC,KAAK,KAAO,EACZ,KAAK,UAAY,EAAK,UAAY,EAClC,KAAK,QAAU,EAAK,QAAU,EAC9B,KAAK,MAAQ,KACb,KAAK,MAAQ,KAEb,KAAK,MAAM,GAAM,QAAQ,EAAK,CAAG,CAAC,CACpC,CAVS,aAWT,GAAO,QAAU,GAEjB,GAAK,UAAU,MAAQ,WAAc,EAAK,CAExC,AAAI,EAAI,OAAS,KAAK,WACpB,GAAM,GAAI,MAAK,KAAK,EAAE,OAAO,CAAG,EAAE,OAAO,GAC3C,GAAO,EAAI,QAAU,KAAK,SAAS,EAGnC,OAAS,GAAI,EAAI,OAAQ,EAAI,KAAK,UAAW,IAC3C,EAAI,KAAK,CAAC,EAEZ,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC1B,EAAI,IAAM,GAIZ,IAHA,KAAK,MAAQ,GAAI,MAAK,KAAK,EAAE,OAAO,CAAG,EAGlC,EAAI,EAAG,EAAI,EAAI,OAAQ,IAC1B,EAAI,IAAM,IACZ,KAAK,MAAQ,GAAI,MAAK,KAAK,EAAE,OAAO,CAAG,CACzC,EAlBuB,QAoBvB,GAAK,UAAU,OAAS,WAAgB,EAAK,EAAK,CAChD,YAAK,MAAM,OAAO,EAAK,CAAG,EACnB,IACT,EAHwB,UAKxB,GAAK,UAAU,OAAS,WAAgB,EAAK,CAC3C,YAAK,MAAM,OAAO,KAAK,MAAM,OAAO,CAAC,EAC9B,KAAK,MAAM,OAAO,CAAG,CAC9B,EAHwB,YC3CxB,kBAAI,IAAO,GAEX,GAAK,MAAQ,KACb,GAAK,OAAS,KACd,GAAK,IAAM,KACX,GAAK,OAAS,KACd,GAAK,KAAO,KAGZ,GAAK,KAAO,GAAK,IAAI,KACrB,GAAK,OAAS,GAAK,IAAI,OACvB,GAAK,OAAS,GAAK,IAAI,OACvB,GAAK,OAAS,GAAK,IAAI,OACvB,GAAK,OAAS,GAAK,IAAI,OACvB,GAAK,UAAY,GAAK,OAAO,YCd7B,iCAEA,AAAC,UAAS,EAAM,CAEZ,WAAkB,EAAO,CACrB,MAAQ,UAAS,CAAK,IAAM,CAChC,CAFS,gBAIT,WAAmB,EAAU,CACzB,GAAI,CAAC,EAAS,EAAS,MAAM,EAAK,MAAO,GAEzC,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACjC,GAAI,CAAC,EAAS,EAAS,EAAE,GAAK,EAAS,GAAK,GAAK,EAAS,GAAK,IAC3D,MAAO,GAIf,MAAO,EACX,CAVS,iBAYT,WAAqB,EAAK,EAAM,CAG5B,GAAI,EAAI,QAAU,YAAY,OAAO,CAAG,GAAK,EAAI,OAAS,aAEtD,MAAI,IACA,CAAI,EAAI,MACJ,EAAM,EAAI,MAAM,EAEhB,EAAM,MAAM,UAAU,MAAM,KAAK,CAAG,GAIrC,EAIX,GAAI,MAAM,QAAQ,CAAG,EAAG,CACpB,GAAI,CAAC,EAAU,CAAG,EACd,KAAM,IAAI,OAAM,iCAAmC,CAAG,EAG1D,MAAO,IAAI,YAAW,CAAG,CAC7B,CAGA,GAAI,EAAS,EAAI,MAAM,GAAK,EAAU,CAAG,EACrC,MAAO,IAAI,YAAW,CAAG,EAG7B,KAAM,IAAI,OAAM,+BAA+B,CACnD,CA/BS,mBAiCT,WAAqB,EAAQ,CACzB,MAAO,IAAI,YAAW,CAAM,CAChC,CAFS,mBAIT,WAAmB,EAAa,EAAa,EAAa,EAAa,EAAW,CAC9E,AAAI,IAAe,MAAQ,GAAa,OACpC,CAAI,EAAY,MACZ,EAAc,EAAY,MAAM,EAAa,CAAS,EAEtD,EAAc,MAAM,UAAU,MAAM,KAAK,EAAa,EAAa,CAAS,GAGpF,EAAY,IAAI,EAAa,CAAW,CAC5C,CATS,iBAaT,GAAI,GAAe,UAAW,CAC1B,WAAiB,EAAM,CACnB,GAAI,GAAS,CAAC,EAAG,EAAI,EAErB,IADA,EAAO,UAAU,CAAI,EACd,EAAI,EAAK,QAAQ,CACpB,GAAI,GAAI,EAAK,WAAW,GAAG,EAG3B,AAAI,IAAM,GACN,GAAO,KAAK,SAAS,EAAK,OAAO,EAAG,CAAC,EAAG,EAAE,CAAC,EAC3C,GAAK,GAIL,EAAO,KAAK,CAAC,CAErB,CAEA,MAAO,GAAY,CAAM,CAC7B,CAlBS,eAoBT,WAAmB,EAAO,CAGtB,OAFI,GAAS,CAAC,EAAG,EAAI,EAEd,EAAI,EAAM,QAAQ,CACrB,GAAI,GAAI,EAAM,GAEd,AAAI,EAAI,IACJ,GAAO,KAAK,OAAO,aAAa,CAAC,CAAC,EAClC,KACG,AAAI,EAAI,KAAO,EAAI,IACtB,GAAO,KAAK,OAAO,aAAe,GAAI,KAAS,EAAM,EAAM,EAAI,GAAK,EAAK,CAAC,EAC1E,GAAK,GAEL,GAAO,KAAK,OAAO,aAAe,GAAI,KAAS,GAAQ,GAAM,EAAI,GAAK,KAAS,EAAM,EAAM,EAAI,GAAK,EAAK,CAAC,EAC1G,GAAK,EAEb,CAEA,MAAO,GAAO,KAAK,EAAE,CACzB,CAnBS,wBAqBF,CACH,QAAS,EACT,UAAW,CACf,CACJ,EAAG,EAEC,EAAc,UAAW,CACzB,WAAiB,EAAM,CAEnB,OADI,GAAS,CAAC,EACL,EAAI,EAAG,EAAI,EAAK,OAAQ,GAAK,EAClC,EAAO,KAAK,SAAS,EAAK,OAAO,EAAG,CAAC,EAAG,EAAE,CAAC,EAG/C,MAAO,EACX,CAPS,eAUT,GAAI,GAAM,mBAEV,WAAmB,EAAO,CAElB,OADI,GAAS,CAAC,EACL,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACnC,GAAI,GAAI,EAAM,GACd,EAAO,KAAK,EAAK,GAAI,MAAS,GAAK,EAAI,EAAI,GAAK,CACpD,CACA,MAAO,GAAO,KAAK,EAAE,CAC7B,CAPS,wBASF,CACH,QAAS,EACT,UAAW,CACf,CACJ,EAAG,EAIC,EAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGxC,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAI,EAG1L,EAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,EACngD,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAI,EAGngD,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EAGpgG,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAU,EAGpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgG,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,W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",
|
6
6
|
"names": []
|
7
7
|
}
|