{"version":3,"file":"js/dist/main.c65de44fceef119b3bdf.js","mappings":"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","sources":["webpack:///../../../../node_modules/eosio-signing-request/lib/esr.m.js","webpack:///../../../../node_modules/svelte/internal/index.mjs","webpack:///./_snowpack/env.js","webpack:///../../../../node_modules/svelte/store/index.mjs","webpack:///../../../node_modules/tinro/dist/tinro_lib.js","webpack:///../../../node_modules/tinro/cmp/Route.svelte","webpack:///../src/config.ts","webpack:///../../../node_modules/idb/build/esm/wrap-idb-value.js","webpack:///../../../node_modules/idb/build/esm/index.js","webpack:///../../../node_modules/svelte-result-store/lib/svelte-result-store.m.js","webpack:///../src/db.ts","webpack:///../src/preferences.ts","webpack:///../src/lib/readable-object.ts","webpack:///../src/abi-types.ts","webpack:///../src/api-client.ts","webpack:///../src/price-ticker.ts","webpack:///../src/stores/account-provider.ts","webpack:///../src/store.ts","webpack:///../../../node_modules/anchor-link-browser-transport/lib/anchor-link-browser-transport.m.js","webpack:///../src/auth.ts","webpack:///icon.svelte","webpack:///../../../../node_modules/svelte/motion/index.mjs","webpack:///button.svelte","webpack:///text.svelte","webpack:///login.svelte","webpack:///segment.svelte","webpack:///list.svelte","webpack:///sidebar.svelte","webpack:///header.svelte","webpack:///media-query.svelte","webpack:///content.svelte","webpack:///index.svelte","webpack:///page.svelte","webpack:///group.svelte","webpack:///../src/stores/balances-provider.ts","webpack:///../src/stores/tokens.ts","webpack:///../src/stores/balances.ts","webpack:///../../../../node_modules/@greymass/eosio-resources/lib/eosio-resources.m.js","webpack:///../src/pages/resources/resources.ts","webpack:///image.svelte","webpack:///token.svelte","webpack:///headerrow.svelte","webpack:///number.svelte","webpack:///row.svelte","webpack:///table.svelte","webpack:///../src/pages/request/request.ts","webpack:///../src/pages/request/template.ts","webpack:///qrcode.svelte","webpack:///default.svelte","webpack:///loading.svelte","webpack:///../src/pages/request/resources.ts","webpack:///newaccount.svelte","webpack:///../src/pages/transfer/transfer.ts","webpack:///../src/pages/transfer/fio.ts","webpack:///form.svelte","webpack:///card.svelte","webpack:///../src/components/tx-follower/utils.ts","webpack:///summary.svelte","webpack:///advanced.svelte","webpack:///transaction.svelte","webpack:///label.svelte","webpack:///input.svelte","webpack:///errorMessage.svelte","webpack:///labelled.svelte","webpack:///lookup.svelte","webpack:///../src/components/elements/input/validators/presence.ts","webpack:///../src/components/elements/input/validators/publicKey.ts","webpack:///publicKey.svelte","webpack:///recipient.svelte","webpack:///../src/components/elements/input/validators/asset.ts","webpack:///asset.svelte","webpack:///modal.svelte","webpack:///selector.svelte","webpack:///amount.svelte","webpack:///container.svelte","webpack:///change.svelte","webpack:///completed.svelte","webpack:///address.svelte","webpack:///account.svelte","webpack:///quantity.svelte","webpack:///fee.svelte","webpack:///confirm.svelte","webpack:///clipboard.svelte","webpack:///receive.svelte","webpack:///memo.svelte","webpack:///sending.svelte","webpack:///main.svelte","webpack:///cpu.svelte","webpack:///net.svelte","webpack:///ram.svelte","webpack:///prices.svelte","webpack:///balance.svelte","webpack:///rambuy.svelte","webpack:///buy.svelte","webpack:///ramsell.svelte","webpack:///sell.svelte","webpack:///progress.svelte","webpack:///fuel.svelte","webpack:///powerup.svelte","webpack:///rex.svelte","webpack:///staking.svelte","webpack:///buttons.svelte","webpack:///../src/components/elements/input/validators/account.ts","webpack:///forms.svelte","webpack:///icons.svelte","webpack:///inputs.svelte","webpack:///trigger.svelte","webpack:///modals.svelte","webpack:///segments.svelte","webpack:///tx-follower.svelte","webpack:///nav.svelte","webpack:///app.svelte","webpack:///../src/main.ts"],"sourcesContent":["/**\n * EOSIO Signing Request v2.3.1\n * https://github.com/greymass/eosio-signing-request\n *\n * @license\n * Copyright © 2021 Greymass Inc.\n * \n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the “Software”), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR\n * INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, OPERATION OR\n * MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { TypeAlias, Variant, Checksum256, isInstanceOf, UInt8, Struct, PermissionLevel, Action, Transaction, Name, TimePointSec, Signature, Serializer, Authority, Bytes, ABIEncoder, ABIDecoder, ABI, UInt16, UInt32 } from '@greymass/eosio';\nimport { __decorate } from 'tslib';\n\n/**\n * Base64u - URL-Safe Base64 variant no padding.\n * Based on https://gist.github.com/jonleighton/958841\n */\nconst baseCharset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nconst lookup = new Uint8Array(256);\nfor (let i = 0; i < 62; i++) {\n lookup[baseCharset.charCodeAt(i)] = i;\n}\n// support both urlsafe and standard base64\nlookup[43] = lookup[45] = 62;\nlookup[47] = lookup[95] = 63;\nfunction encode(data, urlSafe = true) {\n const byteLength = data.byteLength;\n const byteRemainder = byteLength % 3;\n const mainLength = byteLength - byteRemainder;\n const charset = baseCharset + (urlSafe ? '-_' : '+/');\n const parts = [];\n let a;\n let b;\n let c;\n let d;\n let chunk;\n // Main loop deals with bytes in chunks of 3\n for (let i = 0; i < mainLength; i += 3) {\n // Combine the three bytes into a single integer\n chunk = (data[i] << 16) | (data[i + 1] << 8) | data[i + 2];\n // Use bitmasks to extract 6-bit segments from the triplet\n a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18\n b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12\n c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6\n d = chunk & 63; // 63 = 2^6 - 1\n // Convert the raw binary segments to the appropriate ASCII encoding\n parts.push(charset[a] + charset[b] + charset[c] + charset[d]);\n }\n // Deal with the remaining bytes\n if (byteRemainder === 1) {\n chunk = data[mainLength];\n a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2\n // Set the 4 least significant bits to zero\n b = (chunk & 3) << 4; // 3 = 2^2 - 1\n parts.push(charset[a] + charset[b]);\n }\n else if (byteRemainder === 2) {\n chunk = (data[mainLength] << 8) | data[mainLength + 1];\n a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10\n b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4\n // Set the 2 least significant bits to zero\n c = (chunk & 15) << 2; // 15 = 2^4 - 1\n parts.push(charset[a] + charset[b] + charset[c]);\n }\n return parts.join('');\n}\nfunction decode(input) {\n const byteLength = input.length * 0.75;\n const data = new Uint8Array(byteLength);\n let a;\n let b;\n let c;\n let d;\n let p = 0;\n for (let i = 0; i < input.length; i += 4) {\n a = lookup[input.charCodeAt(i)];\n b = lookup[input.charCodeAt(i + 1)];\n c = lookup[input.charCodeAt(i + 2)];\n d = lookup[input.charCodeAt(i + 3)];\n data[p++] = (a << 2) | (b >> 4);\n data[p++] = ((b & 15) << 4) | (c >> 2);\n data[p++] = ((c & 3) << 6) | (d & 63);\n }\n return data;\n}\n\nvar base64u = /*#__PURE__*/Object.freeze({\n __proto__: null,\n encode: encode,\n decode: decode\n});\n\n/** Chain ID aliases. */\nvar ChainName;\n(function (ChainName) {\n ChainName[ChainName[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n ChainName[ChainName[\"EOS\"] = 1] = \"EOS\";\n ChainName[ChainName[\"TELOS\"] = 2] = \"TELOS\";\n ChainName[ChainName[\"JUNGLE\"] = 3] = \"JUNGLE\";\n ChainName[ChainName[\"KYLIN\"] = 4] = \"KYLIN\";\n ChainName[ChainName[\"WORBLI\"] = 5] = \"WORBLI\";\n ChainName[ChainName[\"BOS\"] = 6] = \"BOS\";\n ChainName[ChainName[\"MEETONE\"] = 7] = \"MEETONE\";\n ChainName[ChainName[\"INSIGHTS\"] = 8] = \"INSIGHTS\";\n ChainName[ChainName[\"BEOS\"] = 9] = \"BEOS\";\n ChainName[ChainName[\"WAX\"] = 10] = \"WAX\";\n ChainName[ChainName[\"PROTON\"] = 11] = \"PROTON\";\n ChainName[ChainName[\"FIO\"] = 12] = \"FIO\";\n})(ChainName || (ChainName = {}));\nlet ChainId = class ChainId extends Checksum256 {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'number') {\n value = ChainIdLookup.get(value);\n if (!value) {\n throw new Error('Unknown chain id alias');\n }\n }\n return super.from(value);\n }\n get chainVariant() {\n const name = this.chainName;\n if (name !== ChainName.UNKNOWN) {\n return ChainIdVariant.from(['chain_alias', name]);\n }\n return ChainIdVariant.from(this);\n }\n get chainName() {\n const cid = this.hexString;\n for (const [n, id] of ChainIdLookup) {\n if (id === cid) {\n return n;\n }\n }\n return ChainName.UNKNOWN;\n }\n};\nChainId = __decorate([\n TypeAlias('chain_id')\n], ChainId);\nlet ChainAlias = class ChainAlias extends UInt8 {\n};\nChainAlias = __decorate([\n TypeAlias('chain_alias')\n], ChainAlias);\nlet ChainIdVariant = class ChainIdVariant extends Variant {\n get chainId() {\n if (isInstanceOf(this.value, ChainId)) {\n return this.value;\n }\n return ChainId.from(Number(this.value.value));\n }\n};\nChainIdVariant = __decorate([\n Variant.type('variant_id', [ChainAlias, ChainId])\n], ChainIdVariant);\nconst ChainIdLookup = new Map([\n [ChainName.EOS, 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906'],\n [ChainName.TELOS, '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11'],\n [ChainName.JUNGLE, 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473'],\n [ChainName.KYLIN, '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191'],\n [ChainName.WORBLI, '73647cde120091e0a4b85bced2f3cfdb3041e266cbbe95cee59b73235a1b3b6f'],\n [ChainName.BOS, 'd5a3d18fbb3c084e3b1f3fa98c21014b5f3db536cc15d08f9f6479517c6a3d86'],\n [ChainName.MEETONE, 'cfe6486a83bad4962f232d48003b1824ab5665c36778141034d75e57b956e422'],\n [ChainName.INSIGHTS, 'b042025541e25a472bffde2d62edd457b7e70cee943412b1ea0f044f88591664'],\n [ChainName.BEOS, 'b912d19a6abd2b1b05611ae5be473355d64d95aeff0c09bedc8c166cd6468fe4'],\n [ChainName.WAX, '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4'],\n [ChainName.PROTON, '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0'],\n [ChainName.FIO, '21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c'],\n]);\n\n/** SigningRequest ABI and typedefs. */\nvar RequestFlags_1;\nlet AccountName = class AccountName extends Name {\n};\nAccountName = __decorate([\n TypeAlias('account_name')\n], AccountName);\nlet PermissionName = class PermissionName extends Name {\n};\nPermissionName = __decorate([\n TypeAlias('permission_name')\n], PermissionName);\nlet IdentityV2 = class IdentityV2 extends Struct {\n};\n__decorate([\n Struct.field(PermissionLevel, { optional: true })\n], IdentityV2.prototype, \"permission\", void 0);\nIdentityV2 = __decorate([\n Struct.type('identity')\n], IdentityV2);\nlet IdentityV3 = class IdentityV3 extends Struct {\n};\n__decorate([\n Struct.field('name')\n], IdentityV3.prototype, \"scope\", void 0);\n__decorate([\n Struct.field(PermissionLevel, { optional: true })\n], IdentityV3.prototype, \"permission\", void 0);\nIdentityV3 = __decorate([\n Struct.type('identity')\n], IdentityV3);\nlet RequestVariantV2 = class RequestVariantV2 extends Variant {\n};\nRequestVariantV2 = __decorate([\n Variant.type('variant_req', [Action, { type: Action, array: true }, Transaction, IdentityV2])\n], RequestVariantV2);\nlet RequestVariantV3 = class RequestVariantV3 extends Variant {\n};\nRequestVariantV3 = __decorate([\n Variant.type('variant_req', [Action, { type: Action, array: true }, Transaction, IdentityV3])\n], RequestVariantV3);\nlet RequestFlags = RequestFlags_1 = class RequestFlags extends UInt8 {\n get broadcast() {\n return (Number(this) & RequestFlags_1.broadcast) !== 0;\n }\n set broadcast(enabled) {\n this.setFlag(RequestFlags_1.broadcast, enabled);\n }\n get background() {\n return (Number(this) & RequestFlags_1.background) !== 0;\n }\n set background(enabled) {\n this.setFlag(RequestFlags_1.background, enabled);\n }\n setFlag(flag, enabled) {\n if (enabled) {\n // TODO: implement bitwise operators in core, bn.js setbit does not work\n this.value = UInt8.from(Number(this) | flag).value;\n }\n else {\n this.value = UInt8.from(Number(this) & ~flag).value;\n }\n }\n};\nRequestFlags.broadcast = 1 << 0;\nRequestFlags.background = 1 << 1;\nRequestFlags = RequestFlags_1 = __decorate([\n TypeAlias('request_flags')\n], RequestFlags);\nlet InfoPair = class InfoPair extends Struct {\n};\n__decorate([\n Struct.field('string')\n], InfoPair.prototype, \"key\", void 0);\n__decorate([\n Struct.field('bytes')\n], InfoPair.prototype, \"value\", void 0);\nInfoPair = __decorate([\n Struct.type('info_pair')\n], InfoPair);\nlet RequestDataV2 = class RequestDataV2 extends Struct {\n};\n__decorate([\n Struct.field(ChainIdVariant)\n], RequestDataV2.prototype, \"chain_id\", void 0);\n__decorate([\n Struct.field(RequestVariantV2)\n], RequestDataV2.prototype, \"req\", void 0);\n__decorate([\n Struct.field(RequestFlags)\n], RequestDataV2.prototype, \"flags\", void 0);\n__decorate([\n Struct.field('string')\n], RequestDataV2.prototype, \"callback\", void 0);\n__decorate([\n Struct.field(InfoPair, { array: true })\n], RequestDataV2.prototype, \"info\", void 0);\nRequestDataV2 = __decorate([\n Struct.type('signing_request')\n], RequestDataV2);\nlet RequestDataV3 = class RequestDataV3 extends Struct {\n};\n__decorate([\n Struct.field(ChainIdVariant)\n], RequestDataV3.prototype, \"chain_id\", void 0);\n__decorate([\n Struct.field(RequestVariantV3)\n], RequestDataV3.prototype, \"req\", void 0);\n__decorate([\n Struct.field(RequestFlags)\n], RequestDataV3.prototype, \"flags\", void 0);\n__decorate([\n Struct.field('string')\n], RequestDataV3.prototype, \"callback\", void 0);\n__decorate([\n Struct.field(InfoPair, { array: true })\n], RequestDataV3.prototype, \"info\", void 0);\nRequestDataV3 = __decorate([\n Struct.type('signing_request')\n], RequestDataV3);\nlet RequestSignature = class RequestSignature extends Struct {\n};\n__decorate([\n Struct.field('name')\n], RequestSignature.prototype, \"signer\", void 0);\n__decorate([\n Struct.field('signature')\n], RequestSignature.prototype, \"signature\", void 0);\nRequestSignature = __decorate([\n Struct.type('request_signature')\n], RequestSignature);\n\nvar IdentityProof_1;\nlet IdentityProof = IdentityProof_1 = class IdentityProof extends Struct {\n static from(value) {\n if (isInstanceOf(value, IdentityProof_1)) {\n return value;\n }\n else if (typeof value === 'string') {\n return IdentityProof_1.fromString(value);\n }\n else {\n return super.from(value);\n }\n }\n /**\n * Create a new instance from an EOSIO authorization header string.\n * \"EOSIO \"\n */\n static fromString(string) {\n const parts = string.split(' ');\n if (parts.length !== 2 || parts[0] !== 'EOSIO') {\n throw new Error('Invalid IdentityProof string');\n }\n const data = decode(parts[1]);\n return Serializer.decode({ data, type: IdentityProof_1 });\n }\n /** Create a new instance from a callback payload. */\n static fromPayload(payload, options = {}) {\n const request = SigningRequest.from(payload.req, options);\n if (!(request.version >= 3 && request.isIdentity())) {\n throw new Error('Not an identity request');\n }\n return this.from({\n chainId: payload.cid || request.getChainId(),\n scope: request.getIdentityScope(),\n expiration: payload.ex,\n signer: { actor: payload.sa, permission: payload.sp },\n signature: payload.sig,\n });\n }\n /**\n * Transaction this proof resolves to.\n * @internal\n */\n get transaction() {\n const action = Action.from({\n account: '',\n name: 'identity',\n authorization: [this.signer],\n data: IdentityV3.from({ scope: this.scope, permission: this.signer }),\n });\n return Transaction.from({\n ref_block_num: 0,\n ref_block_prefix: 0,\n expiration: this.expiration,\n actions: [action],\n });\n }\n /**\n * Recover the public key that signed this proof.\n */\n recover() {\n return this.signature.recoverDigest(this.transaction.signingDigest(this.chainId));\n }\n /**\n * Verify that given authority signed this proof.\n * @param auth The accounts signing authority.\n * @param currentTime Time to verify expiry against, if unset will use system time.\n */\n verify(auth, currentTime) {\n const now = TimePointSec.from(currentTime || new Date()).toMilliseconds();\n return (now < this.expiration.toMilliseconds() &&\n Authority.from(auth).hasPermission(this.recover()));\n }\n /**\n * Encode the proof to an `EOSIO` auth header string.\n */\n toString() {\n const data = Serializer.encode({ object: this });\n return `EOSIO ${encode(data.array, false)}`;\n }\n};\n__decorate([\n Struct.field(ChainId)\n], IdentityProof.prototype, \"chainId\", void 0);\n__decorate([\n Struct.field(Name)\n], IdentityProof.prototype, \"scope\", void 0);\n__decorate([\n Struct.field(TimePointSec)\n], IdentityProof.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field(PermissionLevel)\n], IdentityProof.prototype, \"signer\", void 0);\n__decorate([\n Struct.field(Signature)\n], IdentityProof.prototype, \"signature\", void 0);\nIdentityProof = IdentityProof_1 = __decorate([\n Struct.type('identity_proof')\n], IdentityProof);\n\n/**\n * EOSIO Signing Request (ESR).\n */\n/** Current supported protocol version, backwards compatible with version 2. */\nconst ProtocolVersion = 3;\n/**\n * The placeholder name: `............1` aka `uint64(1)`.\n * If used in action data will be resolved to current signer.\n * If used in as an authorization permission will be resolved to\n * the signers permission level.\n *\n * Example action:\n * ```\n * { account: \"eosio.token\",\n * name: \"transfer\",\n * authorization: [{actor: \"............1\", permission: \"............1\"}],\n * data: {\n * from: \"............1\",\n * to: \"bar\",\n * quantity: \"42.0000 EOS\",\n * memo: \"Don't panic\" }}\n * ```\n * When signed by `foo@active` would resolve to:\n * ```\n * { account: \"eosio.token\",\n * name: \"transfer\",\n * authorization: [{actor: \"foo\", permission: \"active\"}],\n * data: {\n * from: \"foo\",\n * to: \"bar\",\n * quantity: \"42.0000 EOS\",\n * memo: \"Don't panic\" }}\n * ```\n */\nconst PlaceholderName = Name.from('............1'); // aka uint64(1)\n/** Placeholder that will resolve to signer permission name. */\nconst PlaceholderPermission = Name.from('............2'); // aka uint64(2)\nconst PlaceholderAuth = PermissionLevel.from({\n actor: PlaceholderName,\n permission: PlaceholderPermission,\n});\nclass SigningRequest {\n /**\n * Create a new signing request.\n * Normally not used directly, see the `create` and `from` class methods.\n */\n constructor(version, data, zlib, abiProvider, signature) {\n if (data.flags.broadcast && data.req.variantName === 'identity') {\n throw new Error('Invalid request (identity request cannot be broadcast)');\n }\n this.version = version;\n this.data = data;\n this.zlib = zlib;\n this.abiProvider = abiProvider;\n this.signature = signature;\n }\n /** Return the identity ABI for given version. */\n static identityAbi(version) {\n const abi = Serializer.synthesize(this.identityType(version));\n abi.actions = [{ name: 'identity', type: 'identity', ricardian_contract: '' }];\n return abi;\n }\n /** Return the ABISerializableType identity type for given version. */\n static identityType(version) {\n return version === 2 ? IdentityV2 : IdentityV3;\n }\n /** Return the ABISerializableType storage type for given version. */\n static storageType(version) {\n return version === 2 ? RequestDataV2 : RequestDataV3;\n }\n /** Create a new signing request. */\n static async create(args, options = {}) {\n let actions;\n if (args.action) {\n actions = [args.action];\n }\n else if (args.actions) {\n actions = args.actions;\n }\n else if (args.transaction) {\n actions = args.transaction.actions || [];\n }\n else {\n actions = [];\n }\n const requiredAbis = actions\n .filter((action) => !Bytes.isBytes(action.data) &&\n action.data.constructor.abiName === undefined)\n .map((action) => Name.from(action.account));\n const abis = {};\n if (requiredAbis.length > 0) {\n const provider = options.abiProvider;\n if (!provider) {\n throw new Error('Missing abi provider');\n }\n const accountAbis = await Promise.all(requiredAbis.map((account) => provider.getAbi(account)));\n for (const [idx, abi] of accountAbis.entries()) {\n abis[requiredAbis[idx].toString()] = abi;\n }\n }\n return this.createSync(args, options, abis);\n }\n /**\n * Synchronously create a new signing request.\n * @throws If an un-encoded action with no abi def is encountered.\n */\n static createSync(args, options = {}, abis = {}) {\n let version = 2;\n const data = {};\n const encode = (action) => encodeAction(action, abis);\n // multi-chain requests requires version 3\n if (args.chainId === null) {\n version = 3;\n }\n // set the request data\n if (args.identity !== undefined) {\n if (args.identity.scope) {\n version = 3;\n }\n data.req = ['identity', this.identityType(version).from(args.identity)];\n }\n else if (args.action && !args.actions && !args.transaction) {\n data.req = ['action', encode(args.action)];\n }\n else if (args.actions && !args.action && !args.transaction) {\n if (args.actions.length === 1) {\n data.req = ['action', encode(args.actions[0])];\n }\n else {\n data.req = ['action[]', args.actions.map(encode)];\n }\n }\n else if (args.transaction && !args.action && !args.actions) {\n const tx = args.transaction;\n // set default values if missing\n if (tx.expiration === undefined) {\n tx.expiration = '1970-01-01T00:00:00.000';\n }\n if (tx.ref_block_num === undefined) {\n tx.ref_block_num = 0;\n }\n if (tx.ref_block_prefix === undefined) {\n tx.ref_block_prefix = 0;\n }\n if (tx.context_free_actions === undefined) {\n tx.context_free_actions = [];\n }\n if (tx.transaction_extensions === undefined) {\n tx.transaction_extensions = [];\n }\n if (tx.delay_sec === undefined) {\n tx.delay_sec = 0;\n }\n if (tx.max_cpu_usage_ms === undefined) {\n tx.max_cpu_usage_ms = 0;\n }\n if (tx.max_net_usage_words === undefined) {\n tx.max_net_usage_words = 0;\n }\n if (tx.actions === undefined) {\n tx.actions = [];\n }\n if (tx.context_free_actions === undefined) {\n tx.context_free_actions = [];\n }\n // encode actions if needed\n tx.actions = tx.actions.map(encode);\n data.req = ['transaction', tx];\n }\n else {\n throw new TypeError('Invalid arguments: Must have exactly one of action, actions or transaction');\n }\n // set the chain id\n if (args.chainId === null) {\n data.chain_id = ChainIdVariant.from(['chain_alias', 0]);\n }\n else {\n data.chain_id = ChainId.from(args.chainId || ChainName.EOS).chainVariant;\n }\n // request flags and callback\n const flags = RequestFlags.from(0);\n let callback = '';\n flags.broadcast = args.broadcast !== undefined ? args.broadcast : data.req[0] !== 'identity';\n if (typeof args.callback === 'string') {\n callback = args.callback;\n }\n else if (typeof args.callback === 'object') {\n callback = args.callback.url;\n flags.background = args.callback.background || false;\n }\n data.flags = flags;\n data.callback = callback;\n // info pairs\n data.info = [];\n if (typeof args.info === 'object') {\n for (const key in args.info) {\n const isOwn = Object.prototype.hasOwnProperty.call(args.info, key);\n if (isOwn) {\n let value = args.info[key];\n if (typeof value === 'string') {\n value = Bytes.from(value, 'utf8');\n }\n else if (!(value instanceof Bytes)) {\n value = Serializer.encode({ object: value });\n }\n data.info.push({ key, value });\n }\n }\n }\n if (args.chainIds && args.chainId === null) {\n const ids = args.chainIds.map((id) => ChainId.from(id).chainVariant);\n data.info.push({\n key: 'chain_ids',\n value: Serializer.encode({ object: ids, type: { type: ChainIdVariant, array: true } }),\n });\n }\n const req = new SigningRequest(version, this.storageType(version).from(data), options.zlib, options.abiProvider);\n // sign the request if given a signature provider\n if (options.signatureProvider) {\n req.sign(options.signatureProvider);\n }\n return req;\n }\n /** Creates an identity request. */\n static identity(args, options = {}) {\n let permission = {\n actor: args.account || PlaceholderName,\n permission: args.permission || PlaceholderPermission,\n };\n if (permission.actor === PlaceholderName &&\n permission.permission === PlaceholderPermission) {\n permission = undefined;\n }\n return this.createSync({\n ...args,\n identity: {\n permission,\n scope: args.scope,\n },\n broadcast: false,\n }, options);\n }\n /**\n * Create a request from a chain id and serialized transaction.\n * @param chainId The chain id where the transaction is valid.\n * @param serializedTransaction The serialized transaction.\n * @param options Creation options.\n */\n static fromTransaction(chainId, serializedTransaction, options = {}) {\n const id = ChainId.from(chainId);\n serializedTransaction = Bytes.from(serializedTransaction);\n const encoder = new ABIEncoder();\n encoder.writeByte(2); // header\n encoder.writeArray(Serializer.encode({ object: id.chainVariant }).array);\n encoder.writeByte(2); // transaction variant\n encoder.writeArray(Bytes.from(serializedTransaction).array);\n encoder.writeByte(RequestFlags.broadcast);\n encoder.writeByte(0); // callback\n encoder.writeByte(0); // info\n return SigningRequest.fromData(encoder.getData(), options);\n }\n /** Creates a signing request from encoded `esr:` uri string. */\n static from(uri, options = {}) {\n if (typeof uri !== 'string') {\n throw new Error('Invalid request uri');\n }\n const [scheme, path] = uri.split(':');\n if (scheme !== 'esr' && scheme !== 'web+esr') {\n throw new Error('Invalid scheme');\n }\n const data = decode(path.startsWith('//') ? path.slice(2) : path);\n return SigningRequest.fromData(data, options);\n }\n static fromData(data, options = {}) {\n data = Bytes.from(data);\n const header = data.array[0];\n const version = header & ~(1 << 7);\n if (version !== 2 && version !== 3) {\n throw new Error('Unsupported protocol version');\n }\n let payload = data.droppingFirst(1);\n if ((header & (1 << 7)) !== 0) {\n if (!options.zlib) {\n throw new Error('Compressed URI needs zlib');\n }\n payload = Bytes.from(options.zlib.inflateRaw(payload.array));\n }\n const decoder = new ABIDecoder(payload.array);\n const req = Serializer.decode({ data: decoder, type: this.storageType(version) });\n let sig;\n if (decoder.canRead()) {\n sig = Serializer.decode({ data: decoder, type: RequestSignature });\n }\n return new SigningRequest(version, req, options.zlib, options.abiProvider, sig);\n }\n /**\n * Sign the request, mutating.\n * @param signatureProvider The signature provider that provides a signature for the signer.\n */\n sign(signatureProvider) {\n const message = this.getSignatureDigest();\n this.signature = RequestSignature.from(signatureProvider.sign(message));\n }\n /**\n * Get the signature digest for this request.\n */\n getSignatureDigest() {\n // protocol version + utf8 \"request\"\n const prefix = [this.version, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74];\n return Checksum256.hash(Bytes.from(prefix).appending(this.getData()));\n }\n /**\n * Set the signature data for this request, mutating.\n * @param signer Account name of signer.\n * @param signature The signature string.\n */\n setSignature(signer, signature) {\n this.signature = RequestSignature.from({ signer, signature });\n }\n /**\n * Set the request callback, mutating.\n * @param url Where the callback should be sent.\n * @param background Whether the callback should be sent in the background.\n */\n setCallback(url, background) {\n this.data.callback = url;\n this.data.flags.background = background;\n }\n /**\n * Set broadcast flag.\n * @param broadcast Whether the transaction should be broadcast by receiver.\n */\n setBroadcast(broadcast) {\n this.data.flags.broadcast = broadcast;\n }\n /**\n * Encode this request into an `esr:` uri.\n * @argument compress Whether to compress the request data using zlib,\n * defaults to true if omitted and zlib is present;\n * otherwise false.\n * @argument slashes Whether add slashes after the protocol scheme, i.e. `esr://`.\n * Defaults to true.\n * @returns An esr uri string.\n */\n encode(compress, slashes) {\n const shouldCompress = compress !== undefined ? compress : this.zlib !== undefined;\n if (shouldCompress && this.zlib === undefined) {\n throw new Error('Need zlib to compress');\n }\n let header = this.version;\n const data = this.getData();\n const sigData = this.getSignatureData();\n let array = new Uint8Array(data.byteLength + sigData.byteLength);\n array.set(data, 0);\n array.set(sigData, data.byteLength);\n if (shouldCompress) {\n const deflated = this.zlib.deflateRaw(array);\n if (array.byteLength > deflated.byteLength) {\n header |= 1 << 7;\n array = deflated;\n }\n }\n const out = new Uint8Array(1 + array.byteLength);\n out[0] = header;\n out.set(array, 1);\n let scheme = 'esr:';\n if (slashes !== false) {\n scheme += '//';\n }\n return scheme + encode(out);\n }\n /** Get the request data without header or signature. */\n getData() {\n return Serializer.encode({ object: this.data }).array;\n }\n /** Get signature data, returns an empty array if request is not signed. */\n getSignatureData() {\n if (!this.signature) {\n return new Uint8Array(0);\n }\n return Serializer.encode({ object: this.signature }).array;\n }\n /** ABI definitions required to resolve request. */\n getRequiredAbis() {\n return this.getRawActions()\n .filter((action) => !isIdentity(action))\n .map((action) => action.account)\n .filter((value, index, self) => self.indexOf(value) === index);\n }\n /** Whether TaPoS values are required to resolve request. */\n requiresTapos() {\n const tx = this.getRawTransaction();\n return !this.isIdentity() && !hasTapos(tx);\n }\n /** Resolve required ABI definitions. */\n async fetchAbis(abiProvider) {\n const required = this.getRequiredAbis();\n if (required.length > 0) {\n const provider = abiProvider || this.abiProvider;\n if (!provider) {\n throw new Error('Missing ABI provider');\n }\n const abis = new Map();\n await Promise.all(required.map(async (account) => {\n abis.set(account.toString(), ABI.from(await provider.getAbi(account)));\n }));\n return abis;\n }\n else {\n return new Map();\n }\n }\n /**\n * Decode raw actions actions to object representations.\n * @param abis ABI defenitions required to decode all actions.\n * @param signer Placeholders in actions will be resolved to signer if set.\n */\n resolveActions(abis, signer) {\n return this.getRawActions().map((rawAction) => {\n let abi;\n if (isIdentity(rawAction)) {\n abi = this.constructor.identityAbi(this.version);\n }\n else {\n const rawAbi = abis.get(rawAction.account.toString());\n if (!rawAbi) {\n throw new Error(`Missing ABI definition for ${rawAction.account}`);\n }\n abi = ABI.from(rawAbi);\n }\n const type = abi.getActionType(rawAction.name);\n if (!type) {\n throw new Error(`Missing type for action ${rawAction.account}:${rawAction.name} in ABI`);\n }\n let data = rawAction.decodeData(abi);\n let authorization = rawAction.authorization;\n if (signer) {\n const signerPerm = PermissionLevel.from(signer);\n const resolve = (value) => {\n if (value instanceof Name) {\n if (value.equals(PlaceholderName)) {\n return signerPerm.actor;\n }\n else if (value.equals(PlaceholderPermission)) {\n return signerPerm.permission;\n }\n else {\n return value;\n }\n }\n else if (Array.isArray(value)) {\n return value.map(resolve);\n }\n else if (typeof value === 'object' && value !== null) {\n for (const key of Object.keys(value)) {\n value[key] = resolve(value[key]);\n }\n return value;\n }\n else {\n return value;\n }\n };\n data = resolve(data);\n authorization = authorization.map((auth) => {\n let { actor, permission } = auth;\n if (actor.equals(PlaceholderName)) {\n actor = signerPerm.actor;\n }\n if (permission.equals(PlaceholderPermission)) {\n permission = signerPerm.permission;\n }\n // backwards compatibility, actor placeholder will also resolve to permission when used in auth\n if (permission.equals(PlaceholderName)) {\n permission = signerPerm.permission;\n }\n return PermissionLevel.from({ actor, permission });\n });\n }\n return {\n ...rawAction,\n authorization,\n data,\n };\n });\n }\n resolveTransaction(abis, signer, ctx = {}) {\n const tx = this.getRawTransaction();\n if (!this.isIdentity() && !hasTapos(tx)) {\n if (ctx.expiration !== undefined &&\n ctx.ref_block_num !== undefined &&\n ctx.ref_block_prefix !== undefined) {\n tx.expiration = TimePointSec.from(ctx.expiration);\n tx.ref_block_num = UInt16.from(ctx.ref_block_num);\n tx.ref_block_prefix = UInt32.from(ctx.ref_block_prefix);\n }\n else if (ctx.block_num !== undefined &&\n ctx.ref_block_prefix !== undefined &&\n ctx.timestamp !== undefined) {\n tx.expiration = expirationTime(ctx.timestamp, ctx.expire_seconds);\n tx.ref_block_num = UInt16.from(ctx.block_num);\n tx.ref_block_prefix = UInt32.from(ctx.ref_block_prefix);\n }\n else {\n throw new Error('Invalid transaction context, need either a reference block or explicit TaPoS values');\n }\n }\n else if (this.isIdentity() && this.version > 2) {\n // From ESR version 3 all identity requests have expiration\n tx.expiration = ctx.expiration\n ? TimePointSec.from(ctx.expiration)\n : expirationTime(ctx.timestamp, ctx.expire_seconds);\n }\n const actions = this.resolveActions(abis, signer);\n // TODO: resolve context free actions\n const context_free_actions = tx.context_free_actions;\n return { ...tx, context_free_actions, actions };\n }\n resolve(abis, signer, ctx = {}) {\n const tx = this.resolveTransaction(abis, signer, ctx);\n const actions = tx.actions.map((action) => {\n let abi;\n if (isIdentity(action)) {\n abi = this.constructor.identityAbi(this.version);\n }\n else {\n abi = abis.get(action.account.toString());\n }\n if (!abi) {\n throw new Error(`Missing ABI definition for ${action.account}`);\n }\n const type = abi.getActionType(action.name);\n const data = Serializer.encode({ object: action.data, type, abi });\n return Action.from({ ...action, data });\n });\n const transaction = Transaction.from({ ...tx, actions });\n let chainId;\n if (this.isMultiChain()) {\n if (!ctx.chainId) {\n throw new Error('Missing chosen chain ID for multi-chain request');\n }\n chainId = ChainId.from(ctx.chainId);\n const ids = this.getChainIds();\n if (ids && !ids.some((id) => chainId.equals(id))) {\n throw new Error('Trying to resolve for chain ID not defined in request');\n }\n }\n else {\n chainId = this.getChainId();\n }\n return new ResolvedSigningRequest(this, PermissionLevel.from(signer), transaction, tx, chainId);\n }\n /**\n * Get the id of the chain where this request is valid.\n * @returns The 32-byte chain id as hex encoded string.\n */\n getChainId() {\n return this.data.chain_id.chainId;\n }\n /**\n * Chain IDs this request is valid for, only valid for multi chain requests. Value of `null` when `isMultiChain` is true denotes any chain.\n */\n getChainIds() {\n if (!this.isMultiChain()) {\n return null;\n }\n const ids = this.getInfoKey('chain_ids', { type: ChainIdVariant, array: true });\n if (ids) {\n return ids.map((id) => id.chainId);\n }\n return null;\n }\n /**\n * Set chain IDs this request is valid for, only considered for multi chain requests.\n */\n setChainIds(ids) {\n const value = ids.map((id) => ChainId.from(id).chainVariant);\n this.setInfoKey('chain_ids', value, { type: ChainIdVariant, array: true });\n }\n /**\n * True if chainId is set to chain alias `0` which indicates that the request is valid for any chain.\n */\n isMultiChain() {\n return (this.data.chain_id.variantIdx === 0 &&\n this.data.chain_id.value.equals(ChainName.UNKNOWN));\n }\n /** Return the actions in this request with action data encoded. */\n getRawActions() {\n const req = this.data.req;\n switch (req.variantName) {\n case 'action':\n return [req.value];\n case 'action[]':\n return req.value;\n case 'identity': {\n if (this.version === 2) {\n const id = req.value;\n let data = '0101000000000000000200000000000000'; // placeholder permission\n let authorization = [PlaceholderAuth];\n if (id.permission) {\n data = Serializer.encode({ object: id });\n authorization = [id.permission];\n }\n return [\n Action.from({\n account: '',\n name: 'identity',\n authorization,\n data,\n }),\n ];\n }\n else {\n // eslint-disable-next-line prefer-const\n let { scope, permission } = req.value;\n if (!permission) {\n permission = PlaceholderAuth;\n }\n const data = Serializer.encode({ object: { scope, permission }, type: IdentityV3 });\n return [\n Action.from({\n account: '',\n name: 'identity',\n authorization: [permission],\n data,\n }),\n ];\n }\n }\n case 'transaction':\n return req.value.actions;\n default:\n throw new Error('Invalid signing request data');\n }\n }\n /** Unresolved transaction. */\n getRawTransaction() {\n const req = this.data.req;\n switch (req.variantName) {\n case 'transaction':\n return Transaction.from({ ...req.value });\n case 'action':\n case 'action[]':\n case 'identity':\n return Transaction.from({\n actions: this.getRawActions(),\n context_free_actions: [],\n transaction_extensions: [],\n expiration: '1970-01-01T00:00:00.000',\n ref_block_num: 0,\n ref_block_prefix: 0,\n max_cpu_usage_ms: 0,\n max_net_usage_words: 0,\n delay_sec: 0,\n });\n default:\n throw new Error('Invalid signing request data');\n }\n }\n /** Whether the request is an identity request. */\n isIdentity() {\n return this.data.req.variantName === 'identity';\n }\n /** Whether the request should be broadcast by signer. */\n shouldBroadcast() {\n if (this.isIdentity()) {\n return false;\n }\n return this.data.flags.broadcast;\n }\n /**\n * Present if the request is an identity request and requests a specific account.\n * @note This returns `nil` unless a specific identity has been requested,\n * use `isIdentity` to check id requests.\n */\n getIdentity() {\n if (!this.isIdentity()) {\n return null;\n }\n const id = this.data.req.value;\n if (id.permission && !id.permission.actor.equals(PlaceholderName)) {\n return id.permission.actor;\n }\n return null;\n }\n /**\n * Present if the request is an identity request and requests a specific permission.\n * @note This returns `nil` unless a specific permission has been requested,\n * use `isIdentity` to check id requests.\n */\n getIdentityPermission() {\n if (!this.isIdentity()) {\n return null;\n }\n const id = this.data.req.value;\n if (id.permission && !id.permission.permission.equals(PlaceholderPermission)) {\n return id.permission.permission;\n }\n return null;\n }\n /**\n * Present if the request is an identity request and requests a specific permission.\n * @note This returns `nil` unless a specific permission has been requested,\n * use `isIdentity` to check id requests.\n */\n getIdentityScope() {\n if (!this.isIdentity() || this.version <= 2) {\n return null;\n }\n const id = this.data.req.value;\n return id.scope;\n }\n /** Get raw info dict */\n getRawInfo() {\n const rv = {};\n for (const { key, value } of this.data.info) {\n rv[key] = value;\n }\n return rv;\n }\n getRawInfoKey(key) {\n const pair = this.data.info.find((pair) => pair.key === key);\n if (pair) {\n return pair.value;\n }\n }\n setRawInfoKey(key, value) {\n let pair = this.data.info.find((pair) => pair.key === key);\n if (!pair) {\n pair = InfoPair.from({ key, value });\n this.data.info.push(pair);\n }\n else {\n pair.value = Bytes.from(value);\n }\n }\n /** Set a metadata key. */\n setInfoKey(key, object, type) {\n let data;\n if (typeof object === 'string' && !type) {\n // match old behavior where strings encode to raw utf8 as opposed to\n // eosio-abi encoded strings (varuint32 length prefix + utf8 bytes)\n data = Bytes.from(object, 'utf8');\n }\n else {\n data = Serializer.encode({ object, type });\n }\n this.setRawInfoKey(key, data);\n }\n getInfoKey(key, type) {\n const data = this.getRawInfoKey(key);\n if (data) {\n if (type) {\n return Serializer.decode({ data, type });\n }\n else {\n // assume utf8 string if no type is given\n return data.utf8String;\n }\n }\n }\n /** Return a deep copy of this request. */\n clone() {\n let signature;\n if (this.signature) {\n signature = RequestSignature.from(JSON.parse(JSON.stringify(this.signature)));\n }\n const RequestData = this.constructor.storageType(this.version);\n const data = RequestData.from(JSON.parse(JSON.stringify(this.data)));\n return new SigningRequest(this.version, data, this.zlib, this.abiProvider, signature);\n }\n // Convenience methods.\n toString() {\n return this.encode();\n }\n toJSON() {\n return this.encode();\n }\n}\nclass ResolvedSigningRequest {\n constructor(request, signer, transaction, resolvedTransaction, chainId) {\n this.request = request;\n this.signer = signer;\n this.transaction = transaction;\n this.resolvedTransaction = resolvedTransaction;\n this.chainId = chainId;\n }\n /** Recreate a resolved request from a callback payload. */\n static async fromPayload(payload, options = {}) {\n const request = SigningRequest.from(payload.req, options);\n const abis = await request.fetchAbis();\n return request.resolve(abis, { actor: payload.sa, permission: payload.sp }, {\n ref_block_num: payload.rbn,\n ref_block_prefix: payload.rid,\n expiration: payload.ex,\n chainId: payload.cid || request.getChainId(),\n });\n }\n get serializedTransaction() {\n return Serializer.encode({ object: this.transaction }).array;\n }\n get signingDigest() {\n return this.transaction.signingDigest(this.chainId);\n }\n getCallback(signatures, blockNum) {\n const { callback, flags } = this.request.data;\n if (!callback || callback.length === 0) {\n return null;\n }\n if (!signatures || signatures.length === 0) {\n throw new Error('Must have at least one signature to resolve callback');\n }\n const sigs = signatures.map((sig) => Signature.from(sig));\n const payload = {\n sig: String(sigs[0]),\n tx: String(this.transaction.id),\n rbn: String(this.transaction.ref_block_num),\n rid: String(this.transaction.ref_block_prefix),\n ex: String(this.transaction.expiration),\n req: this.request.encode(),\n sa: String(this.signer.actor),\n sp: String(this.signer.permission),\n cid: String(this.chainId),\n };\n for (const [n, sig] of sigs.slice(1).entries()) {\n payload[`sig${n}`] = String(sig);\n }\n if (blockNum) {\n payload.bn = String(UInt32.from(blockNum));\n }\n const url = callback.replace(/({{([a-z0-9]+)}})/g, (_1, _2, m) => {\n return payload[m] || '';\n });\n return {\n background: flags.background,\n payload,\n url,\n };\n }\n getIdentityProof(signature) {\n if (!this.request.isIdentity()) {\n throw new Error('Not a identity request');\n }\n return IdentityProof.from({\n chainId: this.chainId,\n scope: this.request.getIdentityScope(),\n expiration: this.transaction.expiration,\n signer: this.signer,\n signature,\n });\n }\n}\nfunction encodeAction(action, abis) {\n if (Bytes.isBytes(action.data) || action.data.constructor.abiName !== undefined) {\n return Action.from(action);\n }\n const abi = abis[String(Name.from(action.account))];\n if (!abi) {\n throw new Error(`Missing ABI for ${action.account}`);\n }\n return Action.from(action, abi);\n}\nfunction isIdentity(action) {\n const account = Name.from(action.account);\n const name = Name.from(action.name);\n return account.rawValue.equals(0) && name.equals('identity');\n}\nfunction hasTapos(tx) {\n return !(tx.expiration.equals(0) && tx.ref_block_num.equals(0) && tx.ref_block_prefix.equals(0));\n}\nfunction expirationTime(timestamp, expireSeconds = 60) {\n const ts = TimePointSec.from(timestamp || new Date());\n const exp = UInt32.from(expireSeconds);\n return TimePointSec.fromInteger(ts.value.adding(exp));\n}\n\nexport { AccountName, base64u as Base64u, ChainAlias, ChainId, ChainIdVariant, ChainName, IdentityProof, IdentityV2, IdentityV3, InfoPair, PermissionName, PlaceholderAuth, PlaceholderName, PlaceholderPermission, ProtocolVersion, RequestDataV2, RequestDataV3, RequestFlags, RequestSignature, RequestVariantV2, RequestVariantV3, ResolvedSigningRequest, SigningRequest };\n//# sourceMappingURL=esr.m.js.map\n","function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration();\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, bubbles = false) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor() {\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes) {\n super();\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = append_empty_stylesheet(node).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.44.1' }, detail), true));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","export const SNOWPACK_PUBLIC_BRANCH = \"HEAD\";\nexport const SNOWPACK_PUBLIC_REV = \"9362e13\";\nexport const SNOWPACK_PUBLIC_VERSION = \"0.1.0\";\nexport const MODE = \"production\";\nexport const NODE_ENV = \"production\";\nexport const SSR = false;","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import{getContext as C}from\"svelte\";import{writable as F}from\"svelte/store\";function p(e,a=!1){return e=e.slice(e.startsWith(\"/#\")?2:0,e.endsWith(\"/*\")?-2:void 0),e.startsWith(\"/\")||(e=\"/\"+e),e===\"/\"&&(e=\"\"),a&&!e.endsWith(\"/\")&&(e+=\"/\"),e}function d(e,a){e=p(e,!0),a=p(a,!0);let r=[],n={},t=!0,c=e.split(\"/\").map(s=>s.startsWith(\":\")?(r.push(s.slice(1)),\"([^\\\\/]+)\"):s).join(\"\\\\/\"),o=a.match(new RegExp(`^${c}$`));return o||(t=!1,o=a.match(new RegExp(`^${c}`))),o?(r.forEach((s,h)=>n[s]=o[h+1]),{exact:t,params:n,part:o[0].slice(0,-1)}):null}function x(e,a,r){if(r===\"\")return e;if(r[0]===\"/\")return r;let n=o=>o.split(\"/\").filter(s=>s!==\"\"),t=n(e),c=a?n(a):[];return\"/\"+c.map((o,s)=>t[s]).join(\"/\")+\"/\"+r}function m(e,a,r,n){let t=[a,\"data-\"+a].reduce((c,o)=>{let s=e.getAttribute(o);return r&&e.removeAttribute(o),s===null?c:s},!1);return!n&&t===\"\"?!0:t||n||!1}function S(e){let a=e.split(\"&\").map(r=>r.split(\"=\")).reduce((r,n)=>{let t=n[0];if(!t)return r;let c=n.length>1?n[n.length-1]:!0;return typeof c==\"string\"&&c.includes(\",\")&&(c=c.split(\",\")),r[t]===void 0?r[t]=[c]:r[t].push(c),r},{});return Object.entries(a).reduce((r,n)=>(r[n[0]]=n[1].length>1?n[1]:n[1][0],r),{})}function v(e){return Object.entries(e).map(([a,r])=>r?r===!0?a:`${a}=${Array.isArray(r)?r.join(\",\"):r}`:null).filter(a=>a).join(\"&\")}function w(e,a){return e?a+e:\"\"}function k(e){throw new Error(\"[Tinro] \"+e)}var i={HISTORY:1,HASH:2,MEMORY:3,OFF:4,run(e,a,r,n){return e===this.HISTORY?a&&a():e===this.HASH?r&&r():n&&n()},getDefault(){return!window||window.location.pathname===\"srcdoc\"?this.MEMORY:this.HISTORY}};import\"svelte/store\";var R,M,$,b=\"\",l=A();function A(){let e=i.getDefault(),a,r=o=>window.onhashchange=window.onpopstate=R=null,n=o=>a&&a(y(e)),t=o=>{o&&(e=o),r(),e!==i.OFF&&i.run(e,s=>window.onpopstate=n,s=>window.onhashchange=n)&&n()},c=o=>{let s=Object.assign(y(e),o);return s.path+w(v(s.query),\"?\")+w(s.hash,\"#\")};return{mode:t,get:o=>y(e),go(o,s){E(e,o,s),n()},start(o){a=o,t()},stop(){a=null,t(i.OFF)},set(o){this.go(c(o),!o.path)},methods(){return _(this)},base:o=>b=o}}function E(e,a,r){!r&&(M=$);let n=t=>history[`${r?\"replace\":\"push\"}State`]({},\"\",t);i.run(e,t=>n(b+a),t=>n(`#${a}`),t=>R=a)}function y(e){let a=window.location,r=i.run(e,t=>(b?a.pathname.replace(b,\"\"):a.pathname)+a.search+a.hash,t=>String(a.hash.slice(1)||\"/\"),t=>R||\"/\"),n=r.match(/^([^?#]+)(?:\\?([^#]+))?(?:\\#(.+))?$/);return $=r,{url:r,from:M,path:n[1]||\"\",query:S(n[2]||\"\"),hash:n[3]||\"\"}}function _(e){let a=()=>e.get().query,r=o=>e.set({query:o}),n=o=>r(o(a())),t=()=>e.get().hash,c=o=>e.set({hash:o});return{hash:{get:t,set:c,clear:()=>c(\"\")},query:{replace:r,clear:()=>r(\"\"),get(o){return o?a()[o]:a()},set(o,s){n(h=>(h[o]=s,h))},delete(o){n(s=>(s[o]&&delete s[o],s))}}}}var f=T();function T(){let{subscribe:e}=F(l.get(),a=>{l.start(a);let r=P(l.go);return()=>{l.stop(),r()}});return{subscribe:e,goto:l.go,params:Q,meta:O,useHashNavigation:a=>l.mode(a?i.HASH:i.HISTORY),mode:{hash:()=>l.mode(i.HASH),history:()=>l.mode(i.HISTORY),memory:()=>l.mode(i.MEMORY)},base:l.base,location:l.methods()}}function Y(e){let a,r,n,t,c=()=>{a=m(e,\"href\").replace(/^\\/#|[?#].*$|\\/$/g,\"\"),r=m(e,\"exact\",!0),n=m(e,\"active-class\",!0,\"active\")},o=()=>{let s=d(a,t);s&&(s.exact&&r||!r)?e.classList.add(n):e.classList.remove(n)};return c(),{destroy:f.subscribe(s=>{t=s.path,o()}),update:()=>{c(),o()}}}function P(e){let a=r=>{let n=r.target.closest(\"a[href]\"),t=n&&m(n,\"target\",!1,\"_self\"),c=n&&m(n,\"tinro-ignore\"),o=r.ctrlKey||r.metaKey||r.altKey||r.shiftKey;if(t==\"_self\"&&!c&&!o&&n){let s=n.getAttribute(\"href\").replace(/^\\/#/,\"\");/^\\/\\/|^[a-zA-Z]+:/.test(s)||(r.preventDefault(),e(s.startsWith(\"/\")?s:n.href.replace(window.location.origin,\"\")))}};return addEventListener(\"click\",a),()=>removeEventListener(\"click\",a)}function Q(){return C(\"tinro\").meta.params}import{hasContext as U,getContext as H,setContext as W,onMount as z,tick as D}from\"svelte\";import{writable as I}from\"svelte/store\";var g=\"tinro\",K=j({pattern:\"\",matched:!0});function q(e){let a=H(g)||K;(a.exact||a.fallback)&&k(`${e.fallback?\"\":``} can't be inside ${a.fallback?\"\":` with exact path`}`);let r=e.fallback?\"fallbacks\":\"childs\",n=I({}),t=j({fallback:e.fallback,parent:a,update(c){t.exact=!c.path.endsWith(\"/*\"),t.pattern=p(`${t.parent.pattern||\"\"}${c.path}`),t.redirect=c.redirect,t.firstmatch=c.firstmatch,t.breadcrumb=c.breadcrumb,t.match()},register:()=>(t.parent[r].add(t),async()=>{t.parent[r].delete(t),t.parent.activeChilds.delete(t),t.router.un&&t.router.un(),t.parent.match()}),show:()=>{e.onShow(),!t.fallback&&t.parent.activeChilds.add(t)},hide:()=>{e.onHide(),t.parent.activeChilds.delete(t)},match:async()=>{t.matched=!1;let{path:c,url:o,from:s,query:h}=t.router.location,u=d(t.pattern,c);if(!t.fallback&&u&&t.redirect&&(!t.exact||t.exact&&u.exact)){let L=x(c,t.parent.pattern,t.redirect);return f.goto(L,!0)}t.meta=u&&{from:s,url:o,query:h,match:u.part,pattern:t.pattern,breadcrumbs:t.parent.meta&&t.parent.meta.breadcrumbs.slice()||[],params:u.params,subscribe:n.subscribe},t.breadcrumb&&t.meta&&t.meta.breadcrumbs.push({name:t.breadcrumb,path:u.part}),n.set(t.meta),u&&!t.fallback&&(!t.exact||t.exact&&u.exact)&&(!t.parent.firstmatch||!t.parent.matched)?(e.onMeta(t.meta),t.parent.matched=!0,t.show()):t.hide(),u&&t.showFallbacks()}});return W(g,t),z(()=>t.register()),t}function O(){return U(g)?H(g).meta:k(\"meta() function must be run inside any `` child component only\")}function j(e){let a={router:{},exact:!1,pattern:null,meta:null,parent:null,fallback:!1,redirect:!1,firstmatch:!1,breadcrumb:null,matched:!1,childs:new Set,activeChilds:new Set,fallbacks:new Set,async showFallbacks(){if(!this.fallback&&(await D(),this.childs.size>0&&this.activeChilds.size==0||this.childs.size==0&&this.fallbacks.size>0)){let r=this;for(;r.fallbacks.size==0;)if(r=r.parent,!r)return;r&&r.fallbacks.forEach(n=>{if(n.redirect){let t=x(\"/\",n.parent.pattern,n.redirect);f.goto(t,!0)}else n.show()})}},start(){this.router.un||(this.router.un=f.subscribe(r=>{this.router.location=r,this.pattern!==null&&this.match()}))},match(){this.showFallbacks()}};return Object.assign(a,e),a.start(),a}export{Y as active,q as createRouteObject,O as meta,f as router};\n","\n\n{#if showContent}\n \n{/if}","import {Asset, Name} from '@greymass/eosio'\nimport {ChainId} from 'anchor-link'\n\nconst branch = import.meta.env.SNOWPACK_PUBLIC_BRANCH || 'local'\nconst rev = import.meta.env.SNOWPACK_PUBLIC_REV || 'head'\nconst ver = import.meta.env.SNOWPACK_PUBLIC_VERSION || 'unknown'\n\n/** Only true in a production build. */\nexport const isRelease = branch === 'HEAD'\n\n/** App identifier, used for anchor link (session persistence). */\nexport const appId = !isRelease\n ? `w.${branch.replace(/[^1-5a-z]+/g, '').slice(0, 7)}.gm`\n : 'wallet.gm'\n\nexport const version = `${ver} (${branch}-${rev})`\nexport const releaseVersion = `Version ${ver}`\n\nexport enum ChainFeatures {\n /** eosio.namebid https://github.com/EOSIO/eosio.contracts/blob/master/contracts/eosio.system/src/name_bidding.cpp */\n BidName,\n /** eosio.buyram / eosio.buyrambytes https://github.com/EOSIO/eosio.contracts/blob/master/contracts/eosio.system/src/delegate_bandwidth.cpp#L43 */\n BuyRAM,\n /** FIO Bundled Transactions https://fio.wiki/knowledge-base/protocol/bundling-and-fees/ */\n FIOBundledFees,\n /** Fuel https://greymass.com/fuel */\n Fuel,\n /** eosio.powerup https://github.com/EOSIO/eosio.contracts/pull/397 */\n PowerUp,\n /** eosio.rentcpu / eosio.rentnet https://github.com/EOSIO/eosio.contracts/blob/master/contracts/eosio.system/src/powerup.cpp */\n REX,\n /** eosio.delegatebw https://github.com/EOSIO/eosio.contracts/blob/master/contracts/eosio.system/src/delegate_bandwidth.cpp#L372 */\n Staking,\n /** eosio.voteproducer https://github.com/EOSIO/eosio.contracts/blob/master/contracts/eosio.system/src/voting.cpp */\n VoteProducer,\n /** delphioracle https://github.com/eostitan/delphioracle */\n DelphiOracle,\n}\n\n// List of features involving resources\nexport const resourceFeatures = [\n ChainFeatures.Fuel,\n ChainFeatures.Staking,\n ChainFeatures.REX,\n ChainFeatures.PowerUp,\n]\n\n// Available Balance Providers\nexport enum BalanceProviders {\n // https://www.api.bloks.io/account/teamgreymass?type=getAccountTokens&coreSymbol=4,EOS\n Bloks,\n}\n\nexport interface ChainConfig {\n /** Short identifier. */\n id: string\n /** Display name. */\n name: string\n /** Chain Features */\n chainFeatures: Set\n /** Chain ID. */\n chainId: ChainId\n /** System Token Contract Name */\n coreTokenContract: Name\n /** System Token Symbol */\n coreTokenSymbol: Asset.Symbol\n /** System Token Transfer Action */\n coreTokenTransfer: Name\n /** Node URL to use. */\n nodeUrl: string\n /** True if network is a testnet. */\n testnet: boolean\n /** Account to use for resource sampling */\n resourceSampleAccount?: string\n /** The number of milliseconds to base sample prices on */\n resourceSampleMilliseconds?: number\n /** Bloks url */\n bloksUrl: string\n /** Available Balance Providers */\n balanceProviders?: Set\n}\n\n/** Supported chains. */\nexport const chains: ChainConfig[] = [\n {\n id: 'eos',\n chainFeatures: new Set([\n ChainFeatures.BidName,\n ChainFeatures.BuyRAM,\n ChainFeatures.Fuel,\n ChainFeatures.PowerUp,\n ChainFeatures.REX,\n ChainFeatures.Staking,\n ChainFeatures.VoteProducer,\n ChainFeatures.DelphiOracle,\n ]),\n chainId: ChainId.from('aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906'),\n coreTokenSymbol: Asset.Symbol.from('4,EOS'),\n coreTokenContract: Name.from('eosio.token'),\n coreTokenTransfer: Name.from('transfer'),\n name: 'EOS',\n nodeUrl: 'https://eos.greymass.com',\n testnet: false,\n bloksUrl: 'https://bloks.io',\n balanceProviders: new Set([BalanceProviders.Bloks]),\n },\n {\n id: 'fio',\n chainFeatures: new Set([ChainFeatures.FIOBundledFees, ChainFeatures.VoteProducer]),\n chainId: ChainId.from('21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c'),\n coreTokenSymbol: Asset.Symbol.from('9,FIO'),\n coreTokenContract: Name.from('fio.token'),\n coreTokenTransfer: Name.from('trnsfiopubky'),\n name: 'FIO',\n nodeUrl: 'https://fio.greymass.com',\n testnet: false,\n bloksUrl: 'https://fio.bloks.io',\n balanceProviders: new Set([BalanceProviders.Bloks]),\n },\n {\n id: 'fio-testnet',\n chainFeatures: new Set([ChainFeatures.FIOBundledFees, ChainFeatures.VoteProducer]),\n chainId: ChainId.from('b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e'),\n coreTokenSymbol: Asset.Symbol.from('9,FIO'),\n coreTokenContract: Name.from('fio.token'),\n coreTokenTransfer: Name.from('trnsfiopubky'),\n name: 'FIO (Testnet)',\n nodeUrl: 'https://fiotestnet.greymass.com',\n testnet: true,\n bloksUrl: 'https://fio-test.bloks.io',\n },\n {\n id: 'jungle3',\n chainFeatures: new Set([\n ChainFeatures.BidName,\n ChainFeatures.BuyRAM,\n ChainFeatures.Fuel,\n ChainFeatures.PowerUp,\n ChainFeatures.REX,\n ChainFeatures.Staking,\n ChainFeatures.VoteProducer,\n ]),\n chainId: ChainId.from('2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840'),\n coreTokenSymbol: Asset.Symbol.from('4,EOS'),\n coreTokenContract: Name.from('eosio.token'),\n coreTokenTransfer: Name.from('transfer'),\n name: 'Jungle 3 (Testnet)',\n nodeUrl: 'https://jungle3.greymass.com',\n testnet: true,\n bloksUrl: 'https://jungle3.bloks.io',\n balanceProviders: new Set([BalanceProviders.Bloks]),\n },\n {\n id: 'proton',\n chainFeatures: new Set([ChainFeatures.Staking, ChainFeatures.VoteProducer]),\n chainId: ChainId.from('384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0'),\n coreTokenSymbol: Asset.Symbol.from('4,XPR'),\n coreTokenContract: Name.from('eosio.token'),\n coreTokenTransfer: Name.from('transfer'),\n name: 'Proton',\n nodeUrl: 'https://proton.greymass.com',\n testnet: false,\n bloksUrl: 'https://proton.bloks.io',\n balanceProviders: new Set([BalanceProviders.Bloks]),\n },\n {\n id: 'telos',\n chainFeatures: new Set([\n ChainFeatures.BidName,\n ChainFeatures.BuyRAM,\n ChainFeatures.Fuel,\n ChainFeatures.REX,\n ChainFeatures.Staking,\n ChainFeatures.VoteProducer,\n ]),\n chainId: ChainId.from('4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11'),\n coreTokenSymbol: Asset.Symbol.from('4,TLOS'),\n coreTokenContract: Name.from('eosio.token'),\n coreTokenTransfer: Name.from('transfer'),\n name: 'Telos',\n nodeUrl: 'https://telos.greymass.com',\n resourceSampleAccount: 'greymassfuel',\n resourceSampleMilliseconds: 1000,\n testnet: false,\n bloksUrl: 'https://telos.bloks.io',\n balanceProviders: new Set([BalanceProviders.Bloks]),\n },\n {\n id: 'telos-testnet',\n chainFeatures: new Set([\n ChainFeatures.BidName,\n ChainFeatures.BuyRAM,\n ChainFeatures.Fuel,\n ChainFeatures.REX,\n ChainFeatures.Staking,\n ChainFeatures.VoteProducer,\n ]),\n chainId: ChainId.from('1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f'),\n coreTokenSymbol: Asset.Symbol.from('4,TLOS'),\n coreTokenContract: Name.from('eosio.token'),\n coreTokenTransfer: Name.from('transfer'),\n name: 'Telos (Testnet)',\n nodeUrl: 'https://testnet.telos.net',\n resourceSampleAccount: 'greymassfuel',\n resourceSampleMilliseconds: 1000,\n testnet: true,\n bloksUrl: 'https://telos-test.bloks.io',\n balanceProviders: new Set([BalanceProviders.Bloks]),\n },\n {\n id: 'wax',\n chainFeatures: new Set([\n ChainFeatures.BidName,\n ChainFeatures.BuyRAM,\n ChainFeatures.Fuel,\n ChainFeatures.Staking,\n ChainFeatures.VoteProducer,\n ChainFeatures.DelphiOracle,\n ]),\n chainId: ChainId.from('1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4'),\n coreTokenSymbol: Asset.Symbol.from('8,WAX'),\n coreTokenContract: Name.from('eosio.token'),\n coreTokenTransfer: Name.from('transfer'),\n name: 'WAX',\n nodeUrl: 'https://wax.greymass.com',\n resourceSampleAccount: 'teamgreymass',\n testnet: false,\n bloksUrl: 'https://wax.bloks.io',\n },\n]\n\nexport function chainConfig(chainId: ChainId): ChainConfig {\n return chains.find((c) => c.chainId.equals(chainId))!\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * svelte-result-store v1.1.0\n * https://github.com/greymass/svelte-result-store\n *\n * @license\n * Copyright (c) 2021 FFF00 Agents AB & Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { writable as writable$1, derived as derived$1, readable as readable$1 } from 'svelte/store';\n\nclass ReadableResult {\n subscribe;\n constructor(resultStore) {\n this.subscribe = resultStore.subscribe;\n }\n /**\n * A store containing the value or undefined if there is an error.\n * Can also be undefined for async stores while the value is being resolved.\n */\n get value() {\n return {\n subscribe: (set) => this.subscribe((result) => {\n if (result.error === undefined) {\n set(result.value);\n }\n }),\n };\n }\n /**\n * A store always containing a value when the result is resolved.\n * @param value The value used in place of errors.\n */\n catch(handler) {\n return {\n subscribe: (set) => this.subscribe((result) => {\n if (result.error !== undefined) {\n const value = handler(result.error);\n if (value) {\n set(value);\n }\n }\n else if (result.value !== undefined) {\n set(result.value);\n }\n }),\n };\n }\n /** Transform the results to a new ReadableResult store. */\n map(transform) {\n const store = {\n subscribe: (set) => this.subscribe((result) => {\n if (result.error !== undefined || result.value !== undefined) {\n let newResult = {};\n try {\n newResult = transform(result);\n }\n catch (error) {\n newResult.error = error;\n }\n set(newResult);\n }\n }),\n };\n return new ReadableResult(store);\n }\n /** Transform the result value to a new ReadableResult store. */\n mapValue(transform) {\n const store = {\n subscribe: (set) => this.subscribe((result) => {\n if (result.value !== undefined) {\n let value;\n try {\n value = transform(result.value);\n }\n catch (error) {\n set({ error });\n return;\n }\n set({ value });\n }\n }),\n };\n return new ReadableResult(store);\n }\n /** Transform the results to a new ReadableResult store by flattening the returned readable. */\n flatMap(transform) {\n const store = {\n subscribe: (set) => this.subscribe((result) => {\n if (result.error !== undefined || result.value !== undefined) {\n let value;\n try {\n value = transform(result);\n }\n catch (error) {\n set({ error });\n return;\n }\n set({ value });\n }\n }),\n };\n return flatten(store);\n }\n /** Transform the result value to a new ReadableResult store by flattening the returned readable. */\n flatMapValue(transform) {\n const store = {\n subscribe: (set) => this.subscribe((result) => {\n if (result.value !== undefined) {\n let value;\n try {\n value = transform(result.value);\n }\n catch (error) {\n set({ error });\n return;\n }\n set({ value });\n }\n }),\n };\n return flatten(store);\n }\n /**\n * A store containing the error or undefined.\n */\n get error() {\n return {\n subscribe: (set) => this.subscribe((result) => {\n if (result.error !== undefined) {\n set(result.error);\n }\n }),\n };\n }\n /**\n * A store containing true if the readable has a result (a value or error), false otherwise.\n */\n get resolved() {\n return {\n subscribe: (set) => this.subscribe((result) => {\n set(result.error !== undefined || result.value !== undefined);\n }),\n };\n }\n /**\n * A promise that resolves or rejects on the first value or error.\n */\n get promise() {\n return new Promise((resolve, reject) => {\n const done = this.subscribe((result) => {\n if (result.error !== undefined) {\n reject(result.error);\n }\n else if (result.value !== undefined) {\n resolve(result.value);\n }\n if (result.error !== undefined || result.value !== undefined) {\n setTimeout(() => {\n done();\n }, 0);\n }\n });\n });\n }\n}\nclass WritableResult extends ReadableResult {\n set;\n update;\n constructor(resultStore) {\n super(resultStore);\n this.set = resultStore.set;\n this.update = resultStore.update;\n }\n updateValue(updater) {\n this.update((result) => ({ value: updater(result.value) }));\n }\n}\nfunction readable(...args) {\n return new ReadableResult(internalWritable(...args));\n}\nfunction writable(...args) {\n return new WritableResult(internalWritable(...args));\n}\nfunction derived(stores, fn) {\n const single = !Array.isArray(stores);\n const auto = fn.length < 2;\n const store = derived$1(stores, (storeValues, set) => {\n const results = single\n ? [storeValues]\n : storeValues;\n const error = results.find((r) => r.error !== undefined);\n if (error) {\n set(error);\n }\n else {\n const values = results.map((r) => r.value);\n if (values.every((v) => v !== undefined)) {\n try {\n const rv = fn(single ? values[0] : values, (value) => {\n set({ value });\n }, (error) => {\n set({ error });\n });\n if (rv instanceof Promise) {\n rv.then((value) => {\n set({ value });\n }).catch((error) => {\n set({ error });\n });\n }\n else if (auto) {\n set({ value: rv });\n }\n else {\n return rv;\n }\n }\n catch (error) {\n set({ error });\n }\n }\n else {\n set({});\n }\n }\n });\n return new ReadableResult(store);\n}\n/**\n * Takes nested readable and flattens it down to just one.\n * @param maxDepth Maximum recursion depth, default 10.\n */\nfunction flatten(store, maxDepth) {\n const max = maxDepth || 10;\n const result = {};\n const flat = readable$1(result, (set) => {\n const next = (d) => (r) => {\n if (r.error) {\n set({ error: r.error });\n }\n else {\n if (r.value && typeof r.value.subscribe === 'function' && d < max) {\n return subscribeCleanup(r.value, next(d + 1));\n }\n else {\n set(r);\n }\n }\n };\n return subscribeCleanup(store, next(0));\n });\n return new ReadableResult(flat);\n}\nfunction subscribeCleanup(store, run) {\n let cleanup = noop;\n const unsub = store.subscribe((v) => {\n cleanup();\n cleanup = run(v) || noop;\n });\n return () => {\n cleanup();\n unsub();\n };\n}\nfunction internalWritable(...args) {\n let start;\n let result = {};\n if (args.length === 2) {\n result = args[0];\n start = args[1];\n }\n else {\n start = typeof args[0] === 'function' ? args[0] : noop;\n result =\n typeof args[0] === 'object' &&\n (args[0].value !== undefined || args[0].error !== undefined)\n ? args[0]\n : {};\n }\n return writable$1(result, (setResult) => {\n try {\n const rv = start((value) => {\n setResult({ value });\n }, (error) => {\n setResult({ error });\n });\n if (rv instanceof Promise) {\n rv.then((value) => {\n if (value !== undefined) {\n setResult({ value });\n }\n }).catch((error) => {\n setResult({ error });\n });\n }\n else {\n return rv;\n }\n }\n catch (error) {\n setResult({ error });\n }\n });\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() { }\n\nexport { ReadableResult, WritableResult, derived, flatten, readable, writable };\n//# sourceMappingURL=svelte-result-store.m.js.map\n","import type {DBSchema, StoreKey, StoreNames, StoreValue} from 'idb'\nimport {openDB} from 'idb'\nimport {readable, ReadableResult} from 'svelte-result-store'\n\nconst dbVersion = 3\n\ninterface WalletDB extends DBSchema {\n 'account-cache': {\n key: string // -\n value: {\n updated: Date // last fetched\n account: any // JSON encoded API.v1.AccountObject\n }\n indexes: {\n 'by-updated': Date\n }\n }\n preferences: {\n key: string\n value: any\n }\n 'price-ticker': {\n key: string\n value: {\n updated: Date\n data: any\n }\n indexes: {\n 'by-updated': Date\n }\n }\n}\n\nexport const dbPromise = openDB('wallet', dbVersion, {\n upgrade(db, version) {\n if (version < 1) {\n const accountCache = db.createObjectStore('account-cache')\n accountCache.createIndex('by-updated', 'updated', {unique: false})\n }\n if (version < 2) {\n db.createObjectStore('preferences')\n }\n if (version < 3) {\n const priceTicker = db.createObjectStore('price-ticker')\n priceTicker.createIndex('by-updated', 'updated', {unique: false})\n }\n },\n})\n\n/**\n * Cached data source, will return initial stale values up to maxAge and refresh every refreshInterval.\n * @note Load function must return a IDB compatible object (i.e. no core objects, pass them through Serializer.objectify)\n */\nexport function cachedRead<\n Names extends StoreNames,\n Value extends StoreValue\n>(args: {\n store: Names\n key: StoreKey\n load: () => Promise\n refreshInterval: number\n maxAge: number\n}): ReadableResult {\n return readable((set, error) => {\n const load = async () => {\n const db = await dbPromise\n const data = await args.load()\n db.put(args.store, {updated: new Date(), data} as Value, args.key).catch((error) => {\n console.warn(`Error caching ${args.store}:${args.key}`, error)\n })\n return data\n }\n const init = async () => {\n const db = await dbPromise\n const existing = await db.get(args.store, args.key)\n let value: Value['data'] | undefined\n if (existing && existing.updated && existing.data !== undefined) {\n const age = Date.now() - existing.updated.getTime()\n if (age < args.maxAge) {\n value = existing.data\n if (age > args.refreshInterval) {\n load().then(set).catch(error)\n }\n }\n }\n if (value === undefined) {\n value = await load()\n }\n set(value)\n }\n init().catch(error)\n const timer = setInterval(() => {\n load().then(set).catch(error)\n }, args.refreshInterval)\n return () => {\n clearInterval(timer)\n }\n })\n}\n","import {dbPromise} from './db'\nimport {ReadableObject} from './lib/readable-object'\n\n/** User preferences, persisted in user db. */\nexport class Preferences extends ReadableObject {\n static settings: Record\n\n /** Whether the side navigation bar is expanded. */\n @Setting({default: false}) expandNavbar!: boolean\n\n /** Whether the side navigation bar advanced section is expanded. */\n @Setting({default: false}) expandNavbarAdvanced!: boolean\n\n /** Dark mode override. */\n @Setting({default: null})\n darkmode!: boolean | null\n\n /** Preferences singleton. */\n static shared = new Preferences()\n\n // Settings DB Storage\n\n private storage: Record = {}\n\n write(key: string, value: any) {\n this.storage[key] = value\n this.didChange()\n this.save(key, value).catch((error) => {\n console.warn('Unable to save setting', error)\n })\n }\n\n read(key: string) {\n const setting = (this.constructor as typeof Preferences).settings[key]\n if (!setting) {\n throw new TypeError(`Unknown setting: ${key}`)\n }\n return this.storage[key] === undefined ? setting.default : this.storage[key]\n }\n\n async initStorage() {\n const db = await dbPromise\n let cursor = await db.transaction('preferences').store.openCursor()\n let found = false\n while (cursor) {\n found = true\n this.storage[cursor.key] = cursor.value\n cursor = await cursor.continue()\n }\n if (found) {\n this.didChange()\n }\n }\n\n private async save(key: string, value: any) {\n const db = await dbPromise\n await db.put('preferences', value, key)\n }\n}\n\nfunction Setting(args: {default: T}) {\n return (target: Preferences, name: string) => {\n const ctor = target.constructor as typeof Preferences\n if (!ctor.settings) ctor.settings = {}\n ctor.settings[name] = args\n function get(this: Preferences) {\n return this.read(name)\n }\n function set(this: Preferences, newValue: T) {\n this.write(name, newValue)\n }\n Object.defineProperty(target, name, {get, set})\n }\n}\n","import type {Readable} from 'svelte/store'\n\ntype Subscriber = (value: T) => void\n\n/**\n * Svelte store compatible object that can notify its subscribers it has changed.\n * Subclasses need to specify their own type due to limitations of the TypeScript type-system, for example:\n * ```\n * class MyReadable extends ReadableObject { .. }\n * ```\n */\nexport abstract class ReadableObject implements Readable {\n private subscribers: Subscriber[] = []\n\n /** Subscribe to changes of object. */\n subscribe(subscriber: Subscriber) {\n if (this.subscribers.length === 0 && this.subscriptionBecameActive) {\n this.subscriptionBecameActive()\n }\n this.subscribers.push(subscriber)\n subscriber(this as any)\n return () => {\n let idx = this.subscribers.indexOf(subscriber)\n if (idx !== -1) {\n this.subscribers.splice(idx, 1)\n }\n if (this.subscribers.length === 0 && this.subscriptionBecameInactive) {\n this.subscriptionBecameInactive()\n }\n }\n }\n\n /** Notify subscribers that object changed. */\n didChange() {\n for (const subscriber of this.subscribers) {\n subscriber(this as any)\n }\n }\n\n /** Called on first subscriber. */\n subscriptionBecameActive?(): void\n\n /** Called after when last subscriber unsubscribes. */\n subscriptionBecameInactive?(): void\n}\n","import {\n Asset,\n Float64,\n Int64,\n Name,\n Struct,\n TimePoint,\n TimePointSec,\n TypeAlias,\n UInt8,\n UInt16,\n UInt32,\n UInt64,\n} from 'anchor-link'\n\n@Struct.type('buyrambytes')\nexport class BuyRamBytes extends Struct {\n @Struct.field(Name) payer!: Name\n @Struct.field(Name) receiver!: Name\n @Struct.field(UInt32) bytes!: UInt32\n}\n\n@Struct.type('delegated_bandwidth')\nexport class DelegatedBandwidth extends Struct {\n @Struct.field(Name) from!: Name\n @Struct.field(Name) to!: Name\n @Struct.field(Asset) net_weight!: Asset\n @Struct.field(Asset) cpu_weight!: Asset\n}\n\n@Struct.type('delphioracledatapoint')\nexport class DelphiOracleDatapoint extends Struct {\n @Struct.field(UInt64) id!: UInt64\n @Struct.field(Name) owner!: Name\n @Struct.field(UInt64) value!: UInt64\n @Struct.field(UInt64) median!: UInt64\n @Struct.field(TimePoint) timestamp!: TimePoint\n}\n\n@TypeAlias('asset_type')\nexport class DelphiOracleAssetType extends UInt16 {\n // fiat=1,\n // cryptocurrency=2,\n // erc20_token=3,\n // eosio_token=4,\n // equity=5,\n // derivative=6,\n // other=7\n}\n\n@Struct.type('delphioraclepair')\nexport class DelphiOraclePair extends Struct {\n @Struct.field('bool') active!: boolean\n @Struct.field('bool') bounty_awarded!: boolean\n @Struct.field('bool') bounty_edited_by_custodians!: boolean\n @Struct.field(Name) proposer!: Name\n @Struct.field(Name) name!: Name\n @Struct.field(Asset) bounty_amount!: Asset\n @Struct.field(Name, {array: true}) approving_custodians!: Name[]\n @Struct.field(Name, {array: true}) approving_oracles!: Name[]\n @Struct.field(Asset.Symbol) base_symbol!: Asset.Symbol\n @Struct.field(DelphiOracleAssetType) base_type!: DelphiOracleAssetType\n @Struct.field(Name) base_contract!: Name\n @Struct.field(Asset.Symbol) quote_symbol!: Asset.Symbol\n @Struct.field(DelphiOracleAssetType) quote_type!: DelphiOracleAssetType\n @Struct.field(Name) quote_contract!: Name\n @Struct.field(UInt64) quoted_precision!: UInt64\n}\n\n@Struct.type('fiotransfer')\nexport class FIOTransfer extends Struct {\n @Struct.field('string') payee_public_key!: string\n @Struct.field('int64') amount!: Int64\n @Struct.field('int64') max_fee!: Int64\n @Struct.field('name') actor!: Name\n @Struct.field('string') tpid!: string\n}\n\n@Struct.type('powerup')\nexport class PowerUp extends Struct {\n @Struct.field('name') payer!: Name\n @Struct.field('name') receiver!: Name\n @Struct.field('uint32') days!: UInt32\n @Struct.field('int64') net_frac!: Int64\n @Struct.field('int64') cpu_frac!: Int64\n @Struct.field('asset') max_payment!: Asset\n}\n\n@Struct.type('powerupstateresource')\nexport class PowerUpStateResource extends Struct {\n @Struct.field('uint8') version!: UInt8\n @Struct.field('int64') weight!: Int64\n @Struct.field('int64') weight_ratio!: Int64\n @Struct.field('int64') assumed_stake_weight!: Int64\n @Struct.field('int64') initial_weight_ratio!: Int64\n @Struct.field('int64') target_weight_ratio!: Int64\n @Struct.field('time_point_sec') initial_timestamp!: TimePointSec\n @Struct.field('time_point_sec') target_timestamp!: TimePointSec\n @Struct.field('float64') exponent!: Float64\n @Struct.field('uint32') decay_secs!: UInt32\n @Struct.field('asset') min_price!: Asset\n @Struct.field('asset') max_price!: Asset\n @Struct.field('int64') utilization!: Int64\n @Struct.field('int64') adjusted_utilization!: Int64\n @Struct.field('time_point_sec') utilization_timestamp!: TimePointSec\n}\n\n@Struct.type('powerupstate')\nexport class PowerUpState extends Struct {\n @Struct.field('uint8') version!: UInt8\n @Struct.field(PowerUpStateResource) net!: PowerUpStateResource\n @Struct.field(PowerUpStateResource) cpu!: PowerUpStateResource\n @Struct.field('uint32') powerup_days!: UInt32\n @Struct.field('asset') min_powerup_fee!: Asset\n}\n\n@Struct.type('rexdeposit')\nexport class REXDeposit extends Struct {\n @Struct.field('name') owner!: Name\n @Struct.field('asset') amount!: Asset\n}\n\n@Struct.type('rexrentcpu')\nexport class REXRentCPU extends Struct {\n @Struct.field('name') from!: Name\n @Struct.field('name') receiver!: Name\n @Struct.field('asset') loan_payment!: Asset\n @Struct.field('asset') loan_fund!: Asset\n}\n\n@Struct.type('rexrentnet')\nexport class REXRentNET extends Struct {\n @Struct.field('name') from!: Name\n @Struct.field('name') receiver!: Name\n @Struct.field('asset') loan_payment!: Asset\n @Struct.field('asset') loan_fund!: Asset\n}\n\n@Struct.type('rexstate')\nexport class REXState extends Struct {\n @Struct.field('uint8') version!: UInt8\n @Struct.field('asset') total_lent!: Asset\n @Struct.field('asset') total_unlent!: Asset\n @Struct.field('asset') total_rent!: Asset\n @Struct.field('asset') total_lendable!: Asset\n @Struct.field('asset') total_rex!: Asset\n @Struct.field('asset') namebid_proceeds!: Asset\n @Struct.field('uint64') loan_num!: UInt64\n}\n\n@Struct.type('sellram')\nexport class Sellram extends Struct {\n @Struct.field(Name) account!: Name\n @Struct.field(Int64) bytes!: Int64\n}\n\n@Struct.type('stake')\nexport class Stake extends Struct {\n @Struct.field('name') from!: Name\n @Struct.field('name') receiver!: Name\n @Struct.field('asset') stake_net_quantity!: Asset\n @Struct.field('asset') stake_cpu_quantity!: Asset\n @Struct.field('bool') transfer!: boolean\n}\n\n@Struct.type('transfer')\nexport class Transfer extends Struct {\n @Struct.field('name') from!: Name\n @Struct.field('name') to!: Name\n @Struct.field('asset') quantity!: Asset\n @Struct.field('string') memo!: string\n}\n","import {APIClient, ChainId} from 'anchor-link'\nimport {ChainConfig, chains} from './config'\n\nconst clients = new Map()\n\n/**\n * Get a APIClient instance for given chain config or chain id.\n */\nexport function getClient(chainOrId: ChainConfig | ChainId): APIClient {\n let chain: ChainConfig\n if (chainOrId instanceof ChainId) {\n const id = String(chainOrId)\n chain = chains.find((cfg) => cfg.chainId.equals(id))!\n if (!chain) {\n throw new Error(`Unconfigured chain: ${id}`)\n }\n } else {\n chain = chainOrId\n }\n let client = clients.get(String(chain.chainId))\n if (!client) {\n client = new APIClient({url: chain.nodeUrl})\n clients.set(String(chain.chainId), client)\n }\n return client\n}\n","import {Serializer} from '@greymass/eosio'\nimport {readable, derived, flatten, ReadableResult} from 'svelte-result-store'\n\nimport {DelphiOracleDatapoint, DelphiOraclePair} from '~/abi-types'\nimport {getClient} from '~/api-client'\nimport {ChainConfig, ChainFeatures} from '~/config'\nimport {cachedRead} from '~/db'\n\n/** How often to update prices. */\nconst UPDATE_INTERVAL = 1 * 60 * 1000 // 1 minute\n/** How old price data can be displayed while it's updating in the background. */\nconst MAX_AGE = 2 * 60 * 60 * 1000 // 2 hours\n\n/** Loads available pairs from the oracle. */\nfunction getOraclePairs(chain: ChainConfig): ReadableResult {\n const client = getClient(chain)\n const pairs: ReadableResult = cachedRead({\n store: 'price-ticker',\n key: `${chain.id}-pairs`,\n load: async () => {\n let result = await client.v1.chain.get_table_rows({\n type: DelphiOraclePair,\n code: 'delphioracle',\n scope: 'delphioracle',\n table: 'pairs',\n limit: 500,\n })\n return Serializer.objectify(result.rows)\n },\n maxAge: 6.048e8, // 1 week\n refreshInterval: 8.64e7, // 1 day\n })\n return derived(pairs, ($pairs) => {\n return $pairs.map((p) => DelphiOraclePair.from(p)).filter((p) => p.active)\n })\n}\n\n/** Loads latest datapoint for given pair. */\nfunction getOracleDatapoint(\n chain: ChainConfig,\n pair: DelphiOraclePair\n): ReadableResult {\n const client = getClient(chain)\n const data = cachedRead({\n store: 'price-ticker',\n key: `${chain.id}-${pair.name}`,\n load: async () => {\n let result = await client.v1.chain.get_table_rows({\n type: DelphiOracleDatapoint,\n code: 'delphioracle',\n scope: `${pair.name}`,\n table: 'datapoints',\n limit: 1,\n })\n let latest = result.rows[0]\n if (!latest) {\n throw new Error(`No datapoints for ${pair.name} on ${chain.id}`)\n }\n return Serializer.objectify(latest)\n },\n maxAge: MAX_AGE,\n refreshInterval: UPDATE_INTERVAL,\n })\n return derived(data, ($data) => DelphiOracleDatapoint.from($data))\n}\n\nfunction bloksFallback(chain: ChainConfig, pairName?: string): ReadableResult {\n const chainName = chain.id\n return cachedRead({\n store: 'price-ticker',\n key: `${chainName}-fallback`,\n load: async () => {\n if (pairName) {\n throw new Error('Fallback only supports core symbol')\n }\n let url = 'https://www.api.bloks.io/ticker/banana'\n if (chainName !== 'eos') {\n url = `https://www.api.bloks.io/${chainName}/ticker/banana`\n }\n const response = await fetch(url)\n const data = await response.json()\n if (typeof data === 'number') {\n return data\n } else {\n throw new Error('Unexpected response from bloks')\n }\n },\n maxAge: MAX_AGE,\n refreshInterval: UPDATE_INTERVAL,\n })\n}\n\nconst tickerStores: Record> = {}\n\n/**\n * Latest price in USD for given chain and pair, if pair is omitted the chains core symbol is used.\n * @note Testnets will return zero for all pairs.\n */\nexport function priceTicker(chain: ChainConfig, pairName?: string): ReadableResult {\n const tickerName = `${chain.id}-${pairName || 'coresymbol'}`\n if (tickerStores[tickerName]) {\n return tickerStores[tickerName]\n }\n const pairs: ReadableResult = chain.chainFeatures.has(\n ChainFeatures.DelphiOracle\n )\n ? getOraclePairs(chain)\n : readable({value: []})\n const pair = derived(pairs, ($pairs) => {\n let pair: DelphiOraclePair | undefined\n if (!pairName) {\n // use core symbol for pair\n pair = $pairs.find(\n (p) => p.base_symbol.equals(chain.coreTokenSymbol) && p.quote_symbol.name === 'USD'\n )\n } else {\n pair = $pairs.find((p) => p.name.equals(pairName))\n }\n return pair || null\n })\n const datapoint = flatten(\n derived(pair, ($pair) => {\n if ($pair) {\n return getOracleDatapoint(chain, $pair)\n } else {\n return null\n }\n })\n )\n const ticker = flatten(\n derived([datapoint, pair], ([$datapoint, $pair]) => {\n if (chain.testnet) {\n // all prices are zero on testnets\n return 0\n } else if ($datapoint && $pair) {\n return (\n $datapoint.median.toNumber() / Math.pow(10, $pair.quoted_precision.toNumber())\n )\n } else {\n return bloksFallback(chain, pairName)\n }\n })\n )\n tickerStores[tickerName] = ticker\n return ticker\n}\n","import {API, Asset, Name, Serializer} from 'anchor-link'\nimport type {ChainId, NameType} from 'anchor-link'\nimport {get, writable} from 'svelte/store'\nimport type {Readable, Writable} from 'svelte/store'\n\nimport {getClient} from '~/api-client'\nimport {dbPromise} from '~/db'\nimport {activeSession} from '~/store'\nimport {chainConfig} from '~/config'\n\n/** How old a cached account is before we update it */\nconst maxAge = 60 * 1000 // ms\n\nexport const isLoading: Writable = writable(false)\n\nconst initialAccountResponse: AccountResponse = {\n stale: true,\n}\n\nexport const accountProvider: Writable = writable(initialAccountResponse, () => {\n // Update on a set interval\n const interval = setInterval(() => {\n const session = get(activeSession)\n if (session) {\n updateAccount(session.auth.actor, session.chainId)\n }\n }, 30000)\n\n // Subscribe to changes to the active session and update on change\n const unsubscribe = activeSession.subscribe((session) => {\n if (session) {\n updateAccount(session.auth.actor, session.chainId)\n }\n })\n\n return () => {\n unsubscribe()\n clearInterval(interval)\n }\n})\n\nexport async function updateAccount(name: Name, chainId: ChainId, refresh: boolean = false) {\n isLoading.set(true)\n loadAccount(\n name,\n chainId,\n async (v) => {\n if (!v.account?.core_liquid_balance) {\n const assets: Asset[] | void = await fetchBalance(name, chainId).catch((err) => {\n console.warn('Error fetching account balance:', err)\n })\n if (assets) {\n v.account!.core_liquid_balance = assets[0]!\n }\n }\n accountProvider.set(v)\n },\n refresh\n )\n isLoading.set(false)\n}\n\nfunction fetchBalance(name: Name, chainId: ChainId) {\n const chain = chainConfig(chainId)\n return getClient(chainId).v1.chain.get_currency_balance(chain.coreTokenContract, name)\n}\n\nexport interface AccountResponse {\n /** The account object for the requested account. */\n account?: API.v1.AccountObject\n /** Whether the account is being updated in the background. */\n stale: boolean\n /** Set if an error occurred while fetching the account. */\n error?: Error\n}\n\nfunction accountKey(name: Name, chainId: ChainId) {\n return `${chainId}-${name}`\n}\n\nexport async function storeAccount(account: API.v1.AccountObject, chainId: ChainId) {\n const db = await dbPromise\n await db.put(\n 'account-cache',\n {\n account: Serializer.objectify(account),\n updated: new Date(),\n },\n accountKey(account.account_name, chainId)\n )\n}\n\nexport async function loadAccount(\n name: Name,\n chainId: ChainId,\n set: (v: AccountResponse) => void,\n refresh = false\n) {\n const key = accountKey(name, chainId)\n let db = await dbPromise\n let row = await db.get('account-cache', key)\n let stale = true\n if (row) {\n const age = Date.now() - row.updated.getTime()\n stale = age > maxAge\n set({account: API.v1.AccountObject.from(row.account), stale})\n }\n if (stale || refresh) {\n const account = await getClient(chainId).v1.chain.get_account(name)\n await storeAccount(account, chainId)\n set({account: account, stale: false})\n }\n}\n\n/** Get an account, can be used to fetch other accounts than the logged in users. */\nexport function getAccount(\n name: NameType,\n chainId: ChainId,\n refresh = false\n): Readable {\n const store = writable({stale: true})\n loadAccount(Name.from(name), chainId, store.set, refresh).catch((error) => {\n console.warn(`Unable to load account ${name} on ${chainId}`, error)\n store.update((account) => ({...account, error}))\n })\n return store\n}\n","import type {Asset, LinkSession} from 'anchor-link'\nimport {derived, writable} from 'svelte/store'\nimport type {Readable} from 'svelte/store'\nimport type {SessionLike} from './auth'\nimport {ChainConfig, chainConfig, chains} from './config'\nimport {Preferences} from './preferences'\nimport {priceTicker} from './price-ticker'\nimport {accountProvider} from './stores/account-provider'\n\n/** Set to true when app initialization completes. */\nexport const appReady = writable(false)\n\n/** Active anchor link session, aka logged in user. */\nexport const activeSession = writable(undefined)\n\n/** Configuration of the currently selected blockchain */\nexport const activeBlockchain: Readable = derived(activeSession, (session) => {\n if (session) {\n return chainConfig(session.chainId)\n } else {\n return chains[0]\n }\n})\n\n/** Active price ticker for the currently selected blockchain */\nexport const activePriceTicker: Readable = derived(\n [activeBlockchain],\n ([$activeBlockchain], set) =>\n priceTicker($activeBlockchain).value.subscribe((v) => {\n if (v !== undefined) {\n set(v)\n }\n })\n)\n\n/** List of all available anchor link sessions. */\nexport const availableSessions = writable([])\n\n/** List of preferences. */\nexport const preferences = Preferences.shared\n\n/** Current logged in users account data. */\nexport const currentAccount = derived(\n accountProvider,\n ($accountProvider) => $accountProvider.account\n)\n\n/** Current system token balance of current logged in user. */\nexport const currentAccountBalance: Readable = derived(\n currentAccount,\n ($currentAccount) => {\n if ($currentAccount) {\n return $currentAccount.core_liquid_balance\n }\n }\n)\n\nconst systemDarkMode = writable(\n window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n)\nif (window.matchMedia) {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {\n systemDarkMode.set(event.matches)\n })\n}\n\n/** If dark mode is enabled. */\nexport const darkMode = derived(\n [systemDarkMode, preferences],\n ([$systemDarkMode, $preferences]) => {\n if ($preferences.darkmode !== null) {\n return $preferences.darkmode\n } else {\n return $systemDarkMode\n }\n }\n)\n","/**\n * Anchor Link Browser Transport v3.2.5\n * https://github.com/greymass/anchor-link-browser-transport\n *\n * @license\n * Copyright (c) 2020 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { Signature, SigningRequest, PlaceholderName, Link, SessionError, Base64u, isInstanceOf, APIError } from 'anchor-link';\n\nvar styleText = `\n/* Anchor Link */\n\n.%prefix% * {\n box-sizing: border-box;\n line-height: 1;\n font-variant-numeric: tabular-nums;\n}\n\n.%prefix% {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n Arial, sans-serif;\n font-size: 13px;\n background: rgba(0, 0, 0, 0.65);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n z-index: 2147483647;\n display: none;\n align-items: center;\n justify-content: center;\n}\n\n.%prefix%-active {\n display: flex;\n}\n\n.%prefix%-inner {\n background: #EFF1F7;\n margin: 20px;\n padding-top: 50px;\n border-radius: 20px;\n box-shadow: 0px 4px 100px rgba(0, 0, 0, .5);\n width: 340px;\n position: relative;\n}\n\n.%prefix%-close {\n display: block;\n position: absolute;\n top: 11px;\n right: 16px;\n width: 28px;\n height: 28px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.57 12.1a.96.96 0 000 1.34c.37.36 1 .36 1.34 0L7 8.37l5.09 5.09c.36.35.97.35 1.34-.01a.96.96 0 000-1.34L8.34 7.01l5.08-5.08a.95.95 0 000-1.33.97.97 0 00-1.34-.01L6.99 5.68 1.91.59a.96.96 0 00-1.33 0 .97.97 0 00-.01 1.34l5.09 5.08-5.1 5.1z' fill='%23007AFF'/%3E%3C/svg%3E\");\n background-size: 14px;\n background-repeat: no-repeat;\n background-position: 50% 7px;\n border-radius: 100%;\n cursor: pointer;\n}\n\n.%prefix%-close:hover {\n background-color: white;\n}\n\n.%prefix%-version {\n position: absolute;\n top: 19px;\n left: 20px;\n cursor: help;\n color: #B8C0DA;\n opacity: 0.1;\n}\n\n.%prefix%-version:hover {\n opacity: 1;\n}\n\n.%prefix%-logo {\n width: 70px;\n height: 70px;\n margin: 0 auto;\n margin-top: -56px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M18.81 9.19h33.25V59.5H18.81z'/%3E%3Cpath d='M38.45 28.88h-6.9L35 21.77l3.45 7.1z' fill='%233650A2'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M35 70a35 35 0 100-70 35 35 0 000 70zm2.36-55.4a2.62 2.62 0 00-4.72 0L21.9 36.75h5.84l1.7-3.5h11.13l1.7 3.5h5.83L37.36 14.6zM48.13 44.2h-5.26a7.76 7.76 0 01-5.24 7v-10.5a2.62 2.62 0 10-5.25 0v10.5a7.76 7.76 0 01-5.25-7h-5.25c.16 7.06 6 12.69 13.12 12.69 7.12 0 12.97-5.63 13.13-12.7z' fill='%233650A2'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.loading {\n border-radius: 100%;\n background-color: #3650A2;\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0.5 0.5 45 45' xmlns='http://www.w3.org/2000/svg' stroke='%23fff'%3E%3Cg fill='none' fill-rule='evenodd' transform='translate(1 1)' stroke-width='2'%3E%3Ccircle cx='22' cy='22' r='6' stroke-opacity='0'%3E%3Canimate attributeName='r' begin='1.5s' dur='3s' values='6;22' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-opacity' begin='1.5s' dur='3s' values='1;0' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-width' begin='1.5s' dur='3s' values='2;0' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='6' stroke-opacity='0'%3E%3Canimate attributeName='r' begin='3s' dur='3s' values='6;22' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-opacity' begin='3s' dur='3s' values='1;0' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-width' begin='3s' dur='3s' values='2;0' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='8'%3E%3Canimate attributeName='r' begin='0s' dur='1.5s' values='6;1;2;3;4;5;6' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.error {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70' fill='none'%3E%3Ccircle cx='35' cy='35' r='35' fill='%23fc3d39'/%3E%3Cpath fill-rule='evenodd' d='M32.88 17.614c.715-.403 1.522-.614 2.343-.614s1.628.212 2.343.614 1.314.983 1.74 1.685l.005.008 13.483 22.508.013.022c.417.722.638 1.541.64 2.375s-.214 1.654-.627 2.378-1.008 1.328-1.727 1.751-1.535.65-2.369.659h-.017-26.983c-.834-.009-1.651-.237-2.369-.659s-1.314-1.027-1.727-1.751-.629-1.544-.627-2.378.223-1.653.64-2.375l.013-.022L31.14 19.299c.426-.702 1.025-1.282 1.74-1.685zm2.343 2.569a1.59 1.59 0 0 0-1.359.763L20.392 43.438a1.59 1.59 0 0 0-.208.782c-.001.278.071.551.209.793a1.59 1.59 0 0 0 1.358.803h26.945a1.59 1.59 0 0 0 1.358-.803 1.59 1.59 0 0 0 .209-.793c-.001-.274-.073-.544-.208-.782L36.584 20.95c-.144-.236-.343-.428-.58-.561a1.59 1.59 0 0 0-.781-.205zm0 6.531a1.59 1.59 0 0 1 1.592 1.592v6.367a1.59 1.59 0 1 1-3.184 0v-6.367a1.59 1.59 0 0 1 1.592-1.592zm-1.592 14.326a1.59 1.59 0 0 1 1.592-1.592h.016a1.59 1.59 0 1 1 0 3.184h-.016a1.59 1.59 0 0 1-1.592-1.592z' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.warning {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70' fill='none' %3E%3Ccircle cx='35' cy='35' r='35' fill='%23f8b826'/%3E%3Cpath d='M35 20c-8.284 0-15 6.716-15 15s6.716 15 15 15 15-6.716 15-15-6.716-15-15-15zM16.667 35c0-10.125 8.208-18.333 18.333-18.333S53.333 24.875 53.333 35 45.125 53.334 35 53.334 16.667 45.126 16.667 35zM35 26.667c.921 0 1.667.746 1.667 1.667V35A1.67 1.67 0 0 1 35 36.667c-.921 0-1.667-.746-1.667-1.667v-6.667c0-.921.746-1.667 1.667-1.667zm-1.667 15A1.67 1.67 0 0 1 35 40h.017c.921 0 1.667.746 1.667 1.667s-.746 1.667-1.667 1.667H35a1.67 1.67 0 0 1-1.667-1.667z' fill-rule='evenodd' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.success {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 70 70'%3E%3Cdefs/%3E%3Ccircle cx='35' cy='35' r='35' fill='%233DC55D'/%3E%3Cpath fill='%23fff' d='M30.9 49.7a2 2 0 001.8-1L48 24.9c.3-.5.4-1 .4-1.4 0-1-.7-1.7-1.7-1.7-.8 0-1.2.3-1.6 1L30.8 45.4 23.5 36c-.5-.6-1-.9-1.6-.9-1 0-1.8.8-1.8 1.8 0 .4.2.9.6 1.3L29 48.7c.6.7 1.1 1 1.9 1z'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.fuel {\n background-image: url(\"data:image/svg+xml,%3Csvg width='70' height='70' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0)'%3E%3Cpath d='M69.23 30.31l-8.46-11a6.58 6.58 0 00-3.4-2.19L35.91 12.1a7.16 7.16 0 00-1.6-.16 7.73 7.73 0 00-2.18.28l-5.1 1.57a1.76 1.76 0 00-.17-1.4l-1.46-2.5a1.76 1.76 0 00-2.06-.8l-9.98 3.2a1.76 1.76 0 00-1.23 1.74l.13 3.39c.01.27.09.54.22.78l-2.28.7a5.85 5.85 0 00-3.24 2.7L.48 34.23a4.96 4.96 0 00.14 4.53l3.5 5.83a4.49 4.49 0 004.19 2.05l9.29-1.13a4.79 4.79 0 002.54 3.78l3.55 1.68a8.9 8.9 0 003.39.73h.27l8.06-.45c.26.04.5.13.73.28l8.02 8c1 .92 2.3 1.45 3.67 1.47.14 0 .28 0 .42-.03l6.6-.68a2.85 2.85 0 002.5-1.8c.36-1 .1-2.12-.73-3l-2.78-2.96 5.26-1.56a4.35 4.35 0 003-3.64l.41-4.29c.09-.42.26-.82.52-1.16l6-6.66a3.91 3.91 0 00.2-4.9z' fill='%23fff'/%3E%3Cpath d='M49.08 29.96a1.72 1.72 0 00-.92-2.25 1.72 1.72 0 00-1.3 3.17 1.7 1.7 0 002.22-.92zM27.54 26.41a1.02 1.02 0 001-1.23 1.02 1.02 0 00-1.85-.37 1.03 1.03 0 00.46 1.52c.12.05.25.08.39.08zM37.05 21.67a1.03 1.03 0 000-2.06 1.03 1.03 0 000 2.06zM21.54 35c-4.62 0-10.44 2.04-13.52 3.24a.68.68 0 00-.24.16.68.68 0 00-.18.53c.01.1.04.19.1.27l1.28 2.16c.07.1.17.2.28.25.11.06.24.08.37.07l9.15-1.13.45-.03a3.64 3.64 0 013.67 3.55v.3a.67.67 0 00.39.59l2.9 1.38c.42.16.86.26 1.3.28h.05l7.74-.45h.23c1.45.03 2.83.59 3.9 1.58l7.68 7.65c.1.06.22.1.35.12l1.67-.2c.06-.01.12-.03.16-.07a.32.32 0 00.1-.13.33.33 0 00-.03-.33l-.82-1.21a3.22 3.22 0 01-.01-4.58c.4-.4.9-.68 1.45-.82l6.47-1.92a.4.4 0 00.19-.13.41.41 0 00.08-.22l.35-3.53c.01-.06 0-.13-.02-.2a.41.41 0 00-.28-.24.37.37 0 00-.2.01c-2.27.62-6.27 1.6-8.73 1.6C37.4 43.53 29.68 35 21.54 35zm8.97 7.49a.8.8 0 01-.27.28c-.2.13-.45.19-.68.17a1.05 1.05 0 01-.77-1.62.73.73 0 01.28-.28 1.05 1.05 0 011.44 1.45zm17.6 3.72a.76.76 0 01-.27.28 1.05 1.05 0 01-1.17-1.73 1.05 1.05 0 011.32.13 1.04 1.04 0 01.13 1.32z' fill='%23F8B826'/%3E%3Cpath d='M21.54 35c-4.85 0-11.03 2.25-13.96 3.42a.29.29 0 00-.15.16c-.01.03-.02.07-.01.11 0 .04.01.07.03.1L9 41.38c.06.11.16.2.27.26.12.05.25.07.37.06l9.15-1.13c.15-.02.3-.02.46-.03a3.63 3.63 0 013.66 3.54l.02.56c0 .04.02.09.05.13.02.04.06.07.1.1l3.13 1.48c.41.16.85.26 1.3.28h.04l7.74-.45h.23c1.45.03 2.84.59 3.9 1.58l7.68 7.65c.1.06.23.1.35.12l2.22-.27-1.58-1.66c-.82-.88-.7-2.05-.4-3.13a3.28 3.28 0 012.3-2.27l6.71-2 .38-3.8.06-.58c-2.13.59-6.6 1.74-9.3 1.74C37.4 43.54 29.69 35 21.54 35zm8.89 7.62a.38.38 0 01-.07.07c-1.07.77-2.26-.42-1.49-1.5a.25.25 0 01.06-.07c1.08-.77 2.27.42 1.5 1.5zm17.6 3.72a.25.25 0 01-.06.06c-1.07.78-2.26-.42-1.49-1.5a.25.25 0 01.07-.06c1.07-.78 2.26.42 1.49 1.5z' fill='%23E99123'/%3E%3Cpath d='M47.53 34.9c-10.41 0-19.22-4.65-25.54-4.65-4.44 0-11.97 3.38-15.28 5.83a.55.55 0 00-.18.69l.35.78a.55.55 0 00.72.28c2.84-1.18 8.9-3.42 13.94-3.42 8.4 0 16.15 7.48 25.16 7.48 4 0 9.88-1.58 11.41-2.82.67-.7 2.86-3.32 4.4-4.93a.67.67 0 00.1-.8.67.67 0 00-.32-.28.65.65 0 00-.42-.03 64.85 64.85 0 01-14.34 1.86zm-.47 3.95c-.14.3-.38.55-.68.7a1.73 1.73 0 01-2.34-2.36c.14-.3.38-.55.68-.7a1.72 1.72 0 012.04.32 1.75 1.75 0 01.3 2.04z' fill='%23F8B826'/%3E%3Cpath d='M68.34 30.87l-8.46-11a5.52 5.52 0 00-2.77-1.78l-21.46-5.03a7.08 7.08 0 00-3.2.1l-7.55 2.3-.01.01h-.01l-.5-1.3v-.01l1.13-.4a.65.65 0 00.36-.93l-1.47-2.5a.64.64 0 00-.73-.27l-9.98 3.17a.64.64 0 00-.44.63l.13 3.39a.64.64 0 00.63.6c.07 0 .15-.02.22-.04l2.53-.91h.02l.44.87v.02l-6.7 2.05c-1.08.38-2 1.15-2.56 2.15L1.47 34.61a3.8 3.8 0 00.11 3.43l3.5 5.84a3.32 3.32 0 003.1 1.51l10.23-1.26a.2.2 0 01.2.04.2.2 0 01.06.08l.02.1.03.9a3.69 3.69 0 001.9 2.88l3.56 1.69c.98.42 2.05.63 3.12.61l8.06-.44c.58.02 1.13.23 1.57.6l8.03 8a4.38 4.38 0 003.18 1.12l6.6-.69c.77-.07 1.33-.46 1.55-1.07.23-.6.05-1.26-.48-1.82l-4.02-4.26-.01-.01v-.01l7-2.09a3.25 3.25 0 002.2-2.66l.43-4.3a4 4 0 01.8-1.81l6.01-6.67a2.76 2.76 0 00.12-3.45zM15.14 15.2l-.03-.51c0-.08.02-.16.06-.22.04-.07.1-.11.18-.14l7.73-2.5a.35.35 0 01.41.16l.13.23c.03.05.04.1.05.15 0 .05 0 .1-.02.14a.35.35 0 01-.08.13.38.38 0 01-.12.09L15.6 15.5a.34.34 0 01-.31-.04.36.36 0 01-.16-.27zm51.53 17.75l-6 6.66a5.95 5.95 0 00-1.32 3l-.42 4.3a1.22 1.22 0 01-.73.87l-7.32 2.17a1.8 1.8 0 00-1.34 2.28c.1.32.27.6.52.83l3.19 3.37a.4.4 0 01.09.43.42.42 0 01-.14.19.42.42 0 01-.21.08l-5.06.53c-.55 0-1.09-.19-1.51-.54l-8.03-8a4.62 4.62 0 00-3.14-1.2l-8.07.45c-.73.01-1.45-.13-2.12-.41l-3.56-1.7a1.4 1.4 0 01-.72-1.08l-.04-.9a2.35 2.35 0 00-.8-1.68 2.24 2.24 0 00-1.78-.53L7.92 43.32a1.32 1.32 0 01-1.07-.53l-3.49-5.82a1.78 1.78 0 01-.05-1.4L9.8 22.94c.32-.5.78-.89 1.33-1.1l21.94-6.67c.69-.18 1.42-.2 2.12-.07l21.46 5.02c.62.19 1.18.55 1.6 1.03l8.47 11c.08.11.12.25.12.4a.69.69 0 01-.16.39z' fill='%2329363F'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0'%3E%3Cpath fill='%23fff' transform='translate(0 9)' d='M0 0h70v52H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\");\n}\n\n.%prefix%-request {\n padding: 20px;\n border-radius: 20px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n background: white;\n}\n\n.%prefix%-info {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.%prefix%-title {\n color: #000000;\n font-size: 25px;\n margin-top: 14px;\n font-weight: 700;\n line-height: 30px;\n letter-spacing: 0.5px;\n}\n\n.%prefix%-subtitle {\n margin-top: 14px;\n color: #5C5C5C;\n text-align: center;\n line-height: 1.4;\n word-break: break-word;\n}\n\n.%prefix%-subtitle a {\n color: #000000;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.%prefix%-manual {\n color: #007AFF;\n cursor: pointer;\n}\n\n.%prefix%-info hr {\n border: 0;\n height: 1px;\n width: 100%;\n background: #EFF1F7;\n margin: 24px 0 14px;\n}\n\n.%prefix%-uri {\n width: 100%;\n}\n\n.%prefix%-button {\n color: #007AFF;\n background: #EFF1F7;\n border: 1px solid #EFF1F7;\n text-decoration: none;\n font-size: 17px;\n flex-grow: 1;\n flex: 1;\n width: 100%;\n line-height: 1;\n padding: 20px 18px;\n border-radius: 12px;\n font-weight: 400;\n text-align: center;\n display: block;\n margin-top: 21px;\n cursor: pointer;\n}\n\n.%prefix%-button:hover {\n border: 1px solid #007AFF;\n}\n\n.%prefix%-qr {\n position: relative;\n margin-top: 21px;\n border: 4px solid #EFF1F7;\n padding: 11px;\n border-radius: 12px;\n background: #FFFFFF;\n transition: all 400ms ease-in-out;\n transform: scale(1) translateY(0);\n}\n\n.%prefix%-qr svg {\n width: 100%;\n display: block;\n cursor: zoom-in;\n shape-rendering: crispEdges;\n}\n\n.%prefix%-qr.zoom {\n transform: scale(2) translateY(-25px);\n border: 2px solid #1E89FE;\n box-sizing: border-box;\n box-shadow: 0px 4px 154px rgba(0, 0, 0, 0.35);\n border-radius: 10px;\n padding: 5px;\n z-index: 2147483647;\n}\n\n.%prefix%-qr.zoom svg {\n cursor: zoom-out;\n}\n\n.%prefix%-qr svg rect {\n fill: black;\n}\n\n.%prefix%-copy {\n position: absolute;\n bottom: -10px;\n left: 0px;\n width: 100%;\n color: green;\n text-align: center;\n opacity: 1;\n transition: all 200ms ease-in-out;\n transition-delay: 400ms;\n}\n\n.%prefix%-qr.zoom .%prefix%-copy {\n transition-delay: 0ms;\n background: transparent;\n opacity: 0;\n}\n\n.%prefix%-copy span,\n.%prefix%-copy a {\n display: inline-block;\n background: white;\n padding: 0 20px;\n color: #007AFF;\n cursor: pointer;\n text-decoration: none;\n}\n\n.%prefix%-copy span {\n display: none;\n color: #5C5C5C;\n cursor: default;\n}\n\n.%prefix%-copy.copied a {\n display: none;\n}\n\n.%prefix%-copy.copied span {\n display: inline-block;\n}\n\n.%prefix%-copy span:before,\n.%prefix%-copy a:before {\n content: '';\n display: inline-block;\n width: 26px;\n height: 16px;\n position: relative;\n top: 2px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' fill='none'%3E%3Cg clip-path='url(%23A)' stroke='%23157efa' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M13.83 6.5h-6c-.73 0-1.33.6-1.33 1.33v6c0 .74.6 1.34 1.33 1.34h6c.74 0 1.34-.6 1.34-1.34v-6c0-.73-.6-1.33-1.34-1.33z'/%3E%3Cpath d='M3.83 10.5h-.66a1.33 1.33 0 01-1.34-1.33v-6a1.33 1.33 0 011.34-1.34h6a1.33 1.33 0 011.33 1.34v.66' stroke-linecap='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='A'%3E%3Cpath fill='%23fff' transform='translate(.5 .5)' d='M0 0h16v16H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n}\n\n.%prefix%-copy span:before {\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.33 4L6 11.33 2.67 8' stroke='%23157EFA' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n top: 3.5px;\n}\n\n.%prefix%-footnote {\n text-align: center;\n width: 100%;\n position: absolute;\n bottom: -26px;\n left: 0;\n color: white;\n}\n\n.%prefix%-footnote a {\n color: white;\n text-decoration: underline;\n}\n\n.%prefix%-wskeepalive {\n display: none;\n}\n\n@media (prefers-color-scheme: dark) {\n .%prefix%-info hr,\n .%prefix%-inner {\n background: #262D43;\n color: white;\n }\n .%prefix%-request,\n .%prefix%-qr a,\n .%prefix%-qr span,\n .%prefix%-qr {\n background: #131B33;\n }\n .%prefix%-title {\n color: #FCFCFC;\n }\n .%prefix%-qr span,\n .%prefix%-subtitle {\n color: #B8C0DA;\n }\n .%prefix%-subtitle a {\n color: #FCFCFC;\n }\n .%prefix%-qr svg rect {\n fill: white;\n }\n .%prefix%-version {\n color: #546AAF;\n }\n .%prefix%-qr a,\n .%prefix%-manual,\n .%prefix%-button {\n color: #FCFCFC;\n }\n .%prefix%-button {\n background: #262D43;\n border: 1px solid #262D43;\n }\n .%prefix%-qr {\n border-color: #262D43;\n }\n .%prefix%-qr.zoom {\n border-color: #131B33;\n }\n .%prefix%-copy a:before {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' fill='none'%3E%3Cg clip-path='url(%23A)' stroke='%23fff' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M13.83 6.5h-6c-.73 0-1.33.6-1.33 1.33v6c0 .74.6 1.34 1.33 1.34h6c.74 0 1.34-.6 1.34-1.34v-6c0-.73-.6-1.33-1.34-1.33z'/%3E%3Cpath d='M3.83 10.5h-.66a1.33 1.33 0 01-1.34-1.33v-6a1.33 1.33 0 011.34-1.34h6a1.33 1.33 0 011.33 1.34v.66' stroke-linecap='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='A'%3E%3Cpath fill='%23fff' transform='translate(.5 .5)' d='M0 0h16v16H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\");\n }\n .%prefix%-copy span:before {\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.33 4L6 11.33 2.67 8' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n }\n .%prefix%-button:hover {\n color: #FCFCFC;\n border: 1px solid #FCFCFC;\n background: #333A50;\n }\n .%prefix%-close {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.57 12.1a.96.96 0 000 1.34c.37.36 1 .36 1.34 0L7 8.37l5.09 5.09c.36.35.97.35 1.34-.01a.96.96 0 000-1.34L8.34 7.01l5.08-5.08a.95.95 0 000-1.33.97.97 0 00-1.34-.01L6.99 5.68 1.91.59a.96.96 0 00-1.33 0 .97.97 0 00-.01 1.34l5.09 5.08-5.1 5.1z' fill='%23FCFCFC'/%3E%3C/svg%3E\");\n }\n .%prefix%-close:hover {\n background-color: black;\n }\n}\n\n@media (max-height: 600px) { .%prefix%-inner { transform: scale(0.9); } }\n@media (max-height: 540px) { .%prefix%-inner { transform: scale(0.8); } }\n@media (max-height: 480px) { .%prefix%-inner { transform: scale(0.7); } }\n@media (max-height: 420px) { .%prefix%-inner { transform: scale(0.6); } }\n@media (max-height: 360px) { .%prefix%-inner { transform: scale(0.5); } }\n@media (max-height: 300px) { .%prefix%-inner { transform: scale(0.4); } }\n\n@media (max-width: 600px) and (orientation: portrait) {\n .%prefix%-qr.zoom {\n transform: scale(1.5) translateY(-25px);\n }\n}\n\n@media (max-width: 450px) and (orientation: portrait) {\n .%prefix%-qr.zoom {\n transform: scale(1.3) translateY(-25px);\n }\n}\n\n`;\n\nvar ErrorCorrectLevel = {\n L: 1,\n M: 0,\n Q: 3,\n H: 2,\n};\n\nvar Mode = {\n MODE_NUMBER: 1 << 0,\n MODE_ALPHA_NUM: 1 << 1,\n MODE_8BIT_BYTE: 1 << 2,\n MODE_KANJI: 1 << 3,\n};\n\nclass QR8bitByte {\n constructor(data) {\n this.mode = Mode.MODE_8BIT_BYTE;\n this.data = data;\n }\n getLength() {\n return this.data.length;\n }\n write(buffer) {\n for (let i = 0; i < this.data.length; i++) {\n // not JIS ...\n buffer.put(this.data.charCodeAt(i), 8);\n }\n }\n}\n\nclass QRBitBuffer {\n constructor() {\n this.buffer = [];\n this.length = 0;\n }\n get(index) {\n const bufIndex = Math.floor(index / 8);\n return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1;\n }\n put(num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) == 1);\n }\n }\n getLengthInBits() {\n return this.length;\n }\n putBit(bit) {\n const bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[bufIndex] |= 0x80 >>> this.length % 8;\n }\n this.length++;\n }\n}\n\nconst QRMath = {\n glog: function (n) {\n if (n < 1) {\n throw new Error('glog(' + n + ')');\n }\n return QRMath.LOG_TABLE[n];\n },\n gexp: function (n) {\n while (n < 0) {\n n += 255;\n }\n while (n >= 256) {\n n -= 255;\n }\n return QRMath.EXP_TABLE[n];\n },\n EXP_TABLE: new Array(256),\n LOG_TABLE: new Array(256),\n};\nfor (let i = 0; i < 8; i++) {\n QRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (let i = 8; i < 256; i++) {\n QRMath.EXP_TABLE[i] =\n QRMath.EXP_TABLE[i - 4] ^\n QRMath.EXP_TABLE[i - 5] ^\n QRMath.EXP_TABLE[i - 6] ^\n QRMath.EXP_TABLE[i - 8];\n}\nfor (let i = 0; i < 255; i++) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n}\n\nclass QRPolynomial {\n constructor(num, shift) {\n if (num.length == undefined) {\n throw new Error(num.length + '/' + shift);\n }\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset++;\n }\n this.num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset];\n }\n }\n get(index) {\n return this.num[index];\n }\n getLength() {\n return this.num.length;\n }\n multiply(e) {\n const num = new Array(this.getLength() + e.getLength() - 1);\n for (let i = 0; i < this.getLength(); i++) {\n for (let j = 0; j < e.getLength(); j++) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));\n }\n }\n return new QRPolynomial(num, 0);\n }\n mod(e) {\n if (this.getLength() - e.getLength() < 0) {\n return this;\n }\n const ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0));\n const num = new Array(this.getLength());\n for (let i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i);\n }\n for (let i = 0; i < e.getLength(); i++) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);\n }\n // recursive call\n return new QRPolynomial(num, 0).mod(e);\n }\n}\n\n// ErrorCorrectLevel\nclass QRRSBlock {\n constructor(totalCount, dataCount) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n static getRSBlocks(typeNumber, errorCorrectLevel) {\n const rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n if (rsBlock == undefined) {\n throw new Error('bad rs block @ typeNumber:' +\n typeNumber +\n '/errorCorrectLevel:' +\n errorCorrectLevel);\n }\n const length = rsBlock.length / 3;\n const list = [];\n for (let i = 0; i < length; i++) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n for (let j = 0; j < count; j++) {\n list.push(new QRRSBlock(totalCount, dataCount));\n }\n }\n return list;\n }\n static getRsBlockTable(typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorCorrectLevel.M:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorCorrectLevel.Q:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorCorrectLevel.H:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default:\n return undefined;\n }\n }\n}\nQRRSBlock.RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12],\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16],\n];\n\nconst QRMaskPattern = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7,\n};\nconst QRUtil = {\n PATTERN_POSITION_TABLE: [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170],\n ],\n G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),\n getBCHTypeInfo: function (data) {\n let d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15));\n }\n return ((data << 10) | d) ^ QRUtil.G15_MASK;\n },\n getBCHTypeNumber: function (data) {\n let d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18));\n }\n return (data << 12) | d;\n },\n getBCHDigit: function (data) {\n let digit = 0;\n while (data != 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n },\n getPatternPosition: function (typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n getMask: function (maskPattern, i, j) {\n switch (maskPattern) {\n case QRMaskPattern.PATTERN000:\n return (i + j) % 2 == 0;\n case QRMaskPattern.PATTERN001:\n return i % 2 == 0;\n case QRMaskPattern.PATTERN010:\n return j % 3 == 0;\n case QRMaskPattern.PATTERN011:\n return (i + j) % 3 == 0;\n case QRMaskPattern.PATTERN100:\n return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;\n case QRMaskPattern.PATTERN101:\n return ((i * j) % 2) + ((i * j) % 3) == 0;\n case QRMaskPattern.PATTERN110:\n return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;\n case QRMaskPattern.PATTERN111:\n return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;\n default:\n throw new Error('bad maskPattern:' + maskPattern);\n }\n },\n getErrorCorrectPolynomial: function (errorCorrectLength) {\n let a = new QRPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));\n }\n return a;\n },\n getLengthInBits: function (mode, type) {\n if (1 <= type && type < 10) {\n // 1 - 9\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 10;\n case Mode.MODE_ALPHA_NUM:\n return 9;\n case Mode.MODE_8BIT_BYTE:\n return 8;\n case Mode.MODE_KANJI:\n return 8;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else if (type < 27) {\n // 10 - 26\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 12;\n case Mode.MODE_ALPHA_NUM:\n return 11;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 10;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else if (type < 41) {\n // 27 - 40\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 14;\n case Mode.MODE_ALPHA_NUM:\n return 13;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 12;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else {\n throw new Error('type:' + type);\n }\n },\n getLostPoint: function (qrCode) {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n // LEVEL1\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n for (let r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n for (let c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n if (r == 0 && c == 0) {\n continue;\n }\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount++;\n }\n }\n }\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n // LEVEL2\n for (let row = 0; row < moduleCount - 1; row++) {\n for (let col = 0; col < moduleCount - 1; col++) {\n let count = 0;\n if (qrCode.isDark(row, col))\n count++;\n if (qrCode.isDark(row + 1, col))\n count++;\n if (qrCode.isDark(row, col + 1))\n count++;\n if (qrCode.isDark(row + 1, col + 1))\n count++;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n // LEVEL3\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount - 6; col++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)) {\n lostPoint += 40;\n }\n }\n }\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount - 6; row++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)) {\n lostPoint += 40;\n }\n }\n }\n // LEVEL4\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++;\n }\n }\n }\n const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n return lostPoint;\n },\n};\n\nclass QRCode {\n constructor(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n }\n addData(data) {\n const newData = new QR8bitByte(data);\n this.dataList.push(newData);\n this.dataCache = null;\n }\n isDark(row, col) {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(row + ',' + col);\n }\n return this.modules[row][col];\n }\n getModuleCount() {\n return this.moduleCount;\n }\n make() {\n // Calculate automatically typeNumber if provided is < 1\n if (this.typeNumber < 1) {\n let typeNumber = 1;\n for (typeNumber = 1; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n const buffer = new QRBitBuffer();\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n for (let i = 0; i < this.dataList.length; i++) {\n const data = this.dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n if (buffer.getLengthInBits() <= totalDataCount * 8)\n break;\n }\n this.typeNumber = typeNumber;\n }\n this.makeImpl(false, this.getBestMaskPattern());\n }\n makeImpl(test, maskPattern) {\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = new Array(this.moduleCount);\n for (let row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount);\n for (let col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null; //(col + row) % 3;\n }\n }\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n if (this.dataCache == null) {\n this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n }\n this.mapData(this.dataCache, maskPattern);\n }\n setupPositionProbePattern(row, col) {\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r)\n continue;\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c)\n continue;\n if ((0 <= r && r <= 6 && (c == 0 || c == 6)) ||\n (0 <= c && c <= 6 && (r == 0 || r == 6)) ||\n (2 <= r && r <= 4 && 2 <= c && c <= 4)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n getBestMaskPattern() {\n let minLostPoint = 0;\n let pattern = 0;\n for (let i = 0; i < 8; i++) {\n this.makeImpl(true, i);\n const lostPoint = QRUtil.getLostPoint(this);\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n return pattern;\n }\n setupTimingPattern() {\n for (let r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules[r][6] != null) {\n continue;\n }\n this.modules[r][6] = r % 2 == 0;\n }\n for (let c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules[6][c] != null) {\n continue;\n }\n this.modules[6][c] = c % 2 == 0;\n }\n }\n setupPositionAdjustPattern() {\n const pos = QRUtil.getPatternPosition(this.typeNumber);\n for (let i = 0; i < pos.length; i++) {\n for (let j = 0; j < pos.length; j++) {\n const row = pos[i];\n const col = pos[j];\n if (this.modules[row][col] != null) {\n continue;\n }\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n setupTypeNumber(test) {\n const bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n this.modules[Math.floor(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = mod;\n }\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n this.modules[(i % 3) + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n }\n setupTypeInfo(test, maskPattern) {\n const data = (this.errorCorrectLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n // vertical\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 6) {\n this.modules[i][8] = mod;\n }\n else if (i < 8) {\n this.modules[i + 1][8] = mod;\n }\n else {\n this.modules[this.moduleCount - 15 + i][8] = mod;\n }\n }\n // horizontal\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod;\n }\n else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod;\n }\n else {\n this.modules[8][15 - i - 1] = mod;\n }\n }\n // fixed module\n this.modules[this.moduleCount - 8][8] = !test;\n }\n mapData(data, maskPattern) {\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6)\n col--;\n for (;;) {\n for (let c = 0; c < 2; c++) {\n if (this.modules[row][col - c] == null) {\n let dark = false;\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;\n }\n const mask = QRUtil.getMask(maskPattern, row, col - c);\n if (mask) {\n dark = !dark;\n }\n this.modules[row][col - c] = dark;\n bitIndex--;\n if (bitIndex == -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n row += inc;\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n static createData(typeNumber, errorCorrectLevel, dataList) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new QRBitBuffer();\n for (let i = 0; i < dataList.length; i++) {\n const data = dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n // calc num max data.\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error('code length overflow. (' +\n buffer.getLengthInBits() +\n '>' +\n totalDataCount * 8 +\n ')');\n }\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n // padding\n for (;;) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCode.PAD0, 8);\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCode.PAD1, 8);\n }\n return QRCode.createBytes(buffer, rsBlocks);\n }\n static createBytes(buffer, rsBlocks) {\n let offset = 0;\n let maxDcCount = 0;\n let maxEcCount = 0;\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n for (let r = 0; r < rsBlocks.length; r++) {\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcdata[r] = new Array(dcCount);\n for (let i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 0xff & buffer.buffer[i + offset];\n }\n offset += dcCount;\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i++) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n }\n }\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n const data = new Array(totalCodeCount);\n let index = 0;\n for (let i = 0; i < maxDcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i];\n }\n }\n }\n for (let i = 0; i < maxEcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i];\n }\n }\n }\n return data;\n }\n}\nQRCode.PAD0 = 0xec;\nQRCode.PAD1 = 0x11;\n\n/**\n * Generate QR SVG\n * @author Johan Nordberg \n */\nfunction generate(text, level = 'L', version = -1) {\n const qr = new QRCode(version, ErrorCorrectLevel[level]);\n const rects = [];\n qr.addData(text);\n qr.make();\n const rows = qr.modules;\n const size = rows.length;\n for (const [y, row] of rows.entries()) {\n let rect;\n for (const [x, on] of row.entries()) {\n if (on) {\n if (!rect)\n rect = { x, y, width: 0, height: 1 };\n rect.width++;\n }\n else {\n if (rect && rect.width > 0) {\n rects.push(rect);\n }\n rect = undefined;\n }\n }\n if (rect && rect.width > 0) {\n rects.push(rect);\n }\n }\n const svg = [``];\n for (const { x, y, width, height } of rects) {\n svg.push(``);\n }\n svg.push('');\n return svg.join('');\n}\n\nasync function apiCall(url, body) {\n return (await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: body ? JSON.stringify(body) : undefined,\n })).json();\n}\nconst version = 'fuel/2';\n/** Return true if otherVersion is same or greater than current fuel version. */\nfunction compareVersion(otherVersion) {\n return parseVersion(otherVersion) >= parseVersion(version);\n}\nfunction parseVersion(string) {\n const parts = string.trim().split('/');\n if (parts.length === 2 && parts[0] === 'fuel') {\n return parseInt(parts[1]) || 0;\n }\n return -1;\n}\nasync function fuel(request, session, updatePrepareStatus, supportedChains, referrer) {\n assertEligible(request, session);\n updatePrepareStatus('Detecting if network resources are required.');\n const chainId = request.getChainId();\n const nodeUrl = supportedChains[String(chainId)];\n if (!nodeUrl) {\n throw new Error(`Blockchain not supported by this resource provider.`);\n }\n const result = await apiCall(nodeUrl + '/v1/resource_provider/request_transaction', {\n ref: referrer,\n request,\n signer: session.auth,\n });\n if (!result || !result.data) {\n throw new Error('Invalid response from resource provider.');\n }\n if (!result.data.signatures || !result.data.signatures[0]) {\n throw new Error('No signature returned from resource provider.');\n }\n if (result.code === 402 && !result.data.fee) {\n throw new Error('Resource provider returned a response indicating required payment, but provided no fee amount.');\n }\n // Clone the request for modification\n const cloned = request.clone();\n // Set the required fee onto the request for signature providers\n if (result.code === 402) {\n if (request.getInfoKey('no_fee')) {\n throw new Error('Fee required but sender opted out.');\n }\n cloned.setInfoKey('txfee', result.data.fee);\n }\n // If the fee costs exist, set them on the request for the signature provider to consume\n if (result.data.costs) {\n cloned.setInfoKey('txfeecpu', result.data.costs.cpu);\n cloned.setInfoKey('txfeenet', result.data.costs.net);\n cloned.setInfoKey('txfeeram', result.data.costs.ram);\n }\n // Set the cosigner signature onto the request for signature providers\n const signatures = result.data.signatures.map((s) => Signature.from(s));\n cloned.setInfoKey('cosig', signatures, { type: Signature, array: true });\n // Modify the request based on the response from the API\n cloned.data.req = (await SigningRequest.create({ transaction: { ...result.data.request[1] } }, { abiProvider: request.abiProvider })).data.req;\n return cloned;\n}\nfunction assertEligible(request, session) {\n if (request.getRawInfoKey('no_modify')) {\n throw new Error('Request cannot be modified.');\n }\n if (request.isIdentity()) {\n throw new Error('Identity requests cannot be co-signed.');\n }\n const firstAction = request.getRawActions()[0];\n if (!firstAction) {\n throw new Error('No actions in request.');\n }\n const firstAuthorizer = firstAction.authorization[0];\n if (!firstAction) {\n throw new Error('First authorization missing.');\n }\n if (!firstAuthorizer.actor.equals(session.auth.actor) &&\n !firstAuthorizer.actor.equals(PlaceholderName)) {\n throw new Error('Not first authorizer.');\n }\n}\n\nconst AbortPrepare = Symbol();\nconst SkipFee = Symbol();\nconst SkipToManual = Symbol();\nconst defaultSupportedChains = {\n aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906: 'https://eos.greymass.com',\n '2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840': 'https://jungle3.greymass.com',\n '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11': 'https://telos.greymass.com',\n '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4': 'https://wax.greymass.com',\n};\nclass Storage {\n constructor(keyPrefix) {\n this.keyPrefix = keyPrefix;\n }\n async write(key, data) {\n localStorage.setItem(this.storageKey(key), data);\n }\n async read(key) {\n return localStorage.getItem(this.storageKey(key));\n }\n async remove(key) {\n localStorage.removeItem(this.storageKey(key));\n }\n storageKey(key) {\n return `${this.keyPrefix}-${key}`;\n }\n}\nclass BrowserTransport {\n constructor(options = {}) {\n this.options = options;\n this.classPrefix = options.classPrefix || 'anchor-link';\n this.injectStyles = !(options.injectStyles === false);\n this.importantStyles = !(options.importantStyles === false);\n this.requestStatus = !(options.requestStatus === false);\n this.fuelEnabled = options.disableGreymassFuel !== true;\n this.fuelReferrer = options.fuelReferrer || 'teamgreymass';\n this.storage = new Storage(options.storagePrefix || 'anchor-link');\n this.supportedChains = options.supportedChains || defaultSupportedChains;\n this.showingManual = false;\n }\n closeModal() {\n this.hide();\n if (this.activeCancel) {\n this.activeRequest = undefined;\n this.activeCancel('Modal closed');\n this.activeCancel = undefined;\n }\n }\n setupElements() {\n this.showingManual = false;\n if (this.injectStyles && !this.styleEl) {\n this.styleEl = document.createElement('style');\n this.styleEl.type = 'text/css';\n let css = styleText.replace(/%prefix%/g, this.classPrefix);\n if (this.importantStyles) {\n css = css\n .split('\\n')\n .map((line) => line.replace(/;$/i, ' !important;'))\n .join('\\n');\n }\n this.styleEl.appendChild(document.createTextNode(css));\n document.head.appendChild(this.styleEl);\n }\n if (!this.containerEl) {\n this.containerEl = this.createEl();\n this.containerEl.className = this.classPrefix;\n this.containerEl.onclick = (event) => {\n if (event.target === this.containerEl) {\n event.stopPropagation();\n this.closeModal();\n }\n };\n document.body.appendChild(this.containerEl);\n }\n if (!this.requestEl) {\n const wrapper = this.createEl({ class: 'inner' });\n const closeButton = this.createEl({ class: 'close' });\n closeButton.onclick = (event) => {\n event.stopPropagation();\n this.closeModal();\n };\n this.requestEl = this.createEl({ class: 'request' });\n wrapper.appendChild(this.requestEl);\n wrapper.appendChild(closeButton);\n const version = this.createEl({\n class: 'version',\n text: `${BrowserTransport.version} (${Link.version})`,\n });\n version.onclick = (event) => {\n event.stopPropagation();\n window.open('https://github.com/greymass/anchor-link', '_blank');\n };\n wrapper.appendChild(version);\n this.containerEl.appendChild(wrapper);\n }\n }\n createEl(attrs) {\n if (!attrs)\n attrs = {};\n const el = document.createElement(attrs.tag || 'div');\n for (const attr of Object.keys(attrs)) {\n const value = attrs[attr];\n switch (attr) {\n case 'src':\n el.setAttribute(attr, value);\n break;\n case 'tag':\n break;\n case 'content':\n if (typeof value === 'string') {\n el.appendChild(document.createTextNode(value));\n }\n else {\n el.appendChild(value);\n }\n break;\n case 'text':\n el.appendChild(document.createTextNode(value));\n break;\n case 'class':\n el.className = `${this.classPrefix}-${value}`;\n break;\n default:\n el.setAttribute(attr, value);\n }\n }\n return el;\n }\n hide() {\n if (this.containerEl) {\n this.containerEl.classList.remove(`${this.classPrefix}-active`);\n }\n this.clearTimers();\n }\n show() {\n if (this.containerEl) {\n this.containerEl.classList.add(`${this.classPrefix}-active`);\n }\n }\n showDialog(args) {\n this.setupElements();\n const infoEl = this.createEl({ class: 'info' });\n const infoTitle = this.createEl({ class: 'title', tag: 'span', content: args.title });\n const infoSubtitle = this.createEl({\n class: 'subtitle',\n tag: 'span',\n content: args.subtitle,\n });\n infoEl.appendChild(infoTitle);\n infoEl.appendChild(infoSubtitle);\n const logoEl = this.createEl({ class: 'logo' });\n if (args.type) {\n logoEl.classList.add(args.type);\n }\n emptyElement(this.requestEl);\n this.requestEl.appendChild(logoEl);\n this.requestEl.appendChild(infoEl);\n if (args.content) {\n this.requestEl.appendChild(args.content);\n }\n if (args.action) {\n const buttonEl = this.createEl({ tag: 'a', class: 'button', text: args.action.text });\n buttonEl.addEventListener('click', (event) => {\n event.preventDefault();\n args.action.callback();\n });\n this.requestEl.appendChild(buttonEl);\n }\n if (args.footnote) {\n const footnoteEl = this.createEl({ class: 'footnote', content: args.footnote });\n this.requestEl.appendChild(footnoteEl);\n }\n this.show();\n }\n async displayRequest(request, title, subtitle, showFooter = true) {\n const sameDeviceRequest = request.clone();\n const returnUrl = generateReturnUrl();\n sameDeviceRequest.setInfoKey('same_device', true);\n sameDeviceRequest.setInfoKey('return_path', returnUrl);\n const sameDeviceUri = sameDeviceRequest.encode(true, false);\n const crossDeviceUri = request.encode(true, false);\n const qrEl = this.createEl({ class: 'qr' });\n try {\n qrEl.innerHTML = generate(crossDeviceUri);\n }\n catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Unable to generate QR code', error);\n }\n const copyEl = this.createEl({ class: 'copy' });\n const copyA = this.createEl({ tag: 'a', text: 'Copy request link' });\n const copySpan = this.createEl({ tag: 'span', text: 'Link copied - Paste in Anchor' });\n copyEl.appendChild(copyA);\n copyEl.appendChild(copySpan);\n qrEl.appendChild(copyEl);\n copyA.addEventListener('click', (event) => {\n event.preventDefault();\n copyToClipboard(crossDeviceUri);\n copyEl.classList.add('copied');\n setTimeout(() => {\n copyEl.classList.remove('copied');\n }, 2000);\n });\n const svg = qrEl.querySelector('svg');\n if (svg) {\n svg.addEventListener('click', (event) => {\n event.preventDefault();\n qrEl.classList.toggle('zoom');\n });\n }\n const linkEl = this.createEl({ class: 'uri' });\n const linkA = this.createEl({\n tag: 'a',\n class: 'button',\n href: crossDeviceUri,\n text: 'Launch Anchor',\n });\n linkEl.appendChild(linkA);\n if (isFirefox() || isBrave()) {\n // this prevents firefox/brave from killing the websocket connection once the link is clicked\n const iframe = this.createEl({\n class: 'wskeepalive',\n src: 'about:blank',\n tag: 'iframe',\n });\n linkEl.appendChild(iframe);\n linkA.addEventListener('click', (event) => {\n event.preventDefault();\n iframe.setAttribute('src', sameDeviceUri);\n });\n }\n else {\n linkA.addEventListener('click', (event) => {\n event.preventDefault();\n window.location.href = sameDeviceUri;\n });\n }\n const content = this.createEl({ class: 'info' });\n content.appendChild(qrEl);\n content.appendChild(linkEl);\n let footnote;\n if (showFooter) {\n footnote = this.createEl({ text: \"Don't have Anchor yet? \" });\n const footnoteLink = this.createEl({\n tag: 'a',\n target: '_blank',\n href: 'https://greymass.com/anchor',\n text: 'Download now',\n });\n footnote.appendChild(footnoteLink);\n }\n this.showDialog({\n title,\n subtitle,\n footnote,\n content,\n });\n }\n async showLoading() {\n const status = this.createEl({\n tag: 'span',\n text: 'Preparing request...',\n });\n this.prepareStatusEl = status;\n this.showDialog({\n title: 'Loading',\n subtitle: status,\n type: 'loading',\n });\n }\n onRequest(request, cancel) {\n this.clearTimers();\n this.activeRequest = request;\n this.activeCancel = cancel;\n const title = request.isIdentity() ? 'Login' : 'Sign';\n const subtitle = 'Scan the QR-code with Anchor on another device or use the button to open it here.';\n this.displayRequest(request, title, subtitle).catch(cancel);\n }\n onSessionRequest(session, request, cancel) {\n if (session.metadata.sameDevice) {\n request.setInfoKey('return_path', generateReturnUrl());\n }\n if (session.type === 'fallback') {\n this.onRequest(request, cancel);\n if (session.metadata.sameDevice) {\n // trigger directly on a fallback same-device session\n window.location.href = request.encode();\n }\n return;\n }\n this.clearTimers();\n this.activeRequest = request;\n this.activeCancel = cancel;\n const timeout = session.metadata.timeout || 60 * 1000 * 2;\n const deviceName = session.metadata.name;\n let subtitle;\n if (deviceName && deviceName.length > 0) {\n subtitle = `Please open Anchor Wallet on “${deviceName}” to review and sign the transaction.`;\n }\n else {\n subtitle = 'Please review and sign the transaction in the linked wallet.';\n }\n const title = this.createEl({ tag: 'span', text: 'Sign' });\n const expires = new Date(Date.now() + timeout);\n const updateCountdown = () => {\n title.textContent = `Sign - ${countdownFormat(expires)}`;\n };\n this.countdownTimer = setInterval(updateCountdown, 200);\n updateCountdown();\n const content = this.createEl({ class: 'info' });\n const manualHr = this.createEl({ tag: 'hr' });\n const manualA = this.createEl({\n tag: 'a',\n text: 'Sign manually or with another device',\n class: 'manual',\n });\n manualA.addEventListener('click', (event) => {\n event.preventDefault();\n const error = new SessionError('Manual', 'E_TIMEOUT', session);\n error[SkipToManual] = true;\n cancel(error);\n });\n content.appendChild(manualHr);\n content.appendChild(manualA);\n this.showDialog({\n title,\n subtitle,\n content,\n });\n if (session.metadata.sameDevice) {\n if (session.metadata.launchUrl) {\n window.location.href = session.metadata.launchUrl;\n }\n else if (isAppleHandheld()) {\n window.location.href = 'anchor://link';\n }\n }\n }\n sendSessionPayload(payload, session) {\n if (!session.metadata.triggerUrl || !session.metadata.sameDevice) {\n // not same device or no trigger url supported\n return false;\n }\n if (payload.array.length > 700) {\n // url could be clipped by iOS\n return false;\n }\n window.location.href = session.metadata.triggerUrl.replace('%s', Base64u.encode(payload.array));\n return true;\n }\n clearTimers() {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = undefined;\n }\n if (this.countdownTimer) {\n clearTimeout(this.countdownTimer);\n this.countdownTimer = undefined;\n }\n }\n async showFee(request, fee) {\n this.activeRequest = request;\n const cancelPromise = new Promise((resolve, reject) => {\n this.activeCancel = (reason) => {\n let error;\n if (typeof reason === 'string') {\n error = new Error(reason);\n }\n else {\n error = reason;\n }\n error[AbortPrepare] = true;\n reject(error);\n };\n });\n const content = this.createEl({ class: 'info' });\n const feePart1 = this.createEl({\n tag: 'span',\n text: 'You can try to ',\n });\n const feeBypass = this.createEl({\n tag: 'a',\n text: 'proceed without the fee',\n });\n const feePart2 = this.createEl({\n tag: 'span',\n text: ' or accept the fee shown below to pay for these costs.',\n });\n const feeDescription = this.createEl({\n class: 'subtitle',\n tag: 'span',\n });\n feeDescription.appendChild(feePart1);\n feeDescription.appendChild(feeBypass);\n feeDescription.appendChild(feePart2);\n content.appendChild(feeDescription);\n const expireEl = this.createEl({\n tag: 'span',\n class: 'subtitle',\n text: 'Offer expires in --:--',\n });\n content.appendChild(expireEl);\n const expires = request.getRawTransaction().expiration.toDate();\n const expireTimer = setInterval(() => {\n expireEl.textContent = `Offer expires in ${countdownFormat(expires)}`;\n if (expires.getTime() < Date.now()) {\n this.activeCancel('Offer expired');\n }\n }, 200);\n const footnote = this.createEl({\n tag: 'span',\n text: 'Resources offered by ',\n });\n const footnoteLink = this.createEl({\n tag: 'a',\n target: '_blank',\n href: 'https://greymass.com/en/fuel',\n text: 'Greymass Fuel',\n });\n footnote.appendChild(footnoteLink);\n const skipPromise = waitForEvent(feeBypass, 'click').then(() => {\n const error = new Error('Skipped fee');\n error[SkipFee] = true;\n throw error;\n });\n const confirmPromise = new Promise((resolve) => {\n this.showDialog({\n title: 'Transaction Fee',\n subtitle: 'Your account lacks the network resources for this transaction and it cannot be covered for free.',\n type: 'fuel',\n content,\n action: {\n text: `Accept Fee of ${fee}`,\n callback: resolve,\n },\n footnote,\n });\n });\n await Promise.race([confirmPromise, skipPromise, cancelPromise]).finally(() => {\n clearInterval(expireTimer);\n });\n }\n showRecovery(request, session) {\n request.data.info = request.data.info.filter((pair) => pair.key !== 'return_path');\n if (session.type === 'channel') {\n const channelSession = session;\n if (channelSession.addLinkInfo) {\n channelSession.addLinkInfo(request);\n }\n }\n this.displayRequest(request, 'Sign manually', 'Want to sign with another device or didn’t get the signing request in your wallet, scan this QR or copy request and paste in app.', false);\n this.showingManual = true;\n }\n async prepare(request, session) {\n this.showLoading();\n if (!this.fuelEnabled || !session || request.isIdentity()) {\n // don't attempt to cosign id request or if we don't have a session attached\n return request;\n }\n if (typeof session.metadata.cosignerVersion === 'string' &&\n compareVersion(session.metadata.cosignerVersion)) {\n // if signer has cosigner, only attempt to cosign here if we have a newer version\n return request;\n }\n try {\n const result = fuel(request, session, (message) => {\n if (this.prepareStatusEl) {\n this.prepareStatusEl.textContent = message;\n }\n }, this.supportedChains, this.fuelReferrer);\n const timeout = new Promise((r) => setTimeout(r, 5000)).then(() => {\n throw new Error('API timeout after 5000ms');\n });\n const modified = await Promise.race([result, timeout]);\n const fee = modified.getInfoKey('txfee');\n if (fee) {\n await this.showFee(modified, String(fee));\n }\n return modified;\n }\n catch (error) {\n if (error[AbortPrepare]) {\n this.hide();\n throw error;\n }\n else {\n // eslint-disable-next-line no-console\n console.info(`Skipping resource provider: ${error.message || error}`);\n if (error[SkipFee]) {\n const modified = request.clone();\n modified.setInfoKey('no_fee', true, 'bool');\n return modified;\n }\n }\n }\n return request;\n }\n recoverError(error, request) {\n if (request === this.activeRequest &&\n (error['code'] === 'E_DELIVERY' || error['code'] === 'E_TIMEOUT') &&\n error['session']) {\n // recover from session errors by displaying a manual sign dialog\n if (this.showingManual) {\n // already showing recovery sign\n return true;\n }\n const session = error['session'];\n if (error[SkipToManual]) {\n this.showRecovery(request, session);\n return true;\n }\n const deviceName = session.metadata.name;\n let subtitle;\n if (deviceName && deviceName.length > 0) {\n subtitle = `Unable to deliver the request to “${deviceName}”.`;\n }\n else {\n subtitle = 'Unable to deliver the request to the linked wallet.';\n }\n subtitle += ` ${error.message}.`;\n this.showDialog({\n title: 'Unable to reach device',\n subtitle,\n type: 'warning',\n action: {\n text: 'Sign manually',\n callback: () => {\n this.showRecovery(request, session);\n },\n },\n });\n return true;\n }\n return false;\n }\n onSuccess(request) {\n if (request === this.activeRequest) {\n this.clearTimers();\n if (this.requestStatus) {\n this.showDialog({\n title: 'Success!',\n subtitle: request.isIdentity() ? 'Login completed.' : 'Transaction signed.',\n type: 'success',\n });\n this.closeTimer = setTimeout(() => {\n this.hide();\n }, 1.5 * 1000);\n }\n else {\n this.hide();\n }\n }\n }\n onFailure(request, error) {\n if (request === this.activeRequest && error['code'] !== 'E_CANCEL') {\n this.clearTimers();\n if (this.requestStatus) {\n let errorMessage;\n if (isInstanceOf(error, APIError)) {\n if (error.name === 'eosio_assert_message_exception') {\n errorMessage = error.details[0].message;\n }\n else if (error.details.length > 0) {\n errorMessage = error.details.map((d) => d.message).join('\\n');\n }\n else {\n errorMessage = error.message;\n }\n }\n else {\n errorMessage = error.message || String(error);\n }\n this.showDialog({\n title: 'Transaction Error',\n subtitle: errorMessage,\n type: 'error',\n });\n }\n else {\n this.hide();\n }\n }\n else {\n this.hide();\n }\n }\n userAgent() {\n return `BrowserTransport/${BrowserTransport.version} ${navigator.userAgent}`;\n }\n}\n/** Package version. */\nBrowserTransport.version = '3.2.5'; // replaced by build script\nfunction waitForEvent(element, eventName, timeout) {\n return new Promise((resolve, reject) => {\n const listener = (event) => {\n element.removeEventListener(eventName, listener);\n resolve(event);\n };\n element.addEventListener(eventName, listener);\n if (timeout) {\n setTimeout(() => {\n element.removeEventListener(eventName, listener);\n reject(new Error(`Timed out waiting for ${eventName}`));\n }, timeout);\n }\n });\n}\nfunction countdownFormat(date) {\n const timeLeft = date.getTime() - Date.now();\n if (timeLeft > 0) {\n return new Date(timeLeft).toISOString().substr(14, 5);\n }\n return '00:00';\n}\nfunction emptyElement(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n/** Generate a return url that Anchor will redirect back to w/o reload. */\nfunction generateReturnUrl() {\n if (isChromeiOS()) {\n // google chrome on iOS will always open new tab so we just ask it to open again as a workaround\n return 'googlechrome://';\n }\n if (isFirefoxiOS()) {\n // same for firefox\n return 'firefox:://';\n }\n if (isAppleHandheld() && isBrave()) {\n // and brave ios\n return 'brave://';\n }\n if (isAppleHandheld()) {\n // return url with unique fragment required for iOS safari to trigger the return url\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let rv = window.location.href.split('#')[0] + '#';\n for (let i = 0; i < 8; i++) {\n rv += alphabet.charAt(Math.floor(Math.random() * alphabet.length));\n }\n return rv;\n }\n if (isAndroid() && isFirefox()) {\n return 'android-intent://org.mozilla.firefox';\n }\n if (isAndroid() && isEdge()) {\n return 'android-intent://com.microsoft.emmx';\n }\n if (isAndroid() && isOpera()) {\n return 'android-intent://com.opera.browser';\n }\n if (isAndroid() && isBrave()) {\n return 'android-intent://com.brave.browser';\n }\n if (isAndroid() && isAndroidWebView()) {\n return 'android-intent://webview';\n }\n if (isAndroid() && isChromeMobile()) {\n return 'android-intent://com.android.chrome';\n }\n return window.location.href;\n}\nfunction isAppleHandheld() {\n return /iP(ad|od|hone)/i.test(navigator.userAgent);\n}\nfunction isChromeiOS() {\n return /CriOS/.test(navigator.userAgent);\n}\nfunction isChromeMobile() {\n return /Chrome\\/[.0-9]* Mobile/i.test(navigator.userAgent);\n}\nfunction isFirefox() {\n return /Firefox/i.test(navigator.userAgent);\n}\nfunction isFirefoxiOS() {\n return /FxiOS/.test(navigator.userAgent);\n}\nfunction isOpera() {\n return /OPR/.test(navigator.userAgent) || /Opera/.test(navigator.userAgent);\n}\nfunction isEdge() {\n return /Edg/.test(navigator.userAgent);\n}\nfunction isBrave() {\n return navigator['brave'] && typeof navigator['brave'].isBrave === 'function';\n}\nfunction isAndroid() {\n return /Android/.test(navigator.userAgent);\n}\nfunction isAndroidWebView() {\n return /wv/.test(navigator.userAgent);\n}\nfunction copyToClipboard(text) {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(text);\n }\n else {\n const el = document.createElement('textarea');\n try {\n el.setAttribute('contentEditable', '');\n el.value = text;\n document.body.appendChild(el);\n el.select();\n const range = document.createRange();\n range.selectNodeContents(el);\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n el.setSelectionRange(0, el.value.length);\n document.execCommand('copy');\n }\n finally {\n document.body.removeChild(el);\n }\n }\n}\n\nexport default BrowserTransport;\n//# sourceMappingURL=anchor-link-browser-transport.m.js.map\n","import {Link, ChainId, LinkSession, PermissionLevel} from 'anchor-link'\nimport Transport from 'anchor-link-browser-transport'\nimport {get} from 'svelte/store'\n\nimport {storeAccount} from './stores/account-provider'\nimport {getClient} from './api-client'\nimport {appId, chains} from './config'\nimport {activeSession, availableSessions} from './store'\n\nconst transport = new Transport({\n requestStatus: false,\n})\nconst link = new Link({\n chains: chains.map((chain) => ({chainId: chain.chainId, nodeUrl: getClient(chain)})),\n transport,\n})\n\n/** Anchor Link session object or identifier. */\nexport interface SessionLike {\n auth: PermissionLevel\n chainId: ChainId\n}\n\n/** Compare two session-ish objects. */\nexport function sessionEquals(a: SessionLike, b: SessionLike) {\n return a.auth.equals(b.auth) && a.chainId.equals(b.chainId)\n}\n\n/** Restore previous sessions. */\nexport async function init() {\n const list = await link.listSessions(appId)\n let session: LinkSession | null = null\n if (window.location.search.includes('auth=')) {\n // load active session from query string if present\n // prompt for login if an auth is requested but not available\n const qs = new URLSearchParams(window.location.search)\n const auth = PermissionLevel.from(qs.get('auth') || '')\n let chainId: ChainId | undefined\n if (qs.has('chain')) {\n chainId = ChainId.from(qs.get('chain') || '')\n }\n session = await link.restoreSession(appId, auth, chainId)\n const removeQuery = () => {\n if (window.history) {\n window.history.replaceState(null, '', window.location.pathname)\n }\n }\n if (!session) {\n return login().finally(removeQuery) // keep qs until after login so anchor redirects back correctly\n } else {\n removeQuery()\n }\n } else {\n session = await link.restoreSession(appId)\n }\n availableSessions.set(list)\n if (session) {\n activeSession.set(session)\n }\n}\n\n/** Create a new session. */\nexport async function login() {\n const result = await link.login(appId)\n if (result.account) {\n // populate account cache with the account returned by login so we don't need to re-fetch it\n storeAccount(result.account, result.session.chainId)\n }\n const list = await link.listSessions(appId)\n availableSessions.set(list)\n activeSession.set(result.session)\n}\n\n/** Remove existing session. */\nexport async function logout(id: SessionLike) {\n const session = await link.restoreSession(appId, id.auth, id.chainId)\n if (session) {\n await session.remove()\n const list = await link.listSessions(appId)\n let active = get(activeSession)\n if (active && sessionEquals(active, session)) {\n // update active session if we logged out from it\n if (list.length > 0) {\n activate(list[0])\n } else {\n activeSession.set(undefined)\n }\n }\n availableSessions.set(list)\n }\n}\n\n/** Set active session. */\nexport async function activate(id: SessionLike) {\n const session = await link.restoreSession(appId, id.auth, id.chainId)\n if (!session) {\n throw new Error('No such session')\n }\n activeSession.set(session)\n}\n","\n\n\n\n\n\n\n {#if icons}\n {@html (icons[name] || icons['help-circle']).toSvg()}\n {/if}\n\n","import { writable } from '../store/index.mjs';\nimport { now, loop, assign } from '../internal/index.mjs';\nimport { linear } from '../easing/index.mjs';\n\nfunction is_date(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n}\n\nfunction tick_spring(ctx, last_value, current_value, target_value) {\n if (typeof current_value === 'number' || is_date(current_value)) {\n // @ts-ignore\n const delta = target_value - current_value;\n // @ts-ignore\n const velocity = (current_value - last_value) / (ctx.dt || 1 / 60); // guard div by 0\n const spring = ctx.opts.stiffness * delta;\n const damper = ctx.opts.damping * velocity;\n const acceleration = (spring - damper) * ctx.inv_mass;\n const d = (velocity + acceleration) * ctx.dt;\n if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) {\n return target_value; // settled\n }\n else {\n ctx.settled = false; // signal loop to keep ticking\n // @ts-ignore\n return is_date(current_value) ?\n new Date(current_value.getTime() + d) : current_value + d;\n }\n }\n else if (Array.isArray(current_value)) {\n // @ts-ignore\n return current_value.map((_, i) => tick_spring(ctx, last_value[i], current_value[i], target_value[i]));\n }\n else if (typeof current_value === 'object') {\n const next_value = {};\n for (const k in current_value) {\n // @ts-ignore\n next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]);\n }\n // @ts-ignore\n return next_value;\n }\n else {\n throw new Error(`Cannot spring ${typeof current_value} values`);\n }\n}\nfunction spring(value, opts = {}) {\n const store = writable(value);\n const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts;\n let last_time;\n let task;\n let current_token;\n let last_value = value;\n let target_value = value;\n let inv_mass = 1;\n let inv_mass_recovery_rate = 0;\n let cancel_task = false;\n function set(new_value, opts = {}) {\n target_value = new_value;\n const token = current_token = {};\n if (value == null || opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) {\n cancel_task = true; // cancel any running animation\n last_time = now();\n last_value = new_value;\n store.set(value = target_value);\n return Promise.resolve();\n }\n else if (opts.soft) {\n const rate = opts.soft === true ? .5 : +opts.soft;\n inv_mass_recovery_rate = 1 / (rate * 60);\n inv_mass = 0; // infinite mass, unaffected by spring forces\n }\n if (!task) {\n last_time = now();\n cancel_task = false;\n task = loop(now => {\n if (cancel_task) {\n cancel_task = false;\n task = null;\n return false;\n }\n inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1);\n const ctx = {\n inv_mass,\n opts: spring,\n settled: true,\n dt: (now - last_time) * 60 / 1000\n };\n const next_value = tick_spring(ctx, last_value, value, target_value);\n last_time = now;\n last_value = value;\n store.set(value = next_value);\n if (ctx.settled) {\n task = null;\n }\n return !ctx.settled;\n });\n }\n return new Promise(fulfil => {\n task.promise.then(() => {\n if (token === current_token)\n fulfil();\n });\n });\n }\n const spring = {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe,\n stiffness,\n damping,\n precision\n };\n return spring;\n}\n\nfunction get_interpolator(a, b) {\n if (a === b || a !== a)\n return () => a;\n const type = typeof a;\n if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n throw new Error('Cannot interpolate values of different type');\n }\n if (Array.isArray(a)) {\n const arr = b.map((bi, i) => {\n return get_interpolator(a[i], bi);\n });\n return t => arr.map(fn => fn(t));\n }\n if (type === 'object') {\n if (!a || !b)\n throw new Error('Object cannot be null');\n if (is_date(a) && is_date(b)) {\n a = a.getTime();\n b = b.getTime();\n const delta = b - a;\n return t => new Date(a + t * delta);\n }\n const keys = Object.keys(b);\n const interpolators = {};\n keys.forEach(key => {\n interpolators[key] = get_interpolator(a[key], b[key]);\n });\n return t => {\n const result = {};\n keys.forEach(key => {\n result[key] = interpolators[key](t);\n });\n return result;\n };\n }\n if (type === 'number') {\n const delta = b - a;\n return t => a + t * delta;\n }\n throw new Error(`Cannot interpolate ${type} values`);\n}\nfunction tweened(value, defaults = {}) {\n const store = writable(value);\n let task;\n let target_value = value;\n function set(new_value, opts) {\n if (value == null) {\n store.set(value = new_value);\n return Promise.resolve();\n }\n target_value = new_value;\n let previous_task = task;\n let started = false;\n let { delay = 0, duration = 400, easing = linear, interpolate = get_interpolator } = assign(assign({}, defaults), opts);\n if (duration === 0) {\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n store.set(value = target_value);\n return Promise.resolve();\n }\n const start = now() + delay;\n let fn;\n task = loop(now => {\n if (now < start)\n return true;\n if (!started) {\n fn = interpolate(value, new_value);\n if (typeof duration === 'function')\n duration = duration(value, new_value);\n started = true;\n }\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n const elapsed = now - start;\n if (elapsed > duration) {\n store.set(value = new_value);\n return false;\n }\n // @ts-ignore\n store.set(value = fn(easing(elapsed / duration)));\n return true;\n });\n return task.promise;\n }\n return {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe\n };\n}\n\nexport { spring, tweened };\n","\n\n\n\n\n {#if !isDisabled}\n \n {/if}\n \n Click me\n \n\n","\nText\n","\n\n\n\n
\n \n {#if error}\n

Unable to login: {error.message}

\n {/if}\n
\n","\n\n\n\n
\n \n
\n","\n\n\n\n{#if $activeSession}\n
\n \n {#each $groupings as group}\n
\n
toggle(group.chainId)}>\n {group.name} ({group.sessions.length})\n \n
\n
    \n {#each group.sessions as session}\n
  • \n
    onSelect(session)}>\n \n
    \n
    onSelect(session)}>\n {session.auth.actor}\n
    \n
    logout(session)}>\n \n
    \n
  • \n {/each}\n
\n
\n {/each}\n
\n{:else}\n
\n \n
\n \n
\n

Supported blockchains

\n

\n {chains\n .filter((chain) => !chain.testnet)\n .map((chain) => chain.name)\n .join(', ')}\n

\n Login\n
\n
\n{/if}\n","\n\n\n\n\n","\n\n\n\n

\n {title}\n

\n

\n {subtitle}\n

\n","\n\n\n","\n\n\n\n\n","\n\n\n\n\n {#if !matches || open}\n {\n if (matches) {\n open = false\n } else {\n preferences.expandNavbar = false\n }\n }}\n />\n {/if}\n\n","\n\n\n\n\n {\n accountSidebar = false\n navigationSidebar = false\n }}\n />\n\n {#if displayNavigation && $activeSession}\n \n {/if}\n\n
\n \n {#if $$slots.submenu}\n
\n \n
\n {/if}\n \n
\n \n\n
\n
\n {#if title}\n
\n
\n
\n {/if}\n {#if $$slots.controls}\n
\n \n
\n {/if}\n
\n
\n \n
\n
\n\n","\n\n\n\n
\n \n
\n","import type {LinkSession} from 'anchor-link'\nimport {Asset} from 'anchor-link'\nimport {get, writable} from 'svelte/store'\nimport type {Writable} from 'svelte/store'\n\nimport {BalanceProviders, chainConfig} from '~/config'\nimport {activeSession} from '~/store'\nimport {makeTokenKey, Token} from '~/stores/tokens'\n\nimport {Balance, createBalanceFromToken} from '~/stores/balances'\n\ninterface RawTokenBalance {\n currency: string\n amount: number\n usd_value: number\n decimals: number\n contract: string\n metadata: {\n logo?: string\n }\n}\n\nexport const isLoading: Writable = writable(false)\n\ninterface BalancesProvider {\n balances: Balance[]\n tokens: Token[]\n}\n\nconst initialBalances: BalancesProvider = {\n balances: [],\n tokens: [],\n}\n\nexport const balancesProvider: Writable = writable(initialBalances, () => {\n // Update on a set interval\n const interval = setInterval(() => {\n const session = get(activeSession)\n if (session) {\n updateBalances(session)\n }\n }, 30000)\n\n // Subscribe to changes to the active session and update on change\n const unsubscribe = activeSession.subscribe((session) => {\n if (session) {\n updateBalances(session)\n }\n })\n\n return () => {\n unsubscribe()\n clearInterval(interval)\n }\n})\n\nexport async function updateBalances(session: LinkSession) {\n isLoading.set(true)\n const chain = chainConfig(session.chainId)\n const {Bloks} = BalanceProviders\n if (chain.balanceProviders?.has(Bloks)) {\n const data = await fetchData(session)\n const balances = parseTokenBalances(session, data)\n const tokens = parseTokens(session, data)\n balancesProvider.set({\n balances,\n tokens,\n })\n }\n isLoading.set(false)\n}\n\nasync function fetchData(session: LinkSession) {\n const chain = chainConfig(session.chainId)\n const apiUrl = `https://www.api.bloks.io${chain.id === 'eos' ? '' : `/${chain.id}`}/account/${\n session.auth.actor\n }?type=getAccountTokens&coreSymbol=${chain.coreTokenSymbol}`\n\n return await fetch(apiUrl)\n .then(async (response) => {\n const jsonBody =\n response &&\n (await response.json().catch((error) => {\n console.warn(\n 'An error occured while parsing the token balances response body:',\n {\n error,\n }\n )\n }))\n return jsonBody.tokens\n })\n .catch((error) => {\n console.warn('An error occured while fetching token balances:', {error})\n return []\n })\n}\n\nfunction parseTokenInfo(session: LinkSession, balance: RawTokenBalance): Token {\n const chain = chainConfig(session.chainId)\n const symbol: Asset.Symbol = Asset.Symbol.from(`${balance.decimals},${balance.currency}`)\n const key = makeTokenKey({\n chainId: chain.chainId,\n contract: balance.contract,\n name: symbol.name,\n })\n return {\n key,\n chainId: chain.chainId,\n contract: balance.contract,\n symbol: symbol,\n name: symbol.name,\n price: balance.usd_value / balance.amount,\n logo: balance.metadata?.logo,\n }\n}\n\nfunction parseTokens(session: LinkSession, balances: RawTokenBalance[]) {\n return balances.map((balance) => parseTokenInfo(session, balance))\n}\n\nfunction parseTokenBalances(session: LinkSession, balances: RawTokenBalance[]) {\n return balances.map((balance) => {\n const symbol: Asset.Symbol = Asset.Symbol.from(`${balance.decimals},${balance.currency}`)\n const token = parseTokenInfo(session, balance)\n const asset = Asset.from(balance.amount || 0, symbol)\n return createBalanceFromToken(session, token, asset)\n })\n}\n","import type {Asset} from 'anchor-link'\nimport type {ChainId, NameType} from 'anchor-link'\nimport {derived, get} from 'svelte/store'\nimport type {Readable} from 'svelte/store'\n\nimport {chainConfig} from '~/config'\nimport {activeBlockchain, activePriceTicker, activeSession} from '~/store'\nimport {balancesProvider} from './balances-provider'\n\nexport interface Token {\n key: string\n chainId: ChainId\n contract: NameType\n symbol: Asset.Symbol\n name: NameType\n price?: number\n logo?: string\n}\n\nexport interface TokenKeyParams {\n chainId: ChainId\n contract: NameType\n name: NameType\n}\n\nconst initialTokens: Token[] = []\n\nexport const tokens: Readable = derived(\n [activePriceTicker, activeSession, balancesProvider],\n ([$activePriceTicker, $activeSession, $balancesProvider], set) => {\n const records = []\n\n // Push any core balance information in from the current account\n if ($activeSession) {\n records.push(createTokenFromChainId($activeSession.chainId, $activePriceTicker))\n }\n\n // Push tokens in as received by the balance provider\n records.push(...$balancesProvider.tokens)\n\n set(records)\n },\n initialTokens\n)\n\nexport function makeTokenKey(token: TokenKeyParams): string {\n return [String(token.chainId), String(token.contract), String(token.name)]\n .join('-')\n .toLowerCase()\n}\n\nexport const systemTokenKey: Readable = derived(activeBlockchain, ($activeBlockchain) => {\n if ($activeBlockchain) {\n const params: TokenKeyParams = {\n chainId: $activeBlockchain.chainId,\n contract: $activeBlockchain.coreTokenContract,\n name: $activeBlockchain.coreTokenSymbol.name,\n }\n return makeTokenKey(params)\n }\n return ''\n})\n\nexport const systemToken: Readable = derived(\n activeBlockchain,\n ($activeBlockchain) => {\n if ($activeBlockchain) {\n return createTokenFromChainId($activeBlockchain.chainId)\n }\n }\n)\n\nexport function createTokenFromChainId(\n chainId: ChainId,\n price: number | undefined = undefined\n): Token {\n const chain = chainConfig(chainId)\n const token = {\n chainId: chainId,\n contract: chain.coreTokenContract,\n symbol: chain.coreTokenSymbol,\n name: chain.coreTokenSymbol.name,\n logo: `https://www.bloks.io/img/chains/${chain.coreTokenSymbol.name.toLowerCase()}.png`,\n price,\n }\n const record = {\n ...token,\n key: makeTokenKey(token),\n }\n return record\n}\n\nexport function getToken(key: string) {\n const existing = get(tokens)\n return existing.find((t) => t.key === key)\n}\n","import type {AccountName, ChainId, LinkSession, Name} from 'anchor-link'\nimport {Asset} from 'anchor-link'\nimport {derived} from 'svelte/store'\nimport type {Readable} from 'svelte/store'\n\nimport {activeBlockchain, activeSession, currentAccount} from '~/store'\nimport {createTokenFromChainId, makeTokenKey, Token} from '~/stores/tokens'\nimport {balancesProvider, updateBalances} from '~/stores/balances-provider'\nimport {updateAccount} from './account-provider'\n\nexport interface Balance {\n key: string\n chainId: ChainId\n account: Name\n tokenKey: string\n quantity: Asset\n}\n\nconst initialBalances: Balance[] = []\n\nexport const balances: Readable = derived(\n [activeSession, activeBlockchain, balancesProvider, currentAccount],\n ([$activeSession, $activeBlockchain, $balancesProvider, $currentAccount], set) => {\n const records = []\n // Push any core balance information in from the current account\n if ($activeSession && $currentAccount) {\n let coreBalance = $currentAccount.core_liquid_balance\n if (!coreBalance) {\n coreBalance = Asset.from(0, $activeBlockchain.coreTokenSymbol)\n }\n records.push(createBalanceFromCoreToken($activeSession, coreBalance))\n }\n // Push balances in as received by the balance provider\n records.push(...$balancesProvider.balances)\n set(records)\n },\n initialBalances\n)\n\nexport function makeBalanceKey(token: Token, account: AccountName): string {\n return [\n String(token.chainId),\n String(token.contract),\n String(token.symbol.name),\n String(account),\n ]\n .join('-')\n .toLowerCase()\n}\n\nexport function createBalanceFromCoreToken(session: LinkSession, balance: Asset): Balance {\n const token = createTokenFromChainId(session.chainId)\n return createBalanceFromToken(session, token, balance)\n}\n\nexport function createBalanceFromToken(\n session: LinkSession,\n token: Token,\n balance: Asset\n): Balance {\n const key = makeBalanceKey(token, session.auth.actor)\n const record: Balance = {\n key,\n chainId: session.chainId,\n account: session.auth.actor,\n tokenKey: makeTokenKey(token),\n quantity: balance,\n }\n return record\n}\n\nexport async function fetchBalances(session: LinkSession | undefined, refresh = false) {\n if (session) {\n // Refresh the sessions account data\n updateAccount(session.auth.actor, session.chainId, refresh)\n // Refresh balances from the balance provider\n updateBalances(session)\n }\n}\n\nexport const systemTokenBalance: Readable = derived(\n [activeBlockchain, balances],\n ([$activeBlockchain, $balances]) => {\n if ($activeBlockchain) {\n const token = createTokenFromChainId($activeBlockchain.chainId)\n\n return $balances.find((b) => b.tokenKey === token.key)\n }\n }\n)\n","/**\n * @greymass/eosio-resources v0.7.0\n * https://github.com/greymass/eosio-resources\n *\n * @license\n * Copyright (c) 2021 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { Struct, UInt64, UInt128, TimePointSec, Asset, APIClient, FetchProvider } from '@greymass/eosio';\nimport BN from 'bn.js';\nimport { __decorate } from 'tslib';\n\nclass PowerUpStateResource extends Struct {\n constructor() {\n super(...arguments);\n this.default_block_cpu_limit = UInt64.from(200000);\n this.default_block_net_limit = UInt64.from(1048576000);\n }\n // Get the current number of allocated units (shift from REX -> PowerUp)\n get allocated() {\n return 1 - Number(this.weight_ratio) / Number(this.target_weight_ratio) / 100;\n }\n // Get the current percentage of reserved units\n get reserved() {\n return Number(this.utilization) / Number(this.weight);\n }\n // Get the symbol definition for the token\n get symbol() {\n return this.min_price.symbol;\n }\n // Common casting for typed values to numbers\n cast() {\n return {\n adjusted_utilization: Number(this.adjusted_utilization),\n decay_secs: Number(this.decay_secs.value),\n exponent: Number(this.exponent),\n utilization: Number(this.utilization),\n utilization_timestamp: Number(this.utilization_timestamp.value),\n weight: Number(this.weight),\n weight_ratio: Number(this.weight_ratio),\n };\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L358\n utilization_increase(sample, frac) {\n const { weight } = this;\n const frac128 = UInt128.from(frac);\n const utilization_increase = new BN(weight.value.mul(new BN(frac128.value))) / Math.pow(10, 15);\n return Math.ceil(utilization_increase);\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L284-L298\n price_function(utilization) {\n const { exponent, weight } = this.cast();\n const max_price = this.max_price.value;\n const min_price = this.min_price.value;\n let price = min_price;\n const new_exponent = exponent - 1.0;\n if (new_exponent <= 0.0) {\n return max_price;\n }\n else {\n price += (max_price - min_price) * Math.pow(utilization / weight, new_exponent);\n }\n return price;\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L274-L280\n price_integral_delta(start_utilization, end_utilization) {\n const { exponent, weight } = this.cast();\n const max_price = this.max_price.value;\n const min_price = this.min_price.value;\n const coefficient = (max_price - min_price) / exponent;\n const start_u = start_utilization / weight;\n const end_u = end_utilization / weight;\n const delta = min_price * end_u -\n min_price * start_u +\n coefficient * Math.pow(end_u, exponent) -\n coefficient * Math.pow(start_u, exponent);\n return delta;\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L262-L315\n fee(utilization_increase, adjusted_utilization) {\n const { utilization, weight } = this.cast();\n let start_utilization = utilization;\n const end_utilization = start_utilization + utilization_increase;\n let fee = 0;\n if (start_utilization < adjusted_utilization) {\n fee +=\n (this.price_function(adjusted_utilization) *\n Math.min(utilization_increase, adjusted_utilization - start_utilization)) /\n weight;\n start_utilization = adjusted_utilization;\n }\n if (start_utilization < end_utilization) {\n fee += this.price_integral_delta(start_utilization, end_utilization);\n }\n return fee;\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L105-L117\n determine_adjusted_utilization(options) {\n // Casting EOSIO types to usable formats for JS calculations\n const { decay_secs, utilization, utilization_timestamp } = this.cast();\n let { adjusted_utilization } = this.cast();\n // If utilization is less than adjusted, calculate real time value\n if (utilization < adjusted_utilization) {\n // Create now & adjust JS timestamp to match EOSIO timestamp values\n const ts = options && options.timestamp ? options.timestamp : new Date();\n const now = TimePointSec.from(ts).toMilliseconds() / 1000;\n const diff = adjusted_utilization - utilization;\n let delta = diff * Math.exp(-(now - utilization_timestamp) / decay_secs);\n delta = Math.min(Math.max(delta, 0), diff); // Clamp the delta\n adjusted_utilization = utilization + delta;\n }\n return adjusted_utilization;\n }\n}\n__decorate([\n Struct.field('uint8')\n], PowerUpStateResource.prototype, \"version\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"weight\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"weight_ratio\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"assumed_stake_weight\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"initial_weight_ratio\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"target_weight_ratio\", void 0);\n__decorate([\n Struct.field('time_point_sec')\n], PowerUpStateResource.prototype, \"initial_timestamp\", void 0);\n__decorate([\n Struct.field('time_point_sec')\n], PowerUpStateResource.prototype, \"target_timestamp\", void 0);\n__decorate([\n Struct.field('float64')\n], PowerUpStateResource.prototype, \"exponent\", void 0);\n__decorate([\n Struct.field('uint32')\n], PowerUpStateResource.prototype, \"decay_secs\", void 0);\n__decorate([\n Struct.field('asset')\n], PowerUpStateResource.prototype, \"min_price\", void 0);\n__decorate([\n Struct.field('asset')\n], PowerUpStateResource.prototype, \"max_price\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"utilization\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"adjusted_utilization\", void 0);\n__decorate([\n Struct.field('time_point_sec')\n], PowerUpStateResource.prototype, \"utilization_timestamp\", void 0);\n\nlet PowerUpStateResourceCPU = class PowerUpStateResourceCPU extends PowerUpStateResource {\n constructor() {\n super(...arguments);\n // Return smallest units per day, μs (microseconds)\n this.per_day = (options) => this.us_per_day(options);\n // Default frac generation by smallest unit type\n this.frac = (usage, us) => this.frac_by_us(usage, us);\n // Frac generation by ms (milliseconds)\n this.frac_by_ms = (usage, ms) => this.frac_by_us(usage, ms * 1000);\n // Price generation by smallest units, μs (microseconds)\n this.price_per = (usage, us = 1000, options) => this.price_per_us(usage, us, options);\n // Price generation by ms (milliseconds)\n this.price_per_ms = (usage, ms = 1, options) => this.price_per_us(usage, ms * 1000, options);\n }\n // Return ms (milliseconds) per day\n ms_per_day(options) {\n return this.us_per_day(options) / 1000;\n }\n // Return μs (microseconds) per day\n us_per_day(options) {\n const limit = options && options.virtual_block_cpu_limit\n ? options.virtual_block_cpu_limit\n : this.default_block_cpu_limit;\n return Number(limit) * 2 * 60 * 60 * 24;\n }\n // Convert weight to μs (microseconds)\n weight_to_us(sample, weight) {\n return Math.ceil((weight * Number(sample)) / BNPrecision);\n }\n // Convert μs (microseconds) to weight\n us_to_weight(sample, us) {\n return Math.floor((us / Number(sample)) * BNPrecision);\n }\n // Frac generation by μs (microseconds)\n frac_by_us(usage, us) {\n const { weight } = this.cast();\n const frac = this.us_to_weight(usage.cpu, us) / weight;\n return Math.floor(frac * Math.pow(10, 15));\n }\n // Price generation by μs (microseconds)\n price_per_us(usage, us = 1000, options) {\n // Determine the utilization increase by this action\n const frac = UInt128.from(this.frac(usage, us));\n const utilization_increase = this.utilization_increase(usage.cpu, frac);\n // Determine the adjusted utilization if needed\n const adjusted_utilization = this.determine_adjusted_utilization(options);\n // Derive the fee from the increase and utilization\n const fee = this.fee(utilization_increase, adjusted_utilization);\n // Force the fee up to the next highest value of precision\n const precision = Math.pow(10, 4);\n const value = Math.ceil(fee * precision) / precision;\n // Return the modified fee\n return value;\n }\n};\nPowerUpStateResourceCPU = __decorate([\n Struct.type('powerupstateresourcecpu')\n], PowerUpStateResourceCPU);\n\nlet PowerUpStateResourceNET = class PowerUpStateResourceNET extends PowerUpStateResource {\n constructor() {\n super(...arguments);\n // Return smallest units per day, bytes\n this.per_day = (options) => this.bytes_per_day(options);\n // Default frac generation by smallest unit type\n this.frac = (usage, bytes) => this.frac_by_bytes(usage, bytes);\n // Frac generation by kb\n this.frac_by_kb = (usage, kilobytes) => this.frac_by_bytes(usage, kilobytes * 1000);\n // Price generation by smallest units, bytes\n this.price_per = (usage, bytes = 1000, options) => this.price_per_byte(usage, bytes, options);\n // Price generation by kb\n this.price_per_kb = (usage, kilobytes = 1, options) => this.price_per_byte(usage, kilobytes * 1000, options);\n }\n // Return kb per day\n kb_per_day(options) {\n return this.bytes_per_day(options) / 1000;\n }\n // Return bytes per day\n bytes_per_day(options) {\n const limit = options && options.virtual_block_net_limit\n ? options.virtual_block_net_limit\n : this.default_block_net_limit;\n return Number(limit) * 2 * 60 * 60 * 24;\n }\n // Convert weight to bytes\n weight_to_bytes(sample, weight) {\n return Math.ceil((weight * Number(sample)) / BNPrecision);\n }\n // Convert bytes to weight\n bytes_to_weight(sample, bytes) {\n return Math.floor((bytes / Number(sample)) * BNPrecision);\n }\n // Frac generation by bytes\n frac_by_bytes(usage, bytes) {\n const { weight } = this.cast();\n const frac = this.bytes_to_weight(usage.net, bytes) / weight;\n return Math.floor(frac * Math.pow(10, 15));\n }\n // Price generation by bytes\n price_per_byte(usage, bytes = 1000, options) {\n // Determine the utilization increase by this action\n const frac = UInt128.from(this.frac(usage, bytes));\n const utilization_increase = this.utilization_increase(usage.net, frac);\n // Determine the adjusted utilization if needed\n const adjusted_utilization = this.determine_adjusted_utilization(options);\n // Derive the fee from the increase and utilization\n const fee = this.fee(utilization_increase, adjusted_utilization);\n // Force the fee up to the next highest value of precision\n const precision = Math.pow(10, 4);\n const value = Math.ceil(fee * precision) / precision;\n // Return the modified fee\n return value;\n }\n};\nPowerUpStateResourceNET = __decorate([\n Struct.type('powerupstateresourcenet')\n], PowerUpStateResourceNET);\n\nlet PowerUpState = class PowerUpState extends Struct {\n};\n__decorate([\n Struct.field('uint8')\n], PowerUpState.prototype, \"version\", void 0);\n__decorate([\n Struct.field(PowerUpStateResourceNET)\n], PowerUpState.prototype, \"net\", void 0);\n__decorate([\n Struct.field(PowerUpStateResourceCPU)\n], PowerUpState.prototype, \"cpu\", void 0);\n__decorate([\n Struct.field('uint32')\n], PowerUpState.prototype, \"powerup_days\", void 0);\n__decorate([\n Struct.field('asset')\n], PowerUpState.prototype, \"min_powerup_fee\", void 0);\nPowerUpState = __decorate([\n Struct.type('powerupstate')\n], PowerUpState);\nclass PowerUpAPI {\n constructor(parent) {\n this.parent = parent;\n }\n async get_state() {\n const response = await this.parent.api.v1.chain.get_table_rows({\n code: 'eosio',\n scope: '',\n table: 'powup.state',\n type: PowerUpState,\n });\n return response.rows[0];\n }\n}\n\nlet Connector = class Connector extends Struct {\n};\n__decorate([\n Struct.field('asset')\n], Connector.prototype, \"balance\", void 0);\n__decorate([\n Struct.field('float64')\n], Connector.prototype, \"weight\", void 0);\nConnector = __decorate([\n Struct.type('connector')\n], Connector);\nlet ExchangeState = class ExchangeState extends Struct {\n};\n__decorate([\n Struct.field('asset')\n], ExchangeState.prototype, \"supply\", void 0);\n__decorate([\n Struct.field(Connector)\n], ExchangeState.prototype, \"base\", void 0);\n__decorate([\n Struct.field(Connector)\n], ExchangeState.prototype, \"quote\", void 0);\nExchangeState = __decorate([\n Struct.type('exchange_state')\n], ExchangeState);\nlet RAMState = class RAMState extends ExchangeState {\n price_per(bytes) {\n const base = this.base.balance.units.toNumber();\n const quote = this.quote.balance.value;\n return this.get_input(base, quote, bytes);\n }\n price_per_kb(kilobytes) {\n return this.price_per(kilobytes * 1000);\n }\n // Derived from https://github.com/EOSIO/eosio.contracts/blob/f6578c45c83ec60826e6a1eeb9ee71de85abe976/contracts/eosio.system/src/exchange_state.cpp#L96\n get_input(base, quote, value) {\n const result = (quote * value) / (base - value);\n if (result < 0) {\n return 0;\n }\n return result;\n }\n};\nRAMState = __decorate([\n Struct.type('ramstate')\n], RAMState);\nclass RAMAPI {\n constructor(parent) {\n this.parent = parent;\n }\n async get_state() {\n const response = await this.parent.api.v1.chain.get_table_rows({\n code: 'eosio',\n scope: 'eosio',\n table: 'rammarket',\n type: RAMState,\n });\n return response.rows[0];\n }\n}\n\nlet REXState = class REXState extends Struct {\n get reserved() {\n return Number(this.total_lent.units) / Number(this.total_lendable.units);\n }\n get symbol() {\n return this.total_lent.symbol;\n }\n get precision() {\n return this.total_lent.symbol.precision;\n }\n get value() {\n const factor = 10 ** this.total_unlent.symbol.precision;\n return (Number(this.total_lent.units\n .adding(this.total_unlent.units)\n .dividing(this.total_rex.units.dividing(factor))) / factor);\n }\n price_per(sample, unit = 1000) {\n // Sample token units\n const tokens = Asset.fromUnits(10000, this.symbol);\n // Spending 1 EOS (10000 units) on REX gives this many tokens\n const bancor = Number(tokens.units) / (this.total_rent.value / this.total_unlent.value);\n // The ratio of the number of tokens received vs the sampled values\n const unitPrice = bancor * (Number(sample.cpu) / BNPrecision);\n // The token units spent per unit\n const perunit = Number(tokens.units) / unitPrice;\n // Multiply the per unit cost by the units requested\n const cost = perunit * unit;\n // Converting to an Asset\n return cost / Math.pow(10, this.precision);\n }\n};\n__decorate([\n Struct.field('uint8')\n], REXState.prototype, \"version\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_lent\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_unlent\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_rent\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_lendable\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_rex\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"namebid_proceeds\", void 0);\n__decorate([\n Struct.field('uint64')\n], REXState.prototype, \"loan_num\", void 0);\nREXState = __decorate([\n Struct.type('rexstate')\n], REXState);\nclass REXAPI {\n constructor(parent) {\n this.parent = parent;\n }\n async get_state() {\n const response = await this.parent.api.v1.chain.get_table_rows({\n code: 'eosio',\n scope: 'eosio',\n table: 'rexpool',\n type: REXState,\n });\n return response.rows[0];\n }\n}\n\nconst BNPrecision = new BN(1000 * 1000);\nclass Resources {\n constructor(options) {\n // the account to use when sampling usage\n this.sampleAccount = 'b1';\n // token precision/symbol\n this.symbol = '4,EOS';\n this.v1 = {\n powerup: new PowerUpAPI(this),\n ram: new RAMAPI(this),\n rex: new REXAPI(this),\n };\n // Allow overriding of the sample account name\n if (options.sampleAccount) {\n this.sampleAccount = options.sampleAccount;\n }\n // Allow overriding of the system token symbol\n if (options.symbol) {\n this.symbol = options.symbol;\n }\n // Allow variations on how to specify the API configuration\n if (options.api) {\n this.api = options.api;\n }\n else if (options.url) {\n this.api = new APIClient({ provider: new FetchProvider(options.url, options) });\n }\n else {\n throw new Error('Missing url or api client');\n }\n }\n async getSampledUsage() {\n const account = await this.api.v1.chain.get_account(this.sampleAccount);\n const us = UInt128.from(account.cpu_limit.max.value.mul(BNPrecision));\n const byte = UInt128.from(account.net_limit.max.value.mul(BNPrecision));\n const cpu_weight = UInt128.from(account.cpu_weight.value);\n const net_weight = UInt128.from(account.net_weight.value);\n return {\n account,\n cpu: divCeil(us.value, cpu_weight.value),\n net: divCeil(byte.value, net_weight.value),\n };\n }\n}\nResources.__className = 'Resources';\nfunction divCeil(num, den) {\n let v = num.div(den);\n const zero = new BN(0);\n const one = new BN(1);\n if (num.mod(den).gt(zero)) {\n v = v.sub(one);\n }\n return UInt128.from(v);\n}\n\nexport { BNPrecision, Connector, ExchangeState, PowerUpAPI, PowerUpState, RAMAPI, RAMState, REXAPI, REXState, Resources };\n//# sourceMappingURL=eosio-resources.m.js.map\n","import {derived, Readable} from 'svelte/store'\nimport {API, Asset} from '@greymass/eosio'\nimport {Resources, SampleUsage, PowerUpState, RAMState, REXState} from '@greymass/eosio-resources'\nimport {activeBlockchain} from '~/store'\n\nimport {getClient} from '../../api-client'\nimport {ChainConfig, ChainFeatures, resourceFeatures} from '~/config'\n\nconst getResourceClient = (chain: ChainConfig) => {\n const api = getClient(chain)\n const options: any = {api}\n if (chain.resourceSampleAccount) {\n options.sampleAccount = chain.resourceSampleAccount\n }\n return new Resources(options)\n}\n\nexport const getSampleUsage = async (set: (v: any) => void, chain: ChainConfig) =>\n getResourceClient(chain)\n .getSampledUsage()\n .then((v) => set(v))\n .catch((e) => {\n // TODO: We should probably have some sort of error catcher for stuff like this?\n console.error(e)\n // Set to undefined, which is the same as uninitialized\n set(undefined)\n })\n\n// The AccountResponse representation of the sample account\nexport const sampleUsage: Readable = derived(\n [activeBlockchain],\n ([$activeBlockchain], set) => {\n if (\n $activeBlockchain &&\n Array.from($activeBlockchain.chainFeatures).some((r) => resourceFeatures.includes(r))\n ) {\n getSampleUsage(set, $activeBlockchain)\n const interval = setInterval(() => getSampleUsage(set, $activeBlockchain), 30000)\n return () => {\n clearInterval(interval)\n }\n }\n }\n)\n\nexport const getInfo = async (set: (v: any) => void, chain: ChainConfig) =>\n getClient(chain)\n .v1.chain.get_info()\n .then((result) => set(result))\n .catch((e) => {\n // TODO: We should probably have some sort of error catcher for stuff like this?\n console.error(e)\n // Set to undefined, which is the same as uninitialized\n set(undefined)\n })\n\nexport const info: Readable = derived(\n [activeBlockchain],\n ([$activeBlockchain], set) => {\n if ($activeBlockchain) {\n getInfo(set, $activeBlockchain)\n }\n }\n)\n\nexport const getPowerUpState = async (set: (v: any) => void, chain: ChainConfig) =>\n getResourceClient(chain)\n .v1.powerup.get_state()\n .then((result) => set(result))\n .catch((e) => {\n // TODO: We should probably have some sort of error catcher for stuff like this?\n console.error(e)\n // Set to undefined, which is the same as uninitialized\n set(undefined)\n })\n\n// The state of the PowerUp system\nexport const statePowerUp: Readable = derived(\n [activeBlockchain],\n ([$activeBlockchain], set) => {\n if ($activeBlockchain && $activeBlockchain.chainFeatures.has(ChainFeatures.PowerUp)) {\n getPowerUpState(set, $activeBlockchain)\n const interval = setInterval(() => getPowerUpState(set, $activeBlockchain), 30000)\n return () => {\n clearInterval(interval)\n }\n }\n }\n)\n\n// Rent 1ms of the networks CPU\nexport const msToRent: Readable = derived(activeBlockchain, ($activeBlockchain) => {\n if ($activeBlockchain.resourceSampleMilliseconds) {\n return $activeBlockchain.resourceSampleMilliseconds\n }\n return 1\n})\n\nexport const powerupPrice = derived(\n [msToRent, sampleUsage, statePowerUp, info],\n ([$msToRent, $sampleUsage, $statePowerUp, $info]) => {\n if ($msToRent && $sampleUsage && $statePowerUp) {\n return Asset.from(\n $statePowerUp.cpu.price_per_ms($sampleUsage, $msToRent, $info),\n '4,EOS'\n )\n }\n return Asset.from(0, '4,EOS')\n }\n)\n\nexport const stakingPrice = derived(\n [activeBlockchain, msToRent, sampleUsage],\n ([$activeBlockchain, $msToRent, $sampleUsage]) => {\n if ($msToRent && $sampleUsage) {\n const {account} = $sampleUsage\n const cpu_weight = Number(account.total_resources.cpu_weight.units)\n const cpu_limit = Number(account.cpu_limit.max.value)\n let price = cpu_weight / cpu_limit\n if ($activeBlockchain.resourceSampleMilliseconds) {\n price *= $activeBlockchain.resourceSampleMilliseconds\n }\n return Asset.fromUnits(price, $activeBlockchain.coreTokenSymbol)\n }\n return Asset.from(0, $activeBlockchain.coreTokenSymbol)\n }\n)\n\nexport const getREXState = async (set: (v: any) => void, chain: ChainConfig) =>\n getResourceClient(chain)\n .v1.rex.get_state()\n .then((result) => set(result))\n .catch((e) => {\n // TODO: We should probably have some sort of error catcher for stuff like this?\n console.error(e)\n // Set to undefined, which is the same as uninitialized\n set(undefined)\n })\n\n// The state of the REX system\nexport const stateREX: Readable = derived(\n [activeBlockchain],\n ([$activeBlockchain], set) => {\n if ($activeBlockchain && $activeBlockchain.chainFeatures.has(ChainFeatures.REX)) {\n getREXState(set, $activeBlockchain)\n const interval = setInterval(() => getREXState(set, $activeBlockchain), 30000)\n return () => {\n clearInterval(interval)\n }\n }\n }\n)\n\n// The price of CPU in the REX system\nexport const rexPrice = derived(\n [msToRent, sampleUsage, stateREX],\n ([$msToRent, $sampleUsage, $stateREX]) => {\n if ($msToRent && $sampleUsage && $stateREX) {\n return Asset.from($stateREX.price_per($sampleUsage, $msToRent * 30000), '4,EOS')\n }\n return Asset.from(0, '4,EOS')\n }\n)\n\n// The state of the REX system\nexport const stateRAM: Readable = derived(\n [activeBlockchain],\n ([$activeBlockchain], set) => {\n if ($activeBlockchain && $activeBlockchain.chainFeatures.has(ChainFeatures.BuyRAM)) {\n getRAMState(set, $activeBlockchain)\n const interval = setInterval(() => getRAMState(set, $activeBlockchain), 30000)\n return () => {\n clearInterval(interval)\n }\n }\n }\n)\n\nexport const getRAMState = async (set: (v: any) => void, chain: ChainConfig) =>\n getResourceClient(chain)\n .v1.ram.get_state()\n .then((result) => set(result))\n .catch((e) => {\n // TODO: We should probably have some sort of error catcher for stuff like this?\n console.error(e)\n // Set to undefined, which is the same as uninitialized\n set(undefined)\n })\n","\n\n{altToUse}\n","\n\n\n\n{#if src}\n {name}\n{/if}\n","\n\n\n\n
\n
Token
\n
Balance
\n
Price
\n
Value
\n
\n
\n","\n\n\n\n
{int}
\n
\n {#if dec}\n .{dec}\n {/if}\n
\n","\n\n\n\n{#if $token && balance}\n
\n
\n
\n
\n \n
\n
\n
\n \n {#if name}\n {name}\n {:else if $token}\n {$token.name}\n {:else}\n {balance.quantity.symbol.name}\n {/if}\n \n
\n {#if balance.quantity}\n \n {/if}\n
\n {#if $token.price}\n {fiatFormat($token.price, 4)}\n {/if}\n
\n
\n {#if $token.price}\n {fiatFormat($token.price * balance.quantity.value, 2)}\n {/if}\n
\n
\n
\n {#if transferable}\n \n {/if}\n
\n
\n \n
\n
\n
\n
\n
\n {#if $token.price}\n
\n
Value
\n
\n {fiatFormat($token.price * balance.quantity.value)}\n
\n
\n
\n
Price
\n
{fiatFormat($token.price)}
\n
\n {/if}\n
\n {#if transferable}\n \n {/if}\n
\n
\n{/if}\n","\n\n\n\n
\n \n {#if $systemTokenBalance}\n \n {/if}\n {#if $stakedBalance && $systemToken}\n \n {/if}\n {#if $rexBalance && $systemToken}\n \n {/if}\n {#if $records}\n {#each $records as balance}\n \n {/each}\n {/if}\n
\n","import {derived, writable} from 'svelte/store'\nimport type {Readable, Writable} from 'svelte/store'\nimport type {TinroRouteMeta} from 'tinro'\n\nimport {ABIDef, APIClient, PermissionLevel, TransactionHeader} from 'anchor-link'\nimport {AbiMap, ResolvedTransaction, SigningRequest} from 'eosio-signing-request'\n\nimport {ChainConfig, chainConfig} from '~/config'\nimport {activeSession} from '~/store'\n\nimport zlib from 'pako'\nimport {getClient} from '~/api-client'\n\n// The current route being passed in from the component\nexport let currentRoute = writable(undefined)\n\n// The chain configuration that matches the current request\nexport let currentChain: Writable = writable(undefined)\nlet currentChainConfig: ChainConfig | undefined\ncurrentChain.subscribe((value) => (currentChainConfig = value))\n\n// The API client to fulfill the request\nexport let apiClient: Readable = derived(currentChain, ($currentChain) => {\n if ($currentChain) {\n return getClient($currentChain.chainId)\n }\n})\n\n// The ABI Provider derived from the API Client to resolve requests\nexport let abiProvider: Readable = derived(apiClient, ($apiClient) => {\n if ($apiClient) {\n return {\n getAbi: async (account: any) => {\n return (await $apiClient.v1.chain.get_abi(account)).abi as ABIDef\n },\n }\n }\n})\n\n// The currently loaded request, derived from the current route\nexport const currentRequest: Readable = derived(\n currentRoute,\n ($currentRoute) => {\n if ($currentRoute) {\n return SigningRequest.from(`esr:${$currentRoute.params.payload}`, {\n zlib,\n })\n }\n }\n)\n\n// Set the current chain based on the current request\ncurrentRequest.subscribe((request) => {\n if (request) {\n const id = request.getChainId()\n if (!currentChainConfig || !currentChainConfig.chainId.equals(id)) {\n currentChain.set(chainConfig(id))\n }\n }\n})\n\n// The ABIs required for the current request\nexport const abis: Readable = derived(\n [abiProvider, currentRequest],\n ([$abiProvider, $currentRequest], set) => {\n if ($currentRequest && currentChainConfig) {\n $currentRequest.fetchAbis($abiProvider).then((abis) => set(abis))\n }\n }\n)\n\n// Whether or not this is a multichain request\nexport const multichain: Readable = derived(currentRequest, ($currentRequest) => {\n if ($currentRequest) {\n return $currentRequest.isMultiChain()\n }\n return false\n})\n\n// The current transaction resolved from the current request\nexport const currentTransaction: Readable = derived(\n [abis, activeSession, apiClient, currentRequest],\n ([$abis, $activeSession, $apiClient, $currentRequest], set) => {\n if ($apiClient && $abis && $currentRequest) {\n // Create a dummy permission level for resolution without an active session\n let auth: PermissionLevel = PermissionLevel.from({\n actor: 'test',\n permission: 'active',\n })\n // If an active session exists, use it instead\n if ($activeSession) {\n auth = $activeSession.auth\n }\n // Resolve the transaction for the interface to display\n $apiClient.v1.chain.get_info().then((info: any) => {\n const header: TransactionHeader = info.getTransactionHeader()\n set($currentRequest.resolveTransaction($abis, auth, header))\n })\n }\n return undefined\n }\n)\n","import {derived} from 'svelte/store'\nimport type {Readable} from 'svelte/store'\nimport type {AnyAction} from 'anchor-link'\n\nimport {currentTransaction} from './request'\n\nconst templates = [\n {\n name: 'newaccount',\n actions: ['eosio::newaccount', 'eosio::buyrambytes'],\n },\n]\n\nexport const currentTemplate: Readable = derived(\n currentTransaction,\n ($currentTransaction: any) => {\n if ($currentTransaction) {\n const actions = $currentTransaction.actions.map(\n (action: AnyAction) => `${action.account}::${action.name}`\n )\n const matching = templates.find(\n (template) => JSON.stringify(template.actions) === JSON.stringify(actions)\n )\n if (matching) {\n return matching.name\n }\n return 'default'\n }\n return 'loading'\n }\n)\n","\n\n\n\n
\n {#if QrCode}\n \n {/if}\n \n
\n","\n\n\n\n
\n \n\n {#if $chain && $session}\n {#if $chain.chainId.equals($session.chainId)}\n \n {:else}\n

Switch to an account on {$chain.name} to sign this transaction.

\n {/if}\n {/if}\n\n {#if $transaction}\n \n
{JSON.stringify($transaction, null, 4)}
\n
\n {/if}\n
\n","\n\n\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

Loading Request...

\n
\n","import {derived} from 'svelte/store'\nimport type {Readable} from 'svelte/store'\n\nimport {Resources, RAMState} from '@greymass/eosio-resources'\n\nimport {apiClient} from './request'\n\nexport let resourceClient: Readable = derived(apiClient, ($apiClient) => {\n if ($apiClient) {\n return new Resources({api: $apiClient})\n }\n})\n\nexport const stateRAM: Readable = derived(\n [resourceClient],\n ([$resourceClient], set) => {\n if ($resourceClient) {\n $resourceClient.v1.ram\n .get_state()\n .then((result) => set(result))\n .catch((e) => {\n // TODO: We should probably have some sort of error catcher for stuff like this?\n console.error(e)\n // Set to undefined, which is the same as uninitialized\n set(undefined)\n })\n }\n }\n)\n","\n\n\n\n{#if loading}\n \n{:else if $accountExists === true}\n
This account was already created!
\n{:else}\n
\n \n\n
\n

Account Creation Request

\n

Someone has requested the creation of a new account.

\n
\n\n
    \n {#if newaccount}\n
  • \n EOSIO Network\n {String($chain.name)}\n
  • \n {/if}\n {#if newaccount}\n
  • \n Account Name\n {String(newaccount.data.name)}\n
  • \n {/if}\n {#if buyram}\n
  • \n Purchase RAM\n {String(buyram.data.bytes)} bytes\n
  • \n {/if}\n
\n\n
\n {#if $chain}\n {#if $session}\n {#if $chain.chainId.equals($session.chainId)}\n \n {/if}\n {:else}\n

\n To approve this request, either scan the QR code above with a compatible\n wallet or use the button below to manually sign this request with Anchor.\n

\n
\n
\n{/if}\n","import {writable} from 'svelte/store'\n\nimport type {Asset, Name, PublicKey} from '@greymass/eosio'\n\nexport const enum Step {\n Token,\n Recipient,\n Amount,\n Confirm,\n Memo,\n Sending,\n Sent,\n Failed,\n Receive,\n}\n\nexport interface TransferData {\n step: Step\n backStep?: Step\n tokenKey?: string\n quantity?: Asset\n displaySuccessTx?: string\n memo?: string\n toAccount?: Name | undefined\n toAddress?: PublicKey | undefined\n}\n\nexport const transferData = writable({step: Step.Recipient})\n","import {writable, get} from 'svelte/store'\nimport {Asset, UInt64, LinkSession} from 'anchor-link'\nimport type {ChainConfig} from '~/config'\nimport {activeBlockchain, activeSession} from '~/store'\n\nlet interval: any\n\nexport const txFee = writable(undefined)\n\nexport function syncTxFee() {\n interval = setInterval(() => {\n fetchTxFee().catch((error) => {\n console.warn('An error occured while fetching FIO tx fee amount', error)\n })\n }, 15 * 60 * 1000)\n}\n\nexport function stopSyncTxFee() {\n clearInterval(interval)\n}\n\nexport async function fetchTxFee() {\n const session: LinkSession | undefined = get(activeSession)\n const blockchain: ChainConfig = get(activeBlockchain)\n\n let fee: Asset | undefined\n\n if (blockchain.id === 'fio') {\n const fees = await session?.client.v1.chain.get_table_rows({\n code: 'fio.fee',\n table: 'fiofees',\n scope: 'fio.fee',\n key_type: 'i64',\n index_position: 'primary',\n lower_bound: UInt64.from(5),\n upper_bound: UInt64.from(5),\n limit: 1,\n })\n\n fee = Asset.fromUnits(fees?.rows[0].suf_amount || 0, blockchain.coreTokenSymbol)\n }\n\n txFee.set(fee)\n}\n","\n\n\n\n
\n \n\n","\n\n
\n","import {AnyAction, APIClient, BlockTimestamp, Checksum256, Struct, UInt32} from '@greymass/eosio'\nimport {readable, ReadableResult} from 'svelte-result-store'\n\nimport {getClient} from '~/api-client'\nimport type {ChainConfig} from '~/config'\n\nexport interface TransactionStatus {\n status: 'pending' | 'executed' | 'irreversible'\n info?: TransactionInfo\n block_num?: UInt32\n block_time?: BlockTimestamp\n until_irreversible?: number\n}\n\nexport function followTransaction(id: Checksum256, chain: ChainConfig) {\n const client = getClient(chain)\n const ctx: PollContext = {interval: 10 * 1000}\n const tx = pollStore(null, () => getTransaction(id, client), ctx)\n return tx.map((result) => {\n if (result.value) {\n const {last_irreversible_block, block_num, trx: info, block_time} = result.value\n const until_irreversible = Math.max(\n 0,\n Number(block_num) - Number(last_irreversible_block)\n )\n const irreversible = until_irreversible === 0\n if (irreversible) {\n // stop polling once we have an irreversible transaction\n ctx.stop!()\n }\n return {\n value: {\n block_num,\n block_time,\n until_irreversible,\n info,\n status: irreversible ? 'irreversible' : info.receipt.status,\n },\n }\n }\n // unable to find tx, could try to parse the error here but our light api is\n // not consistent with nodeos api so it's a bit of a pain. for now assume any\n // error is a transaction not found\n return {\n value: {\n status: 'pending',\n },\n }\n })\n}\n\nexport function exporerUrl(id: Checksum256, chain: ChainConfig) {\n return `${chain.bloksUrl}/transaction/${id}`\n}\n\ninterface PollContext {\n interval: number\n stop?: () => void\n}\n\nfunction pollStore(initial: T, fn: () => Promise, ctx: PollContext): ReadableResult {\n return readable({value: initial}, (set, error) => {\n let running = true\n let timer: any\n const run = () => {\n const start = Date.now()\n fn()\n .then(set)\n .catch(error)\n .finally(() => {\n if (running) {\n const delta = Date.now() - start\n timer = setTimeout(run, Math.max(0, ctx.interval - delta))\n }\n })\n }\n run()\n ctx.stop = () => {\n running = false\n clearTimeout(timer)\n }\n return ctx.stop\n })\n}\n\n// FUTURE: this should be part of cores default api interfaces\ninterface TransactionTrace {}\ninterface TransactionReceipt {\n cpu_usage_us: number\n net_usage_words: number\n status: string\n}\ninterface TransactionInfo {\n receipt: TransactionReceipt\n trx: {\n actions: AnyAction[]\n context_free_actions: AnyAction[]\n context_free_data: []\n delay_sec: number\n expiration: string\n max_cpu_usage_ms: number\n max_net_usage_words: number\n ref_block_num: number\n ref_block_prefix: number\n signatures: string[]\n }\n}\n@Struct.type('get_transaction_response')\nclass GetTransactionResponse extends Struct {\n @Struct.field(Checksum256) id!: Checksum256\n @Struct.field(UInt32) block_num!: UInt32\n @Struct.field(BlockTimestamp) block_time!: BlockTimestamp\n @Struct.field(UInt32) last_irreversible_block!: UInt32\n @Struct.field('any?') traces?: TransactionTrace[]\n @Struct.field('any') trx!: TransactionInfo\n}\n\nasync function getTransaction(id: Checksum256, client: APIClient) {\n return client.call({\n path: '/v1/history/get_transaction',\n params: {traces: false, id},\n responseType: GetTransactionResponse,\n })\n}\n","\n\n\n\n
\n
\n Status\n \n {status.status}\n {#if status.status == 'executed'}\n     irreversible in ~{Math.ceil(countdown / 5) * 5 || 5}s\n {/if}\n \n
\n {#if status.block_num}\n
\n Block Number\n \n {bnFormatter.format(Number(status.block_num))}\n \n
\n {/if}\n {#if status.block_time}\n
\n Block Time\n \n {dateFormatter.format(status.block_time.toDate())}\n \n
\n {/if}\n {#if status.info}\n
\n Resource Usage\n \n CPU {(status.info.receipt.cpu_usage_us / 1000).toFixed(2)}ms\n \n     NET {status.info.receipt.net_usage_words * 8} bytes\n \n
\n {/if}\n
\n","\n\n\n\n
\n    {JSON.stringify(status, null, 4)}\n
\n","\n\n\n\n{#if $transaction_id}\n \n{:else if error}\n \n
\n \n

Transaction Failed

\n

{errorMessage}

\n
\n
\n {#if retryCallback}\n \n {/if}\n
\n
\n{:else}\n
\n \n \n{/if}\n","\n\n\n\n
\n \n
\n","\n\n\n\n\n","\n\n\n\n{#if !!errorMessage}\n
\n

\n {errorMessage}\n

\n
\n{/if}\n","\n\n\n\n
\n \n \n
\n","\n\n\n\n\n","export function validatePresence(value: string) {\n if (value.length === 0) {\n throw {\n valid: false,\n message: undefined,\n }\n }\n}\n","import {PublicKey} from 'anchor-link'\n\nexport function validatePublicKey(value: string) {\n try {\n PublicKey.from(value)\n } catch (error) {\n throw {\n valid: false,\n message: 'Invalid public key.',\n }\n }\n}\n","\n\n\n\n\n","\n\n\n\n
\n {#if balance && token}\n
\n To\n {#if $activeBlockchain && $activeBlockchain.id === 'fio'}\n \n {:else}\n \n {/if}\n \n {#if loading}\n \n {/if}\n {#if $transferData.backStep}\n Done\n {:else}\n Next\n {/if}\n \n \n {:else}\n No balance for this token to send!\n {/if}\n
\n","import {Asset} from '@greymass/eosio'\n\nexport function validateBalance(value: string, balance: Asset) {\n const {units} = Asset.from(Number(value), balance.symbol)\n if (Number(units) > Number(balance.units)) {\n throw {\n valid: false,\n message: 'Insufficient funds available.',\n }\n }\n}\n\nexport function validateIsNumber(value: string, symbol: Asset.Symbol) {\n const {units} = Asset.from(Number(value), symbol)\n const unitsAreNotNumber = isNaN(Number(units))\n\n if (unitsAreNotNumber) {\n throw {\n valid: false,\n message: 'Should be a number.',\n }\n }\n}\n\nexport function validateNonZero(value: string, symbol: Asset.Symbol) {\n const asset = Asset.from(Number(value), symbol)\n const isLessThanZero = asset.value <= 0\n\n if (isLessThanZero) {\n throw {\n valid: false,\n message: 'Should be greater than zero.',\n }\n }\n}\n","\n\n\n\n\n","\n\n\n\n{#if $display}\n
\n
\n {#if header}\n
\n

\n {header}\n

\n
\n {/if}\n
\n \n
\n {#if !hideCloseButton}\n
\n \n
\n {/if}\n
\n{/if}\n","\n\n\n\n\n
($displayModal = false)} class=\"close-button\">\n \n
\n

Select Token

\n
\n \n \n
\n \n \n \n \n \n\n {#if filteredTokens.length > 0}\n {#each filteredTokens as token}\n \n \n \n {/each}\n {:else}\n \n \n \n {/if}\n
Token Balance
\n changeToken(token)}\n {token}\n isTableRow\n />\n
\n

No tokens found...

\n
\n
\n
\n\n ($displayModal = true)} token={selectedToken} />\n","\n\n\n\n
\n {#if $balance}\n
\n Token\n
\n \n
\n Amount\n \n
\n {#if token && token.price}\n
≈ $ {(Number(amount) * token.price).toFixed(2)} USD
\n {/if}\n
\n Entire Balance\n
\n
\n \n {/if}\n \n {#if $transferData.backStep}\n Done\n {:else}\n Continue\n {/if}\n \n
\n","\n\n\n\n
\n \n
\n","\n\n\n\n
\n \n
\n","\n\n\n\n\n
\n

{header}

\n {#if subheader}\n

{subheader}

\n {/if}\n
\n\n
\n \n
\n {#if changeStep}\n \n {/if}\n
\n","\n\n\n\n\n {toAddress.toLegacyString($activeBlockchain?.coreTokenSymbol.name)}\n\n","\n\n\n\n\n {toAccount}\n\n","\n\n\n\n\n {quantity}\n\n","\n\n\n\n\n {txFee}\n\n\n\n {total}\n\n","\n\n\n\n\n{#if $transferData.toAddress}\n \n{/if}\n{#if $transferData.toAccount}\n \n{/if}\n{#if $transferData.quantity}\n \n{/if}\n{#if $transferData.quantity && $txFee}\n \n{/if}\n{#if $activeBlockchain && $activeBlockchain.id !== 'fio'}\n
\n Memo (Optional)\n
\n
\n \n
\n{/if}\n\n","\n\n\n\n\n