{"version":3,"file":"static/js/3760.21c01d99.js","mappings":"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EAEAC,EAEAC,EAEAC,GAEAC,GACA4C,GACAA,GACAA,GACAA,GAEA3I,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAgG,GAEAC,GAEAC,GAEAC,GACAwC,GACAA,GACAA,GAEAvC,GAEAnG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAoG,GAEAC,GAEAC,GAEAC,GAEAmC,GACAA,GACAA,GACAlC,GAEAvG,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAwG,GAEAC,GAEAC,GAEAC,GAEA8B,GACAA,GACAA,GACA7B,GAEA3G,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA4G,GAEAC,GAEAC,GAEAC,GACAyB,GACAA,GACAA,GAEAxB,GAEAC,GAEAA,GAEAA,GAEAA,GAEAA,GAEAA,GAEAK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAA,GACAA,GACAA,GAEAI,GACAC,GACAC,GACAC,GACAW,GACAA,GACAA,GACAA,GAEAV,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAC,GAEAE,GAEAC,GACAC,G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","sources":["../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/connections/baseConnection.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/canisters/ledger.idl.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/utils/constants.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/connections/ledgerConnection.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/utils/common/types.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/utils/converter.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/types/index.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/ic/icStorage.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/ic/icAuthClient.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/ic/icWindow.js","../../../node_modules/.pnpm/@astrox+sdk-web@0.1.41_@peculiar+webcrypto@1.5.0_@types+node@13.13.52_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-web/build/ic/icConnect.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/util.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/storage.js","../../../node_modules/.pnpm/@astrox+sdk-webview-bridge@0.1.41_@types+node@18.19.42_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview-bridge/build/buffer.js","../../../node_modules/.pnpm/@astrox+sdk-webview-bridge@0.1.41_@types+node@18.19.42_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview-bridge/build/cbor.js","../../../node_modules/.pnpm/@astrox+sdk-webview-bridge@0.1.41_@types+node@18.19.42_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview-bridge/build/util.js","../../../node_modules/.pnpm/@astrox+sdk-webview-bridge@0.1.41_@types+node@18.19.42_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview-bridge/build/adapter.js","../../../node_modules/.pnpm/@astrox+sdk-webview-bridge@0.1.41_@types+node@18.19.42_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview-bridge/build/bridge.js","../../../node_modules/.pnpm/@astrox+sdk-webview-bridge@0.1.41_@types+node@18.19.42_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview-bridge/build/method.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/types.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/methods.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/identity.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/errors.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/cbor.js","../../../node_modules/.pnpm/@astrox+sdk-webview@0.1.41_@peculiar+webcrypto@1.5.0_babel-plugin-macros@3.1.0/node_modules/@astrox/sdk-webview/build/handler.js","../../../node_modules/.pnpm/base64-arraybuffer@0.2.0/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/bech32@1.1.4/node_modules/bech32/index.js","../../../node_modules/.pnpm/bignumber.js@9.1.2/node_modules/bignumber.js/bignumber.js","../../../node_modules/.pnpm/bn.js@4.12.0/node_modules/bn.js/lib/bn.js","../../../node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/constants.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/decoder.asm.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/decoder.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/diagnose.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/encoder.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/index.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/simple.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/tagged.js","../../../node_modules/.pnpm/borc@2.1.2/node_modules/borc/src/utils.js","../../../node_modules/.pnpm/brorand@1.1.0/node_modules/brorand/index.js","../../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../../node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/callBound.js","../../../node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/index.js","../../../node_modules/.pnpm/clsx@1.2.1/node_modules/clsx/dist/clsx.m.js","../../../node_modules/.pnpm/copy-to-clipboard@3.3.3/node_modules/copy-to-clipboard/index.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/.pnpm/@babel+runtime@7.25.0/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/.pnpm/@babel+runtime@7.25.6/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../node_modules/.pnpm/big.js@6.2.1/node_modules/big.js/big.mjs","../../../node_modules/.pnpm/bignumber.js@9.1.2/node_modules/bignumber.js/bignumber.mjs","../../../node_modules/.pnpm/cbor-x@1.5.6/node_modules/cbor-x/decode.js","../../../node_modules/.pnpm/cbor-x@1.5.6/node_modules/cbor-x/encode.js","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["import { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { Delegation, DelegationChain, DelegationIdentity, Ed25519KeyIdentity } from \"@dfinity/identity\";\nimport { Principal } from \"@dfinity/principal\";\nexport function createConnection(identity, delegationIdentity, canisterId, interfaceFactory, actor, agent) {\n return new BaseConnection(identity, delegationIdentity, canisterId, interfaceFactory, actor, agent);\n}\nexport const requestDelegation = async (identity, { canisterId, date })=>{\n const sessionKey = Ed25519KeyIdentity.generate();\n const chain = await DelegationChain.create(identity, sessionKey.getPublicKey(), date || new Date(Date.parse('2100-01-01')), {\n targets: canisterId != undefined ? [\n Principal.fromText(canisterId)\n ] : undefined\n });\n return DelegationIdentity.fromDelegation(sessionKey, chain);\n};\nexport async function _createActor(interfaceFactory, canisterId, identity, host) {\n const agent = new HttpAgent({\n identity,\n host\n });\n if (process && (process.env?.NODE_ENV === 'development' || process.env?.II_ENV === 'development')) {\n await agent.fetchRootKey();\n }\n const actor = Actor.createActor(interfaceFactory, {\n agent,\n canisterId\n });\n return {\n actor,\n agent\n };\n}\nexport class BaseConnection {\n identity;\n delegationIdentity;\n canisterId;\n interfaceFactory;\n actor;\n agent;\n constructor(identity, delegationIdentity, canisterId, interfaceFactory, actor, agent){\n this.identity = identity;\n this.delegationIdentity = delegationIdentity;\n this.canisterId = canisterId;\n this.interfaceFactory = interfaceFactory;\n this.actor = actor;\n this.agent = agent;\n }\n async getActor() {\n throw new Error('Method not implemented.');\n }\n async _getActor(canisterId, interfaceFactory, date) {\n if (this.delegationIdentity) {\n for (const { delegation } of this.delegationIdentity.getDelegation().delegations){\n if (+new Date(Number(delegation.expiration / BigInt(1000000))) <= +Date.now()) {\n this.actor = undefined;\n break;\n }\n }\n }\n if (this.actor === undefined) {\n this.delegationIdentity = await requestDelegation(this.identity, {\n canisterId: this.canisterId ?? canisterId,\n date: date ?? undefined\n });\n this.actor = (await _createActor(interfaceFactory, this.canisterId ?? canisterId, this.delegationIdentity)).actor;\n }\n return this.actor;\n }\n}\nexport async function handleDelegation(message, key) {\n const delegations = message.delegations.map((signedDelegation)=>{\n return {\n delegation: new Delegation(signedDelegation.delegation.pubkey, signedDelegation.delegation.expiration, signedDelegation.delegation.targets),\n signature: signedDelegation.signature.buffer\n };\n });\n const delegationChain = DelegationChain.fromDelegations(delegations, message.userPublicKey.buffer);\n return {\n delegationChain,\n delegationIdentity: DelegationIdentity.fromDelegation(key, delegationChain)\n };\n}\nexport const executeWithLogging = async (func)=>{\n try {\n return await func();\n } catch (e) {\n console.log(e);\n throw e;\n }\n};\n","export default (({ IDL })=>{\n const AccountIdentifier = IDL.Text;\n const Duration = IDL.Record({\n secs: IDL.Nat64,\n nanos: IDL.Nat32\n });\n const ArchiveOptions = IDL.Record({\n max_message_size_bytes: IDL.Opt(IDL.Nat32),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat32),\n controller_id: IDL.Principal\n });\n const ICPTs = IDL.Record({\n e8s: IDL.Nat64\n });\n const LedgerCanisterInitPayload = IDL.Record({\n send_whitelist: IDL.Vec(IDL.Tuple(IDL.Principal)),\n minting_account: AccountIdentifier,\n transaction_window: IDL.Opt(Duration),\n max_message_size_bytes: IDL.Opt(IDL.Nat32),\n archive_options: IDL.Opt(ArchiveOptions),\n initial_values: IDL.Vec(IDL.Tuple(AccountIdentifier, ICPTs))\n });\n const AccountBalanceArgs = IDL.Record({\n account: AccountIdentifier\n });\n const CanisterId = IDL.Principal;\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField)\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n status_code: IDL.Nat16\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const BlockHeight = IDL.Nat64;\n const NotifyCanisterArgs = IDL.Record({\n to_subaccount: IDL.Opt(SubAccount),\n from_subaccount: IDL.Opt(SubAccount),\n to_canister: IDL.Principal,\n max_fee: ICPTs,\n block_height: BlockHeight\n });\n const Memo = IDL.Nat64;\n const TimeStamp = IDL.Record({\n timestamp_nanos: IDL.Nat64\n });\n const SendArgs = IDL.Record({\n to: AccountIdentifier,\n fee: ICPTs,\n memo: Memo,\n from_subaccount: IDL.Opt(SubAccount),\n created_at_time: IDL.Opt(TimeStamp),\n amount: ICPTs\n });\n return IDL.Service({\n account_balance_dfx: IDL.Func([\n AccountBalanceArgs\n ], [\n ICPTs\n ], [\n 'query'\n ]),\n get_nodes: IDL.Func([], [\n IDL.Vec(CanisterId)\n ], [\n 'query'\n ]),\n http_request: IDL.Func([\n HttpRequest\n ], [\n HttpResponse\n ], [\n 'query'\n ]),\n notify_dfx: IDL.Func([\n NotifyCanisterArgs\n ], [], []),\n send_dfx: IDL.Func([\n SendArgs\n ], [\n BlockHeight\n ], [])\n });\n});\nexport const init = ({ IDL })=>{\n const AccountIdentifier = IDL.Text;\n const Duration = IDL.Record({\n secs: IDL.Nat64,\n nanos: IDL.Nat32\n });\n const ArchiveOptions = IDL.Record({\n max_message_size_bytes: IDL.Opt(IDL.Nat32),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat32),\n controller_id: IDL.Principal\n });\n const ICPTs = IDL.Record({\n e8s: IDL.Nat64\n });\n const LedgerCanisterInitPayload = IDL.Record({\n send_whitelist: IDL.Vec(IDL.Tuple(IDL.Principal)),\n minting_account: AccountIdentifier,\n transaction_window: IDL.Opt(Duration),\n max_message_size_bytes: IDL.Opt(IDL.Nat32),\n archive_options: IDL.Opt(ArchiveOptions),\n initial_values: IDL.Vec(IDL.Tuple(AccountIdentifier, ICPTs))\n });\n return [\n LedgerCanisterInitPayload\n ];\n};\n","export const LEDGER_CANISTER_ID = 'ryjl3-tyaaa-aaaaa-aaaba-cai';\nexport const NNS_CANISTER_ID = 'qoctq-giaaa-aaaaa-aaaea-cai';\nexport const SUB_ACCOUNT_BYTE_LENGTH = 32;\nexport const CREATE_CANISTER_MEMO = BigInt(0x41455243);\nexport const TOP_UP_CANISTER_MEMO = BigInt(0x50555054);\nexport const TRANSACTION_FEE = BigInt(10_000);\nexport const NET_ID = {\n blockchain: 'Internet Computer',\n network: '00000000000000020101'\n};\nexport const ROSETTA_URL = 'https://rosetta-api.internetcomputer.org';\nexport const IC_EXPLORER = 'https://dashboard.internetcomputer.org';\nexport const IC_ROCKS = 'https://ic.rocks';\nexport const MAX_TRANSACTION_DECISION_MILSECONDS = 120000;\nexport const PRINCIPAL_REGEX = /(\\w{5}-){10}\\w{3}/;\nexport const ALPHANUM_REGEX = /^[a-zA-Z0-9]+$/;\nexport const CANISTER_REGEX = /(\\w{5}-){4}\\w{3}/;\nexport const CANISTER_MAX_LENGTH = 27;\nexport const ADDRESS_TYPES = {\n PRINCIPAL: 'principal',\n ACCOUNT: 'accountId',\n CANISTER: 'canister',\n ERC20: 'erc20',\n UNKNOWN: 'unknown'\n};\n","import { BaseConnection, executeWithLogging, _createActor } from \"./baseConnection\";\nimport ledger_idl from \"../canisters/ledger.idl\";\nimport { LEDGER_CANISTER_ID } from \"../utils/constants\";\nexport class LedgerConnection extends BaseConnection {\n identity;\n delegationIdentity;\n actor;\n agent;\n constructor(identity, delegationIdentity, actor, agent, legerCanisterId){\n super(identity, delegationIdentity, legerCanisterId ?? LEDGER_CANISTER_ID, ledger_idl, actor, agent);\n this.identity = identity;\n this.delegationIdentity = delegationIdentity;\n this.actor = actor;\n this.agent = agent;\n }\n static createConnection(identity, delegationIdentity, legerCanisterId, actor, agent) {\n return new LedgerConnection(identity, delegationIdentity, actor, agent, legerCanisterId ?? LEDGER_CANISTER_ID);\n }\n static async createActor(delegationIdentity, ledgerCanisterId, host) {\n const actor = await _createActor(ledger_idl, ledgerCanisterId ?? LEDGER_CANISTER_ID, delegationIdentity, host);\n return actor;\n }\n static async createConnectionWithII(identity, delegationIdentity, legerCanisterId) {\n const actorResult = await LedgerConnection.createActor(delegationIdentity);\n return LedgerConnection.createConnection(identity, delegationIdentity, legerCanisterId ?? LEDGER_CANISTER_ID, actorResult.actor, actorResult.agent);\n }\n static async actorGetBalance(actor, account) {\n const response = await executeWithLogging(()=>actor.account_balance_dfx({\n account\n }));\n return response.e8s;\n }\n static async actorSend(actor, { to, amount, sendOpts }) {\n const response = await executeWithLogging(()=>{\n const defaultFee = BigInt(10000);\n const defaultMemo = BigInt(Math.floor(Math.random() * 10000));\n const subAccount = sendOpts?.from_subaccount === undefined ? [] : Array.from([\n sendOpts?.from_subaccount\n ]);\n const createAtTime = sendOpts?.created_at_time === undefined ? [] : Array.from([\n {\n timestamp_nanos: BigInt(sendOpts?.created_at_time?.getTime())\n }\n ]);\n const sendArgs = {\n to: to,\n fee: {\n e8s: sendOpts?.fee ?? defaultFee\n },\n amount: {\n e8s: amount\n },\n memo: sendOpts?.memo ?? defaultMemo,\n from_subaccount: subAccount,\n created_at_time: createAtTime\n };\n return actor.send_dfx(sendArgs);\n });\n return response;\n }\n async getLedgerActor(ledgerCanisterId) {\n const actor = await this._getActor(ledgerCanisterId ?? LEDGER_CANISTER_ID, ledger_idl);\n return actor;\n }\n async getBalance(account) {\n const actor = await this.getLedgerActor();\n const response = await executeWithLogging(()=>actor.account_balance_dfx({\n account\n }));\n return response.e8s;\n }\n async send({ to, amount, sendOpts }) {\n const actor = await this.getLedgerActor();\n const response = await executeWithLogging(()=>{\n const defaultFee = BigInt(10000);\n const defaultMemo = BigInt(Math.floor(Math.random() * 10000));\n const subAccount = sendOpts?.from_subaccount === undefined ? [] : Array.from([\n sendOpts?.from_subaccount\n ]);\n const createAtTime = sendOpts?.created_at_time === undefined ? [] : Array.from([\n {\n timestamp_nanos: BigInt(sendOpts?.created_at_time?.getTime())\n }\n ]);\n const sendArgs = {\n to: to,\n fee: {\n e8s: sendOpts?.fee ?? defaultFee\n },\n amount: {\n e8s: amount\n },\n memo: sendOpts?.memo ?? defaultMemo,\n from_subaccount: subAccount,\n created_at_time: createAtTime\n };\n return actor.send_dfx(sendArgs);\n });\n return response;\n }\n}\n","export var WalletType;\n(function(WalletType) {\n WalletType[\"nns\"] = \"nns\";\n WalletType[\"plug\"] = \"plug\";\n WalletType[\"stoic\"] = \"stoic\";\n WalletType[\"me\"] = \"me\";\n WalletType[\"unknown\"] = \"unknown\";\n})(WalletType || (WalletType = {}));\n","import { Principal } from \"@dfinity/principal\";\nimport { sha224 } from \"js-sha256\";\nimport { Buffer } from \"buffer\";\nimport crc from \"crc\";\nimport { ALPHANUM_REGEX, CANISTER_MAX_LENGTH, SUB_ACCOUNT_BYTE_LENGTH } from \"./constants\";\nexport const uint8ArrayToBigInt = (array)=>{\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n if (typeof view.getBigUint64 === 'function') {\n return view.getBigUint64(0);\n } else {\n const high = BigInt(view.getUint32(0));\n const low = BigInt(view.getUint32(4));\n return (high << BigInt(32)) + low;\n }\n};\nconst TWO_TO_THE_32 = BigInt(1) << BigInt(32);\nexport const bigIntToUint8Array = (value)=>{\n const array = new Uint8Array(8);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n if (typeof view.setBigUint64 === 'function') {\n view.setBigUint64(0, value);\n } else {\n view.setUint32(0, Number(value >> BigInt(32)));\n view.setUint32(4, Number(value % TWO_TO_THE_32));\n }\n return array;\n};\nexport const arrayBufferToArrayOfNumber = (buffer)=>{\n const typedArray = new Uint8Array(buffer);\n return Array.from(typedArray);\n};\nexport const arrayOfNumberToUint8Array = (numbers)=>{\n return new Uint8Array(numbers);\n};\nexport const arrayOfNumberToArrayBuffer = (numbers)=>{\n return arrayOfNumberToUint8Array(numbers).buffer;\n};\nexport const arrayBufferToNumber = (buffer)=>{\n const view = new DataView(buffer);\n return view.getUint32(view.byteLength - 4);\n};\nexport const numberToArrayBuffer = (value, byteLength)=>{\n const buffer = new ArrayBuffer(byteLength);\n new DataView(buffer).setUint32(byteLength - 4, value);\n return buffer;\n};\nexport const asciiStringToByteArray = (text)=>{\n return Array.from(text).map((c)=>c.charCodeAt(0));\n};\nexport const toSubAccountId = (subAccount)=>{\n const bytes = arrayOfNumberToArrayBuffer(subAccount);\n return arrayBufferToNumber(bytes);\n};\nexport const fromSubAccountId = (subAccountId)=>{\n const buffer = numberToArrayBuffer(subAccountId, SUB_ACCOUNT_BYTE_LENGTH);\n return arrayBufferToArrayOfNumber(buffer);\n};\nexport const accountIdentifierToBytes = (accountIdentifier)=>{\n return Uint8Array.from(Buffer.from(accountIdentifier, 'hex')).subarray(4);\n};\nexport const accountIdentifierFromBytes = (accountIdentifier)=>{\n return Buffer.from(accountIdentifier).toString('hex');\n};\nexport const principalToAccountIdentifier = (principal, subAccount)=>{\n const padding = asciiStringToByteArray('\\x0Aaccount-id');\n const shaObj = sha224.create();\n shaObj.update([\n ...padding,\n ...principal.toUint8Array(),\n ...subAccount ?? Array(32).fill(0)\n ]);\n const hash = new Uint8Array(shaObj.array());\n const checksum = calculateCrc32(hash);\n const bytes = new Uint8Array([\n ...checksum,\n ...hash\n ]);\n return toHexString(bytes);\n};\nexport const principalToSubAccount = (principal)=>{\n const bytes = principal.toUint8Array();\n const subAccount = new Uint8Array(32);\n subAccount[0] = bytes.length;\n subAccount.set(bytes, 1);\n return subAccount;\n};\nexport const stringToAccountIdentifier = (str)=>{\n try {\n if (str.length === 64) {\n return str;\n }\n if (str.length === 63) {\n return principalToAccountIdentifier(Principal.fromText(str));\n }\n return undefined;\n } catch (error) {\n return undefined;\n }\n};\nconst toHexString = (bytes)=>bytes.reduce((str, byte)=>str + byte.toString(16).padStart(2, '0'), '');\nexport const calculateCrc32 = (bytes)=>{\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, crc.crc32(Buffer.from(bytes)), false);\n return Buffer.from(checksumArrayBuf);\n};\nexport const E8S_PER_ICP = 100_000_000;\nexport var TokenSymbol;\n(function(TokenSymbol) {\n TokenSymbol[\"ICP\"] = \"ICP\";\n})(TokenSymbol || (TokenSymbol = {}));\nexport const getDecimalFromSymbol = (sym)=>{\n switch(sym){\n case TokenSymbol.ICP:\n return 8;\n default:\n return 8;\n }\n};\nexport const formatAssetBySymbol = (_amount, symbol)=>{\n const balanceString = balanceToString(_amount, getDecimalFromSymbol(symbol));\n const amount = Number(balanceString.total);\n const tokenMap = [\n {\n ICP: {\n amount: amount,\n balanceString,\n symbol: 'ICP'\n }\n }\n ];\n const found = tokenMap.find((v)=>v[symbol] !== undefined);\n return found?.[symbol];\n};\nexport const parseBalance = (balance)=>{\n return (parseInt(balance.value, 10) / 10 ** balance.decimals).toString();\n};\nexport const balanceFromString = (balance, decimal = 8)=>{\n const list = balance.split('.');\n const aboveZero = list[0];\n const aboveZeroBigInt = BigInt(aboveZero) * BigInt(1 * 10 ** decimal);\n let belowZeroBigInt = BigInt(0);\n const belowZero = list[1];\n if (belowZero !== undefined) {\n belowZeroBigInt = BigInt(belowZero.substring(0, decimal).padEnd(decimal, '0'));\n }\n return aboveZeroBigInt + belowZeroBigInt;\n};\nexport const balanceToString = (balance, decimal = 8)=>{\n const balanceString = balance.toString(10);\n const balanceStringLength = balanceString.length;\n let aboveZero = '0';\n let belowZero = '0'.padEnd(decimal, '0');\n if (balanceStringLength > decimal) {\n belowZero = balanceString.substring(balanceStringLength - decimal, balanceStringLength);\n aboveZero = balanceString.substring(0, balanceStringLength - decimal);\n } else {\n belowZero = balanceString.padStart(decimal, '0');\n }\n const formatAboveZero = String(aboveZero).replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return {\n total: aboveZero + '.' + belowZero,\n aboveZero,\n belowZero,\n formatAboveZero\n };\n};\nexport const validateAccountId = (text)=>text.length === 64 && ALPHANUM_REGEX.test(text);\nexport const validatePrincipalId = (text)=>{\n try {\n return text === Principal.fromText(text).toString();\n } catch (e) {\n return false;\n }\n};\nexport const validateCanisterId = (text)=>{\n try {\n return text.length <= CANISTER_MAX_LENGTH && validatePrincipalId(text);\n } catch (e) {\n return false;\n }\n};\nexport var AddressType;\n(function(AddressType) {\n AddressType[\"PRINCIPAL\"] = 'principal';\n AddressType[\"ACCOUNT\"] = 'accountId';\n AddressType[\"CANISTER\"] = 'canister';\n AddressType[\"ERC20\"] = 'erc20';\n AddressType[\"INVALID\"] = 'invalid';\n})(AddressType || (AddressType = {}));\nexport const getAddressType = (text)=>{\n try {\n if (validateAccountId(text)) {\n return AddressType.ACCOUNT;\n } else if (validatePrincipalId(text)) {\n return AddressType.PRINCIPAL;\n } else if (validateCanisterId(text)) {\n return AddressType.CANISTER;\n }\n return AddressType.INVALID;\n } catch (error) {\n throw error;\n }\n};\n","export var PermissionsType;\n(function(PermissionsType) {\n PermissionsType[\"identity\"] = 'permissions-identity';\n PermissionsType[\"wallet\"] = 'permissions-wallet';\n})(PermissionsType || (PermissionsType = {}));\nexport var SignerMessageKind;\n(function(SignerMessageKind) {\n SignerMessageKind[\"client\"] = 'signer-client';\n SignerMessageKind[\"ready\"] = 'signer-ready';\n SignerMessageKind[\"success\"] = 'signer-client-success';\n SignerMessageKind[\"fail\"] = 'signer-client-failure';\n})(SignerMessageKind || (SignerMessageKind = {}));\nexport var TransactionMessageKind;\n(function(TransactionMessageKind) {\n TransactionMessageKind[\"client\"] = 'transaction-client';\n TransactionMessageKind[\"ready\"] = 'transaction-ready';\n TransactionMessageKind[\"success\"] = 'transaction-client-success';\n TransactionMessageKind[\"fail\"] = 'transaction-client-failure';\n})(TransactionMessageKind || (TransactionMessageKind = {}));\n","export const KEY_ICSTORAGE_KEY = 'identity';\nexport const KEY_ICSTORAGE_DELEGATION = 'delegation';\nexport const KEY_ICSTORAGE_WALLET = 'wallet';\nexport const KEY_DELEGATION_PARAMS = 'delegation_params';\nexport const IDENTITY_PROVIDER_DEFAULT = 'https://identity.ic0.app';\nexport const IDENTITY_PROVIDER_ENDPOINT = '#authorize';\nexport async function _deleteStorage(storage) {\n await storage.remove(KEY_ICSTORAGE_KEY);\n await storage.remove(KEY_ICSTORAGE_DELEGATION);\n await storage.remove(KEY_ICSTORAGE_WALLET);\n await storage.remove(KEY_DELEGATION_PARAMS);\n}\nexport class ICStorage {\n prefix;\n _localStorage;\n constructor(prefix = 'astrox-', _localStorage){\n this.prefix = prefix;\n this._localStorage = _localStorage;\n }\n get(key) {\n return Promise.resolve(this._getICStorage().getItem(this.prefix + key));\n }\n set(key, value) {\n this._getICStorage().setItem(this.prefix + key, value);\n return Promise.resolve();\n }\n remove(key) {\n this._getICStorage().removeItem(this.prefix + key);\n return Promise.resolve();\n }\n _getICStorage() {\n if (this._localStorage) {\n return this._localStorage;\n }\n const ls = typeof window === 'undefined' ? typeof global === 'undefined' ? typeof self === 'undefined' ? undefined : self.localStorage : global.localStorage : window.localStorage;\n if (!ls) {\n throw new Error('Could not find local storage.');\n }\n return ls;\n }\n}\n","import { AnonymousIdentity } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Delegation, DelegationChain, DelegationIdentity, Ed25519KeyIdentity, isDelegationValid } from \"@dfinity/identity\";\nimport { PermissionsType } from \"../types/index\";\nimport { IDENTITY_PROVIDER_DEFAULT, IDENTITY_PROVIDER_ENDPOINT, KEY_ICSTORAGE_DELEGATION, KEY_ICSTORAGE_KEY, KEY_ICSTORAGE_WALLET, ICStorage, _deleteStorage, KEY_DELEGATION_PARAMS } from \"./icStorage\";\nexport class AuthClient {\n _identity;\n _key;\n _chain;\n _storage;\n _wallet;\n _appId;\n _delegationIdentity;\n _delegationTargets;\n _lastRequest;\n _confirm;\n _idpWindowOption;\n _idpWindow;\n _eventHandler;\n static async create(options = {\n appId: ''\n }) {\n const storage = options.storage ?? new ICStorage('astrox-');\n let key = null;\n if (options.identity) {\n key = options.identity;\n } else {\n const maybeIdentityStorage = await storage.get(KEY_ICSTORAGE_KEY);\n if (maybeIdentityStorage) {\n try {\n key = Ed25519KeyIdentity.fromJSON(maybeIdentityStorage);\n } catch (e) {}\n }\n }\n let identity = new AnonymousIdentity();\n let chain = null;\n let wallet = undefined;\n let delegationTargets = [];\n let lastRequest = undefined;\n let confirm = true;\n let delegationIdentity = undefined;\n if (key) {\n try {\n const chainStorage = await storage.get(KEY_ICSTORAGE_DELEGATION);\n let walletString = await storage.get(KEY_ICSTORAGE_WALLET);\n if (walletString) {\n wallet = JSON.parse(walletString);\n }\n if (chainStorage) {\n chain = DelegationChain.fromJSON(chainStorage);\n chain.delegations.forEach((signedDelegation)=>{\n const targets = signedDelegation.delegation.targets && signedDelegation.delegation.targets.length > 0 ? signedDelegation.delegation.targets : undefined;\n if (targets) {\n delegationTargets = [\n ...new Set(delegationTargets.concat(targets.map((e)=>e.toText())))\n ];\n }\n });\n if (!isDelegationValid(chain)) {\n await _deleteStorage(storage);\n key = null;\n } else {\n identity = DelegationIdentity.fromDelegation(key, chain);\n }\n }\n } catch (e) {\n console.error(e);\n await _deleteStorage(storage);\n key = null;\n }\n }\n let delegationParams;\n const delegationParamsString = await storage.get(KEY_DELEGATION_PARAMS);\n if (delegationParamsString) {\n delegationParams = JSON.parse(delegationParamsString);\n lastRequest = {\n ...delegationParams.lastRequest,\n maxTimeToLive: delegationParams.lastRequest.maxTimeToLive !== undefined ? BigInt(delegationParams.lastRequest.maxTimeToLive) : undefined\n };\n confirm = delegationParams.confirm;\n delegationIdentity = DelegationIdentity.fromDelegation(key, chain);\n }\n const ret = new this(identity, key, chain, storage, wallet, options.appId, delegationIdentity, delegationTargets, lastRequest, confirm, options.idpWindowOption);\n return ret;\n }\n constructor(_identity, _key, _chain, _storage, _wallet, _appId, _delegationIdentity, _delegationTargets = [], _lastRequest, _confirm, _idpWindowOption, _idpWindow, _eventHandler){\n this._identity = _identity;\n this._key = _key;\n this._chain = _chain;\n this._storage = _storage;\n this._wallet = _wallet;\n this._appId = _appId;\n this._delegationIdentity = _delegationIdentity;\n this._delegationTargets = _delegationTargets;\n this._lastRequest = _lastRequest;\n this._confirm = _confirm;\n this._idpWindowOption = _idpWindowOption;\n this._idpWindow = _idpWindow;\n this._eventHandler = _eventHandler;\n }\n async _handleSuccess(message, onSuccess) {\n if (message['identity'] !== undefined) {\n const idDelegations = message['identity'].delegations.map((signedDelegation)=>{\n const targets = signedDelegation.delegation.targets && signedDelegation.delegation.targets.length > 0 ? signedDelegation.delegation.targets?.map((t)=>Principal.fromText(t)) : undefined;\n if (targets) {\n this._delegationTargets = [\n ...new Set(this._delegationTargets.concat(targets.map((e)=>e.toText())))\n ];\n }\n return {\n delegation: new Delegation(signedDelegation.delegation.pubkey.buffer, signedDelegation.delegation.expiration, targets),\n signature: signedDelegation.signature.buffer\n };\n });\n const idDelegationChain = DelegationChain.fromDelegations(idDelegations, message['identity'].userPublicKey.buffer);\n this._chain = idDelegationChain;\n this._wallet = message['wallet'];\n this._confirm = message['confirm'];\n } else {\n const iiDelegations = message.delegations.map((signedDelegation)=>{\n const targets = signedDelegation.delegation.targets && signedDelegation.delegation.targets.length > 0 ? signedDelegation.delegation.targets?.map((t)=>Principal.fromText(t)) : undefined;\n if (targets) {\n this._delegationTargets = [\n ...new Set(this._delegationTargets.concat(targets.map((e)=>e.toText())))\n ];\n }\n return {\n delegation: new Delegation(signedDelegation.delegation.pubkey.buffer, signedDelegation.delegation.expiration, targets),\n signature: signedDelegation.signature.buffer\n };\n });\n const iiDelegationChain = DelegationChain.fromDelegations(iiDelegations, message.userPublicKey.buffer);\n this._chain = iiDelegationChain;\n }\n const key = this._key;\n if (!key) {\n return this;\n }\n this._delegationIdentity = DelegationIdentity.fromDelegation(key, this._chain);\n this._identity = this._delegationIdentity;\n this._idpWindow?.close();\n await onSuccess?.();\n this._removeEventListener();\n return this;\n }\n getIdentity() {\n return this._identity;\n }\n getLastRequest() {\n return this._lastRequest;\n }\n getDelegationIdentity() {\n return this._delegationIdentity;\n }\n getInnerKey() {\n return this._key;\n }\n getDelegationChain() {\n return this._chain;\n }\n get wallet() {\n return this._wallet;\n }\n getConfirm() {\n return this._confirm;\n }\n setWallet(data) {\n this._wallet = data;\n }\n getDelegateTargets() {\n return this._delegationTargets;\n }\n setDelegationTargets(targets) {\n this._delegationTargets = [\n ...new Set(this._delegationTargets.concat(targets))\n ];\n }\n async isAuthenticated() {\n return !this.getIdentity().getPrincipal().isAnonymous() && this._chain !== null;\n }\n async login(options) {\n let key = this._key;\n if (!key) {\n key = Ed25519KeyIdentity.generate();\n this._key = key;\n await this._storage.set(KEY_ICSTORAGE_KEY, JSON.stringify(key));\n }\n const identityProviderUrl = new URL(options?.identityProvider?.toString() || IDENTITY_PROVIDER_DEFAULT);\n identityProviderUrl.hash = IDENTITY_PROVIDER_ENDPOINT;\n this._idpWindow?.close();\n this._removeEventListener();\n this._idpWindow = window.open(identityProviderUrl.toString(), 'idpWindow', this._idpWindowOption) ?? undefined;\n return new Promise((resolve, reject)=>{\n this._eventHandler = this._getEventHandler(identityProviderUrl, resolve, reject, options);\n window.addEventListener('message', this._eventHandler);\n });\n }\n _getEventHandler(identityProviderUrl, resolve, reject, options) {\n return async (event)=>{\n if (event.origin !== identityProviderUrl.origin) {\n return;\n }\n const message = event.data;\n switch(message.kind){\n case 'authorize-ready':\n {\n const request = options?.authType === 'authorize-append' && this._lastRequest ? {\n ...this._lastRequest,\n delegationTargets: options?.delegationTargets ?? [],\n sessionPublicKey: new Uint8Array(this._key?.getPublicKey().toDer()),\n kind: 'authorize-append'\n } : {\n kind: 'authorize-client',\n sessionPublicKey: new Uint8Array(this._key?.getPublicKey().toDer()),\n maxTimeToLive: options?.maxTimeToLive,\n permissions: options?.permissions ?? [\n PermissionsType.identity\n ],\n delegationTargets: options?.delegationTargets ?? [],\n delegationModes: options?.delegationModes,\n appId: this._appId,\n noUnify: options?.noUnify,\n host: options?.customDomain || options?.host\n };\n this._lastRequest = request;\n this._idpWindow?.postMessage(request, identityProviderUrl.origin);\n break;\n }\n case 'authorize-client-success':\n try {\n resolve(await this._handleSuccess(message, options?.onSuccess));\n if (this._chain) {\n await this._storage.set(KEY_ICSTORAGE_DELEGATION, JSON.stringify(this._chain.toJSON()));\n }\n if (this._wallet !== undefined) {\n await this._storage.set(KEY_ICSTORAGE_WALLET, JSON.stringify(this._wallet));\n }\n if (this._lastRequest !== undefined) {\n const params = {\n lastRequest: {\n ...this._lastRequest,\n maxTimeToLive: this._lastRequest.maxTimeToLive?.toString()\n },\n confirm: this._confirm\n };\n await this._storage.set(KEY_DELEGATION_PARAMS, JSON.stringify(params));\n }\n } catch (err) {\n reject(this._handleFailure(err.message, options?.onError));\n }\n break;\n case 'authorize-client-failure':\n reject(this._handleFailure(message.text, options?.onError));\n break;\n default:\n break;\n }\n };\n }\n _handleFailure(errorMessage, onError) {\n this._idpWindow?.close();\n onError?.(errorMessage);\n this._removeEventListener();\n return errorMessage;\n }\n _removeEventListener() {\n if (this._eventHandler) {\n window.removeEventListener('message', this._eventHandler);\n }\n this._eventHandler = undefined;\n }\n async logout(options = {}) {\n _deleteStorage(this._storage);\n this._identity = new AnonymousIdentity();\n this._key = null;\n this._chain = null;\n this._delegationTargets = [];\n this._wallet = undefined;\n this._delegationIdentity = undefined;\n this._lastRequest = undefined;\n this._confirm = undefined;\n if (options.returnTo) {\n try {\n window.history.pushState({}, '', options.returnTo);\n } catch (e) {\n window.location.href = options.returnTo;\n }\n }\n }\n}\n","export class ICWindow {\n _window;\n _eventHandler;\n _removeEventListener() {\n if (this._eventHandler) {\n window.removeEventListener('message', this._eventHandler);\n }\n this._eventHandler = undefined;\n }\n _openWindow(url, target, feature) {\n this._remove();\n this._window = window.open(url, target ?? 'icWindow', feature) ?? undefined;\n }\n _remove() {\n this._window?.close();\n this._removeEventListener();\n }\n}\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { AuthClient } from \"./icAuthClient\";\nimport { IDENTITY_PROVIDER_DEFAULT } from \"./icStorage\";\nimport { ICWindow } from \"./icWindow\";\nimport { LedgerConnection } from \"../connections/ledgerConnection\";\nimport { PermissionsType, SignerMessageKind, TransactionMessageKind } from \"../types/index\";\nconst days = BigInt(1);\nconst hours = BigInt(24);\nconst nanoseconds = BigInt(3600000000000);\nconst WALLET_PROVIDER_DEFAULT = 'https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app';\nconst WALLET_PROVIDER_ENDPOINT = '#transaction';\nconst SIGNER_PROVIDER_DEFAULT = 'https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app';\nconst SIGNER_PROVIDER_ENDPOINT = '#signer';\nfunction targetsFilter(arr) {\n return arr.filter((value)=>typeof value === 'string' && value.trim());\n}\nconst FRAME_SETTING = 'height=600, width=800, top=0, right=0, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no';\nconst FRAME_SETTING_PAYMENT = 'height=600, width=480, top=0, right=0, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no';\nexport class IC extends ICWindow {\n #authClient;\n #agent;\n #localLedger;\n #walletProvider;\n #signerProvider;\n #useFrame = false;\n #loginOption;\n #connectOptions;\n constructor(authClient, agent){\n super();\n this.#authClient = authClient;\n this.#agent = agent;\n this.injectWindow();\n }\n static async create(config) {\n let delegationTargets = [\n 'ryjl3-tyaaa-aaaaa-aaaba-cai'\n ];\n if (config && config?.delegationTargets) {\n delegationTargets = [\n ...new Set(delegationTargets.concat(config?.delegationTargets))\n ];\n }\n if (config && config?.ledgerCanisterId) {\n delegationTargets = [\n ...new Set(delegationTargets.concat(config?.ledgerCanisterId))\n ];\n }\n if (config && config?.whitelist) {\n delegationTargets = [\n ...new Set(delegationTargets.concat(config?.whitelist))\n ];\n }\n delegationTargets = targetsFilter([\n ...new Set(delegationTargets)\n ]);\n const authClient = await AuthClient.create({\n ...config,\n delegationTargets,\n idpWindowOption: config.useFrame === true ? FRAME_SETTING : undefined\n });\n const identity = authClient.getIdentity();\n const agent = new HttpAgent({\n identity,\n host: config.host ?? window.location.origin\n });\n if (config.dev) {\n await agent.fetchRootKey();\n }\n const newIC = new IC(authClient, agent);\n newIC._setWalletProvider(config?.walletProviderUrl);\n newIC._setSignerProvider(config?.signerProviderUrl);\n newIC._setUseFrame(config?.useFrame);\n if (await newIC.isAuthenticated()) {\n await newIC.handleAuthenticated({\n ledgerCanisterId: config.ledgerCanisterId ?? 'ryjl3-tyaaa-aaaaa-aaaba-cai',\n ledgerHost: config.ledgerHost ?? 'https://boundary.ic0.app/'\n });\n await config?.onAuthenticated?.(newIC);\n }\n const provider = config?.identityProvider ?? IDENTITY_PROVIDER_DEFAULT;\n newIC._setConnectOptions({\n ...config,\n dev: config.dev,\n delegationTargets\n });\n newIC._setLoginOptions({\n ...config,\n identityProvider: provider,\n maxTimeToLive: config?.maxTimeToLive ?? days * hours * nanoseconds,\n permissions: config?.permissions ?? [\n PermissionsType.identity\n ],\n delegationTargets\n });\n return newIC;\n }\n async connect(connectOptions) {\n let delegationModes = connectOptions.delegationModes;\n if (delegationModes && delegationModes.length) {\n const modes = [\n 'global',\n 'domain'\n ];\n const hasNotInclude = delegationModes.some((v)=>!modes.includes(v));\n if (hasNotInclude) {\n throw new Error('`delegationModes` elements only support `global` and `private`');\n }\n delegationModes = [\n ...new Set(delegationModes)\n ];\n }\n const provider = connectOptions?.identityProvider ?? IDENTITY_PROVIDER_DEFAULT;\n let delegationTargets = [\n 'ryjl3-tyaaa-aaaaa-aaaba-cai'\n ];\n if (connectOptions && connectOptions?.delegationTargets) {\n delegationTargets = [\n ...new Set(delegationTargets.concat(connectOptions?.delegationTargets))\n ];\n }\n if (connectOptions && connectOptions?.ledgerCanisterId) {\n delegationTargets = [\n ...new Set(delegationTargets.concat(connectOptions?.ledgerCanisterId))\n ];\n }\n if (connectOptions && connectOptions?.whitelist) {\n delegationTargets = [\n ...new Set(delegationTargets.concat(connectOptions?.whitelist))\n ];\n }\n delegationTargets = targetsFilter([\n ...new Set(delegationTargets)\n ]);\n this._setConnectOptions({\n ...connectOptions,\n delegationTargets\n });\n this._setLoginOptions({\n ...connectOptions,\n identityProvider: provider,\n maxTimeToLive: connectOptions?.maxTimeToLive ?? days * hours * nanoseconds,\n permissions: connectOptions?.permissions ?? [\n PermissionsType.identity\n ],\n delegationTargets,\n delegationModes\n });\n await new Promise((resolve, reject)=>{\n this.getAuthClient().login({\n ...this.#loginOption,\n onSuccess: async ()=>{\n const identity = this.getAuthClient().getIdentity();\n this.#agent = new HttpAgent({\n identity,\n host: connectOptions.host ?? window.location.origin\n });\n if (connectOptions.dev) {\n await this.#agent.fetchRootKey();\n }\n await this.handleAuthenticated({\n ledgerCanisterId: connectOptions.ledgerCanisterId,\n ledgerHost: connectOptions.ledgerHost ?? 'https://boundary.ic0.app/'\n });\n connectOptions?.onSuccess ? await connectOptions?.onSuccess?.() : await connectOptions?.onAuthenticated?.(this);\n resolve(this);\n },\n onError: this.handleError\n });\n });\n return this;\n }\n async isAuthenticated() {\n const result = await this.#authClient.isAuthenticated();\n return result;\n }\n get identity() {\n return this.#authClient.getIdentity();\n }\n get principal() {\n return this.identity.getPrincipal();\n }\n get wallet() {\n return this.#authClient.wallet;\n }\n get delegationTargets() {\n return this.#authClient.getDelegateTargets();\n }\n _setWalletProvider(provider) {\n this.#walletProvider = provider;\n }\n _setSignerProvider(provider) {\n this.#signerProvider = provider;\n }\n _setUseFrame(useFrame) {\n this.#useFrame = useFrame;\n }\n _setConnectOptions(options) {\n this.#connectOptions = options;\n }\n _setLoginOptions(options) {\n this.#loginOption = options;\n }\n get loginOption() {\n return this.#loginOption;\n }\n get connectOptions() {\n return this.#connectOptions;\n }\n getAuthClient() {\n return this.#authClient;\n }\n disconnect = async (options = {})=>{\n this.#agent = undefined;\n this.#localLedger = undefined;\n this.#walletProvider = undefined;\n this.#signerProvider = undefined;\n this.#loginOption = undefined;\n this.#connectOptions = undefined;\n await this.getAuthClient().logout(options);\n };\n queryBalance = async ()=>{\n if (this.wallet === undefined) {\n throw Error('Wallet address is not found');\n }\n if (this.#localLedger === undefined) {\n throw Error('Ledger connection failed');\n }\n const result = await this.#localLedger?.getBalance(this.wallet.accountId);\n return result;\n };\n handleAuthenticated = async ({ ledgerCanisterId, ledgerHost })=>{\n const actorResult = await LedgerConnection.createActor(this.getAuthClient().getDelegationIdentity(), ledgerCanisterId, ledgerHost);\n this.#localLedger = LedgerConnection.createConnection(this.getAuthClient().getInnerKey(), this.getAuthClient().getDelegationIdentity(), ledgerCanisterId, actorResult.actor, this.#agent);\n };\n injectWindow() {\n if (window.ic !== undefined) {\n window.ic.astrox = this;\n } else {\n window.ic = {\n astrox: this\n };\n }\n }\n async _appendAuth(canisterId) {\n const currentTargets = targetsFilter(this.#authClient.getDelegateTargets());\n if (currentTargets.includes(canisterId)) {\n return this;\n } else {\n let newTargets = [\n ...currentTargets,\n canisterId\n ];\n newTargets = targetsFilter(newTargets);\n this._setConnectOptions({\n ...this.#connectOptions,\n delegationTargets: newTargets\n });\n this._setLoginOptions({\n ...this.#loginOption,\n delegationTargets: newTargets\n });\n return await new Promise((resolve, reject)=>{\n this.getAuthClient().login({\n ...this.#loginOption,\n authType: 'authorize-append',\n delegationTargets: newTargets,\n onSuccess: async ()=>{\n const identity = this.getAuthClient().getIdentity();\n this.#agent = new HttpAgent({\n identity,\n host: this.#connectOptions !== undefined ? this.#connectOptions.host : window.location.origin\n });\n if (this.#connectOptions?.dev) {\n await this.#agent.fetchRootKey();\n }\n await this.handleAuthenticated({\n ledgerCanisterId: this.#connectOptions?.ledgerCanisterId,\n ledgerHost: this.#connectOptions?.ledgerHost ?? 'https://boundary.ic0.app/'\n });\n await this.#connectOptions?.onSuccess ? await this.#connectOptions?.onSuccess?.() : await this.#connectOptions?.onAuthenticated?.(this);\n resolve(this);\n },\n onError: this.handleError\n });\n });\n }\n }\n handleError(error) {\n throw new Error(error);\n }\n createActor = async (idlFactory, canisterId)=>{\n if (this.#authClient.getConfirm() === true && canisterId !== undefined && canisterId !== '') {\n await this._appendAuth(canisterId);\n }\n if (this.#connectOptions?.dev) {\n await this.#agent?.fetchRootKey();\n }\n return Actor.createActor(idlFactory, {\n agent: this.#agent,\n canisterId\n });\n };\n requestTransfer = async (options)=>{\n const memo = options.sendOpts?.memo;\n if (memo) {\n const standard = options.standard.toUpperCase();\n if (standard === 'EXT' && !Array.isArray(memo)) {\n throw new Error('`sendOpts.memo` only supports `Array` type when the standard is `EXT`');\n }\n if (standard === 'ICP' && typeof memo !== 'bigint') {\n throw new Error('`sendOpts.memo` only supports `bigint` type when the standard is `ICP`');\n }\n }\n console.assert(this.wallet !== undefined, 'wallet address is not found');\n const walletProviderUrl = new URL(options?.walletProvider?.toString() || this.#walletProvider || WALLET_PROVIDER_DEFAULT);\n walletProviderUrl.hash = WALLET_PROVIDER_ENDPOINT;\n this._openWindow(walletProviderUrl.toString(), 'icWindow', this.#useFrame ? FRAME_SETTING_PAYMENT : undefined);\n return new Promise((resolve, reject)=>{\n this._eventHandler = this._getEventHandler(walletProviderUrl, resolve, reject, options);\n window.addEventListener('message', this._eventHandler);\n });\n };\n signMessage = async (options)=>{\n console.assert(this.wallet !== undefined, 'wallet address is not found');\n const signerProviderUrl = new URL(options?.signerProvider?.toString() || this.#signerProvider || SIGNER_PROVIDER_DEFAULT);\n signerProviderUrl.hash = SIGNER_PROVIDER_ENDPOINT;\n this._openWindow(signerProviderUrl.toString(), 'icWindow', this.#useFrame ? FRAME_SETTING_PAYMENT : undefined);\n return new Promise((resolve, reject)=>{\n this._eventHandler = this._getSignerHandler(signerProviderUrl, resolve, reject, options);\n window.addEventListener('message', this._eventHandler);\n });\n };\n _getSignerHandler(walletProviderUrl, resolve, reject, options) {\n return async (event)=>{\n if (event.origin !== walletProviderUrl.origin) {\n return;\n }\n const message = event.data;\n switch(message.kind){\n case SignerMessageKind.ready:\n {\n const request = {\n kind: SignerMessageKind.client,\n from: options.from ?? this.wallet.accountId,\n message: options.message,\n maxTimeout: options.maxTimeout ?? 90,\n successTimeout: options.successTimeout ?? 10\n };\n this._window?.postMessage(request, walletProviderUrl.origin);\n break;\n }\n case SignerMessageKind.success:\n try {\n resolve(this._handleSuccess(message, options.onSuccess, options.successTimeout ?? 10));\n } catch (err) {\n reject(this._handleFailure(err.message, options.onError));\n }\n break;\n case SignerMessageKind.fail:\n reject(this._handleFailure(message.text, options.onError));\n break;\n default:\n break;\n }\n };\n }\n _getEventHandler(walletProviderUrl, resolve, reject, options) {\n return async (event)=>{\n if (event.origin !== walletProviderUrl.origin) {\n return;\n }\n const message = event.data;\n switch(message.kind){\n case TransactionMessageKind.ready:\n {\n const request = {\n kind: TransactionMessageKind.client,\n sendData: {\n ...options\n }\n };\n this._window?.postMessage(request, walletProviderUrl.origin);\n break;\n }\n case TransactionMessageKind.success:\n try {\n resolve(this._handleSuccess(message, options.onSuccess, options.successTimeout ?? 10));\n } catch (err) {\n reject(this._handleFailure(err.message, options.onError));\n }\n break;\n case TransactionMessageKind.fail:\n reject(this._handleFailure(message.text, options.onError));\n break;\n default:\n break;\n }\n };\n }\n _handleFailure(errorMessage, onError) {\n this._remove();\n onError?.(errorMessage);\n return errorMessage;\n }\n _handleSuccess(value, onSuccess, delay) {\n if (delay) {\n setTimeout(()=>this._remove(), delay * 1000);\n } else {\n this._remove();\n }\n onSuccess?.(value);\n return value;\n }\n}\n","export function isDelegationValid(chain) {\n var _chain;\n if (!chain || !((_chain = chain) === null || _chain === void 0 ? void 0 : _chain.delegations)) {\n return false;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = chain.delegations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var delegation = _step.value.delegation;\n if (parseInt(delegation.expiration, 16) / 1e6 <= +Date.now()) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return true;\n}\n","function _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nexport var ICStorage = function() {\n \"use strict\";\n function ICStorage() {\n var prefix = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : \"astrox-\", _localStorage = arguments.length > 1 ? arguments[1] : void 0;\n _class_call_check(this, ICStorage);\n _define_property(this, \"prefix\", void 0);\n _define_property(this, \"_localStorage\", void 0);\n this.prefix = prefix;\n this._localStorage = _localStorage;\n }\n _create_class(ICStorage, [\n {\n key: \"get\",\n value: function get(key) {\n return Promise.resolve(this._getICStorage().getItem(this.prefix + key));\n }\n },\n {\n key: \"set\",\n value: function set(key, value) {\n this._getICStorage().setItem(this.prefix + key, value);\n return Promise.resolve();\n }\n },\n {\n key: \"remove\",\n value: function remove(key) {\n this._getICStorage().removeItem(this.prefix + key);\n return Promise.resolve();\n }\n },\n {\n key: \"_getICStorage\",\n value: function _getICStorage() {\n if (this._localStorage) {\n return this._localStorage;\n }\n var ls = typeof window === \"undefined\" ? typeof global === \"undefined\" ? typeof self === \"undefined\" ? undefined : self.localStorage : global.localStorage : window.localStorage;\n if (!ls) {\n throw new Error(\"Could not find local storage.\");\n }\n return ls;\n }\n }\n ]);\n return ICStorage;\n}();\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport function concat() {\n for(var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++){\n buffers[_key] = arguments[_key];\n }\n var result = new Uint8Array(buffers.reduce(function(acc, curr) {\n return acc + curr.byteLength;\n }, 0));\n var index = 0;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = buffers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var b = _step.value;\n result.set(new Uint8Array(b), index);\n index += b.byteLength;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return result.buffer;\n}\nexport function toHex(buffer) {\n return _to_consumable_array(new Uint8Array(buffer)).map(function(x) {\n return x.toString(16).padStart(2, \"0\");\n }).join(\"\");\n}\nvar hexRe = new RegExp(/^([0-9A-F]{2})*$/i);\nexport function fromHex(hex) {\n if (hex.length % 2 !== 0) {\n hex = \"0\" + hex;\n }\n if (!hexRe.test(hex)) {\n throw new Error(\"Invalid hexadecimal string.\");\n }\n var buffer = _to_consumable_array(hex).reduce(function(acc, curr, i) {\n acc[i / 2 | 0] = (acc[i / 2 | 0] || \"\") + curr;\n return acc;\n }, []).map(function(x) {\n return Number.parseInt(x, 16);\n });\n return new Uint8Array(buffer).buffer;\n}\nexport function compare(b1, b2) {\n if (b1.byteLength !== b2.byteLength) {\n return b1.byteLength - b2.byteLength;\n }\n var u1 = new Uint8Array(b1);\n var u2 = new Uint8Array(b2);\n for(var i = 0; i < u1.length; i++){\n if (u1[i] !== u2[i]) {\n return u1[i] - u2[i];\n }\n }\n return 0;\n}\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _assert_this_initialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value1) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value1,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value1;\n }\n return obj;\n}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _possible_constructor_return(self, call) {\n if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assert_this_initialized(self);\n}\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _set_prototype_of(o, p);\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _is_native_reflect_construct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _create_super(Derived) {\n var hasNativeReflectConstruct = _is_native_reflect_construct();\n return function _createSuperInternal() {\n var Super = _get_prototype_of(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _get_prototype_of(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possible_constructor_return(this, result);\n };\n}\nimport borc from \"borc\";\nimport { SelfDescribeCborSerializer, value } from \"simple-cbor\";\nimport { concat, fromHex } from \"./buffer\";\nvar BufferEncoder = function() {\n \"use strict\";\n function BufferEncoder() {\n _class_call_check(this, BufferEncoder);\n }\n _create_class(BufferEncoder, [\n {\n key: \"name\",\n get: function get() {\n return \"Buffer\";\n }\n },\n {\n key: \"priority\",\n get: function get() {\n return 1;\n }\n },\n {\n key: \"match\",\n value: function match(value) {\n return _instanceof(value, ArrayBuffer) || ArrayBuffer.isView(value);\n }\n },\n {\n key: \"encode\",\n value: function encode(v) {\n return value.bytes(new Uint8Array(v));\n }\n }\n ]);\n return BufferEncoder;\n}();\nvar BigIntEncoder = function() {\n \"use strict\";\n function BigIntEncoder() {\n _class_call_check(this, BigIntEncoder);\n }\n _create_class(BigIntEncoder, [\n {\n key: \"name\",\n get: function get() {\n return \"BigInt\";\n }\n },\n {\n key: \"priority\",\n get: function get() {\n return 1;\n }\n },\n {\n key: \"match\",\n value: function match(value) {\n return (typeof value === \"undefined\" ? \"undefined\" : _type_of(value)) === \"bigint\";\n }\n },\n {\n key: \"encode\",\n value: function encode(v) {\n if (v > BigInt(0)) {\n return value.tagged(2, value.bytes(fromHex(v.toString(16))));\n } else {\n return value.tagged(3, value.bytes(fromHex((BigInt(\"-1\") * v).toString(16))));\n }\n }\n }\n ]);\n return BigIntEncoder;\n}();\nvar serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nexport var CborTag;\n(function(CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag || (CborTag = {}));\nexport function encode(value1) {\n return serializer.serialize(value1);\n}\nfunction decodePositiveBigInt(buf) {\n var len = buf.byteLength;\n var res = BigInt(0);\n for(var i = 0; i < len; i++){\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\nvar Uint8ArrayDecoder = function(_borc_Decoder) {\n \"use strict\";\n _inherits(Uint8ArrayDecoder, _borc_Decoder);\n var _super = _create_super(Uint8ArrayDecoder);\n function Uint8ArrayDecoder() {\n _class_call_check(this, Uint8ArrayDecoder);\n return _super.apply(this, arguments);\n }\n _create_class(Uint8ArrayDecoder, [\n {\n key: \"createByteString\",\n value: function createByteString(raw) {\n return concat.apply(void 0, _to_consumable_array(raw));\n }\n },\n {\n key: \"createByteStringFromHeap\",\n value: function createByteStringFromHeap(start, end) {\n if (start === end) {\n return new ArrayBuffer(0);\n }\n return new Uint8Array(this._heap.slice(start, end));\n }\n }\n ]);\n return Uint8ArrayDecoder;\n}(borc.Decoder);\nexport function decode(input) {\n var buffer = new Uint8Array(input);\n var decoder = new Uint8ArrayDecoder({\n size: buffer.byteLength,\n tags: _define_property({\n 2: function(val) {\n return decodePositiveBigInt(val);\n },\n 3: function(val) {\n return -decodePositiveBigInt(val);\n }\n }, CborTag.Semantic, function(value) {\n return value;\n })\n });\n return decoder.decodeFirst(buffer);\n}\n","export function fromHexString(hexString) {\n var _hexString_match;\n return new Uint8Array(((_hexString_match = hexString.match(/.{1,2}/g)) !== null && _hexString_match !== void 0 ? _hexString_match : []).map(function(byte) {\n return parseInt(byte, 16);\n })).buffer;\n}\nexport function toHexString(bytes) {\n return new Uint8Array(bytes).reduce(function(str, byte) {\n return str + byte.toString(16).padStart(2, \"0\");\n }, \"\");\n}\nexport function isDelegationValid(chain) {\n var _chain;\n if (!chain || !((_chain = chain) === null || _chain === void 0 ? void 0 : _chain.delegations)) {\n return false;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = chain.delegations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var delegation = _step.value.delegation;\n if (parseInt(delegation.expiration, 16) / 1e6 <= +Date.now()) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return true;\n}\n","import * as Cbor from \"./cbor\";\nimport { fromHexString, toHexString } from \"./util\";\nexport function encodeRequest(rpc) {\n return toHexString(Cbor.encode(rpc));\n}\nexport function decodeResponse(buf) {\n var decoded = Cbor.decode(fromHexString(buf));\n if (decoded.error) {\n throw new Error(JSON.stringify(decoded.error));\n }\n return decoded.result;\n}\nexport function rpcBuilder(method) {\n for(var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n params[_key - 1] = arguments[_key];\n }\n return {\n jsonrpc: \"2.0\",\n method: method,\n params: params,\n id: 0\n };\n}\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","function injectChromeBridge() {\n if (!window.top || window.top === window) {\n window._astrox_bridge_.bridgeCall = function(bridgeName, encodedParams) {\n var _callHandlerID = nextId();\n window.astrox_webview._callHandler(bridgeName, _callHandlerID, JSON.stringify([\n encodedParams\n ]));\n return new Promise(function(resolve, _) {\n window.astrox_webview[_callHandlerID] = resolve;\n });\n };\n } else {\n window._astrox_bridge_.bridgeCall = function(bridgeName, encodedParams) {\n var _callHandlerID = nextId();\n window.top.astrox_webview._callHandler(bridgeName, _callHandlerID, JSON.stringify([\n encodedParams\n ]));\n return new Promise(function(resolve, _) {\n window.top.astrox_webview[_callHandlerID] = resolve;\n });\n };\n }\n}\nfunction injectWebKitBridge() {\n window._astrox_bridge_.bridgeCall = function(bridgeName, encodedParams) {\n var _windowId = \"window._astrox_webview_windowId\";\n var _callHandlerID = nextId();\n window.webkit.messageHandlers[\"callHandler\"].postMessage({\n handlerName: bridgeName,\n _callHandlerID: _callHandlerID,\n args: JSON.stringify([\n encodedParams\n ]),\n _windowId: _windowId\n });\n return new Promise(function(resolve, _) {\n window.astrox_webview[_callHandlerID] = resolve;\n });\n };\n}\nexport function injectBridgeIfNeed() {\n if (window._astrox_bridge_ && window._astrox_bridge_.bridgeCall) {\n return;\n }\n if (!window._astrox_bridge_) {\n window._astrox_bridge_ = {};\n }\n if (window.webkit && window.webkit.messageHandlers) {\n injectWebKitBridge();\n } else {\n injectChromeBridge();\n }\n}\nexport function nextId() {\n return setTimeout(null);\n}\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nimport { decodeResponse, encodeRequest, rpcBuilder } from \"./adapter\";\nimport { injectBridgeIfNeed, nextId } from \"./bridge\";\nexport var MethodBuilder = function() {\n \"use strict\";\n function MethodBuilder(bridge, method) {\n _class_call_check(this, MethodBuilder);\n _define_property(this, \"bridge\", void 0);\n _define_property(this, \"method\", void 0);\n this.bridge = bridge;\n this.method = method;\n }\n _create_class(MethodBuilder, [\n {\n key: \"invoke\",\n value: function invoke() {\n for(var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++){\n params[_key] = arguments[_key];\n }\n var _this = this;\n return _async_to_generator(function() {\n var request, result;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n injectBridgeIfNeed();\n request = rpcBuilder.apply(void 0, [\n _this.method\n ].concat(_to_consumable_array(params)));\n request.id = nextId();\n return [\n 4,\n window._astrox_bridge_.bridgeCall(_this.bridge, encodeRequest(request))\n ];\n case 1:\n result = _state.sent();\n return [\n 2,\n decodeResponse(result)\n ];\n }\n });\n })();\n }\n }\n ]);\n return MethodBuilder;\n}();\n","export var TransactionMessageKind;\n(function(TransactionMessageKind) {\n TransactionMessageKind[\"success\"] = \"transaction-client-success\";\n TransactionMessageKind[\"fail\"] = \"transaction-client-failure\";\n})(TransactionMessageKind || (TransactionMessageKind = {}));\nexport var TransactionType;\n(function(TransactionType) {\n TransactionType[\"token\"] = \"token\";\n TransactionType[\"nft\"] = \"nft\";\n})(TransactionType || (TransactionType = {}));\n","import { MethodBuilder } from \"@astrox/sdk-webview-bridge\";\nvar bridgeHandler = \"bridgeCall\";\nexport var init = new MethodBuilder(bridgeHandler, \"init\");\nexport var connect = new MethodBuilder(bridgeHandler, \"connect\");\nexport var isConnected = new MethodBuilder(bridgeHandler, \"isConnected\");\nexport var disconnect = new MethodBuilder(bridgeHandler, \"disconnect\");\nexport var signMessage = new MethodBuilder(bridgeHandler, \"signMessage\");\nexport var requestTransfer = new MethodBuilder(bridgeHandler, \"requestTransfer\");\nexport var queryBalance = new MethodBuilder(bridgeHandler, \"queryBalance\");\nexport var appendAuth = new MethodBuilder(bridgeHandler, \"appendAuth\");\nexport var supportedStandardList = new MethodBuilder(bridgeHandler, \"supportedStandardList\");\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _assert_this_initialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nfunction _class_apply_descriptor_get(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}\nfunction _class_apply_descriptor_set(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _class_extract_field_descriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nfunction _class_private_field_get(receiver, privateMap) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"get\");\n return _class_apply_descriptor_get(receiver, descriptor);\n}\nfunction _class_private_field_init(obj, privateMap, value) {\n _check_private_redeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\nfunction _class_private_field_set(receiver, privateMap, value) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"set\");\n _class_apply_descriptor_set(receiver, descriptor, value);\n return value;\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _possible_constructor_return(self, call) {\n if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assert_this_initialized(self);\n}\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _set_prototype_of(o, p);\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _is_native_reflect_construct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _create_super(Derived) {\n var hasNativeReflectConstruct = _is_native_reflect_construct();\n return function _createSuperInternal() {\n var Super = _get_prototype_of(Derived), result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _get_prototype_of(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possible_constructor_return(this, result);\n };\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nimport { requestIdOf, SignIdentity } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport { fromHexString, toHexString } from \"@astrox/sdk-webview-bridge\";\nimport * as _ms from \"./methods\";\nvar _principal = new WeakMap();\nexport var AstroXIdentity = function(SignIdentity1) {\n \"use strict\";\n _inherits(AstroXIdentity, SignIdentity1);\n var _super = _create_super(AstroXIdentity);\n function AstroXIdentity(_cacheKey, _chain) {\n _class_call_check(this, AstroXIdentity);\n var _this;\n _this = _super.call(this);\n _define_property(_assert_this_initialized(_this), \"_cacheKey\", void 0);\n _define_property(_assert_this_initialized(_this), \"_chain\", void 0);\n _class_private_field_init(_assert_this_initialized(_this), _principal, {\n writable: true,\n value: void 0\n });\n _this._cacheKey = _cacheKey;\n _this._chain = _chain;\n return _this;\n }\n _create_class(AstroXIdentity, [\n {\n key: \"getPublicKey\",\n value: function getPublicKey() {\n var _this = this;\n return {\n toDer: function() {\n return _this._chain.publicKey;\n }\n };\n }\n },\n {\n key: \"getPrincipal\",\n value: function getPrincipal() {\n if (!_class_private_field_get(this, _principal)) {\n _class_private_field_set(this, _principal, Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer())));\n }\n return _class_private_field_get(this, _principal);\n }\n },\n {\n key: \"sign\",\n value: function sign(blob) {\n var _this = this;\n return _async_to_generator(function() {\n var hex, signedResponse, error;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 2,\n ,\n 3\n ]);\n hex = toHexString(blob);\n return [\n 4,\n _ms.signMessage.invoke(_this._cacheKey, hex)\n ];\n case 1:\n signedResponse = _state.sent();\n return [\n 2,\n fromHexString(signedResponse)\n ];\n case 2:\n error = _state.sent();\n throw new Error(\"signing message error: \".concat(error.message));\n case 3:\n return [\n 2\n ];\n }\n });\n })();\n }\n },\n {\n key: \"transformRequest\",\n value: function transformRequest(request) {\n var _this = this;\n return _async_to_generator(function() {\n var body, fields, requestId, requestDomainSeparator, _tmp, _tmp1, _tmp2;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n body = request.body, fields = _object_without_properties(request, [\n \"body\"\n ]);\n return [\n 4,\n requestIdOf(body)\n ];\n case 1:\n requestId = _state.sent();\n requestDomainSeparator = new TextEncoder().encode(\"\\nic-request\");\n _tmp = [\n _object_spread({}, fields)\n ];\n _tmp1 = {};\n _tmp2 = {\n content: body\n };\n return [\n 4,\n _this.sign(new Uint8Array(_to_consumable_array(requestDomainSeparator).concat(_to_consumable_array(new Uint8Array(requestId)))))\n ];\n case 2:\n return [\n 2,\n _object_spread_props.apply(void 0, _tmp.concat([\n (_tmp1.body = (_tmp2.sender_sig = _state.sent(), _tmp2.sender_delegation = _this._chain.delegations, _tmp2.sender_pubkey = _this._chain.publicKey, _tmp2), _tmp1)\n ]))\n ];\n }\n });\n })();\n }\n }\n ]);\n return AstroXIdentity;\n}(SignIdentity);\n","function _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nexport var BridgeErrors = function() {\n \"use strict\";\n function BridgeErrors() {\n _class_call_check(this, BridgeErrors);\n }\n _create_class(BridgeErrors, null, [\n {\n key: \"fromErrorCode\",\n value: function fromErrorCode(code) {\n var kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : BridgeErrors.defaultErrorKind, message = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : BridgeErrors.defaultErrorMessage;\n var defaultReturn = {\n kind: kind,\n text: \"Unknown Error\"\n };\n switch(code){\n case BridgeErrors.bridgeUnknownError:\n return {\n kind: kind,\n text: \"Unknown Error: \".concat(message)\n };\n case BridgeErrors.bridgeIllegalArguments:\n return {\n kind: kind,\n text: \"Illegal Arguments: \".concat(message)\n };\n case BridgeErrors.bridgeIllegalState:\n return {\n kind: kind,\n text: \"Illegal State: \".concat(message)\n };\n case BridgeErrors.bridgeUnsupportedError:\n return {\n kind: kind,\n text: \"Unsupported Error: \".concat(message)\n };\n case BridgeErrors.bridgeIdentityNotFound:\n return {\n kind: kind,\n text: \"Identity Not Found: \".concat(message)\n };\n case BridgeErrors.bridgeIdentityExpired:\n return {\n kind: kind,\n text: \"Identity Expired: \".concat(message)\n };\n case BridgeErrors.bridgeWalletNotFound:\n return {\n kind: kind,\n text: \"Wallet Not Found: \".concat(message)\n };\n case BridgeErrors.bridgeOperationCancelled:\n return {\n kind: kind,\n text: \"Operation Cancelled: \".concat(message)\n };\n case BridgeErrors.bridgeNFTIdentifierError:\n return {\n kind: kind,\n text: \"NFT Identifier Error: \".concat(message)\n };\n case BridgeErrors.bridgeUnknownMethod:\n return {\n kind: kind,\n text: \"Unknown method: \".concat(message)\n };\n default:\n return defaultReturn;\n }\n }\n }\n ]);\n return BridgeErrors;\n}();\n_define_property(BridgeErrors, \"bridgeUnknownError\", 50000);\n_define_property(BridgeErrors, \"bridgeIllegalArguments\", 50001);\n_define_property(BridgeErrors, \"bridgeIllegalState\", 50002);\n_define_property(BridgeErrors, \"bridgeUnsupportedError\", 50003);\n_define_property(BridgeErrors, \"bridgeIdentityNotFound\", 50004);\n_define_property(BridgeErrors, \"bridgeIdentityExpired\", 50005);\n_define_property(BridgeErrors, \"bridgeWalletNotFound\", 50006);\n_define_property(BridgeErrors, \"bridgeOperationCancelled\", 50007);\n_define_property(BridgeErrors, \"bridgeNFTIdentifierError\", 50008);\n_define_property(BridgeErrors, \"bridgeUnknownMethod\", 50009);\n_define_property(BridgeErrors, \"defaultErrorKind\", \"JS-SDK-Error\");\n_define_property(BridgeErrors, \"defaultErrorMessage\", \"No More Detail\");\n","function _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { SelfDescribeCborSerializer, value } from \"simple-cbor\";\nvar PrincipalEncoder = function() {\n \"use strict\";\n function PrincipalEncoder() {\n _class_call_check(this, PrincipalEncoder);\n }\n _create_class(PrincipalEncoder, [\n {\n key: \"name\",\n get: function get() {\n return \"Principal\";\n }\n },\n {\n key: \"priority\",\n get: function get() {\n return 0;\n }\n },\n {\n key: \"match\",\n value: function match(value) {\n return value && value._isPrincipal === true;\n }\n },\n {\n key: \"encode\",\n value: function encode(v) {\n return value.bytes(v.toUint8Array());\n }\n }\n ]);\n return PrincipalEncoder;\n}();\nvar serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nimport { DelegationChain } from \"@dfinity/identity\";\nimport { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { isDelegationValid } from \"./util\";\nimport { ICStorage } from \"./storage\";\nimport * as _ms from \"./methods\";\nimport { TransactionMessageKind, TransactionType } from \"./types\";\nimport { AstroXIdentity } from \"./identity\";\nimport { BridgeErrors } from \"./errors\";\nimport \"./cbor\";\nvar KEY_ICSTORAGE_CACHEKEY = \"cacheKey\";\nvar KEY_ICSTORAGE_CHAIN = \"chain\";\nvar KEY_ICSTORAGE_WALLET = \"wallet\";\nvar KEY_ICSTORAGE_CONFIRM = \"confirm\";\nvar KEY_ICSTORAGE_HOST = \"host\";\nvar KEY_CUSTOM_DOMAIN = \"customDomain\";\nexport var AstroXWebViewHandler = function() {\n \"use strict\";\n function AstroXWebViewHandler(_identity, _agent, _chain, _storage, _cacheKey, _wallet, _confirm, _host, _customDomain) {\n _class_call_check(this, AstroXWebViewHandler);\n _define_property(this, \"_identity\", void 0);\n _define_property(this, \"_agent\", void 0);\n _define_property(this, \"_chain\", void 0);\n _define_property(this, \"_storage\", void 0);\n _define_property(this, \"_cacheKey\", void 0);\n _define_property(this, \"_wallet\", void 0);\n _define_property(this, \"_confirm\", void 0);\n _define_property(this, \"_host\", void 0);\n _define_property(this, \"_customDomain\", void 0);\n _define_property(this, \"principal\", void 0);\n _define_property(this, \"_isReady\", void 0);\n _define_property(this, \"config\", void 0);\n _define_property(this, \"createActor\", void 0);\n this._identity = _identity;\n this._agent = _agent;\n this._chain = _chain;\n this._storage = _storage;\n this._cacheKey = _cacheKey;\n this._wallet = _wallet;\n this._confirm = _confirm;\n this._host = _host;\n this._customDomain = _customDomain;\n this._isReady = false;\n var _this = this;\n this.createActor = function() {\n var _ref = _async_to_generator(function(canisterId, idlFactory) {\n var authed, _;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this._assertEnv();\n if (!_this._confirm) return [\n 3,\n 2\n ];\n _ = _this._handleWebViewConnectResponse;\n return [\n 4,\n _ms.appendAuth.invoke(_this._cacheKey, _this._wallet, [\n canisterId\n ])\n ];\n case 1:\n authed = _.apply(_this, [\n _state.sent(),\n _this.host,\n _this.customDomain\n ]);\n if (!authed) {\n throw new Error(\"User cancel authorization\");\n }\n _state.label = 2;\n case 2:\n return [\n 2,\n Actor.createActor(idlFactory, {\n agent: _this._agent,\n canisterId: canisterId\n })\n ];\n }\n });\n });\n return function(canisterId, idlFactory) {\n return _ref.apply(this, arguments);\n };\n }();\n this._injectWindow();\n }\n _create_class(AstroXWebViewHandler, [\n {\n key: \"setCacheKey\",\n value: function setCacheKey(value) {\n this._cacheKey = value;\n this._storage.set(KEY_ICSTORAGE_CACHEKEY, value);\n }\n },\n {\n key: \"cacheKey\",\n get: function get() {\n return this._cacheKey;\n }\n },\n {\n key: \"setWallet\",\n value: function setWallet(value) {\n this._wallet = value;\n this._storage.set(KEY_ICSTORAGE_WALLET, JSON.stringify(_object_spread({}, value)));\n }\n },\n {\n key: \"wallet\",\n get: function get() {\n return this._wallet;\n }\n },\n {\n key: \"setChain\",\n value: function setChain(value) {\n var _value;\n this._chain = value;\n this._storage.set(KEY_ICSTORAGE_CHAIN, JSON.stringify((_value = value) === null || _value === void 0 ? void 0 : _value.toJSON()));\n }\n },\n {\n key: \"chain\",\n get: function get() {\n return this._chain;\n }\n },\n {\n key: \"setConfirm\",\n value: function setConfirm(value) {\n this._confirm = value;\n this._storage.set(KEY_ICSTORAGE_CONFIRM, String(value));\n }\n },\n {\n key: \"confirm\",\n get: function get() {\n return this._confirm;\n }\n },\n {\n key: \"setIdentity\",\n value: function setIdentity(value) {\n this._identity = value;\n }\n },\n {\n key: \"identity\",\n get: function get() {\n return this._identity;\n }\n },\n {\n key: \"setAgent\",\n value: function setAgent(value) {\n this._agent = value;\n }\n },\n {\n key: \"setHost\",\n value: function setHost(host) {\n this._host = host;\n this._storage.set(KEY_ICSTORAGE_HOST, String(host));\n }\n },\n {\n key: \"setCustomDomain\",\n value: function setCustomDomain(customDomain) {\n this._customDomain = customDomain;\n this._storage.set(KEY_CUSTOM_DOMAIN, String(customDomain));\n }\n },\n {\n key: \"host\",\n get: function get() {\n return this._host;\n }\n },\n {\n key: \"customDomain\",\n get: function get() {\n return this._customDomain;\n }\n },\n {\n key: \"agent\",\n get: function get() {\n return this._agent;\n }\n },\n {\n key: \"setStorage\",\n value: function setStorage(storage) {\n this._storage = storage;\n }\n },\n {\n key: \"storage\",\n get: function get() {\n return this._storage;\n }\n },\n {\n key: \"clear\",\n value: function clear() {\n this._cacheKey = undefined;\n this._confirm = undefined;\n this._chain = undefined;\n this._wallet = undefined;\n this._identity = undefined;\n this._agent = undefined;\n this._storage.remove(KEY_ICSTORAGE_CACHEKEY);\n this._storage.remove(KEY_ICSTORAGE_WALLET);\n this._storage.remove(KEY_ICSTORAGE_CHAIN);\n this._storage.remove(KEY_ICSTORAGE_CONFIRM);\n this._storage.remove(KEY_ICSTORAGE_HOST);\n this._storage.remove(KEY_CUSTOM_DOMAIN);\n }\n },\n {\n key: \"_injectWindow\",\n value: function _injectWindow() {\n window.icx = this;\n }\n },\n {\n key: \"_initBridge\",\n value: function _initBridge() {\n var _this = this;\n return _async_to_generator(function() {\n var e;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 2,\n ,\n 3\n ]);\n return [\n 4,\n _this.fromStorage()\n ];\n case 1:\n _state.sent();\n _this._isReady = true;\n return [\n 3,\n 3\n ];\n case 2:\n e = _state.sent();\n console.log(\"AstroXWebViewBridge occurs error:\", e);\n throw e;\n case 3:\n return [\n 2\n ];\n }\n });\n })();\n }\n },\n {\n key: \"fromStorage\",\n value: function fromStorage() {\n var _this = this;\n return _async_to_generator(function() {\n var storage, cacheKey, connected, chainString, chain, identity, walletJson, hostString, customDomainString, _;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n storage = new ICStorage(\"astrox-\");\n return [\n 4,\n storage.get(KEY_ICSTORAGE_CACHEKEY)\n ];\n case 1:\n cacheKey = _state.sent();\n _this.setStorage(storage);\n if (!cacheKey) return [\n 3,\n 8\n ];\n return [\n 4,\n _ms.isConnected.invoke(cacheKey)\n ];\n case 2:\n connected = _state.sent();\n if (!connected) {\n _this.clear();\n return [\n 2\n ];\n }\n return [\n 4,\n storage.get(KEY_ICSTORAGE_CHAIN)\n ];\n case 3:\n chainString = _state.sent();\n chain = chainString ? DelegationChain.fromJSON(chainString) : null;\n if (!chain || !isDelegationValid(chain)) {\n _this.clear();\n return [\n 2\n ];\n }\n identity = new AstroXIdentity(cacheKey, chain);\n return [\n 4,\n storage.get(KEY_ICSTORAGE_WALLET)\n ];\n case 4:\n walletJson = _state.sent();\n return [\n 4,\n storage.get(KEY_ICSTORAGE_HOST)\n ];\n case 5:\n hostString = _state.sent();\n return [\n 4,\n storage.get(KEY_CUSTOM_DOMAIN)\n ];\n case 6:\n customDomainString = _state.sent();\n _this.setHost(hostString);\n _this.setCacheKey(cacheKey);\n _this.setChain(chain);\n _this.setWallet(walletJson ? JSON.parse(walletJson) : null);\n _ = _this.setConfirm;\n return [\n 4,\n storage.get(KEY_ICSTORAGE_CONFIRM)\n ];\n case 7:\n _.apply(_this, [\n _state.sent() == \"true\"\n ]);\n _this.setIdentity(identity);\n _this.setAgent(new HttpAgent({\n identity: identity,\n host: hostString !== null && hostString !== void 0 ? hostString : window.location.origin\n }));\n _this.setCustomDomain(customDomainString);\n _state.label = 8;\n case 8:\n return [\n 2\n ];\n }\n });\n })();\n }\n },\n {\n key: \"isReady\",\n value: function isReady() {\n return !!window.astrox_webview && this._isReady;\n }\n },\n {\n key: \"getDelegation\",\n value: function getDelegation() {\n return this._chain;\n }\n },\n {\n key: \"getPublicKey\",\n value: function getPublicKey() {\n var _this__identity;\n return (_this__identity = this._identity) === null || _this__identity === void 0 ? void 0 : _this__identity.getPublicKey();\n }\n },\n {\n key: \"getPrincipal\",\n value: function getPrincipal() {\n var _this__identity;\n return (_this__identity = this._identity) === null || _this__identity === void 0 ? void 0 : _this__identity.getPrincipal();\n }\n },\n {\n key: \"_assertEnv\",\n value: function _assertEnv() {\n if (!this.isReady()) {\n throw Error(\"Webview Bridge is not ready\");\n }\n }\n },\n {\n key: \"connect\",\n value: function connect(params) {\n var _this = this;\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n _this._assertEnv();\n if (!_this.identity) {\n return [\n 2,\n _this.reconnect(params)\n ];\n }\n return [\n 2,\n true\n ];\n });\n })();\n }\n },\n {\n key: \"reconnect\",\n value: function reconnect(params) {\n var _this = this;\n return _async_to_generator(function() {\n var _params_delegationTargets, delegationModes, modes, hasNotInclude, _params_customDomain, result;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this._assertEnv();\n delegationModes = params.delegationModes;\n if (delegationModes && delegationModes.length) {\n modes = [\n \"global\",\n \"domain\"\n ];\n hasNotInclude = delegationModes.some(function(v) {\n return !modes.includes(v);\n });\n if (hasNotInclude) {\n throw new Error(\"`delegationModes` elements only support `global` and `domain`\");\n }\n delegationModes = _to_consumable_array(new Set(delegationModes));\n }\n return [\n 4,\n _ms.connect.invoke(_object_spread_props(_object_spread({}, params), {\n host: (_params_customDomain = params.customDomain) !== null && _params_customDomain !== void 0 ? _params_customDomain : window.location.origin,\n delegationTargets: (_params_delegationTargets = params.delegationTargets) === null || _params_delegationTargets === void 0 ? void 0 : _params_delegationTargets.filter(function(value) {\n return typeof value === \"string\" && value.trim();\n }),\n delegationModes: delegationModes\n }))\n ];\n case 1:\n result = _state.sent();\n return [\n 2,\n _this._handleWebViewConnectResponse(result, params.host, params.customDomain)\n ];\n }\n });\n })();\n }\n },\n {\n key: \"_handleWebViewConnectResponse\",\n value: function _handleWebViewConnectResponse(result, host, customDomain) {\n var authorized = result.authorized, payload = result.payload;\n if (!authorized) {\n return false;\n }\n if (!payload) {\n return true;\n }\n if (!payload.chain) {\n return false;\n }\n var chainObject;\n try {\n chainObject = DelegationChain.fromJSON(payload.chain);\n } catch (error) {\n return false;\n }\n if (isDelegationValid(chainObject)) {\n this.setChain(chainObject);\n this.setCacheKey(payload.cacheKey);\n this.setWallet(payload.wallet);\n this.setIdentity(new AstroXIdentity(this._cacheKey, this._chain));\n this.setConfirm(payload.confirm === true);\n this.setAgent(new HttpAgent({\n identity: this._identity,\n host: host !== null && host !== void 0 ? host : window.location.origin\n }));\n this.setHost(host !== null && host !== void 0 ? host : window.location.origin);\n this.setCustomDomain(customDomain);\n return true;\n }\n return false;\n }\n },\n {\n key: \"getSupportedTokenList\",\n value: function getSupportedTokenList() {\n var _this = this;\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n _this._assertEnv();\n return [\n 2,\n _ms.supportedStandardList.invoke()\n ];\n });\n })();\n }\n },\n {\n key: \"isConnected\",\n value: function isConnected() {\n var _this = this;\n return _async_to_generator(function() {\n var _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this._assertEnv();\n _tmp = !!_this.cacheKey;\n if (!_tmp) return [\n 3,\n 2\n ];\n return [\n 4,\n _ms.isConnected.invoke(_this.cacheKey)\n ];\n case 1:\n _tmp = _state.sent();\n _state.label = 2;\n case 2:\n return [\n 2,\n _tmp\n ];\n }\n });\n })();\n }\n },\n {\n key: \"disconnect\",\n value: function disconnect() {\n var _this = this;\n return _async_to_generator(function() {\n var _tmp;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this._assertEnv();\n _tmp = _this.cacheKey;\n if (!_tmp) return [\n 3,\n 2\n ];\n return [\n 4,\n _ms.disconnect.invoke(_this.cacheKey)\n ];\n case 1:\n _tmp = _state.sent();\n _state.label = 2;\n case 2:\n _tmp;\n _this.clear();\n return [\n 2,\n true\n ];\n }\n });\n })();\n }\n },\n {\n key: \"signMessage\",\n value: function signMessage(message) {\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n throw new Error(\"Unsupported api\");\n });\n })();\n }\n },\n {\n key: \"requestTransfer\",\n value: function requestTransfer(req) {\n var _this = this;\n return _async_to_generator(function() {\n var rawSendOpts, sendOpts, memo, standard, createdAtTime, txType, success, e, _JSON_parse, code, message;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this._assertEnv();\n if (!_this.cacheKey) {\n return [\n 2,\n BridgeErrors.fromErrorCode(BridgeErrors.bridgeIdentityNotFound, TransactionMessageKind.fail)\n ];\n }\n if (!_this._wallet) {\n return [\n 2,\n BridgeErrors.fromErrorCode(BridgeErrors.bridgeWalletNotFound, TransactionMessageKind.fail)\n ];\n }\n rawSendOpts = req.sendOpts;\n if (rawSendOpts) {\n memo = rawSendOpts.memo;\n if (memo) {\n standard = req.standard.toUpperCase();\n if (standard === \"EXT\" && !Array.isArray(memo)) {\n throw new Error(\"`sendOpts.memo` only supports `Array` type when the standard is `EXT`\");\n }\n if (standard === \"ICP\" && (typeof memo === \"undefined\" ? \"undefined\" : _type_of(memo)) !== \"bigint\") {\n throw new Error(\"`sendOpts.memo` only supports `bigint` type when the standard is `ICP`\");\n }\n }\n createdAtTime = rawSendOpts.created_at_time;\n sendOpts = _object_spread({}, rawSendOpts);\n if (createdAtTime) {\n if (_instanceof(createdAtTime, Date)) {\n sendOpts.created_at_time = createdAtTime.getTime();\n }\n }\n }\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 3,\n ,\n 4\n ]);\n txType = req.symbol !== undefined ? TransactionType.token : TransactionType.nft;\n return [\n 4,\n _ms.requestTransfer.invoke(_this.cacheKey, _object_spread_props(_object_spread({}, req), {\n sendOpts: sendOpts\n }), _this._wallet)\n ];\n case 2:\n success = _state.sent();\n switch(txType){\n case TransactionType.token:\n return [\n 2,\n {\n kind: TransactionMessageKind.success,\n type: txType,\n payload: _object_spread_props(_object_spread({}, success), {\n originPayload: req\n })\n }\n ];\n case TransactionType.nft:\n return [\n 2,\n {\n kind: TransactionMessageKind.success,\n type: txType,\n payload: {\n success: true,\n originPayload: req\n }\n }\n ];\n }\n return [\n 3,\n 4\n ];\n case 3:\n e = _state.sent();\n _JSON_parse = JSON.parse(e.message), code = _JSON_parse.code, message = _JSON_parse.message;\n return [\n 2,\n BridgeErrors.fromErrorCode(code, TransactionMessageKind.fail, message)\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n })();\n }\n },\n {\n key: \"queryBalance\",\n value: function queryBalance() {\n var _this = this;\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _this._assertEnv();\n return [\n 4,\n _ms.queryBalance.invoke(_object_spread({}, _this.wallet))\n ];\n case 1:\n return [\n 2,\n _state.sent()\n ];\n }\n });\n })();\n }\n },\n {\n key: \"address\",\n value: function address() {\n return _object_spread({}, this.wallet);\n }\n },\n {\n key: \"init\",\n value: function init() {\n var _this = this;\n return _async_to_generator(function() {\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n _this._initBridge()\n ];\n case 1:\n _state.sent();\n _this._assertEnv();\n return [\n 2\n ];\n }\n });\n })();\n }\n }\n ]);\n return AstroXWebViewHandler;\n}();\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'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",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\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 // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\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 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 r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\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 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 BN.prototype.inspect = function inspect () {\n return (this.red ? '';\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 if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\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.modn(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);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\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] & (1 << wbit)) >>> wbit;\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 var fftm = new FFTM();\n return fftm.mulp(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 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 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.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(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.modn = function modn (num) {\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 acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\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 return this.strip();\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 BN v4 instance\n r.strip();\n } else {\n // r is 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 return a.umod(this.m)._forceRed(this);\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","(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 ? '';\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","'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \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 ''\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","/*\r\n * big.js v6.2.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2022 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\nfunction stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\nP.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Big as a primitve number.\r\n */\r\nP.toNumber = function () {\r\n var n = Number(stringify(this, true, true));\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nexport var Big = _Big_();\r\n\r\n/// \r\nexport default Big;\r\n","/*\r\n * bignumber.js v9.1.2\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","let decoder\ntry {\n\tdecoder = new TextDecoder()\n} catch(error) {}\nlet src\nlet srcEnd\nlet position = 0\nlet alreadySet\nconst EMPTY_ARRAY = []\nconst LEGACY_RECORD_INLINE_ID = 105\nconst RECORD_DEFINITIONS_ID = 0xdffe\nconst RECORD_INLINE_ID = 0xdfff // temporary first-come first-serve tag // proposed tag: 0x7265 // 're'\nconst BUNDLED_STRINGS_ID = 0xdff9\nconst PACKED_TABLE_TAG_ID = 51\nconst PACKED_REFERENCE_TAG_ID = 6\nconst STOP_CODE = {}\nlet strings = EMPTY_ARRAY\nlet stringPosition = 0\nlet currentDecoder = {}\nlet currentStructures\nlet srcString\nlet srcStringStart = 0\nlet srcStringEnd = 0\nlet bundledStrings\nlet referenceMap\nlet currentExtensions = []\nlet currentExtensionRanges = []\nlet packedValues\nlet dataView\nlet restoreMapsAsObject\nlet defaultOptions = {\n\tuseRecords: false,\n\tmapsAsObjects: true\n}\nlet sequentialMode = false\nlet inlineObjectReadThreshold = 2;\nvar BlockedFunction // we use search and replace to change the next call to BlockedFunction to avoid CSP issues for\n// no-eval build\ntry {\n\tnew Function('')\n} catch(error) {\n\t// if eval variants are not supported, do not create inline object readers ever\n\tinlineObjectReadThreshold = Infinity\n}\n\n\n\nexport class Decoder {\n\tconstructor(options) {\n\t\tif (options) {\n\t\t\tif ((options.keyMap || options._keyMap) && !options.useRecords) {\n\t\t\t\toptions.useRecords = false\n\t\t\t\toptions.mapsAsObjects = true\n\t\t\t}\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\n\t\t\t\toptions.mapsAsObjects = true\n\t\t\tif (options.getStructures)\n\t\t\t\toptions.getShared = options.getStructures\n\t\t\tif (options.getShared && !options.structures)\n\t\t\t\t(options.structures = []).uninitialized = true // this is what we use to denote an uninitialized structures\n\t\t\tif (options.keyMap) {\n\t\t\t\tthis.mapKey = new Map()\n\t\t\t\tfor (let [k,v] of Object.entries(options.keyMap)) this.mapKey.set(v,k)\n\t\t\t}\n\t\t}\n\t\tObject.assign(this, options)\n\t}\n\t/*\n\tdecodeKey(key) {\n\t\treturn this.keyMap\n\t\t\t? Object.keys(this.keyMap)[Object.values(this.keyMap).indexOf(key)] || key\n\t\t\t: key\n\t}\n\t*/\n\tdecodeKey(key) {\n\t\treturn this.keyMap ? this.mapKey.get(key) || key : key\n\t}\n\t\n\tencodeKey(key) {\n\t\treturn this.keyMap && this.keyMap.hasOwnProperty(key) ? this.keyMap[key] : key\n\t}\n\n\tencodeKeys(rec) {\n\t\tif (!this._keyMap) return rec\n\t\tlet map = new Map()\n\t\tfor (let [k,v] of Object.entries(rec)) map.set((this._keyMap.hasOwnProperty(k) ? this._keyMap[k] : k), v)\n\t\treturn map\n\t}\n\n\tdecodeKeys(map) {\n\t\tif (!this._keyMap || map.constructor.name != 'Map') return map\n\t\tif (!this._mapKey) {\n\t\t\tthis._mapKey = new Map()\n\t\t\tfor (let [k,v] of Object.entries(this._keyMap)) this._mapKey.set(v,k)\n\t\t}\n\t\tlet res = {}\n\t\t//map.forEach((v,k) => res[Object.keys(this._keyMap)[Object.values(this._keyMap).indexOf(k)] || k] = v)\n\t\tmap.forEach((v,k) => res[safeKey(this._mapKey.has(k) ? this._mapKey.get(k) : k)] = v)\n\t\treturn res\n\t}\n\t\n\tmapDecode(source, end) {\n\t\n\t\tlet res = this.decode(source)\n\t\tif (this._keyMap) { \n\t\t\t//Experiemntal support for Optimised KeyMap decoding \n\t\t\tswitch (res.constructor.name) {\n\t\t\t\tcase 'Array': return res.map(r => this.decodeKeys(r))\n\t\t\t\t//case 'Map': return this.decodeKeys(res)\n\t\t\t}\n\t\t}\n\t\treturn res\n\t}\n\n\tdecode(source, end) {\n\t\tif (src) {\n\t\t\t// re-entrant execution, save the state and restore it after we do this decode\n\t\t\treturn saveState(() => {\n\t\t\t\tclearSource()\n\t\t\t\treturn this ? this.decode(source, end) : Decoder.prototype.decode.call(defaultOptions, source, end)\n\t\t\t})\n\t\t}\n\t\tsrcEnd = end > -1 ? end : source.length\n\t\tposition = 0\n\t\tstringPosition = 0\n\t\tsrcStringEnd = 0\n\t\tsrcString = null\n\t\tstrings = EMPTY_ARRAY\n\t\tbundledStrings = null\n\t\tsrc = source\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\n\t\t// new ones\n\t\ttry {\n\t\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength))\n\t\t} catch(error) {\n\t\t\t// if it doesn't have a buffer, maybe it is the wrong type of object\n\t\t\tsrc = null\n\t\t\tif (source instanceof Uint8Array)\n\t\t\t\tthrow error\n\t\t\tthrow new Error('Source must be a Uint8Array or Buffer but was a ' + ((source && typeof source == 'object') ? source.constructor.name : typeof source))\n\t\t}\n\t\tif (this instanceof Decoder) {\n\t\t\tcurrentDecoder = this\n\t\t\tpackedValues = this.sharedValues &&\n\t\t\t\t(this.pack ? new Array(this.maxPrivatePackedValues || 16).concat(this.sharedValues) :\n\t\t\t\tthis.sharedValues)\n\t\t\tif (this.structures) {\n\t\t\t\tcurrentStructures = this.structures\n\t\t\t\treturn checkedRead()\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\n\t\t\t\tcurrentStructures = []\n\t\t\t}\n\t\t} else {\n\t\t\tcurrentDecoder = defaultOptions\n\t\t\tif (!currentStructures || currentStructures.length > 0)\n\t\t\t\tcurrentStructures = []\n\t\t\tpackedValues = null\n\t\t}\n\t\treturn checkedRead()\n\t}\n\tdecodeMultiple(source, forEach) {\n\t\tlet values, lastPosition = 0\n\t\ttry {\n\t\t\tlet size = source.length\n\t\t\tsequentialMode = true\n\t\t\tlet value = this ? this.decode(source, size) : defaultDecoder.decode(source, size)\n\t\t\tif (forEach) {\n\t\t\t\tif (forEach(value) === false) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tif (forEach(checkedRead()) === false) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalues = [ value ]\n\t\t\t\twhile(position < size) {\n\t\t\t\t\tlastPosition = position\n\t\t\t\t\tvalues.push(checkedRead())\n\t\t\t\t}\n\t\t\t\treturn values\n\t\t\t}\n\t\t} catch(error) {\n\t\t\terror.lastPosition = lastPosition\n\t\t\terror.values = values\n\t\t\tthrow error\n\t\t} finally {\n\t\t\tsequentialMode = false\n\t\t\tclearSource()\n\t\t}\n\t}\n}\nexport function getPosition() {\n\treturn position\n}\nexport function checkedRead() {\n\ttry {\n\t\tlet result = read()\n\t\tif (bundledStrings) {\n\t\t\tif (position >= bundledStrings.postBundlePosition) {\n\t\t\t\tlet error = new Error('Unexpected bundle position');\n\t\t\t\terror.incomplete = true;\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\t// bundled strings to skip past\n\t\t\tposition = bundledStrings.postBundlePosition;\n\t\t\tbundledStrings = null;\n\t\t}\n\n\t\tif (position == srcEnd) {\n\t\t\t// finished reading this source, cleanup references\n\t\t\tcurrentStructures = null\n\t\t\tsrc = null\n\t\t\tif (referenceMap)\n\t\t\t\treferenceMap = null\n\t\t} else if (position > srcEnd) {\n\t\t\t// over read\n\t\t\tlet error = new Error('Unexpected end of CBOR data')\n\t\t\terror.incomplete = true\n\t\t\tthrow error\n\t\t} else if (!sequentialMode) {\n\t\t\tthrow new Error('Data read, but end of buffer not reached')\n\t\t}\n\t\t// else more to read, but we are reading sequentially, so don't clear source yet\n\t\treturn result\n\t} catch(error) {\n\t\tclearSource()\n\t\tif (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) {\n\t\t\terror.incomplete = true\n\t\t}\n\t\tthrow error\n\t}\n}\n\nexport function read() {\n\tlet token = src[position++]\n\tlet majorType = token >> 5\n\ttoken = token & 0x1f\n\tif (token > 0x17) {\n\t\tswitch (token) {\n\t\t\tcase 0x18:\n\t\t\t\ttoken = src[position++]\n\t\t\t\tbreak\n\t\t\tcase 0x19:\n\t\t\t\tif (majorType == 7) {\n\t\t\t\t\treturn getFloat16()\n\t\t\t\t}\n\t\t\t\ttoken = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tbreak\n\t\t\tcase 0x1a:\n\t\t\t\tif (majorType == 7) {\n\t\t\t\t\tlet value = dataView.getFloat32(position)\n\t\t\t\t\tif (currentDecoder.useFloat32 > 2) {\n\t\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)]\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n\t\t\t\t\t}\n\t\t\t\t\tposition += 4\n\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t\ttoken = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tbreak\n\t\t\tcase 0x1b:\n\t\t\t\tif (majorType == 7) {\n\t\t\t\t\tlet value = dataView.getFloat64(position)\n\t\t\t\t\tposition += 8\n\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t\tif (majorType > 1) {\n\t\t\t\t\tif (dataView.getUint32(position) > 0)\n\t\t\t\t\t\tthrow new Error('JavaScript does not support arrays, maps, or strings with length over 4294967295')\n\t\t\t\t\ttoken = dataView.getUint32(position + 4)\n\t\t\t\t} else if (currentDecoder.int64AsNumber) {\n\t\t\t\t\ttoken = dataView.getUint32(position) * 0x100000000\n\t\t\t\t\ttoken += dataView.getUint32(position + 4)\n\t\t\t\t} else\n\t\t\t\t\ttoken = dataView.getBigUint64(position)\n\t\t\t\tposition += 8\n\t\t\t\tbreak\n\t\t\tcase 0x1f: \n\t\t\t\t// indefinite length\n\t\t\t\tswitch(majorType) {\n\t\t\t\t\tcase 2: // byte string\n\t\t\t\t\tcase 3: // text string\n\t\t\t\t\t\tthrow new Error('Indefinite length not supported for byte or text strings')\n\t\t\t\t\tcase 4: // array\n\t\t\t\t\t\tlet array = []\n\t\t\t\t\t\tlet value, i = 0\n\t\t\t\t\t\twhile ((value = read()) != STOP_CODE) {\n\t\t\t\t\t\t\tarray[i++] = value\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn majorType == 4 ? array : majorType == 3 ? array.join('') : Buffer.concat(array)\n\t\t\t\t\tcase 5: // map\n\t\t\t\t\t\tlet key\n\t\t\t\t\t\tif (currentDecoder.mapsAsObjects) {\n\t\t\t\t\t\t\tlet object = {}\n\t\t\t\t\t\t\tif (currentDecoder.keyMap) while((key = read()) != STOP_CODE) object[safeKey(currentDecoder.decodeKey(key))] = read()\n\t\t\t\t\t\t\telse while ((key = read()) != STOP_CODE) object[safeKey(key)] = read()\n\t\t\t\t\t\t\treturn object\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (restoreMapsAsObject) {\n\t\t\t\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\n\t\t\t\t\t\t\t\trestoreMapsAsObject = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlet map = new Map()\n\t\t\t\t\t\t\tif (currentDecoder.keyMap) while((key = read()) != STOP_CODE) map.set(currentDecoder.decodeKey(key), read())\n\t\t\t\t\t\t\telse while ((key = read()) != STOP_CODE) map.set(key, read())\n\t\t\t\t\t\t\treturn map\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\treturn STOP_CODE\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error('Invalid major type for indefinite length ' + majorType)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tthrow new Error('Unknown token ' + token)\n\t\t}\n\t}\n\tswitch (majorType) {\n\t\tcase 0: // positive int\n\t\t\treturn token\n\t\tcase 1: // negative int\n\t\t\treturn ~token\n\t\tcase 2: // buffer\n\t\t\treturn readBin(token)\n\t\tcase 3: // string\n\t\t\tif (srcStringEnd >= position) {\n\t\t\t\treturn srcString.slice(position - srcStringStart, (position += token) - srcStringStart)\n\t\t\t}\n\t\t\tif (srcStringEnd == 0 && srcEnd < 140 && token < 32) {\n\t\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\n\t\t\t\tlet string = token < 16 ? shortStringInJS(token) : longStringInJS(token)\n\t\t\t\tif (string != null)\n\t\t\t\t\treturn string\n\t\t\t}\n\t\t\treturn readFixedString(token)\n\t\tcase 4: // array\n\t\t\tlet array = new Array(token)\n\t\t //if (currentDecoder.keyMap) for (let i = 0; i < token; i++) array[i] = currentDecoder.decodeKey(read())\t\n\t\t\t//else \n\t\t\tfor (let i = 0; i < token; i++) array[i] = read()\n\t\t\treturn array\n\t\tcase 5: // map\n\t\t\tif (currentDecoder.mapsAsObjects) {\n\t\t\t\tlet object = {}\n\t\t\t\tif (currentDecoder.keyMap) for (let i = 0; i < token; i++) object[safeKey(currentDecoder.decodeKey(read()))] = read()\n\t\t\t\telse for (let i = 0; i < token; i++) object[safeKey(read())] = read()\n\t\t\t\treturn object\n\t\t\t} else {\n\t\t\t\tif (restoreMapsAsObject) {\n\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\n\t\t\t\t\trestoreMapsAsObject = false\n\t\t\t\t}\n\t\t\t\tlet map = new Map()\n\t\t\t\tif (currentDecoder.keyMap) for (let i = 0; i < token; i++) map.set(currentDecoder.decodeKey(read()),read())\n\t\t\t\telse for (let i = 0; i < token; i++) map.set(read(), read())\n\t\t\t\treturn map\n\t\t\t}\n\t\tcase 6: // extension\n\t\t\tif (token >= BUNDLED_STRINGS_ID) {\n\t\t\t\tlet structure = currentStructures[token & 0x1fff] // check record structures first\n\t\t\t\t// At some point we may provide an option for dynamic tag assignment with a range like token >= 8 && (token < 16 || (token > 0x80 && token < 0xc0) || (token > 0x130 && token < 0x4000))\n\t\t\t\tif (structure) {\n\t\t\t\t\tif (!structure.read) structure.read = createStructureReader(structure)\n\t\t\t\t\treturn structure.read()\n\t\t\t\t}\n\t\t\t\tif (token < 0x10000) {\n\t\t\t\t\tif (token == RECORD_INLINE_ID) { // we do a special check for this so that we can keep the\n\t\t\t\t\t\t// currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n\t\t\t\t\t\tlet length = readJustLength()\n\t\t\t\t\t\tlet id = read()\n\t\t\t\t\t\tlet structure = read()\n\t\t\t\t\t\trecordDefinition(id, structure)\n\t\t\t\t\t\tlet object = {}\n\t\t\t\t\t\tif (currentDecoder.keyMap) for (let i = 2; i < length; i++) {\n\t\t\t\t\t\t\tlet key = currentDecoder.decodeKey(structure[i - 2])\n\t\t\t\t\t\t\tobject[safeKey(key)] = read()\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse for (let i = 2; i < length; i++) {\n\t\t\t\t\t\t\tlet key = structure[i - 2]\n\t\t\t\t\t\t\tobject[safeKey(key)] = read()\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn object\n\t\t\t\t\t}\n\t\t\t\t\telse if (token == RECORD_DEFINITIONS_ID) {\n\t\t\t\t\t\tlet length = readJustLength()\n\t\t\t\t\t\tlet id = read()\n\t\t\t\t\t\tfor (let i = 2; i < length; i++) {\n\t\t\t\t\t\t\trecordDefinition(id++, read())\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn read()\n\t\t\t\t\t} else if (token == BUNDLED_STRINGS_ID) {\n\t\t\t\t\t\treturn readBundleExt()\n\t\t\t\t\t}\n\t\t\t\t\tif (currentDecoder.getShared) {\n\t\t\t\t\t\tloadShared()\n\t\t\t\t\t\tstructure = currentStructures[token & 0x1fff]\n\t\t\t\t\t\tif (structure) {\n\t\t\t\t\t\t\tif (!structure.read)\n\t\t\t\t\t\t\t\tstructure.read = createStructureReader(structure)\n\t\t\t\t\t\t\treturn structure.read()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet extension = currentExtensions[token]\n\t\t\tif (extension) {\n\t\t\t\tif (extension.handlesRead)\n\t\t\t\t\treturn extension(read)\n\t\t\t\telse\n\t\t\t\t\treturn extension(read())\n\t\t\t} else {\n\t\t\t\tlet input = read()\n\t\t\t\tfor (let i = 0; i < currentExtensionRanges.length; i++) {\n\t\t\t\t\tlet value = currentExtensionRanges[i](token, input)\n\t\t\t\t\tif (value !== undefined)\n\t\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t\treturn new Tag(input, token)\n\t\t\t}\n\t\tcase 7: // fixed value\n\t\t\tswitch (token) {\n\t\t\t\tcase 0x14: return false\n\t\t\t\tcase 0x15: return true\n\t\t\t\tcase 0x16: return null\n\t\t\t\tcase 0x17: return; // undefined\n\t\t\t\tcase 0x1f:\n\t\t\t\tdefault:\n\t\t\t\t\tlet packedValue = (packedValues || getPackedValues())[token]\n\t\t\t\t\tif (packedValue !== undefined)\n\t\t\t\t\t\treturn packedValue\n\t\t\t\t\tthrow new Error('Unknown token ' + token)\n\t\t\t}\n\t\tdefault: // negative int\n\t\t\tif (isNaN(token)) {\n\t\t\t\tlet error = new Error('Unexpected end of CBOR data')\n\t\t\t\terror.incomplete = true\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\tthrow new Error('Unknown CBOR token ' + token)\n\t}\n}\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/\nfunction createStructureReader(structure) {\n\tfunction readObject() {\n\t\t// get the array size from the header\n\t\tlet length = src[position++]\n\t\t//let majorType = token >> 5\n\t\tlength = length & 0x1f\n\t\tif (length > 0x17) {\n\t\t\tswitch (length) {\n\t\t\t\tcase 0x18:\n\t\t\t\t\tlength = src[position++]\n\t\t\t\t\tbreak\n\t\t\t\tcase 0x19:\n\t\t\t\t\tlength = dataView.getUint16(position)\n\t\t\t\t\tposition += 2\n\t\t\t\t\tbreak\n\t\t\t\tcase 0x1a:\n\t\t\t\t\tlength = dataView.getUint32(position)\n\t\t\t\t\tposition += 4\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('Expected array header, but got ' + src[position - 1])\n\t\t\t}\n\t\t}\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\n\t\tlet compiledReader = this.compiledReader // first look to see if we have the fast compiled function\n\t\twhile(compiledReader) {\n\t\t\t// we have a fast compiled object literal reader\n\t\t\tif (compiledReader.propertyCount === length)\n\t\t\t\treturn compiledReader(read) // with the right length, so we use it\n\t\t\tcompiledReader = compiledReader.next // see if there is another reader with the right length\n\t\t}\n\t\tif (this.slowReads++ >= inlineObjectReadThreshold) { // create a fast compiled reader\n\t\t\tlet array = this.length == length ? this : this.slice(0, length)\n\t\t\tcompiledReader = currentDecoder.keyMap \n\t\t\t? new Function('r', 'return {' + array.map(k => currentDecoder.decodeKey(k)).map(k => validName.test(k) ? safeKey(k) + ':r()' : ('[' + JSON.stringify(k) + ']:r()')).join(',') + '}')\n\t\t\t: new Function('r', 'return {' + array.map(key => validName.test(key) ? safeKey(key) + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '}')\n\t\t\tif (this.compiledReader)\n\t\t\t\tcompiledReader.next = this.compiledReader // if there is an existing one, we store multiple readers as a linked list because it is usually pretty rare to have multiple readers (of different length) for the same structure\n\t\t\tcompiledReader.propertyCount = length\n\t\t\tthis.compiledReader = compiledReader\n\t\t\treturn compiledReader(read)\n\t\t}\n\t\tlet object = {}\n\t\tif (currentDecoder.keyMap) for (let i = 0; i < length; i++) object[safeKey(currentDecoder.decodeKey(this[i]))] = read()\n\t\telse for (let i = 0; i < length; i++) {\n\t\t\tobject[safeKey(this[i])] = read();\n\t\t}\n\t\treturn object\n\t}\n\tstructure.slowReads = 0\n\treturn readObject\n}\n\nfunction safeKey(key) {\n\treturn key === '__proto__' ? '__proto_' : key\n}\n\nlet readFixedString = readStringJS\nlet readString8 = readStringJS\nlet readString16 = readStringJS\nlet readString32 = readStringJS\n\nexport let isNativeAccelerationEnabled = false\nexport function setExtractor(extractStrings) {\n\tisNativeAccelerationEnabled = true\n\treadFixedString = readString(1)\n\treadString8 = readString(2)\n\treadString16 = readString(3)\n\treadString32 = readString(5)\n\tfunction readString(headerLength) {\n\t\treturn function readString(length) {\n\t\t\tlet string = strings[stringPosition++]\n\t\t\tif (string == null) {\n\t\t\t\tif (bundledStrings)\n\t\t\t\t\treturn readStringJS(length)\n\t\t\t\tlet extraction = extractStrings(position, srcEnd, length, src)\n\t\t\t\tif (typeof extraction == 'string') {\n\t\t\t\t\tstring = extraction\n\t\t\t\t\tstrings = EMPTY_ARRAY\n\t\t\t\t} else {\n\t\t\t\t\tstrings = extraction\n\t\t\t\t\tstringPosition = 1\n\t\t\t\t\tsrcStringEnd = 1 // even if a utf-8 string was decoded, must indicate we are in the midst of extracted strings and can't skip strings\n\t\t\t\t\tstring = strings[0]\n\t\t\t\t\tif (string === undefined)\n\t\t\t\t\t\tthrow new Error('Unexpected end of buffer')\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet srcStringLength = string.length\n\t\t\tif (srcStringLength <= length) {\n\t\t\t\tposition += length\n\t\t\t\treturn string\n\t\t\t}\n\t\t\tsrcString = string\n\t\t\tsrcStringStart = position\n\t\t\tsrcStringEnd = position + srcStringLength\n\t\t\tposition += length\n\t\t\treturn string.slice(0, length) // we know we just want the beginning\n\t\t}\n\t}\n}\nfunction readStringJS(length) {\n\tlet result\n\tif (length < 16) {\n\t\tif (result = shortStringInJS(length))\n\t\t\treturn result\n\t}\n\tif (length > 64 && decoder)\n\t\treturn decoder.decode(src.subarray(position, position += length))\n\tconst end = position + length\n\tconst units = []\n\tresult = ''\n\twhile (position < end) {\n\t\tconst byte1 = src[position++]\n\t\tif ((byte1 & 0x80) === 0) {\n\t\t\t// 1 byte\n\t\t\tunits.push(byte1)\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\n\t\t\t// 2 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 6) | byte2)\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\n\t\t\t// 3 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tunits.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3)\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\n\t\t\t// 4 bytes\n\t\t\tconst byte2 = src[position++] & 0x3f\n\t\t\tconst byte3 = src[position++] & 0x3f\n\t\t\tconst byte4 = src[position++] & 0x3f\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4\n\t\t\tif (unit > 0xffff) {\n\t\t\t\tunit -= 0x10000\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800)\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff)\n\t\t\t}\n\t\t\tunits.push(unit)\n\t\t} else {\n\t\t\tunits.push(byte1)\n\t\t}\n\n\t\tif (units.length >= 0x1000) {\n\t\t\tresult += fromCharCode.apply(String, units)\n\t\t\tunits.length = 0\n\t\t}\n\t}\n\n\tif (units.length > 0) {\n\t\tresult += fromCharCode.apply(String, units)\n\t}\n\n\treturn result\n}\nlet fromCharCode = String.fromCharCode\nfunction longStringInJS(length) {\n\tlet start = position\n\tlet bytes = new Array(length)\n\tfor (let i = 0; i < length; i++) {\n\t\tconst byte = src[position++];\n\t\tif ((byte & 0x80) > 0) {\n\t\t\tposition = start\n \t\t\treturn\n \t\t}\n \t\tbytes[i] = byte\n \t}\n \treturn fromCharCode.apply(String, bytes)\n}\nfunction shortStringInJS(length) {\n\tif (length < 4) {\n\t\tif (length < 2) {\n\t\t\tif (length === 0)\n\t\t\t\treturn ''\n\t\t\telse {\n\t\t\t\tlet a = src[position++]\n\t\t\t\tif ((a & 0x80) > 1) {\n\t\t\t\t\tposition -= 1\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a)\n\t\t\t}\n\t\t} else {\n\t\t\tlet a = src[position++]\n\t\t\tlet b = src[position++]\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\n\t\t\t\tposition -= 2\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 3)\n\t\t\t\treturn fromCharCode(a, b)\n\t\t\tlet c = src[position++]\n\t\t\tif ((c & 0x80) > 0) {\n\t\t\t\tposition -= 3\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c)\n\t\t}\n\t} else {\n\t\tlet a = src[position++]\n\t\tlet b = src[position++]\n\t\tlet c = src[position++]\n\t\tlet d = src[position++]\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\n\t\t\tposition -= 4\n\t\t\treturn\n\t\t}\n\t\tif (length < 6) {\n\t\t\tif (length === 4)\n\t\t\t\treturn fromCharCode(a, b, c, d)\n\t\t\telse {\n\t\t\t\tlet e = src[position++]\n\t\t\t\tif ((e & 0x80) > 0) {\n\t\t\t\t\tposition -= 5\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e)\n\t\t\t}\n\t\t} else if (length < 8) {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\n\t\t\t\tposition -= 6\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 7)\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f)\n\t\t\tlet g = src[position++]\n\t\t\tif ((g & 0x80) > 0) {\n\t\t\t\tposition -= 7\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g)\n\t\t} else {\n\t\t\tlet e = src[position++]\n\t\t\tlet f = src[position++]\n\t\t\tlet g = src[position++]\n\t\t\tlet h = src[position++]\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\n\t\t\t\tposition -= 8\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (length < 10) {\n\t\t\t\tif (length === 8)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h)\n\t\t\t\telse {\n\t\t\t\t\tlet i = src[position++]\n\t\t\t\t\tif ((i & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 9\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i)\n\t\t\t\t}\n\t\t\t} else if (length < 12) {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\n\t\t\t\t\tposition -= 10\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 11)\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j)\n\t\t\t\tlet k = src[position++]\n\t\t\t\tif ((k & 0x80) > 0) {\n\t\t\t\t\tposition -= 11\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k)\n\t\t\t} else {\n\t\t\t\tlet i = src[position++]\n\t\t\t\tlet j = src[position++]\n\t\t\t\tlet k = src[position++]\n\t\t\t\tlet l = src[position++]\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\n\t\t\t\t\tposition -= 12\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (length < 14) {\n\t\t\t\t\tif (length === 12)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l)\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\n\t\t\t\t\t\t\tposition -= 13\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet m = src[position++]\n\t\t\t\t\tlet n = src[position++]\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 14\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tif (length < 15)\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n)\n\t\t\t\t\tlet o = src[position++]\n\t\t\t\t\tif ((o & 0x80) > 0) {\n\t\t\t\t\t\tposition -= 15\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction readBin(length) {\n\treturn currentDecoder.copyBuffers ?\n\t\t// specifically use the copying slice (not the node one)\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\n\t\tsrc.subarray(position, position += length)\n}\nfunction readExt(length) {\n\tlet type = src[position++]\n\tif (currentExtensions[type]) {\n\t\treturn currentExtensions[type](src.subarray(position, position += length))\n\t}\n\telse\n\t\tthrow new Error('Unknown extension type ' + type)\n}\nlet f32Array = new Float32Array(1)\nlet u8Array = new Uint8Array(f32Array.buffer, 0, 4)\nfunction getFloat16() {\n\tlet byte0 = src[position++]\n\tlet byte1 = src[position++]\n\tlet exponent = (byte0 & 0x7f) >> 2;\n\tif (exponent === 0x1f) { // specials\n\t\tif (byte1 || (byte0 & 3))\n\t\t\treturn NaN;\n\t\treturn (byte0 & 0x80) ? -Infinity : Infinity;\n\t}\n\tif (exponent === 0) { // sub-normals\n\t\t// significand with 10 fractional bits and divided by 2^14\n\t\tlet abs = (((byte0 & 3) << 8) | byte1) / (1 << 24)\n\t\treturn (byte0 & 0x80) ? -abs : abs\n\t}\n\n\tu8Array[3] = (byte0 & 0x80) | // sign bit\n\t\t((exponent >> 1) + 56) // 4 of 5 of the exponent bits, re-offset-ed\n\tu8Array[2] = ((byte0 & 7) << 5) | // last exponent bit and first two mantissa bits\n\t\t(byte1 >> 3) // next 5 bits of mantissa\n\tu8Array[1] = byte1 << 5; // last three bits of mantissa\n\tu8Array[0] = 0;\n\treturn f32Array[0];\n}\n\nlet keyCache = new Array(4096)\nfunction readKey() {\n\tlet length = src[position++]\n\tif (length >= 0x60 && length < 0x78) {\n\t\t// fixstr, potentially use key cache\n\t\tlength = length - 0x60\n\t\tif (srcStringEnd >= position) // if it has been extracted, must use it (and faster anyway)\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\n\t\telse if (!(srcStringEnd == 0 && srcEnd < 180))\n\t\t\treturn readFixedString(length)\n\t} else { // not cacheable, go back and do a standard read\n\t\tposition--\n\t\treturn read()\n\t}\n\tlet key = ((length << 5) ^ (length > 1 ? dataView.getUint16(position) : length > 0 ? src[position] : 0)) & 0xfff\n\tlet entry = keyCache[key]\n\tlet checkPosition = position\n\tlet end = position + length - 3\n\tlet chunk\n\tlet i = 0\n\tif (entry && entry.bytes == length) {\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = dataView.getUint32(checkPosition)\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcheckPosition += 4\n\t\t}\n\t\tend += 3\n\t\twhile (checkPosition < end) {\n\t\t\tchunk = src[checkPosition++]\n\t\t\tif (chunk != entry[i++]) {\n\t\t\t\tcheckPosition = 0x70000000\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif (checkPosition === end) {\n\t\t\tposition = checkPosition\n\t\t\treturn entry.string\n\t\t}\n\t\tend -= 3\n\t\tcheckPosition = position\n\t}\n\tentry = []\n\tkeyCache[key] = entry\n\tentry.bytes = length\n\twhile (checkPosition < end) {\n\t\tchunk = dataView.getUint32(checkPosition)\n\t\tentry.push(chunk)\n\t\tcheckPosition += 4\n\t}\n\tend += 3\n\twhile (checkPosition < end) {\n\t\tchunk = src[checkPosition++]\n\t\tentry.push(chunk)\n\t}\n\t// for small blocks, avoiding the overhead of the extract call is helpful\n\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\n\tif (string != null)\n\t\treturn entry.string = string\n\treturn entry.string = readFixedString(length)\n}\n\nexport class Tag {\n\tconstructor(value, tag) {\n\t\tthis.value = value\n\t\tthis.tag = tag\n\t}\n}\n\ncurrentExtensions[0] = (dateString) => {\n\t// string date extension\n\treturn new Date(dateString)\n}\n\ncurrentExtensions[1] = (epochSec) => {\n\t// numeric date extension\n\treturn new Date(Math.round(epochSec * 1000))\n}\n\ncurrentExtensions[2] = (buffer) => {\n\t// bigint extension\n\tlet value = BigInt(0)\n\tfor (let i = 0, l = buffer.byteLength; i < l; i++) {\n\t\tvalue = BigInt(buffer[i]) + value << BigInt(8)\n\t}\n\treturn value\n}\n\ncurrentExtensions[3] = (buffer) => {\n\t// negative bigint extension\n\treturn BigInt(-1) - currentExtensions[2](buffer)\n}\ncurrentExtensions[4] = (fraction) => {\n\t// best to reparse to maintain accuracy\n\treturn +(fraction[1] + 'e' + fraction[0])\n}\n\ncurrentExtensions[5] = (fraction) => {\n\t// probably not sufficiently accurate\n\treturn fraction[1] * Math.exp(fraction[0] * Math.log(2))\n}\n\n// the registration of the record definition extension\nconst recordDefinition = (id, structure) => {\n\tid = id - 0xe000\n\tlet existingStructure = currentStructures[id]\n\tif (existingStructure && existingStructure.isShared) {\n\t\t(currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure\n\t}\n\tcurrentStructures[id] = structure\n\n\tstructure.read = createStructureReader(structure)\n}\ncurrentExtensions[LEGACY_RECORD_INLINE_ID] = (data) => {\n\tlet length = data.length\n\tlet structure = data[1]\n\trecordDefinition(data[0], structure)\n\tlet object = {}\n\tfor (let i = 2; i < length; i++) {\n\t\tlet key = structure[i - 2]\n\t\tobject[safeKey(key)] = data[i]\n\t}\n\treturn object\n}\ncurrentExtensions[14] = (value) => {\n\tif (bundledStrings)\n\t\treturn bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 += value)\n\treturn new Tag(value, 14)\n}\ncurrentExtensions[15] = (value) => {\n\tif (bundledStrings)\n\t\treturn bundledStrings[1].slice(bundledStrings.position1, bundledStrings.position1 += value)\n\treturn new Tag(value, 15)\n}\nlet glbl = { Error, RegExp }\ncurrentExtensions[27] = (data) => { // http://cbor.schmorp.de/generic-object\n\treturn (glbl[data[0]] || Error)(data[1], data[2])\n}\nconst packedTable = (read) => {\n\tif (src[position++] != 0x84) {\n\t\tlet error = new Error('Packed values structure must be followed by a 4 element array')\n\t\tif (src.length < position)\n\t\t\terror.incomplete = true\n\t\tthrow error\n\t}\n\tlet newPackedValues = read() // packed values\n\tif (!newPackedValues || !newPackedValues.length) {\n\t\tlet error = new Error('Packed values structure must be followed by a 4 element array')\n\t\terror.incomplete = true\n\t\tthrow error\n\t}\n\tpackedValues = packedValues ? newPackedValues.concat(packedValues.slice(newPackedValues.length)) : newPackedValues\n\tpackedValues.prefixes = read()\n\tpackedValues.suffixes = read()\n\treturn read() // read the rump\n}\npackedTable.handlesRead = true\ncurrentExtensions[51] = packedTable\n\ncurrentExtensions[PACKED_REFERENCE_TAG_ID] = (data) => { // packed reference\n\tif (!packedValues) {\n\t\tif (currentDecoder.getShared)\n\t\t\tloadShared()\n\t\telse\n\t\t\treturn new Tag(data, PACKED_REFERENCE_TAG_ID)\n\t}\n\tif (typeof data == 'number')\n\t\treturn packedValues[16 + (data >= 0 ? 2 * data : (-2 * data - 1))]\n\tlet error = new Error('No support for non-integer packed references yet')\n\tif (data === undefined)\n\t\terror.incomplete = true\n\tthrow error\n}\n\n// The following code is an incomplete implementation of http://cbor.schmorp.de/stringref\n// the real thing would need to implemennt more logic to populate the stringRefs table and\n// maintain a stack of stringRef \"namespaces\".\n//\n// currentExtensions[25] = (id) => {\n// \treturn stringRefs[id]\n// }\n// currentExtensions[256] = (read) => {\n// \tstringRefs = []\n// \ttry {\n// \t\treturn read()\n// \t} finally {\n// \t\tstringRefs = null\n// \t}\n// }\n// currentExtensions[256].handlesRead = true\n\ncurrentExtensions[28] = (read) => { \n\t// shareable http://cbor.schmorp.de/value-sharing (for structured clones)\n\tif (!referenceMap) {\n\t\treferenceMap = new Map()\n\t\treferenceMap.id = 0\n\t}\n\tlet id = referenceMap.id++\n\tlet token = src[position]\n\tlet target\n\t// TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\n\t// ahead past references to record structure definitions\n\tif ((token >> 5) == 4)\n\t\ttarget = []\n\telse\n\t\ttarget = {}\n\n\tlet refEntry = { target } // a placeholder object\n\treferenceMap.set(id, refEntry)\n\tlet targetProperties = read() // read the next value as the target object to id\n\tif (refEntry.used) // there is a cycle, so we have to assign properties to original target\n\t\treturn Object.assign(target, targetProperties)\n\trefEntry.target = targetProperties // the placeholder wasn't used, replace with the deserialized one\n\treturn targetProperties // no cycle, can just use the returned read object\n}\ncurrentExtensions[28].handlesRead = true\n\ncurrentExtensions[29] = (id) => {\n\t// sharedref http://cbor.schmorp.de/value-sharing (for structured clones)\n\tlet refEntry = referenceMap.get(id)\n\trefEntry.used = true\n\treturn refEntry.target\n}\n\ncurrentExtensions[258] = (array) => new Set(array); // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n(currentExtensions[259] = (read) => {\n\t// https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec\n\t// for decoding as a standard Map\n\tif (currentDecoder.mapsAsObjects) {\n\t\tcurrentDecoder.mapsAsObjects = false\n\t\trestoreMapsAsObject = true\n\t}\n\treturn read()\n}).handlesRead = true\nfunction combine(a, b) {\n\tif (typeof a === 'string')\n\t\treturn a + b\n\tif (a instanceof Array)\n\t\treturn a.concat(b)\n\treturn Object.assign({}, a, b)\n}\nfunction getPackedValues() {\n\tif (!packedValues) {\n\t\tif (currentDecoder.getShared)\n\t\t\tloadShared()\n\t\telse\n\t\t\tthrow new Error('No packed values available')\n\t}\n\treturn packedValues\n}\nconst SHARED_DATA_TAG_ID = 0x53687264 // ascii 'Shrd'\ncurrentExtensionRanges.push((tag, input) => {\n\tif (tag >= 225 && tag <= 255)\n\t\treturn combine(getPackedValues().prefixes[tag - 224], input)\n\tif (tag >= 28704 && tag <= 32767)\n\t\treturn combine(getPackedValues().prefixes[tag - 28672], input)\n\tif (tag >= 1879052288 && tag <= 2147483647)\n\t\treturn combine(getPackedValues().prefixes[tag - 1879048192], input)\n\tif (tag >= 216 && tag <= 223)\n\t\treturn combine(input, getPackedValues().suffixes[tag - 216])\n\tif (tag >= 27647 && tag <= 28671)\n\t\treturn combine(input, getPackedValues().suffixes[tag - 27639])\n\tif (tag >= 1811940352 && tag <= 1879048191)\n\t\treturn combine(input, getPackedValues().suffixes[tag - 1811939328])\n\tif (tag == SHARED_DATA_TAG_ID) {// we do a special check for this so that we can keep the currentExtensions as densely stored array (v8 stores arrays densely under about 3000 elements)\n\t\treturn {\n\t\t\tpackedValues: packedValues,\n\t\t\tstructures: currentStructures.slice(0),\n\t\t\tversion: input,\n\t\t}\n\t}\n\tif (tag == 55799) // self-descriptive CBOR tag, just return input value\n\t\treturn input\n})\n\nconst isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1\nexport const typedArrays = [Uint8Array, Uint8ClampedArray, Uint16Array, Uint32Array,\n\ttypeof BigUint64Array == 'undefined' ? { name:'BigUint64Array' } : BigUint64Array, Int8Array, Int16Array, Int32Array,\n\ttypeof BigInt64Array == 'undefined' ? { name:'BigInt64Array' } : BigInt64Array, Float32Array, Float64Array]\nconst typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 85, 86]\nfor (let i = 0; i < typedArrays.length; i++) {\n\tregisterTypedArray(typedArrays[i], typedArrayTags[i])\n}\nfunction registerTypedArray(TypedArray, tag) {\n\tlet dvMethod = 'get' + TypedArray.name.slice(0, -5)\n\tlet bytesPerElement;\n\tif (typeof TypedArray === 'function')\n\t\tbytesPerElement = TypedArray.BYTES_PER_ELEMENT;\n\telse\n\t\tTypedArray = null;\n\tfor (let littleEndian = 0; littleEndian < 2; littleEndian++) {\n\t\tif (!littleEndian && bytesPerElement == 1)\n\t\t\tcontinue\n\t\tlet sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3\n\t\tcurrentExtensions[littleEndian ? tag : (tag - 4)] = (bytesPerElement == 1 || littleEndian == isLittleEndianMachine) ? (buffer) => {\n\t\t\tif (!TypedArray)\n\t\t\t\tthrow new Error('Could not find typed array for code ' + tag)\n\t\t\tif (!currentDecoder.copyBuffers) {\n\t\t\t\t// try provide a direct view, but will only work if we are byte-aligned\n\t\t\t\tif (bytesPerElement === 1 ||\n\t\t\t\t\tbytesPerElement === 2 && !(buffer.byteOffset & 1) ||\n\t\t\t\t\tbytesPerElement === 4 && !(buffer.byteOffset & 3) ||\n\t\t\t\t\tbytesPerElement === 8 && !(buffer.byteOffset & 7))\n\t\t\t\t\treturn new TypedArray(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n\t\t\t}\n\t\t\t// we have to slice/copy here to get a new ArrayBuffer, if we are not word/byte aligned\n\t\t\treturn new TypedArray(Uint8Array.prototype.slice.call(buffer, 0).buffer)\n\t\t} : buffer => {\n\t\t\tif (!TypedArray)\n\t\t\t\tthrow new Error('Could not find typed array for code ' + tag)\n\t\t\tlet dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n\t\t\tlet elements = buffer.length >> sizeShift\n\t\t\tlet ta = new TypedArray(elements)\n\t\t\tlet method = dv[dvMethod]\n\t\t\tfor (let i = 0; i < elements; i++) {\n\t\t\t\tta[i] = method.call(dv, i << sizeShift, littleEndian)\n\t\t\t}\n\t\t\treturn ta\n\t\t}\n\t}\n}\n\nfunction readBundleExt() {\n\tlet length = readJustLength()\n\tlet bundlePosition = position + read()\n\tfor (let i = 2; i < length; i++) {\n\t\t// skip past bundles that were already read\n\t\tlet bundleLength = readJustLength() // this will increment position, so must add to position afterwards\n\t\tposition += bundleLength\n\t}\n\tlet dataPosition = position\n\tposition = bundlePosition\n\tbundledStrings = [readStringJS(readJustLength()), readStringJS(readJustLength())]\n\tbundledStrings.position0 = 0\n\tbundledStrings.position1 = 0\n\tbundledStrings.postBundlePosition = position\n\tposition = dataPosition\n\treturn read()\n}\n\nfunction readJustLength() {\n\tlet token = src[position++] & 0x1f\n\tif (token > 0x17) {\n\t\tswitch (token) {\n\t\t\tcase 0x18:\n\t\t\t\ttoken = src[position++]\n\t\t\t\tbreak\n\t\t\tcase 0x19:\n\t\t\t\ttoken = dataView.getUint16(position)\n\t\t\t\tposition += 2\n\t\t\t\tbreak\n\t\t\tcase 0x1a:\n\t\t\t\ttoken = dataView.getUint32(position)\n\t\t\t\tposition += 4\n\t\t\t\tbreak\n\t\t}\n\t}\n\treturn token\n}\n\nfunction loadShared() {\n\tif (currentDecoder.getShared) {\n\t\tlet sharedData = saveState(() => {\n\t\t\t// save the state in case getShared modifies our buffer\n\t\t\tsrc = null\n\t\t\treturn currentDecoder.getShared()\n\t\t}) || {}\n\t\tlet updatedStructures = sharedData.structures || []\n\t\tcurrentDecoder.sharedVersion = sharedData.version\n\t\tpackedValues = currentDecoder.sharedValues = sharedData.packedValues\n\t\tif (currentStructures === true)\n\t\t\tcurrentDecoder.structures = currentStructures = updatedStructures\n\t\telse\n\t\t\tcurrentStructures.splice.apply(currentStructures, [0, updatedStructures.length].concat(updatedStructures))\n\t}\n}\n\nfunction saveState(callback) {\n\tlet savedSrcEnd = srcEnd\n\tlet savedPosition = position\n\tlet savedStringPosition = stringPosition\n\tlet savedSrcStringStart = srcStringStart\n\tlet savedSrcStringEnd = srcStringEnd\n\tlet savedSrcString = srcString\n\tlet savedStrings = strings\n\tlet savedReferenceMap = referenceMap\n\tlet savedBundledStrings = bundledStrings\n\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)) // we copy the data in case it changes while external data is processed\n\tlet savedStructures = currentStructures\n\tlet savedDecoder = currentDecoder\n\tlet savedSequentialMode = sequentialMode\n\tlet value = callback()\n\tsrcEnd = savedSrcEnd\n\tposition = savedPosition\n\tstringPosition = savedStringPosition\n\tsrcStringStart = savedSrcStringStart\n\tsrcStringEnd = savedSrcStringEnd\n\tsrcString = savedSrcString\n\tstrings = savedStrings\n\treferenceMap = savedReferenceMap\n\tbundledStrings = savedBundledStrings\n\tsrc = savedSrc\n\tsequentialMode = savedSequentialMode\n\tcurrentStructures = savedStructures\n\tcurrentDecoder = savedDecoder\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength)\n\treturn value\n}\nexport function clearSource() {\n\tsrc = null\n\treferenceMap = null\n\tcurrentStructures = null\n}\n\nexport function addExtension(extension) {\n\tcurrentExtensions[extension.tag] = extension.decode\n}\n\nexport const mult10 = new Array(147) // this is a table matching binary exponents to the multiplier to determine significant digit rounding\nfor (let i = 0; i < 256; i++) {\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103))\n}\nlet defaultDecoder = new Decoder({ useRecords: false })\nexport const decode = defaultDecoder.decode\nexport const decodeMultiple = defaultDecoder.decodeMultiple\nexport const FLOAT32_OPTIONS = {\n\tNEVER: 0,\n\tALWAYS: 1,\n\tDECIMAL_ROUND: 3,\n\tDECIMAL_FIT: 4\n}\nexport function roundFloat32(float32Number) {\n\tf32Array[0] = float32Number\n\tlet multiplier = mult10[((u8Array[3] & 0x7f) << 1) | (u8Array[2] >> 7)]\n\treturn ((multiplier * float32Number + (float32Number > 0 ? 0.5 : -0.5)) >> 0) / multiplier\n}\n","import { Decoder, mult10, Tag, typedArrays, addExtension as decodeAddExtension } from './decode.js'\nlet textEncoder\ntry {\n\ttextEncoder = new TextEncoder()\n} catch (error) {}\nlet extensions, extensionClasses\nconst Buffer = typeof globalThis === 'object' && globalThis.Buffer;\nconst hasNodeBuffer = typeof Buffer !== 'undefined'\nconst ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array\nconst MAX_STRUCTURES = 0x100\nconst MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000\nlet serializationId = 1\nlet throwOnIterable\nlet target\nlet targetView\nlet position = 0\nlet safeEnd\nlet bundledStrings = null\nconst MAX_BUNDLE_SIZE = 0xf000\nconst hasNonLatin = /[\\u0080-\\uFFFF]/\nconst RECORD_SYMBOL = Symbol('record-id')\nexport class Encoder extends Decoder {\n\tconstructor(options) {\n\t\tsuper(options)\n\t\tthis.offset = 0\n\t\tlet typeBuffer\n\t\tlet start\n\t\tlet sharedStructures\n\t\tlet hasSharedUpdate\n\t\tlet structures\n\t\tlet referenceMap\n\t\toptions = options || {}\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {\n\t\t\treturn target.utf8Write(string, position, maxBytes)\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\n\t\t\tfunction(string, position) {\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written\n\t\t\t} : false\n\n\t\tlet encoder = this\n\t\tlet hasSharedStructures = options.structures || options.saveStructures\n\t\tlet maxSharedStructures = options.maxSharedStructures\n\t\tif (maxSharedStructures == null)\n\t\t\tmaxSharedStructures = hasSharedStructures ? 128 : 0\n\t\tif (maxSharedStructures > 8190)\n\t\t\tthrow new Error('Maximum maxSharedStructure is 8190')\n\t\tlet isSequential = options.sequential\n\t\tif (isSequential) {\n\t\t\tmaxSharedStructures = 0\n\t\t}\n\t\tif (!this.structures)\n\t\t\tthis.structures = []\n\t\tif (this.saveStructures)\n\t\t\tthis.saveShared = this.saveStructures\n\t\tlet samplingPackedValues, packedObjectMap, sharedValues = options.sharedValues\n\t\tlet sharedPackedObjectMap\n\t\tif (sharedValues) {\n\t\t\tsharedPackedObjectMap = Object.create(null)\n\t\t\tfor (let i = 0, l = sharedValues.length; i < l; i++) {\n\t\t\t\tsharedPackedObjectMap[sharedValues[i]] = i\n\t\t\t}\n\t\t}\n\t\tlet recordIdsToRemove = []\n\t\tlet transitionsCount = 0\n\t\tlet serializationsSinceTransitionRebuild = 0\n\t\t\n\t\tthis.mapEncode = function(value, encodeOptions) {\n\t\t\t// Experimental support for premapping keys using _keyMap instad of keyMap - not optiimised yet)\n\t\t\tif (this._keyMap && !this._mapped) {\n\t\t\t\t//console.log('encoding ', value)\n\t\t\t\tswitch (value.constructor.name) {\n\t\t\t\t\tcase 'Array': \n\t\t\t\t\t\tvalue = value.map(r => this.encodeKeys(r))\n\t\t\t\t\t\tbreak\n\t\t\t\t\t//case 'Map': \n\t\t\t\t\t//\tvalue = this.encodeKeys(value)\n\t\t\t\t\t//\tbreak\n\t\t\t\t}\n\t\t\t\t//this._mapped = true\n\t\t\t}\n\t\t\treturn this.encode(value, encodeOptions)\n\t\t}\n\t\t\n\t\tthis.encode = function(value, encodeOptions)\t{\n\t\t\tif (!target) {\n\t\t\t\ttarget = new ByteArrayAllocate(8192)\n\t\t\t\ttargetView = new DataView(target.buffer, 0, 8192)\n\t\t\t\tposition = 0\n\t\t\t}\n\t\t\tsafeEnd = target.length - 10\n\t\t\tif (safeEnd - position < 0x800) {\n\t\t\t\t// don't start too close to the end, \n\t\t\t\ttarget = new ByteArrayAllocate(target.length)\n\t\t\t\ttargetView = new DataView(target.buffer, 0, target.length)\n\t\t\t\tsafeEnd = target.length - 10\n\t\t\t\tposition = 0\n\t\t\t} else if (encodeOptions === REUSE_BUFFER_MODE)\n\t\t\t\tposition = (position + 7) & 0x7ffffff8 // Word align to make any future copying of this buffer faster\n\t\t\tstart = position\n\t\t\tif (encoder.useSelfDescribedHeader) {\n\t\t\t\ttargetView.setUint32(position, 0xd9d9f700) // tag two byte, then self-descriptive tag\n\t\t\t\tposition += 3\n\t\t\t}\n\t\t\treferenceMap = encoder.structuredClone ? new Map() : null\n\t\t\tif (encoder.bundleStrings && typeof value !== 'string') {\n\t\t\t\tbundledStrings = []\n\t\t\t\tbundledStrings.size = Infinity // force a new bundle start on first string\n\t\t\t} else\n\t\t\t\tbundledStrings = null\n\n\t\t\tsharedStructures = encoder.structures\n\t\t\tif (sharedStructures) {\n\t\t\t\tif (sharedStructures.uninitialized) {\n\t\t\t\t\tlet sharedData = encoder.getShared() || {}\n\t\t\t\t\tencoder.structures = sharedStructures = sharedData.structures || []\n\t\t\t\t\tencoder.sharedVersion = sharedData.version\n\t\t\t\t\tlet sharedValues = encoder.sharedValues = sharedData.packedValues\n\t\t\t\t\tif (sharedValues) {\n\t\t\t\t\t\tsharedPackedObjectMap = {}\n\t\t\t\t\t\tfor (let i = 0, l = sharedValues.length; i < l; i++)\n\t\t\t\t\t\t\tsharedPackedObjectMap[sharedValues[i]] = i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet sharedStructuresLength = sharedStructures.length\n\t\t\t\tif (sharedStructuresLength > maxSharedStructures && !isSequential)\n\t\t\t\t\tsharedStructuresLength = maxSharedStructures\n\t\t\t\tif (!sharedStructures.transitions) {\n\t\t\t\t\t// rebuild our structure transitions\n\t\t\t\t\tsharedStructures.transitions = Object.create(null)\n\t\t\t\t\tfor (let i = 0; i < sharedStructuresLength; i++) {\n\t\t\t\t\t\tlet keys = sharedStructures[i]\n\t\t\t\t\t\t//console.log('shared struct keys:', keys)\n\t\t\t\t\t\tif (!keys)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\tlet nextTransition, transition = sharedStructures.transitions\n\t\t\t\t\t\tfor (let j = 0, l = keys.length; j < l; j++) {\n\t\t\t\t\t\t\tif (transition[RECORD_SYMBOL] === undefined)\n\t\t\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i\n\t\t\t\t\t\t\tlet key = keys[j]\n\t\t\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i | 0x100000\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isSequential)\n\t\t\t\t\tsharedStructures.nextId = sharedStructuresLength\n\t\t\t}\n\t\t\tif (hasSharedUpdate)\n\t\t\t\thasSharedUpdate = false\n\t\t\tstructures = sharedStructures || []\n\t\t\tpackedObjectMap = sharedPackedObjectMap\n\t\t\tif (options.pack) {\n\t\t\t\tlet packedValues = new Map()\n\t\t\t\tpackedValues.values = []\n\t\t\t\tpackedValues.encoder = encoder\n\t\t\t\tpackedValues.maxValues = options.maxPrivatePackedValues || (sharedPackedObjectMap ? 16 : Infinity)\n\t\t\t\tpackedValues.objectMap = sharedPackedObjectMap || false\n\t\t\t\tpackedValues.samplingPackedValues = samplingPackedValues\n\t\t\t\tfindRepetitiveStrings(value, packedValues)\n\t\t\t\tif (packedValues.values.length > 0) {\n\t\t\t\t\ttarget[position++] = 0xd8 // one-byte tag\n\t\t\t\t\ttarget[position++] = 51 // tag 51 for packed shared structures https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\t\t\twriteArrayHeader(4)\n\t\t\t\t\tlet valuesArray = packedValues.values\n\t\t\t\t\tencode(valuesArray)\n\t\t\t\t\twriteArrayHeader(0) // prefixes\n\t\t\t\t\twriteArrayHeader(0) // suffixes\n\t\t\t\t\tpackedObjectMap = Object.create(sharedPackedObjectMap || null)\n\t\t\t\t\tfor (let i = 0, l = valuesArray.length; i < l; i++) {\n\t\t\t\t\t\tpackedObjectMap[valuesArray[i]] = i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrowOnIterable = encodeOptions & THROW_ON_ITERABLE;\n\t\t\ttry {\n\t\t\t\tif (throwOnIterable)\n\t\t\t\t\treturn;\n\t\t\t\tencode(value)\n\t\t\t\tif (bundledStrings) {\n\t\t\t\t\twriteBundles(start, encode)\n\t\t\t\t}\n\t\t\t\tencoder.offset = position // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\n\t\t\t\t\tposition += referenceMap.idsToInsert.length * 2\n\t\t\t\t\tif (position > safeEnd)\n\t\t\t\t\t\tmakeRoom(position)\n\t\t\t\t\tencoder.offset = position\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), referenceMap.idsToInsert)\n\t\t\t\t\treferenceMap = null\n\t\t\t\t\treturn serialized\n\t\t\t\t}\n\t\t\t\tif (encodeOptions & REUSE_BUFFER_MODE) {\n\t\t\t\t\ttarget.start = start\n\t\t\t\t\ttarget.end = position\n\t\t\t\t\treturn target\n\t\t\t\t}\n\t\t\t\treturn target.subarray(start, position) // position can change if we call encode again in saveShared, so we get the buffer now\n\t\t\t} finally {\n\t\t\t\tif (sharedStructures) {\n\t\t\t\t\tif (serializationsSinceTransitionRebuild < 10)\n\t\t\t\t\t\tserializationsSinceTransitionRebuild++\n\t\t\t\t\tif (sharedStructures.length > maxSharedStructures)\n\t\t\t\t\t\tsharedStructures.length = maxSharedStructures\n\t\t\t\t\tif (transitionsCount > 10000) {\n\t\t\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\n\t\t\t\t\t\tsharedStructures.transitions = null\n\t\t\t\t\t\tserializationsSinceTransitionRebuild = 0\n\t\t\t\t\t\ttransitionsCount = 0\n\t\t\t\t\t\tif (recordIdsToRemove.length > 0)\n\t\t\t\t\t\t\trecordIdsToRemove = []\n\t\t\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\n\t\t\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\n\t\t\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\trecordIdsToRemove = []\n\t\t\t\t\t\t//sharedStructures.nextId = maxSharedStructures\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (hasSharedUpdate && encoder.saveShared) {\n\t\t\t\t\tif (encoder.structures.length > maxSharedStructures) {\n\t\t\t\t\t\tencoder.structures = encoder.structures.slice(0, maxSharedStructures)\n\t\t\t\t\t}\n\t\t\t\t\t// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save\n\t\t\t\t\tlet returnBuffer = target.subarray(start, position)\n\t\t\t\t\tif (encoder.updateSharedData() === false)\n\t\t\t\t\t\treturn encoder.encode(value) // re-encode if it fails\n\t\t\t\t\treturn returnBuffer\n\t\t\t\t}\n\t\t\t\tif (encodeOptions & RESET_BUFFER_MODE)\n\t\t\t\t\tposition = start\n\t\t\t}\n\t\t}\n\t\tthis.findCommonStringsToPack = () => {\n\t\t\tsamplingPackedValues = new Map()\n\t\t\tif (!sharedPackedObjectMap)\n\t\t\t\tsharedPackedObjectMap = Object.create(null)\n\t\t\treturn (options) => {\n\t\t\t\tlet threshold = options && options.threshold || 4\n\t\t\t\tlet position = this.pack ? options.maxPrivatePackedValues || 16 : 0\n\t\t\t\tif (!sharedValues)\n\t\t\t\t\tsharedValues = this.sharedValues = []\n\t\t\t\tfor (let [ key, status ] of samplingPackedValues) {\n\t\t\t\t\tif (status.count > threshold) {\n\t\t\t\t\t\tsharedPackedObjectMap[key] = position++\n\t\t\t\t\t\tsharedValues.push(key)\n\t\t\t\t\t\thasSharedUpdate = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile (this.saveShared && this.updateSharedData() === false) {}\n\t\t\t\tsamplingPackedValues = null\n\t\t\t}\n\t\t}\n\t\tconst encode = (value) => {\n\t\t\tif (position > safeEnd)\n\t\t\t\ttarget = makeRoom(position)\n\n\t\t\tvar type = typeof value\n\t\t\tvar length\n\t\t\tif (type === 'string') {\n\t\t\t\tif (packedObjectMap) {\n\t\t\t\t\tlet packedPosition = packedObjectMap[value]\n\t\t\t\t\tif (packedPosition >= 0) {\n\t\t\t\t\t\tif (packedPosition < 16)\n\t\t\t\t\t\t\ttarget[position++] = packedPosition + 0xe0 // simple values, defined in https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttarget[position++] = 0xc6 // tag 6 defined in https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\t\t\t\t\tif (packedPosition & 1)\n\t\t\t\t\t\t\t\tencode((15 - packedPosition) >> 1)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tencode((packedPosition - 16) >> 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn\n/*\t\t\t\t\t\t} else if (packedStatus.serializationId != serializationId) {\n\t\t\t\t\t\t\tpackedStatus.serializationId = serializationId\n\t\t\t\t\t\t\tpackedStatus.count = 1\n\t\t\t\t\t\t\tif (options.sharedPack) {\n\t\t\t\t\t\t\t\tlet sharedCount = packedStatus.sharedCount = (packedStatus.sharedCount || 0) + 1\n\t\t\t\t\t\t\t\tif (shareCount > (options.sharedPack.threshold || 5)) {\n\t\t\t\t\t\t\t\t\tlet sharedPosition = packedStatus.position = packedStatus.nextSharedPosition\n\t\t\t\t\t\t\t\t\thasSharedUpdate = true\n\t\t\t\t\t\t\t\t\tif (sharedPosition < 16)\n\t\t\t\t\t\t\t\t\t\ttarget[position++] = sharedPosition + 0xc0\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} // else any in-doc incrementation?*/\n\t\t\t\t\t} else if (samplingPackedValues && !options.pack) {\n\t\t\t\t\t\tlet status = samplingPackedValues.get(value)\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tstatus.count++\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tsamplingPackedValues.set(value, {\n\t\t\t\t\t\t\t\tcount: 1,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet strLength = value.length\n\t\t\t\tif (bundledStrings && strLength >= 4 && strLength < 0x400) {\n\t\t\t\t\tif ((bundledStrings.size += strLength) > MAX_BUNDLE_SIZE) {\n\t\t\t\t\t\tlet extStart\n\t\t\t\t\t\tlet maxBytes = (bundledStrings[0] ? bundledStrings[0].length * 3 + bundledStrings[1].length : 0) + 10\n\t\t\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\t\t\t\t\t\ttarget[position++] = 0xd9 // tag 16-bit\n\t\t\t\t\t\ttarget[position++] = 0xdf // tag 0xdff9\n\t\t\t\t\t\ttarget[position++] = 0xf9\n\t\t\t\t\t\t// TODO: If we only have one bundle with any string data, only write one string bundle\n\t\t\t\t\t\ttarget[position++] = bundledStrings.position ? 0x84 : 0x82 // array of 4 or 2 elements depending on if we write bundles\n\t\t\t\t\t\ttarget[position++] = 0x1a // 32-bit unsigned int\n\t\t\t\t\t\textStart = position - start\n\t\t\t\t\t\tposition += 4 // reserve for writing bundle reference\n\t\t\t\t\t\tif (bundledStrings.position) {\n\t\t\t\t\t\t\twriteBundles(start, encode) // write the last bundles\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbundledStrings = ['', ''] // create new ones\n\t\t\t\t\t\tbundledStrings.size = 0\n\t\t\t\t\t\tbundledStrings.position = extStart\n\t\t\t\t\t}\n\t\t\t\t\tlet twoByte = hasNonLatin.test(value)\n\t\t\t\t\tbundledStrings[twoByte ? 0 : 1] += value\n\t\t\t\t\ttarget[position++] = twoByte ? 0xce : 0xcf\n\t\t\t\t\tencode(strLength);\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlet headerSize\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\n\t\t\t\tif (strLength < 0x20) {\n\t\t\t\t\theaderSize = 1\n\t\t\t\t} else if (strLength < 0x100) {\n\t\t\t\t\theaderSize = 2\n\t\t\t\t} else if (strLength < 0x10000) {\n\t\t\t\t\theaderSize = 3\n\t\t\t\t} else {\n\t\t\t\t\theaderSize = 5\n\t\t\t\t}\n\t\t\t\tlet maxBytes = strLength * 3\n\t\t\t\tif (position + maxBytes > safeEnd)\n\t\t\t\t\ttarget = makeRoom(position + maxBytes)\n\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\n\t\t\t\t\t\tc1 = value.charCodeAt(i)\n\t\t\t\t\t\tif (c1 < 0x80) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1\n\t\t\t\t\t\t} else if (c1 < 0x800) {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff)\n\t\t\t\t\t\t\ti++\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlength = strPosition - position - headerSize\n\t\t\t\t} else {\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize, maxBytes)\n\t\t\t\t}\n\n\t\t\t\tif (length < 0x18) {\n\t\t\t\t\ttarget[position++] = 0x60 | length\n\t\t\t\t} else if (length < 0x100) {\n\t\t\t\t\tif (headerSize < 2) {\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0x78\n\t\t\t\t\ttarget[position++] = length\n\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\tif (headerSize < 3) {\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0x79\n\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t} else {\n\t\t\t\t\tif (headerSize < 5) {\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length)\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0x7a\n\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\tposition += 4\n\t\t\t\t}\n\t\t\t\tposition += length\n\t\t\t} else if (type === 'number') {\n\t\t\t\tif (!this.alwaysUseFloat && value >>> 0 === value) {// positive integer, 32-bit or less\n\t\t\t\t\t// positive uint\n\t\t\t\t\tif (value < 0x18) {\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x100) {\n\t\t\t\t\t\ttarget[position++] = 0x18\n\t\t\t\t\t\ttarget[position++] = value\n\t\t\t\t\t} else if (value < 0x10000) {\n\t\t\t\t\t\ttarget[position++] = 0x19\n\t\t\t\t\t\ttarget[position++] = value >> 8\n\t\t\t\t\t\ttarget[position++] = value & 0xff\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0x1a\n\t\t\t\t\t\ttargetView.setUint32(position, value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else if (!this.alwaysUseFloat && value >> 0 === value) { // negative integer\n\t\t\t\t\tif (value >= -0x18) {\n\t\t\t\t\t\ttarget[position++] = 0x1f - value\n\t\t\t\t\t} else if (value >= -0x100) {\n\t\t\t\t\t\ttarget[position++] = 0x38\n\t\t\t\t\t\ttarget[position++] = ~value\n\t\t\t\t\t} else if (value >= -0x10000) {\n\t\t\t\t\t\ttarget[position++] = 0x39\n\t\t\t\t\t\ttargetView.setUint16(position, ~value)\n\t\t\t\t\t\tposition += 2\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget[position++] = 0x3a\n\t\t\t\t\t\ttargetView.setUint32(position, ~value)\n\t\t\t\t\t\tposition += 4\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlet useFloat32\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\n\t\t\t\t\t\ttarget[position++] = 0xfa\n\t\t\t\t\t\ttargetView.setFloat32(position, value)\n\t\t\t\t\t\tlet xShifted\n\t\t\t\t\t\tif (useFloat32 < 4 ||\n\t\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tposition-- // move back into position for writing a double\n\t\t\t\t\t}\n\t\t\t\t\ttarget[position++] = 0xfb\n\t\t\t\t\ttargetView.setFloat64(position, value)\n\t\t\t\t\tposition += 8\n\t\t\t\t}\n\t\t\t} else if (type === 'object') {\n\t\t\t\tif (!value)\n\t\t\t\t\ttarget[position++] = 0xf6\n\t\t\t\telse {\n\t\t\t\t\tif (referenceMap) {\n\t\t\t\t\t\tlet referee = referenceMap.get(value)\n\t\t\t\t\t\tif (referee) {\n\t\t\t\t\t\t\ttarget[position++] = 0xd8\n\t\t\t\t\t\t\ttarget[position++] = 29 // http://cbor.schmorp.de/value-sharing\n\t\t\t\t\t\t\ttarget[position++] = 0x19 // 16-bit uint\n\t\t\t\t\t\t\tif (!referee.references) {\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = [])\n\t\t\t\t\t\t\t\treferee.references = []\n\t\t\t\t\t\t\t\tidsToInsert.push(referee)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treferee.references.push(position - start)\n\t\t\t\t\t\t\tposition += 2 // TODO: also support 32-bit\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t} else \n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start })\n\t\t\t\t\t}\n\t\t\t\t\tlet constructor = value.constructor\n\t\t\t\t\tif (constructor === Object) {\n\t\t\t\t\t\twriteObject(value, true)\n\t\t\t\t\t} else if (constructor === Array) {\n\t\t\t\t\t\tlength = value.length\n\t\t\t\t\t\tif (length < 0x18) {\n\t\t\t\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twriteArrayHeader(length)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\t\t\tencode(value[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (constructor === Map) {\n\t\t\t\t\t\tif (this.mapsAsObjects ? this.useTag259ForMaps !== false : this.useTag259ForMaps) {\n\t\t\t\t\t\t\t// use Tag 259 (https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec--explicit-maps.md) for maps if the user wants it that way\n\t\t\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\t\t\ttarget[position++] = 1\n\t\t\t\t\t\t\ttarget[position++] = 3\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlength = value.size\n\t\t\t\t\t\tif (length < 0x18) {\n\t\t\t\t\t\t\ttarget[position++] = 0xa0 | length\n\t\t\t\t\t\t} else if (length < 0x100) {\n\t\t\t\t\t\t\ttarget[position++] = 0xb8\n\t\t\t\t\t\t\ttarget[position++] = length\n\t\t\t\t\t\t} else if (length < 0x10000) {\n\t\t\t\t\t\t\ttarget[position++] = 0xb9\n\t\t\t\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget[position++] = 0xba\n\t\t\t\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (encoder.keyMap) { \n\t\t\t\t\t\t\tfor (let [ key, entryValue ] of value) {\n\t\t\t\t\t\t\t\tencode(encoder.encodeKey(key))\n\t\t\t\t\t\t\t\tencode(entryValue)\n\t\t\t\t\t\t\t} \n\t\t\t\t\t\t} else { \n\t\t\t\t\t\t\tfor (let [ key, entryValue ] of value) {\n\t\t\t\t\t\t\t\tencode(key) \n\t\t\t\t\t\t\t\tencode(entryValue)\n\t\t\t\t\t\t\t} \t\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i]\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\n\t\t\t\t\t\t\t\tlet extension = extensions[i]\n\t\t\t\t\t\t\t\tlet tag = extension.tag\n\t\t\t\t\t\t\t\tif (tag == undefined)\n\t\t\t\t\t\t\t\t\ttag = extension.getTag && extension.getTag.call(this, value)\n\t\t\t\t\t\t\t\tif (tag < 0x18) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xc0 | tag\n\t\t\t\t\t\t\t\t} else if (tag < 0x100) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd8\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag\n\t\t\t\t\t\t\t\t} else if (tag < 0x10000) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag >> 8\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag & 0xff\n\t\t\t\t\t\t\t\t} else if (tag > -1) {\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xda\n\t\t\t\t\t\t\t\t\ttargetView.setUint32(position, tag)\n\t\t\t\t\t\t\t\t\tposition += 4\n\t\t\t\t\t\t\t\t} // else undefined, don't write tag\n\t\t\t\t\t\t\t\textension.encode.call(this, value, encode, makeRoom)\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value[Symbol.iterator]) {\n\t\t\t\t\t\t\tif (throwOnIterable) {\n\t\t\t\t\t\t\t\tlet error = new Error('Iterable should be serialized as iterator')\n\t\t\t\t\t\t\t\terror.iteratorNotHandled = true;\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttarget[position++] = 0x9f // indefinite length array\n\t\t\t\t\t\t\tfor (let entry of value) {\n\t\t\t\t\t\t\t\tencode(entry)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttarget[position++] = 0xff // stop-code\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value[Symbol.asyncIterator] || isBlob(value)) {\n\t\t\t\t\t\t\tlet error = new Error('Iterable/blob should be serialized as iterator')\n\t\t\t\t\t\t\terror.iteratorNotHandled = true;\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.useToJSON && value.toJSON) {\n\t\t\t\t\t\t\tconst json = value.toJSON()\n\t\t\t\t\t\t\t// if for some reason value.toJSON returns itself it'll loop forever\n\t\t\t\t\t\t\tif (json !== value)\n\t\t\t\t\t\t\t\treturn encode(json)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// no extension found, write as object\n\t\t\t\t\t\twriteObject(value, !value.hasOwnProperty) // if it doesn't have hasOwnProperty, don't do hasOwnProperty checks\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'boolean') {\n\t\t\t\ttarget[position++] = value ? 0xf5 : 0xf4\n\t\t\t} else if (type === 'bigint') {\n\t\t\t\tif (value < (BigInt(1)<= 0) {\n\t\t\t\t\t// use an unsigned int as long as it fits\n\t\t\t\t\ttarget[position++] = 0x1b\n\t\t\t\t\ttargetView.setBigUint64(position, value)\n\t\t\t\t} else if (value > -(BigInt(1)< {\n\t\t\t// this method is slightly slower, but generates \"preferred serialization\" (optimally small for smaller objects)\n\t\t\tlet keys = Object.keys(object)\n\t\t\tlet vals = Object.values(object)\n\t\t\tlet length = keys.length\n\t\t\tif (length < 0x18) {\n\t\t\t\ttarget[position++] = 0xa0 | length\n\t\t\t} else if (length < 0x100) {\n\t\t\t\ttarget[position++] = 0xb8\n\t\t\t\ttarget[position++] = length\n\t\t\t} else if (length < 0x10000) {\n\t\t\t\ttarget[position++] = 0xb9\n\t\t\t\ttarget[position++] = length >> 8\n\t\t\t\ttarget[position++] = length & 0xff\n\t\t\t} else {\n\t\t\t\ttarget[position++] = 0xba\n\t\t\t\ttargetView.setUint32(position, length)\n\t\t\t\tposition += 4\n\t\t\t}\n\t\t\tlet key\n\t\t\tif (encoder.keyMap) { \n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tencode(encoder.encodeKey(keys[i]))\n\t\t\t\t\tencode(vals[i])\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tencode(keys[i])\n\t\t\t\t\tencode(vals[i])\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\t\t(object, safePrototype) => {\n\t\t\ttarget[position++] = 0xb9 // always use map 16, so we can preallocate and set the length afterwards\n\t\t\tlet objectOffset = position - start\n\t\t\tposition += 2\n\t\t\tlet size = 0\n\t\t\tif (encoder.keyMap) { \n\t\t\t\tfor (let key in object) if (safePrototype || object.hasOwnProperty(key)) {\n\t\t\t\t\tencode(encoder.encodeKey(key))\n\t\t\t\t\tencode(object[key])\n\t\t\t\t\tsize++\n\t\t\t\t}\n\t\t\t} else { \n\t\t\t\tfor (let key in object) if (safePrototype || object.hasOwnProperty(key)) {\n\t\t\t\t\t\tencode(key)\n\t\t\t\t\t\tencode(object[key])\n\t\t\t\t\tsize++\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget[objectOffset++ + start] = size >> 8\n\t\t\ttarget[objectOffset + start] = size & 0xff\n\t\t} :\n\t\t(object, safePrototype) => {\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\n\t\t\tlet newTransitions = 0\n\t\t\tlet length = 0\n\t\t\tlet parentRecordId\n\t\t\tlet keys\n\t\t\tif (this.keyMap) {\n\t\t\t\tkeys = Object.keys(object).map(k => this.encodeKey(k))\n\t\t\t\tlength = keys.length\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tlet key = keys[i]\n\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\tnewTransitions++\n\t\t\t\t\t}\n\t\t\t\t\ttransition = nextTransition\n\t\t\t\t}\t\t\t\t\n\t\t\t} else {\n\t\t\t\tfor (let key in object) if (safePrototype || object.hasOwnProperty(key)) {\n\t\t\t\t\tnextTransition = transition[key]\n\t\t\t\t\tif (!nextTransition) {\n\t\t\t\t\t\tif (transition[RECORD_SYMBOL] & 0x100000) {// this indicates it is a brancheable/extendable terminal node, so we will use this record id and extend it\n\t\t\t\t\t\t\tparentRecordId = transition[RECORD_SYMBOL] & 0xffff\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\n\t\t\t\t\t\tnewTransitions++\n\t\t\t\t\t}\n\t\t\t\t\ttransition = nextTransition\n\t\t\t\t\tlength++\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet recordId = transition[RECORD_SYMBOL]\n\t\t\tif (recordId !== undefined) {\n\t\t\t\trecordId &= 0xffff\n\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\ttarget[position++] = (recordId >> 8) | 0xe0\n\t\t\t\ttarget[position++] = recordId & 0xff\n\t\t\t} else {\n\t\t\t\tif (!keys)\n\t\t\t\t\tkeys = transition.__keys__ || (transition.__keys__ = Object.keys(object))\n\t\t\t\tif (parentRecordId === undefined) {\n\t\t\t\t\trecordId = structures.nextId++\n\t\t\t\t\tif (!recordId) {\n\t\t\t\t\t\trecordId = 0\n\t\t\t\t\t\tstructures.nextId = 1\n\t\t\t\t\t}\n\t\t\t\t\tif (recordId >= MAX_STRUCTURES) {// cycle back around\n\t\t\t\t\t\tstructures.nextId = (recordId = maxSharedStructures) + 1\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trecordId = parentRecordId\n\t\t\t\t}\n\t\t\t\tstructures[recordId] = keys\n\t\t\t\tif (recordId < maxSharedStructures) {\n\t\t\t\t\ttarget[position++] = 0xd9\n\t\t\t\t\ttarget[position++] = (recordId >> 8) | 0xe0\n\t\t\t\t\ttarget[position++] = recordId & 0xff\n\t\t\t\t\ttransition = structures.transitions\n\t\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\t\tif (transition[RECORD_SYMBOL] === undefined || (transition[RECORD_SYMBOL] & 0x100000))\n\t\t\t\t\t\t\ttransition[RECORD_SYMBOL] = recordId\n\t\t\t\t\t\ttransition = transition[keys[i]]\n\t\t\t\t\t}\n\t\t\t\t\ttransition[RECORD_SYMBOL] = recordId | 0x100000 // indicates it is a extendable terminal\n\t\t\t\t\thasSharedUpdate = true\n\t\t\t\t} else {\n\t\t\t\t\ttransition[RECORD_SYMBOL] = recordId\n\t\t\t\t\ttargetView.setUint32(position, 0xd9dfff00) // tag two byte, then record definition id\n\t\t\t\t\tposition += 3\n\t\t\t\t\tif (newTransitions)\n\t\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions\n\t\t\t\t\t// record the removal of the id, we can maintain our shared structure\n\t\t\t\t\tif (recordIdsToRemove.length >= MAX_STRUCTURES - maxSharedStructures)\n\t\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = undefined // we are cycling back through, and have to remove old ones\n\t\t\t\t\trecordIdsToRemove.push(transition)\n\t\t\t\t\twriteArrayHeader(length + 2)\n\t\t\t\t\tencode(0xe000 + recordId)\n\t\t\t\t\tencode(keys)\n\t\t\t\t\tif (safePrototype === null) return; // special exit for iterator\n\t\t\t\t\tfor (let key in object)\n\t\t\t\t\t\tif (safePrototype || object.hasOwnProperty(key))\n\t\t\t\t\t\t\tencode(object[key])\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (length < 0x18) { // write the array header\n\t\t\t\ttarget[position++] = 0x80 | length\n\t\t\t} else {\n\t\t\t\twriteArrayHeader(length)\n\t\t\t}\n\t\t\tif (safePrototype === null) return; // special exit for iterator\n\t\t\tfor (let key in object)\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key))\n\t\t\t\t\tencode(object[key])\n\t\t}\n\t\tconst makeRoom = (end) => {\n\t\t\tlet newSize\n\t\t\tif (end > 0x1000000) {\n\t\t\t\t// special handling for really large buffers\n\t\t\t\tif ((end - start) > MAX_BUFFER_SIZE)\n\t\t\t\t\tthrow new Error('Encoded buffer would be larger than maximum buffer size')\n\t\t\t\tnewSize = Math.min(MAX_BUFFER_SIZE,\n\t\t\t\t\tMath.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x400000) / 0x1000) * 0x1000)\n\t\t\t} else // faster handling for smaller buffers\n\t\t\t\tnewSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize)\n\t\t\ttargetView = new DataView(newBuffer.buffer, 0, newSize)\n\t\t\tif (target.copy)\n\t\t\t\ttarget.copy(newBuffer, 0, start, end)\n\t\t\telse\n\t\t\t\tnewBuffer.set(target.slice(start, end))\n\t\t\tposition -= start\n\t\t\tstart = 0\n\t\t\tsafeEnd = newBuffer.length - 10\n\t\t\treturn target = newBuffer\n\t\t}\n\t\tlet chunkThreshold = 100;\n\t\tlet continuedChunkThreshold = 1000;\n\t\tthis.encodeAsIterable = function(value, options) {\n\t\t\treturn startEncoding(value, options, encodeObjectAsIterable);\n\t\t}\n\t\tthis.encodeAsAsyncIterable = function(value, options) {\n\t\t\treturn startEncoding(value, options, encodeObjectAsAsyncIterable);\n\t\t}\n\n\t\tfunction* encodeObjectAsIterable(object, iterateProperties, finalIterable) {\n\t\t\tlet constructor = object.constructor;\n\t\t\tif (constructor === Object) {\n\t\t\t\tlet useRecords = encoder.useRecords !== false;\n\t\t\t\tif (useRecords)\n\t\t\t\t\twriteObject(object, null); // write the record identifier\n\t\t\t\telse\n\t\t\t\t\twriteEntityLength(Object.keys(object).length, 0xa0);\n\t\t\t\tfor (let key in object) {\n\t\t\t\t\tlet value = object[key];\n\t\t\t\t\tif (!useRecords) encode(key);\n\t\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\t\tif (iterateProperties[key])\n\t\t\t\t\t\t\tyield* encodeObjectAsIterable(value, iterateProperties[key]);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tyield* tryEncode(value, iterateProperties, key);\n\t\t\t\t\t} else encode(value);\n\t\t\t\t}\n\t\t\t} else if (constructor === Array) {\n\t\t\t\tlet length = object.length;\n\t\t\t\twriteArrayHeader(length);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tlet value = object[i];\n\t\t\t\t\tif (value && (typeof value === 'object' || position - start > chunkThreshold)) {\n\t\t\t\t\t\tif (iterateProperties.element)\n\t\t\t\t\t\t\tyield* encodeObjectAsIterable(value, iterateProperties.element);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tyield* tryEncode(value, iterateProperties, 'element');\n\t\t\t\t\t} else encode(value);\n\t\t\t\t}\n\t\t\t} else if (object[Symbol.iterator]) {\n\t\t\t\ttarget[position++] = 0x9f; // start indefinite array\n\t\t\t\tfor (let value of object) {\n\t\t\t\t\tif (value && (typeof value === 'object' || position - start > chunkThreshold)) {\n\t\t\t\t\t\tif (iterateProperties.element)\n\t\t\t\t\t\t\tyield* encodeObjectAsIterable(value, iterateProperties.element);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tyield* tryEncode(value, iterateProperties, 'element');\n\t\t\t\t\t} else encode(value);\n\t\t\t\t}\n\t\t\t\ttarget[position++] = 0xff; // stop byte\n\t\t\t} else if (isBlob(object)){\n\t\t\t\twriteEntityLength(object.size, 0x40); // encode as binary data\n\t\t\t\tyield target.subarray(start, position);\n\t\t\t\tyield object; // directly return blobs, they have to be encoded asynchronously\n\t\t\t\trestartEncoding();\n\t\t\t} else if (object[Symbol.asyncIterator]) {\n\t\t\t\ttarget[position++] = 0x9f; // start indefinite array\n\t\t\t\tyield target.subarray(start, position);\n\t\t\t\tyield object; // directly return async iterators, they have to be encoded asynchronously\n\t\t\t\trestartEncoding();\n\t\t\t\ttarget[position++] = 0xff; // stop byte\n\t\t\t} else {\n\t\t\t\tencode(object);\n\t\t\t}\n\t\t\tif (finalIterable && position > start) yield target.subarray(start, position);\n\t\t\telse if (position - start > chunkThreshold) {\n\t\t\t\tyield target.subarray(start, position);\n\t\t\t\trestartEncoding();\n\t\t\t}\n\t\t}\n\t\tfunction* tryEncode(value, iterateProperties, key) {\n\t\t\tlet restart = position - start;\n\t\t\ttry {\n\t\t\t\tencode(value);\n\t\t\t\tif (position - start > chunkThreshold) {\n\t\t\t\t\tyield target.subarray(start, position);\n\t\t\t\t\trestartEncoding();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error.iteratorNotHandled) {\n\t\t\t\t\titerateProperties[key] = {};\n\t\t\t\t\tposition = start + restart; // restart our position so we don't have partial data from last encode\n\t\t\t\t\tyield* encodeObjectAsIterable.call(this, value, iterateProperties[key]);\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t}\n\t\tfunction restartEncoding() {\n\t\t\tchunkThreshold = continuedChunkThreshold;\n\t\t\tencoder.encode(null, THROW_ON_ITERABLE); // restart encoding\n\t\t}\n\t\tfunction startEncoding(value, options, encodeIterable) {\n\t\t\tif (options && options.chunkThreshold) // explicitly specified chunk sizes\n\t\t\t\tchunkThreshold = continuedChunkThreshold = options.chunkThreshold;\n\t\t\telse // we start with a smaller threshold to get initial bytes sent quickly\n\t\t\t\tchunkThreshold = 100;\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tencoder.encode(null, THROW_ON_ITERABLE); // start encoding\n\t\t\t\treturn encodeIterable(value, encoder.iterateProperties || (encoder.iterateProperties = {}), true);\n\t\t\t}\n\t\t\treturn [encoder.encode(value)];\n\t\t}\n\n\t\tasync function* encodeObjectAsAsyncIterable(value, iterateProperties) {\n\t\t\tfor (let encodedValue of encodeObjectAsIterable(value, iterateProperties, true)) {\n\t\t\t\tlet constructor = encodedValue.constructor;\n\t\t\t\tif (constructor === ByteArray || constructor === Uint8Array)\n\t\t\t\t\tyield encodedValue;\n\t\t\t\telse if (isBlob(encodedValue)) {\n\t\t\t\t\tlet reader = encodedValue.stream().getReader();\n\t\t\t\t\tlet next;\n\t\t\t\t\twhile (!(next = await reader.read()).done) {\n\t\t\t\t\t\tyield next.value;\n\t\t\t\t\t}\n\t\t\t\t} else if (encodedValue[Symbol.asyncIterator]) {\n\t\t\t\t\tfor await (let asyncValue of encodedValue) {\n\t\t\t\t\t\trestartEncoding();\n\t\t\t\t\t\tif (asyncValue)\n\t\t\t\t\t\t\tyield* encodeObjectAsAsyncIterable(asyncValue, iterateProperties.async || (iterateProperties.async = {}));\n\t\t\t\t\t\telse yield encoder.encode(asyncValue);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tyield encodedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tuseBuffer(buffer) {\n\t\t// this means we are finished using our own buffer and we can write over it safely\n\t\ttarget = buffer\n\t\ttargetView = new DataView(target.buffer, target.byteOffset, target.byteLength)\n\t\tposition = 0\n\t}\n\tclearSharedData() {\n\t\tif (this.structures)\n\t\t\tthis.structures = []\n\t\tif (this.sharedValues)\n\t\t\tthis.sharedValues = undefined\n\t}\n\tupdateSharedData() {\n\t\tlet lastVersion = this.sharedVersion || 0\n\t\tthis.sharedVersion = lastVersion + 1\n\t\tlet structuresCopy = this.structures.slice(0)\n\t\tlet sharedData = new SharedData(structuresCopy, this.sharedValues, this.sharedVersion)\n\t\tlet saveResults = this.saveShared(sharedData,\n\t\t\t\texistingShared => (existingShared && existingShared.version || 0) == lastVersion)\n\t\tif (saveResults === false) {\n\t\t\t// get updated structures and try again if the update failed\n\t\t\tsharedData = this.getShared() || {}\n\t\t\tthis.structures = sharedData.structures || []\n\t\t\tthis.sharedValues = sharedData.packedValues\n\t\t\tthis.sharedVersion = sharedData.version\n\t\t\tthis.structures.nextId = this.structures.length\n\t\t} else {\n\t\t\t// restore structures\n\t\t\tstructuresCopy.forEach((structure, i) => this.structures[i] = structure)\n\t\t}\n\t\t// saveShared may fail to write and reload, or may have reloaded to check compatibility and overwrite saved data, either way load the correct shared data\n\t\treturn saveResults\n\t}\n}\nfunction writeEntityLength(length, majorValue) {\n\tif (length < 0x18)\n\t\ttarget[position++] = majorValue | length\n\telse if (length < 0x100) {\n\t\ttarget[position++] = majorValue | 0x18\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\ttarget[position++] = majorValue | 0x19\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\ttarget[position++] = majorValue | 0x1a\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n\n}\nclass SharedData {\n\tconstructor(structures, values, version) {\n\t\tthis.structures = structures\n\t\tthis.packedValues = values\n\t\tthis.version = version\n\t}\n}\n\nfunction writeArrayHeader(length) {\n\tif (length < 0x18)\n\t\ttarget[position++] = 0x80 | length\n\telse if (length < 0x100) {\n\t\ttarget[position++] = 0x98\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\ttarget[position++] = 0x99\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\ttarget[position++] = 0x9a\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n}\n\nconst BlobConstructor = typeof Blob === 'undefined' ? function(){} : Blob;\nfunction isBlob(object) {\n\tif (object instanceof BlobConstructor)\n\t\treturn true;\n\tlet tag = object[Symbol.toStringTag];\n\treturn tag === 'Blob' || tag === 'File';\n}\nfunction findRepetitiveStrings(value, packedValues) {\n\tswitch(typeof value) {\n\t\tcase 'string':\n\t\t\tif (value.length > 3) {\n\t\t\t\tif (packedValues.objectMap[value] > -1 || packedValues.values.length >= packedValues.maxValues)\n\t\t\t\t\treturn\n\t\t\t\tlet packedStatus = packedValues.get(value)\n\t\t\t\tif (packedStatus) {\n\t\t\t\t\tif (++packedStatus.count == 2) {\n\t\t\t\t\t\tpackedValues.values.push(value)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpackedValues.set(value, {\n\t\t\t\t\t\tcount: 1,\n\t\t\t\t\t})\n\t\t\t\t\tif (packedValues.samplingPackedValues) {\n\t\t\t\t\t\tlet status = packedValues.samplingPackedValues.get(value)\n\t\t\t\t\t\tif (status)\n\t\t\t\t\t\t\tstatus.count++\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tpackedValues.samplingPackedValues.set(value, {\n\t\t\t\t\t\t\t\tcount: 1,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'object':\n\t\t\tif (value) {\n\t\t\t\tif (value instanceof Array) {\n\t\t\t\t\tfor (let i = 0, l = value.length; i < l; i++) {\n\t\t\t\t\t\tfindRepetitiveStrings(value[i], packedValues)\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tlet includeKeys = !packedValues.encoder.useRecords\n\t\t\t\t\tfor (var key in value) {\n\t\t\t\t\t\tif (value.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tif (includeKeys)\n\t\t\t\t\t\t\t\tfindRepetitiveStrings(key, packedValues)\n\t\t\t\t\t\t\tfindRepetitiveStrings(value[key], packedValues)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'function': console.log(value)\n\t}\n}\nconst isLittleEndianMachine = new Uint8Array(new Uint16Array([1]).buffer)[0] == 1\nextensionClasses = [ Date, Set, Error, RegExp, Tag, ArrayBuffer,\n\tUint8Array, Uint8ClampedArray, Uint16Array, Uint32Array,\n\ttypeof BigUint64Array == 'undefined' ? function() {} : BigUint64Array, Int8Array, Int16Array, Int32Array,\n\ttypeof BigInt64Array == 'undefined' ? function() {} : BigInt64Array,\n\tFloat32Array, Float64Array, SharedData ]\n\n//Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/\nextensions = [{ // Date\n\ttag: 1,\n\tencode(date, encode) {\n\t\tlet seconds = date.getTime() / 1000\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\n\t\t\t// Timestamp 32\n\t\t\ttarget[position++] = 0x1a\n\t\t\ttargetView.setUint32(position, seconds)\n\t\t\tposition += 4\n\t\t} else {\n\t\t\t// Timestamp float64\n\t\t\ttarget[position++] = 0xfb\n\t\t\ttargetView.setFloat64(position, seconds)\n\t\t\tposition += 8\n\t\t}\n\t}\n}, { // Set\n\ttag: 258, // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\n\tencode(set, encode) {\n\t\tlet array = Array.from(set)\n\t\tencode(array)\n\t}\n}, { // Error\n\ttag: 27, // http://cbor.schmorp.de/generic-object\n\tencode(error, encode) {\n\t\tencode([ error.name, error.message ])\n\t}\n}, { // RegExp\n\ttag: 27, // http://cbor.schmorp.de/generic-object\n\tencode(regex, encode) {\n\t\tencode([ 'RegExp', regex.source, regex.flags ])\n\t}\n}, { // Tag\n\tgetTag(tag) {\n\t\treturn tag.tag\n\t},\n\tencode(tag, encode) {\n\t\tencode(tag.value)\n\t}\n}, { // ArrayBuffer\n\tencode(arrayBuffer, encode, makeRoom) {\n\t\twriteBuffer(arrayBuffer, makeRoom)\n\t}\n}, { // Uint8Array\n\tgetTag(typedArray) {\n\t\tif (typedArray.constructor === Uint8Array) {\n\t\t\tif (this.tagUint8Array || hasNodeBuffer && this.tagUint8Array !== false)\n\t\t\t\treturn 64;\n\t\t} // else no tag\n\t},\n\tencode(typedArray, encode, makeRoom) {\n\t\twriteBuffer(typedArray, makeRoom)\n\t}\n},\n\ttypedArrayEncoder(68, 1),\n\ttypedArrayEncoder(69, 2),\n\ttypedArrayEncoder(70, 4),\n\ttypedArrayEncoder(71, 8),\n\ttypedArrayEncoder(72, 1),\n\ttypedArrayEncoder(77, 2),\n\ttypedArrayEncoder(78, 4),\n\ttypedArrayEncoder(79, 8),\n\ttypedArrayEncoder(85, 4),\n\ttypedArrayEncoder(86, 8),\n{\n\tencode(sharedData, encode) { // write SharedData\n\t\tlet packedValues = sharedData.packedValues || []\n\t\tlet sharedStructures = sharedData.structures || []\n\t\tif (packedValues.values.length > 0) {\n\t\t\ttarget[position++] = 0xd8 // one-byte tag\n\t\t\ttarget[position++] = 51 // tag 51 for packed shared structures https://www.potaroo.net/ietf/ids/draft-ietf-cbor-packed-03.txt\n\t\t\twriteArrayHeader(4)\n\t\t\tlet valuesArray = packedValues.values\n\t\t\tencode(valuesArray)\n\t\t\twriteArrayHeader(0) // prefixes\n\t\t\twriteArrayHeader(0) // suffixes\n\t\t\tpackedObjectMap = Object.create(sharedPackedObjectMap || null)\n\t\t\tfor (let i = 0, l = valuesArray.length; i < l; i++) {\n\t\t\t\tpackedObjectMap[valuesArray[i]] = i\n\t\t\t}\n\t\t}\n\t\tif (sharedStructures) {\n\t\t\ttargetView.setUint32(position, 0xd9dffe00)\n\t\t\tposition += 3\n\t\t\tlet definitions = sharedStructures.slice(0)\n\t\t\tdefinitions.unshift(0xe000)\n\t\t\tdefinitions.push(new Tag(sharedData.version, 0x53687264))\n\t\t\tencode(definitions)\n\t\t} else\n\t\t\tencode(new Tag(sharedData.version, 0x53687264))\n\t\t}\n\t}]\nfunction typedArrayEncoder(tag, size) {\n\tif (!isLittleEndianMachine && size > 1)\n\t\ttag -= 4 // the big endian equivalents are 4 less\n\treturn {\n\t\ttag: tag,\n\t\tencode: function writeExtBuffer(typedArray, encode) {\n\t\t\tlet length = typedArray.byteLength\n\t\t\tlet offset = typedArray.byteOffset || 0\n\t\t\tlet buffer = typedArray.buffer || typedArray\n\t\t\tencode(hasNodeBuffer ? Buffer.from(buffer, offset, length) :\n\t\t\t\tnew Uint8Array(buffer, offset, length))\n\t\t}\n\t}\n}\nfunction writeBuffer(buffer, makeRoom) {\n\tlet length = buffer.byteLength\n\tif (length < 0x18) {\n\t\ttarget[position++] = 0x40 + length\n\t} else if (length < 0x100) {\n\t\ttarget[position++] = 0x58\n\t\ttarget[position++] = length\n\t} else if (length < 0x10000) {\n\t\ttarget[position++] = 0x59\n\t\ttarget[position++] = length >> 8\n\t\ttarget[position++] = length & 0xff\n\t} else {\n\t\ttarget[position++] = 0x5a\n\t\ttargetView.setUint32(position, length)\n\t\tposition += 4\n\t}\n\tif (position + length >= target.length) {\n\t\tmakeRoom(position + length)\n\t}\n\t// if it is already a typed array (has an ArrayBuffer), use that, but if it is an ArrayBuffer itself,\n\t// must wrap it to set it.\n\ttarget.set(buffer.buffer ? buffer : new Uint8Array(buffer), position)\n\tposition += length\n}\n\nfunction insertIds(serialized, idsToInsert) {\n\t// insert the ids that need to be referenced for structured clones\n\tlet nextId\n\tlet distanceToMove = idsToInsert.length * 2\n\tlet lastEnd = serialized.length - distanceToMove\n\tidsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1)\n\tfor (let id = 0; id < idsToInsert.length; id++) {\n\t\tlet referee = idsToInsert[id]\n\t\treferee.id = id\n\t\tfor (let position of referee.references) {\n\t\t\tserialized[position++] = id >> 8\n\t\t\tserialized[position] = id & 0xff\n\t\t}\n\t}\n\twhile (nextId = idsToInsert.pop()) {\n\t\tlet offset = nextId.offset\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd)\n\t\tdistanceToMove -= 2\n\t\tlet position = offset + distanceToMove\n\t\tserialized[position++] = 0xd8\n\t\tserialized[position++] = 28 // http://cbor.schmorp.de/value-sharing\n\t\tlastEnd = offset\n\t}\n\treturn serialized\n}\nfunction writeBundles(start, encode) {\n\ttargetView.setUint32(bundledStrings.position + start, position - bundledStrings.position - start + 1) // the offset to bundle\n\tlet writeStrings = bundledStrings\n\tbundledStrings = null\n\tencode(writeStrings[0])\n\tencode(writeStrings[1])\n}\n\nexport function addExtension(extension) {\n\tif (extension.Class) {\n\t\tif (!extension.encode)\n\t\t\tthrow new Error('Extension has no encode function')\n\t\textensionClasses.unshift(extension.Class)\n\t\textensions.unshift(extension)\n\t}\n\tdecodeAddExtension(extension)\n}\nlet defaultEncoder = new Encoder({ useRecords: false })\nexport const encode = defaultEncoder.encode\nexport const encodeAsIterable = defaultEncoder.encodeAsIterable\nexport const encodeAsAsyncIterable = defaultEncoder.encodeAsAsyncIterable\nexport { FLOAT32_OPTIONS } from './decode.js'\nimport { FLOAT32_OPTIONS } from './decode.js'\nexport const { NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT } = FLOAT32_OPTIONS\nexport const REUSE_BUFFER_MODE = 512\nexport const RESET_BUFFER_MODE = 1024\nexport const THROW_ON_ITERABLE = 2048\n\n\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t