@tonconnect/ui 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -14
- package/dist/tonconnect-ui.min.js +28 -12
- package/dist/tonconnect-ui.min.js.map +1 -1
- package/lib/index.d.ts +17 -7
- package/lib/index.js +182 -118
- package/lib/index.js.map +1 -1
- package/lib/index.umd.js +182 -118
- package/lib/index.umd.js.map +1 -1
- package/package.json +8 -3
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../sdk/lib/esm/errors/ton-connect.error.js","../../sdk/lib/esm/errors/dapp/dapp-metadata.error.js","../../sdk/lib/esm/errors/protocol/events/connect/manifest-content-error.error.js","../../sdk/lib/esm/errors/protocol/events/connect/manifest-not-found.error.js","../../sdk/lib/esm/errors/wallet/wallet-already-connected.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-connected.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-support-feature.error.js","../../sdk/lib/esm/models/wallet/wallet-connection-source.js","../../sdk/lib/esm/errors/protocol/events/connect/user-rejects.error.js","../../sdk/lib/esm/errors/protocol/responses/bad-request.error.js","../../sdk/lib/esm/errors/protocol/responses/unknown-app.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-injected.error.js","../../sdk/lib/esm/errors/storage/localstorage-not-found.error.js","../../sdk/lib/esm/errors/wallets-manager/fetch-wallets.error.js","../../sdk/lib/esm/errors/address/wrong-address.error.js","../../sdk/lib/esm/errors/binary/parse-hex.error.js","../../sdk/lib/esm/errors/unknown.error.js","../../protocol/lib/esm/models/wallet-message/wallet-event/connect-event.js","../../protocol/lib/esm/models/wallet-message/wallet-response/send-transaction-rpc-response.js","../../protocol/lib/esm/models/CHAIN.js","../../../node_modules/tweetnacl-util/nacl-util.js","../../protocol/lib/esm/utils/base64.js","../../protocol/lib/esm/utils/binary.js","../../protocol/lib/esm/utils/web-api.js","../__vite-browser-external","../../../node_modules/tweetnacl/nacl-fast.js","../../protocol/lib/esm/crypto/session-crypto.js","../../sdk/lib/esm/parsers/connect-errors-parser.js","../../sdk/lib/esm/parsers/rpc-parser.js","../../sdk/lib/esm/parsers/send-transaction-parser.js","../../sdk/lib/esm/storage/http-bridge-gateway-storage.js","../../sdk/lib/esm/utils/url.js","../../sdk/lib/esm/provider/bridge/bridge-gateway.js","../../sdk/lib/esm/storage/bridge-connection-storage.js","../../sdk/lib/esm/resources/protocol.js","../../sdk/lib/esm/provider/bridge/bridge-provider.js","../../sdk/lib/esm/utils/web-api.js","../../sdk/lib/esm/provider/injected/injected-provider.js","../../sdk/lib/esm/storage/default-storage.js","../../sdk/lib/esm/models/wallet/wallet-info.js","../../sdk/lib/esm/wallets-list-manager.js","../../sdk/lib/esm/ton-connect.js","../../sdk/lib/esm/utils/address.js","../../../node_modules/solid-js/dist/solid.js","../../../node_modules/solid-js/web/dist/web.js","../src/app/state/modals-state.ts","../../../node_modules/goober/dist/goober.modern.js","../../../node_modules/solid-styled-components/src/index.js","../src/app/i18n.ts","../src/app/state/connector.context.ts","../../../node_modules/solid-js/store/dist/store.js","../src/models/THEME.ts","../src/app/styles/default-colors.ts","../../../node_modules/deepmerge/dist/cjs.js","../node_modules/is-plain-object/dist/is-plain-object.mjs","../src/app/utils/options.ts","../src/app/state/theme-state.ts","../src/app/styles/global-styles.tsx","../src/app/utils/css.ts","../src/app/components/button/style.ts","../src/app/components/button/index.tsx","../../../node_modules/classnames/index.js","../../../node_modules/solid-transition-group/dist/solid-transition-group.js","../src/app/directives/click-outside.tsx","../src/app/directives/key-pressed.tsx","../src/app/styles/media.ts","../src/app/components/icons/arrow-icon.tsx","../src/app/components/icons/close-icon.tsx","../src/app/components/icon-button/style.ts","../src/app/components/icon-button/index.tsx","../src/app/components/modal/style.ts","../src/app/components/modal/index.tsx","../../../node_modules/@solid-primitives/i18n/dist/index.js","../src/app/components/typography/h1/style.ts","../src/app/components/typography/h1/index.tsx","../src/app/components/typography/h2/style.ts","../src/app/components/typography/h2/index.tsx","../src/app/components/typography/h3/style.ts","../src/app/components/typography/h3/index.tsx","../src/app/components/typography/text/style.ts","../src/app/components/typography/text/index.tsx","../src/app/components/icons/ton-icon.tsx","../src/app/components/icons/success-icon.tsx","../src/app/components/icons/error-icon.tsx","../src/app/components/icons/loader-icon.tsx","../src/app/state/ton-connect-ui.context.ts","../src/app/components/icons/copy-icon.tsx","../src/app/components/icons/disconnect-icon.tsx","../src/app/utils/copy-to-clipboard.ts","../src/app/views/account-button/account-button-dropdown/style.ts","../src/app/views/account-button/account-button-dropdown/index.tsx","../src/app/components/notification/style.ts","../src/app/components/notification/index.tsx","../src/app/views/account-button/notifications/confirm-operation-notification/style.ts","../src/app/views/account-button/notifications/confirm-operation-notification/index.tsx","../src/app/views/account-button/notifications/error-transaction-notification/style.ts","../src/app/views/account-button/notifications/error-transaction-notification/index.tsx","../src/app/views/account-button/notifications/success-transaction-notification/style.ts","../src/app/views/account-button/notifications/success-transaction-notification/index.tsx","../src/app/views/account-button/notifications/style.ts","../src/app/views/account-button/notifications/index.tsx","../src/app/views/account-button/style.ts","../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../../../node_modules/solid-floating-ui/dist/esm/production/index.mjs","../src/app/views/account-button/index.tsx","../src/app/components/qr-code/style.ts","../../../node_modules/qrcode-generator/qrcode.js","../src/app/components/qr-code/index.tsx","../src/app/components/typography/Translation/index.tsx","../src/app/views/modals/wallets-modal/qr-code-modal/style.ts","../src/app/utils/web-api.ts","../src/app/views/modals/wallets-modal/qr-code-modal/index.tsx","../src/app/views/modals/wallets-modal/select-wallet-modal/wallet-item/style.ts","../src/app/views/modals/wallets-modal/select-wallet-modal/wallet-item/index.tsx","../src/app/views/modals/wallets-modal/select-wallet-modal/style.ts","../src/app/views/modals/wallets-modal/select-wallet-modal/index.tsx","../src/app/views/modals/wallets-modal/style.ts","../src/app/state/app.state.ts","../src/app/utils/wallets.ts","../src/app/views/modals/wallets-modal/wallets-modal.tsx","../src/app/views/modals/actions-modal/action-modal/style.ts","../src/app/views/modals/actions-modal/action-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-transaction-modal/style.ts","../src/app/views/modals/actions-modal/confirm-transaction-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-canceled-modal/style.ts","../src/app/views/modals/actions-modal/transaction-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-sent-modal/style.ts","../src/app/views/modals/actions-modal/transaction-sent-modal/index.tsx","../src/app/views/modals/actions-modal/actions-modal.tsx","../src/app/App.tsx","../src/app/widget-controller.tsx","../src/errors/ton-connect-ui.error.ts","../src/storage.ts","../src/ton-connect-ui.ts"],"sourcesContent":["/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nexport class TonConnectError extends Error {\n constructor(message, options) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\nTonConnectError.prefix = '[TON_CONNECT_SDK_ERROR]';\n//# sourceMappingURL=ton-connect.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n//# sourceMappingURL=dapp-metadata.error.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n constructor(message) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\nManifestContentErrorError.additionalMessage = '\\nPassed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n//# sourceMappingURL=manifest-content-error.error.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n constructor(message) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\nManifestNotFoundError.additionalMessage = '\\nManifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n//# sourceMappingURL=manifest-not-found.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-already-connected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nexport class WalletNotConnectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-connected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nexport class WalletNotSupportFeatureError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-support-feature.error.js.map","export function isWalletConnectionSourceJS(value) {\n return 'jsBridgeKey' in value;\n}\n//# sourceMappingURL=wallet-connection-source.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n//# sourceMappingURL=user-rejects.error.js.map","import { TonConnectError } from \"../../ton-connect.error\";\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n//# sourceMappingURL=bad-request.error.js.map","import { TonConnectError } from \"../../ton-connect.error\";\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nexport class UnknownAppError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n//# sourceMappingURL=unknown-app.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nexport class WalletNotInjectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-injected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nexport class LocalstorageNotFoundError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n//# sourceMappingURL=localstorage-not-found.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n//# sourceMappingURL=fetch-wallets.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed address is in incorrect format.\n */\nexport class WrongAddressError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WrongAddressError.prototype);\n }\n}\n//# sourceMappingURL=wrong-address.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed hex is in incorrect format.\n */\nexport class ParseHexError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ParseHexError.prototype);\n }\n}\n//# sourceMappingURL=parse-hex.error.js.map","import { TonConnectError } from \"./ton-connect.error\";\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n//# sourceMappingURL=unknown.error.js.map","export var CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_NOT_FOUND_ERROR\"] = 2] = \"MANIFEST_NOT_FOUND_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_CONTENT_ERROR\"] = 3] = \"MANIFEST_CONTENT_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES || (CONNECT_EVENT_ERROR_CODES = {}));\nexport var CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES || (CONNECT_ITEM_ERROR_CODES = {}));\n","export var SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES || (SEND_TRANSACTION_ERROR_CODES = {}));\n","export var CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN || (CHAIN = {}));\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","import nacl from 'tweetnacl-util';\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = nacl.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return nacl.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = nacl.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return nacl.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(nacl.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexport const Base64 = {\n encode,\n decode\n};\n","export function concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nexport function splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nexport function toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexport function hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\n","export function isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\n","export default {}","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","import { concatUint8Arrays, hexToByteArray, splitToUint8Arrays, toHexString, isNode } from '../utils';\nimport nacl from 'tweetnacl';\nif (isNode()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nexport class SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = toHexString(this.keyPair.publicKey);\n }\n createKeypair() {\n return nacl.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: hexToByteArray(keyPair.publicKey),\n secretKey: hexToByteArray(keyPair.secretKey)\n };\n }\n createNonce() {\n const buffer = new Uint8Array(this.nonceLength);\n return crypto.getRandomValues(buffer);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = nacl.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return concatUint8Arrays(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = splitToUint8Arrays(message, this.nonceLength);\n const decrypted = nacl.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error(`Decryption error: \\n message: ${message.toString()} \\n sender pubkey: ${senderPublicKey.toString()} \\n keypair pubkey: ${this.keyPair.publicKey.toString()} \\n keypair secretkey: ${this.keyPair.secretKey.toString()}`);\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: toHexString(this.keyPair.publicKey),\n secretKey: toHexString(this.keyPair.secretKey)\n };\n }\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from \"../errors\";\nimport { ManifestContentErrorError } from \"../errors/protocol/events/connect/manifest-content-error.error\";\nimport { ManifestNotFoundError } from \"../errors/protocol/events/connect/manifest-not-found.error\";\nimport { UnknownError } from \"../errors/unknown.error\";\nimport { CONNECT_EVENT_ERROR_CODES } from '@tonconnect/protocol';\nconst connectEventErrorsCodes = {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n};\nclass ConnectErrorsParser {\n parseError(error) {\n let ErrorConstructor = UnknownError;\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n return new ErrorConstructor(error.message);\n }\n}\nexport const connectErrorsParser = new ConnectErrorsParser();\n//# sourceMappingURL=connect-errors-parser.js.map","export class RpcParser {\n isError(response) {\n return 'error' in response;\n }\n}\n//# sourceMappingURL=rpc-parser.js.map","import { SEND_TRANSACTION_ERROR_CODES } from '@tonconnect/protocol';\nimport { BadRequestError, UnknownAppError, UserRejectsError } from \"../errors\";\nimport { UnknownError } from \"../errors/unknown.error\";\nimport { RpcParser } from \"./rpc-parser\";\nconst sendTransactionErrors = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\nclass SendTransactionParser extends RpcParser {\n convertToRpcRequest(request) {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n parseAndThrowError(response) {\n let ErrorConstructor = UnknownError;\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n throw new ErrorConstructor(response.error.message);\n }\n convertFromRpcResponse(rpcResponse) {\n return {\n boc: rpcResponse.result\n };\n }\n}\nexport const sendTransactionParser = new SendTransactionParser();\n//# sourceMappingURL=send-transaction-parser.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nexport class HttpBridgeGatewayStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_http-bridge-gateway';\n }\n storeLastEventId(lastEventId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.setItem(this.storeKey, lastEventId);\n });\n }\n removeLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n return stored;\n });\n }\n}\n//# sourceMappingURL=http-bridge-gateway-storage.js.map","export function removeUrlLastSlash(url) {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n return url;\n}\nexport function addPathToUrl(url, path) {\n return removeUrlLastSlash(url) + '/' + path;\n}\n//# sourceMappingURL=url.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../../errors\";\nimport { HttpBridgeGatewayStorage } from \"../../storage/http-bridge-gateway-storage\";\nimport { addPathToUrl } from \"../../utils/url\";\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n }\n catch (err) {\n console.error(err);\n }\n}\nexport class BridgeGateway {\n constructor(storage, bridgeUrl, sessionId, listener, errorsListener) {\n this.bridgeUrl = bridgeUrl;\n this.sessionId = sessionId;\n this.listener = listener;\n this.errorsListener = errorsListener;\n this.ssePath = 'events';\n this.postPath = 'message';\n this.heartbeatMessage = 'heartbeat';\n this.defaultTtl = 300;\n this.isClosed = false;\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n registerSession() {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n const lastEventId = yield this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n this.eventSource = new EventSource(url.toString());\n return new Promise((resolve, reject) => {\n this.eventSource.onerror = reject;\n this.eventSource.onopen = () => {\n this.eventSource.onerror = this.errorsHandler.bind(this);\n this.eventSource.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n });\n }\n send(message, receiver, ttl) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n yield fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n });\n }\n close() {\n var _a;\n this.isClosed = true;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n }\n errorsHandler(e) {\n var _a, _b;\n if (!this.isClosed) {\n if (((_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.readyState) === EventSource.CLOSED) {\n this.eventSource.close();\n this.registerSession();\n return;\n }\n if (((_b = this.eventSource) === null || _b === void 0 ? void 0 : _b.readyState) === EventSource.CONNECTING) {\n console.debug('[TON_CONNET_SDK_ERROR]: Bridge error', JSON.stringify(e));\n return;\n }\n this.errorsListener(e);\n }\n }\n messagesHandler(e) {\n return __awaiter(this, void 0, void 0, function* () {\n if (e.data === this.heartbeatMessage) {\n return;\n }\n yield this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n if (!this.isClosed) {\n let bridgeIncomingMessage;\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n }\n catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n this.listener(bridgeIncomingMessage);\n }\n });\n }\n}\n//# sourceMappingURL=bridge-gateway.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../errors\";\nexport class BridgeConnectionStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_bridge-connection';\n }\n storeConnection(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n const rawSession = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n const rawConnection = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n });\n }\n removeConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n if (connection.type === 'injected') {\n return connection;\n }\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: {\n sessionCrypto,\n walletConnectionSource: connection.session.walletConnectionSource,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n });\n }\n getHttpConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read HTTP connection source while nothing is stored');\n }\n if (connection.type === 'injected') {\n throw new TonConnectError('Trying to read HTTP connection source while injected connection is stored');\n }\n return connection;\n });\n }\n getInjectedConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read Injected bridge connection source while nothing is stored');\n }\n if ((connection === null || connection === void 0 ? void 0 : connection.type) === 'http') {\n throw new TonConnectError('Trying to read Injected bridge connection source while HTTP connection is stored');\n }\n return connection;\n });\n }\n storedConnectionType() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n return connection.type;\n });\n }\n}\n//# sourceMappingURL=bridge-connection-storage.js.map","export const PROTOCOL_VERSION = 2;\n//# sourceMappingURL=protocol.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Base64, SessionCrypto, hexToByteArray } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../../errors/ton-connect.error\";\nimport { BridgeGateway } from \"./bridge-gateway\";\nimport { BridgeConnectionStorage } from \"../../storage/bridge-connection-storage\";\nimport { PROTOCOL_VERSION } from \"../../resources/protocol\";\nexport class BridgeProvider {\n constructor(storage, walletConnectionSource) {\n this.storage = storage;\n this.walletConnectionSource = walletConnectionSource;\n this.type = 'http';\n this.pendingRequests = new Map();\n this.nextRequestId = 0;\n this.session = null;\n this.bridge = null;\n this.listeners = [];\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n });\n }\n connect(message) {\n var _a;\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n const sessionCrypto = new SessionCrypto();\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n this.bridge = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n this.bridge.registerSession();\n return this.generateUniversalLink(message);\n }\n restoreConnection() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n const storedConnection = yield this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n this.session = storedConnection.session;\n this.bridge = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, storedConnection.session.sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n yield this.bridge.registerSession();\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n });\n }\n sendRequest(request) {\n return new Promise((resolve, reject) => {\n const id = this.nextRequestId;\n this.nextRequestId++;\n if (!this.bridge || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n const encodedRequest = this.session.sessionCrypto.encrypt(JSON.stringify(Object.assign(Object.assign({}, request), { id })), hexToByteArray(this.session.walletPublicKey));\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n closeConnection() {\n var _a;\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n this.listeners = [];\n this.session = null;\n this.bridge = null;\n }\n disconnect() {\n var _a;\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n listen(callback) {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n gatewayListener(bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n const walletMessage = JSON.parse(this.session.sessionCrypto.decrypt(Base64.decode(bridgeIncomingMessage.message).toUint8Array(), hexToByteArray(bridgeIncomingMessage.from)));\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n throw new TonConnectError(`Response id ${id} doesn't match any request's id`);\n }\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n if (walletMessage.event === 'connect') {\n yield this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n if (walletMessage.event === 'disconnect') {\n yield this.removeBridgeAndSession();\n }\n this.listeners.forEach(listener => listener(walletMessage));\n });\n }\n gatewayErrorsListener(e) {\n return __awaiter(this, void 0, void 0, function* () {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n });\n }\n updateSession(connectEvent, walletPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = Object.assign(Object.assign({}, this.session), { walletPublicKey });\n const tonAddrItem = connectEvent.payload.items.find(item => item.name === 'ton_addr');\n const connectEventToSave = Object.assign(Object.assign({}, connectEvent), { payload: Object.assign(Object.assign({}, connectEvent.payload), { items: [tonAddrItem] }) });\n yield this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n });\n }\n removeBridgeAndSession() {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = null;\n this.bridge = null;\n yield this.connectionStorage.removeConnection();\n });\n }\n generateUniversalLink(message) {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', PROTOCOL_VERSION.toString());\n url.searchParams.append('id', this.session.sessionCrypto.sessionId);\n url.searchParams.append('r', JSON.stringify(message));\n return url.toString();\n }\n}\n//# sourceMappingURL=bridge-provider.js.map","export function getWindow() {\n if (typeof window === 'undefined') {\n return undefined;\n }\n return window;\n}\nexport function getDocument() {\n if (typeof document === 'undefined') {\n return undefined;\n }\n return document;\n}\nexport function getWebPageManifest() {\n var _a;\n const origin = (_a = getWindow()) === null || _a === void 0 ? void 0 : _a.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n return '';\n}\n//# sourceMappingURL=web-api.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { WalletNotInjectedError } from \"../../errors/wallet/wallet-not-injected.error\";\nimport { BridgeConnectionStorage } from \"../../storage/bridge-connection-storage\";\nimport { getWindow } from \"../../utils/web-api\";\nimport { PROTOCOL_VERSION } from \"../../resources/protocol\";\nexport class InjectedProvider {\n constructor(storage, injectedWalletKey) {\n this.injectedWalletKey = injectedWalletKey;\n this.type = 'injected';\n this.unsubscribeCallback = null;\n this.listenSubscriptions = false;\n this.listeners = [];\n const window = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n this.connectionStorage = new BridgeConnectionStorage(storage);\n this.injectedWallet = window[injectedWalletKey].tonconnect;\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(storage, connection.jsBridgeKey);\n });\n }\n static isWalletInjected(injectedWalletKey) {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n static isInsideWalletBrowser(injectedWalletKey) {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey].tonconnect.isWalletBrowser;\n }\n return false;\n }\n static isWindowContainsWallet(window, injectedWalletKey) {\n return (!!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey] === 'object' &&\n 'tonconnect' in window[injectedWalletKey]);\n }\n connect(message) {\n this._connect(PROTOCOL_VERSION, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const connectEvent = yield this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listeners.forEach(listener => listener(connectEvent));\n }\n else {\n yield this.connectionStorage.removeConnection();\n }\n }\n catch (e) {\n yield this.connectionStorage.removeConnection();\n console.error(e);\n }\n });\n }\n closeConnection() {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n disconnect() {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return this.connectionStorage.removeConnection();\n }\n closeAllListeners() {\n var _a;\n this.listenSubscriptions = false;\n this.listeners = [];\n (_a = this.unsubscribeCallback) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n listen(eventsCallback) {\n this.listeners.push(eventsCallback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n sendRequest(request) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.injectedWallet.send(Object.assign(Object.assign({}, request), { id: '0' }));\n });\n }\n _connect(protocolVersion, message) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const connectEvent = yield this.injectedWallet.connect(protocolVersion, message);\n if (connectEvent.event === 'connect') {\n yield this.updateSession();\n this.makeSubscriptions();\n }\n this.listeners.forEach(listener => listener(connectEvent));\n }\n catch (e) {\n console.debug(e);\n const connectEventError = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e === null || e === void 0 ? void 0 : e.toString()\n }\n };\n this.listeners.forEach(listener => listener(connectEventError));\n }\n });\n }\n makeSubscriptions() {\n this.listenSubscriptions = true;\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n updateSession() {\n return this.connectionStorage.storeConnection({\n type: 'injected',\n jsBridgeKey: this.injectedWalletKey\n });\n }\n}\nInjectedProvider.window = getWindow();\n//# sourceMappingURL=injected-provider.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { LocalstorageNotFoundError } from \"../errors/storage/localstorage-not-found.error\";\nimport { getWindow } from \"../utils/web-api\";\nexport class DefaultStorage {\n constructor() {\n const window = getWindow();\n if (!(window === null || window === void 0 ? void 0 : window.localStorage)) {\n throw new LocalstorageNotFoundError();\n }\n this.window = window;\n }\n getItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(this.window.localStorage.getItem(key));\n });\n }\n removeItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n });\n }\n setItem(key, value) {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n//# sourceMappingURL=default-storage.js.map","export function isWalletInfoInjected(value) {\n return 'jsBridgeKey' in value;\n}\n//# sourceMappingURL=wallet-info.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FetchWalletsError } from \"./errors/wallets-manager/fetch-wallets.error\";\nimport { isWalletInfoInjected } from \"./models/wallet/wallet-info\";\nimport { InjectedProvider } from \"./provider/injected/injected-provider\";\nexport class WalletsListManager {\n constructor(walletsListSource) {\n this.walletsListCache = null;\n this.walletsListSource = 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n if (walletsListSource) {\n this.walletsListSource = walletsListSource;\n }\n }\n getWallets() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n return this.walletsListCache;\n });\n }\n getEmbeddedWallet() {\n return __awaiter(this, void 0, void 0, function* () {\n const walletsList = yield this.getWallets();\n const embeddedWallets = walletsList.filter(item => isWalletInfoInjected(item) && item.embedded);\n if (embeddedWallets.length !== 1) {\n return null;\n }\n return embeddedWallets[0];\n });\n }\n fetchWalletsList() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const walletsResponse = yield fetch(this.walletsListSource);\n const walletsList = yield walletsResponse.json();\n if (!Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n }\n catch (e) {\n throw new FetchWalletsError(e);\n }\n });\n }\n walletConfigDTOListToWalletConfigList(walletConfigDTO) {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n };\n walletConfigDTO.bridge.forEach(bridge => {\n if (bridge.type === 'sse') {\n walletConfig.bridgeUrl = bridge.url;\n walletConfig.universalLink =\n walletConfigDTO.universal_url;\n walletConfig.deepLink = walletConfigDTO.deepLink;\n }\n if (bridge.type === 'js') {\n const jsBridgeKey = bridge.key;\n walletConfig.jsBridgeKey = jsBridgeKey;\n walletConfig.injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n walletConfig.embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n });\n return walletConfig;\n });\n }\n isCorrectWalletConfigDTO(value) {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n if (!('bridge' in value) ||\n !Array.isArray(value.bridge) ||\n !value.bridge.length) {\n return false;\n }\n const bridge = value.bridge;\n if (bridge.some(item => !item || typeof item !== 'object' || !('type' in item))) {\n return false;\n }\n const sseBridge = bridge.find(item => item.type === 'sse');\n if (sseBridge) {\n if (!('url' in sseBridge) ||\n !sseBridge.url ||\n !value.universal_url) {\n return false;\n }\n }\n const jsBridge = bridge.find(item => item.type === 'js');\n if (jsBridge) {\n if (!('key' in jsBridge) || !jsBridge.key) {\n return false;\n }\n }\n return true;\n }\n}\n//# sourceMappingURL=wallets-list-manager.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { DappMetadataError } from \"./errors/dapp/dapp-metadata.error\";\nimport { ManifestContentErrorError } from \"./errors/protocol/events/connect/manifest-content-error.error\";\nimport { ManifestNotFoundError } from \"./errors/protocol/events/connect/manifest-not-found.error\";\nimport { TonConnectError } from \"./errors/ton-connect.error\";\nimport { WalletAlreadyConnectedError } from \"./errors/wallet/wallet-already-connected.error\";\nimport { WalletNotConnectedError } from \"./errors/wallet/wallet-not-connected.error\";\nimport { WalletNotSupportFeatureError } from \"./errors/wallet/wallet-not-support-feature.error\";\nimport { isWalletConnectionSourceJS } from \"./models/wallet/wallet-connection-source\";\nimport { connectErrorsParser } from \"./parsers/connect-errors-parser\";\nimport { sendTransactionParser } from \"./parsers/send-transaction-parser\";\nimport { BridgeProvider } from \"./provider/bridge/bridge-provider\";\nimport { InjectedProvider } from \"./provider/injected/injected-provider\";\nimport { BridgeConnectionStorage } from \"./storage/bridge-connection-storage\";\nimport { DefaultStorage } from \"./storage/default-storage\";\nimport { getWebPageManifest } from \"./utils/web-api\";\nimport { WalletsListManager } from \"./wallets-list-manager\";\nexport class TonConnect {\n constructor(options) {\n this.walletsList = new WalletsListManager();\n this._wallet = null;\n this.provider = null;\n this.statusChangeSubscriptions = [];\n this.statusChangeErrorSubscriptions = [];\n this.dappSettings = {\n manifestUrl: (options === null || options === void 0 ? void 0 : options.manifestUrl) || getWebPageManifest(),\n storage: (options === null || options === void 0 ? void 0 : options.storage) || new DefaultStorage()\n };\n this.walletsList = new WalletsListManager(options === null || options === void 0 ? void 0 : options.walletsListSource);\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError('Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest');\n }\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n /**\n * Returns available wallets list.\n */\n static getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Shows if the wallet is connected right now.\n */\n get connected() {\n return this._wallet !== null;\n }\n /**\n * Current connected account or null if no account is connected.\n */\n get account() {\n var _a;\n return ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.account) || null;\n }\n /**\n * Current connected wallet or null if no account is connected.\n */\n get wallet() {\n return this._wallet;\n }\n set wallet(value) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n /**\n * Returns available wallets list.\n */\n getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n onStatusChange(callback, errorsHandler) {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(item => item !== callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(item => item !== errorsHandler);\n }\n };\n }\n connect(wallet, request) {\n var _a;\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n (_a = this.provider) === null || _a === void 0 ? void 0 : _a.closeConnection();\n this.provider = this.createProvider(wallet);\n return this.provider.connect(this.createConnectRequest(request));\n }\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const [bridgeConnectionType, embeddedWallet] = yield Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = yield BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = yield InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = yield this.createProvider(embeddedWallet);\n }\n else {\n return;\n }\n }\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n });\n }\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n sendTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this.checkConnection();\n this.checkFeatureSupport('SendTransaction');\n const { validUntil } = transaction, tx = __rest(transaction, [\"validUntil\"]);\n const response = yield this.provider.sendRequest(sendTransactionParser.convertToRpcRequest(Object.assign(Object.assign({}, tx), { valid_until: validUntil })));\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n return sendTransactionParser.convertFromRpcResponse(response);\n });\n }\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n yield this.provider.disconnect();\n this.onWalletDisconnected();\n });\n }\n createProvider(wallet) {\n let provider;\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(this.dappSettings.storage, wallet.jsBridgeKey);\n }\n else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n walletEventsListener(e) {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n onWalletConnected(connectEvent) {\n const tonAccountItem = connectEvent.items.find(item => item.name === 'ton_addr');\n const tonProofItem = connectEvent.items.find(item => item.name === 'ton_proof');\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n const wallet = {\n device: connectEvent.device,\n provider: this.provider.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit\n }\n };\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n this.wallet = wallet;\n }\n onWalletConnectError(connectEventError) {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n console.debug(error);\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n onWalletDisconnected() {\n this.wallet = null;\n }\n checkConnection() {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n checkFeatureSupport(feature) {\n var _a;\n if (!((_a = this.wallet) === null || _a === void 0 ? void 0 : _a.device.features.includes(feature))) {\n throw new WalletNotSupportFeatureError();\n }\n }\n createConnectRequest(request) {\n const items = [\n {\n name: 'ton_addr'\n }\n ];\n if (request === null || request === void 0 ? void 0 : request.tonProof) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\nTonConnect.walletsList = new WalletsListManager();\n/**\n * Check if specified wallet is injected and available to use with the app.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isWalletInjected = (walletJSKey) => InjectedProvider.isWalletInjected(walletJSKey);\n/**\n * Check if the app is opened inside specified wallet's browser.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isInsideWalletBrowser = (walletJSKey) => InjectedProvider.isInsideWalletBrowser(walletJSKey);\n//# sourceMappingURL=ton-connect.js.map","import { WrongAddressError, ParseHexError } from \"../errors\";\nimport { Base64 } from '@tonconnect/protocol';\nconst bounceableTag = 0x11;\nconst testOnlyTag = 0x80;\n/**\n * Converts raw TON address to bounceable user-friendly format. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n * @param hexAddress raw TON address formatted as \"0:<hex string without 0x>\".\n * @param [testOnly=false] convert address to test-only form. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n */\nexport function toUserFriendlyAddress(hexAddress, testOnly = false) {\n const { wc, hex } = parseHexAddress(hexAddress);\n let tag = bounceableTag;\n if (testOnly) {\n tag |= testOnlyTag;\n }\n const addr = new Int8Array(34);\n addr[0] = tag;\n addr[1] = wc;\n addr.set(hex, 2);\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n let addressBase64 = Base64.encode(addressWithChecksum);\n return addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction parseHexAddress(hexAddress) {\n if (!hexAddress.includes(':')) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\".`);\n }\n const parts = hexAddress.split(':');\n if (parts.length !== 2) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\" only once.`);\n }\n const wc = parseInt(parts[0]);\n if (wc !== 0 && wc !== -1) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. WC must be eq 0 or -1, but ${wc} received.`);\n }\n const hex = parts[1];\n if ((hex === null || hex === void 0 ? void 0 : hex.length) !== 64) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Hex part must be 64bytes length, but ${hex === null || hex === void 0 ? void 0 : hex.length} received.`);\n }\n return {\n wc,\n hex: hexToBytes(hex)\n };\n}\nfunction crc16(data) {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1;\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\nconst toByteMap = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = '0' + s;\n }\n toByteMap[s] = ord;\n}\nfunction hexToBytes(hex) {\n hex = hex.toLowerCase();\n const length2 = hex.length;\n if (length2 % 2 !== 0) {\n throw new ParseHexError('Hex string must have length a multiple of 2: ' + hex);\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const doubled = i * 2;\n const hexSubstring = hex.substring(doubled, doubled + 2);\n if (!toByteMap.hasOwnProperty(hexSubstring)) {\n throw new ParseHexError('Invalid hex character: ' + hexSubstring);\n }\n result[i] = toByteMap[hexSubstring];\n }\n return result;\n}\n//# sourceMappingURL=address.js.map","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return { ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner || owner\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n resolved = true;\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (!err) setValue(() => v);\n setState(err ? \"errored\" : \"ready\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value(),\n err = error();\n if (err && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(p && \"then\" in p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n Owner = o;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {\n if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (TransitionRunning) o.tState = STALE;else o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) Transition && Transition.running ? node.tState = STALE : node.state = STALE;\n handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if (!runningTransition && node.state === 0 || runningTransition && node.tState === 0) return;\n if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (!runningTransition && node.state || runningTransition && node.tState) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if (!runningTransition && node.state === STALE || runningTransition && node.tState === STALE) {\n updateComputation(node);\n } else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!Updates) Effects = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n if (!runningTransition && source.state === STALE || runningTransition && source.tState === STALE) {\n if (source !== ignore) runTop(source);\n } else if (!runningTransition && source.state === PENDING || runningTransition && source.tState === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!runningTransition && !o.state || runningTransition && !o.tState) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = 0; i < node.tOwned.length; i++) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = 0; i < node.owned.length; i++) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error || typeof err === \"string\") return err;\n return new Error(\"Unknown error\");\n}\nfunction handleError(err) {\n err = castError(err);\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n for (const f of fns) f(err);\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n for (let i = sources.length - 1; i >= 0; i--) {\n if (sources[i]) {\n const descriptors = Object.getOwnPropertyDescriptors(sources[i]);\n for (const key in descriptors) {\n if (key in target) continue;\n Object.defineProperty(target, key, {\n enumerable: true,\n get() {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = (sources[i] || {})[key];\n if (v !== undefined) return v;\n }\n }\n });\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const blocked = new Set(keys.flat());\n if ($PROXY in props) {\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const descriptors = Object.getOwnPropertyDescriptors(props);\n keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));\n return keys.map(k => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (!(key in props)) continue;\n Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {\n get() {\n return props[key];\n },\n set() {\n return true;\n },\n enumerable: true\n });\n }\n return clone;\n });\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n let strictEqual = false;\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => strictEqual ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => child(c)) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let strictEqual = false;\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (strictEqual ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => c(when)) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n let v;\n if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n const res = typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n onError(setErrored);\n return res;\n }\n onError(setErrored);\n return props.children;\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (p = ref[0]) && p !== \"$$f\") {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nlet DEV;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, createSignal, onCleanup, splitProps, createMemo } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: \"formNoValidate\",\n ismap: \"isMap\",\n nomodule: \"noModule\",\n playsinline: \"playsInline\",\n readonly: \"readOnly\"\n});\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, check, isSVG) {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n let node = t.content.firstChild;\n if (isSVG) node = node.firstChild;\n return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template.cloneNode(true);\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) {\n sharedConfig.done = true;\n document.querySelectorAll(\"[id^=pl-]\").forEach(elem => elem.remove());\n }\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context && !current) current = [...parent.childNodes];\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value instanceof Node) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i];\n if (item instanceof Node) {\n normalized.push(item);\n } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if ((typeof item) === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) {\n normalized.push(prev);\n } else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = props.mount || document.body;\n function renderPortal() {\n if (sharedConfig.context) {\n const [s, set] = createSignal(false);\n queueMicrotask(() => set(true));\n return () => s() && props.children;\n } else return () => props.children;\n }\n if (mount instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n onCleanup(() => {\n if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n });\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, renderPortal());\n mount.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => mount.removeChild(container));\n }\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","import { WalletInfo } from '@tonconnect/sdk';\nimport { createSignal } from 'solid-js';\n\nexport type ActionName = 'confirm-transaction' | 'transaction-sent' | 'transaction-canceled';\n\nexport type Action = {\n name: ActionName;\n openModal: boolean;\n showNotification: boolean;\n};\n\nexport const [walletsModalOpen, setWalletsModalOpen] = createSignal(false);\nexport const [lastSelectedWalletInfo, setLastSelectedWalletInfo] = createSignal<WalletInfo | null>(\n null\n);\nexport const [action, setAction] = createSignal<Action | null>(null);\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { css, setup as gooberSetup } from \"goober\";\r\nimport {\r\n mergeProps,\r\n splitProps,\r\n createContext,\r\n useContext,\r\n createComponent,\r\n untrack,\r\n} from \"solid-js\";\r\nimport { Dynamic, isServer, spread } from \"solid-js/web\";\r\nexport { css, glob, extractCss, keyframes } from \"goober\";\r\n\r\nlet getForwardProps = null;\r\n\r\nexport function shouldForwardProp(predicate) {\r\n return props => props.filter(predicate);\r\n}\r\n\r\nexport function setup(prefixer, shouldForwardProp = null) {\r\n gooberSetup(null, prefixer);\r\n getForwardProps = shouldForwardProp;\r\n}\r\nconst ThemeContext = createContext();\r\nexport function ThemeProvider(props) {\r\n return createComponent(ThemeContext.Provider, {\r\n value: props.theme,\r\n get children() {\r\n return props.children;\r\n }\r\n });\r\n}\r\nexport function useTheme() {\r\n return useContext(ThemeContext);\r\n}\r\n\r\nfunction makeStyled(tag) {\r\n let _ctx = this || {};\r\n return (...args) => {\r\n const Styled = props => {\r\n const theme = useContext(ThemeContext);\r\n const withTheme = mergeProps(props, { theme });\r\n const clone = mergeProps(withTheme, {\r\n get class() {\r\n const pClass = withTheme.class,\r\n append = \"class\" in withTheme && /^go[0-9]+/.test(pClass);\r\n // Call `css` with the append flag and pass the props\r\n let className = css.apply(\r\n { target: _ctx.target, o: append, p: withTheme, g: _ctx.g },\r\n args\r\n );\r\n return [pClass, className].filter(Boolean).join(\" \");\r\n }\r\n });\r\n const [local, newProps] = splitProps(clone, [\"as\", \"theme\"]);\r\n const htmlProps = getForwardProps\r\n ? splitProps(newProps, getForwardProps(Object.keys(newProps)))[0]\r\n : newProps;\r\n const createTag = local.as || tag;\r\n let el;\r\n\r\n if (typeof createTag === \"function\") {\r\n el = createTag(htmlProps);\r\n } else {\r\n if (isServer) {\r\n const [local, others] = splitProps(htmlProps, [\"children\", \"theme\"]);\r\n el = Dynamic({\r\n component: createTag,\r\n get children() {\r\n return local.children;\r\n },\r\n ...others\r\n });\r\n } else {\r\n if (_ctx.g == 1) {\r\n // When using Global Styles we don't want to hydrate the unused nodes\r\n el = document.createElement(createTag);\r\n spread(el, htmlProps);\r\n } else {\r\n el = Dynamic(mergeProps({ component: createTag }, htmlProps));\r\n }\r\n }\r\n }\r\n return el;\r\n };\r\n Styled.class = props => {\r\n return untrack(() => {\r\n return css.apply({ target: _ctx.target, p: props, g: _ctx.g }, args);\r\n });\r\n };\r\n\r\n return Styled;\r\n };\r\n}\r\n\r\nexport const styled = new Proxy(makeStyled, {\r\n get(target, tag) {\r\n return target(tag);\r\n }\r\n});\r\n\r\nexport function createGlobalStyles() {\r\n const fn = makeStyled.call({ g: 1 }, \"div\").apply(null, arguments);\r\n\r\n return function GlobalStyles(props) {\r\n fn(props);\r\n return null;\r\n };\r\n}\r\n","import en from 'src/app/assets/i18n/en.json';\nimport ru from 'src/app/assets/i18n/ru.json';\nimport { Locales } from 'src/models/locales';\n\nexport const i18nDictionary: Record<Locales, object> = {\n en: parseDictionary(en),\n ru: parseDictionary(ru)\n};\n\n// replace '$key1.key2.key3' with it's value\nfunction parseDictionary(dictionary: Record<string, unknown>): Record<string, unknown> {\n const refSymbol = '$';\n\n const iterate = (subDictionary: Record<string, unknown>): void => {\n Object.entries(subDictionary).forEach(([key, value]) => {\n if (typeof value === 'object' && value) {\n return iterate(value as Record<string, unknown>);\n }\n\n if (typeof value === 'string') {\n if (value[0] === refSymbol) {\n const path = value.slice(1).split('.');\n let obj: Record<string, unknown> = dictionary;\n path.forEach(item => {\n if (item in obj) {\n obj = obj[item] as Record<string, unknown>;\n } else {\n throw new Error(\n `Cannot parse translations: there is no property ${item} in translation`\n );\n }\n });\n\n subDictionary[key] = obj;\n }\n\n if (value.slice(0, 2) === `\\\\${refSymbol}`) {\n subDictionary[key] = value.slice(1);\n }\n }\n });\n };\n\n iterate(dictionary);\n return dictionary;\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createContext } from 'solid-js';\n\nexport const ConnectorContext = createContext<ITonConnect>();\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $NAME = Symbol(\"store-name\");\nfunction wrap$1(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = {}\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value));\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value) {\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) delete state[property];else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => target[$PROXY][property] = v;\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {\n if (target !== previous) {\n if (property === $ROOT) return target;\n setProperty(parent, property, target);\n }\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(v, {\n [$ROOT]: state\n }, $ROOT, merge, key);\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","export enum THEME {\n DARK = 'DARK',\n LIGHT = 'LIGHT'\n}\n\nexport type Theme = THEME | 'SYSTEM';\n","import { ColorsSet } from 'src/models/colors-set';\n\nexport const defaultLightColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#31A6F5',\n icon: {\n primary: '#0F0F0F',\n secondary: '#7A8999',\n tertiary: '#C1CAD2',\n success: '#29CC6A'\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F1F3F5'\n },\n text: {\n primary: '#0F0F0F',\n secondary: '#7A8999',\n subhead: '#6A7785'\n }\n};\n\nexport const defaultDarkColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#E5E5EA',\n icon: {\n primary: '#E5E5EA',\n secondary: '#909099',\n tertiary: '#434347',\n success: '#29CC6A'\n },\n background: {\n primary: '#121214',\n secondary: '#18181A'\n },\n text: {\n primary: '#E5E5EA',\n secondary: '#7D7D85',\n subhead: '#8C8C93'\n }\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import deepmerge from 'deepmerge';\nimport { DeepPartial } from 'src/app/utils/types';\nimport { isPlainObject } from 'is-plain-object';\n\nexport function mergeOptions<T>(options: DeepPartial<T> | undefined | null, defaultOptions: T): T {\n if (!options) {\n return defaultOptions;\n }\n\n const overwriteMerge = (_: unknown[], sourceArray: unknown[], __: unknown): unknown[] =>\n sourceArray;\n\n return deepmerge(defaultOptions, options, {\n arrayMerge: overwriteMerge,\n isMergeableObject: isPlainObject\n });\n}\n","import { createStore } from 'solid-js/store';\nimport { DefaultTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models/THEME';\nimport { defaultDarkColorsSet, defaultLightColorsSet } from 'src/app/styles/default-colors';\nimport { BorderRadius, PartialColorsSet } from 'src/models';\nimport { mergeOptions } from 'src/app/utils/options';\n\nexport const [themeState, setThemeState] = createStore<DefaultTheme>({\n theme: THEME.LIGHT,\n colors: defaultLightColorsSet,\n borderRadius: 'm'\n});\n\nconst themeColorsMappingDefault = {\n [THEME.LIGHT]: defaultLightColorsSet,\n [THEME.DARK]: defaultDarkColorsSet\n};\n\nconst themeCustomColors: Record<THEME, PartialColorsSet | undefined> = {\n [THEME.LIGHT]: undefined,\n [THEME.DARK]: undefined\n};\n\nexport function setTheme(theme: THEME, colorsSet?: Partial<Record<THEME, PartialColorsSet>>): void {\n if (colorsSet) {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n }\n\n setThemeState({\n theme,\n colors: mergeOptions(themeCustomColors[theme], themeColorsMappingDefault[theme])\n });\n}\n\nexport function setBorderRadius(borderRadius: BorderRadius): void {\n setThemeState({ borderRadius });\n}\n\nexport function setColors(colorsSet: Partial<Record<THEME, PartialColorsSet>>): void {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n\n setThemeState(state => ({\n colors: mergeOptions(\n themeCustomColors[state.theme as THEME],\n themeColorsMappingDefault[state.theme as THEME]\n )\n }));\n}\n","import { JSXElement } from 'solid-js';\nimport { createGlobalStyles } from 'solid-styled-components';\n\nexport const GlobalStyles = (): JSXElement => {\n document.body.addEventListener('mousedown', () => document.body.classList.add('using-mouse'));\n\n document.body.addEventListener('keydown', event => {\n if (event.key === 'Tab') {\n document.body.classList.remove('using-mouse');\n }\n });\n\n const Styles = createGlobalStyles`\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-family: SF Pro, Roboto, sans-serif;\n }\n html, body {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n \n *:focus {\n outline: #08f auto 2px;\n }\n\n body.using-mouse :focus {\n outline: none;\n }\n \n li {\n list-style: none;\n }\n button {\n outline: none;\n }\n`;\n return <Styles />;\n};\n","import { Property } from 'csstype';\ntype Color = Property.Color;\n\nexport function hexToRgb(hex: string): string {\n if (hex[0] === '#') {\n hex = hex.slice(1);\n }\n\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n\n return [r, g, b].join(',');\n}\n\nexport function rgba(color: Color, opacity: number): string {\n if (color[0] === '#') {\n color = hexToRgb(color);\n }\n\n return `rgba(${color}, ${opacity})`;\n}\n","import { styled } from 'solid-styled-components';\nimport { rgba } from 'src/app/utils/css';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const ButtonStyled = styled.button`\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n\n padding: 9px 16px;\n border: none;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n cursor: pointer;\n\n font-size: 14px;\n font-weight: 590;\n line-height: 18px;\n letter-spacing: -0.154px;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: scale(1.04);\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { ButtonStyled } from 'src/app/components/button/style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Identifiable } from 'src/app/models/identifiable';\n\nexport interface ButtonProps extends Styleable, Identifiable {\n children: JSXElement;\n onClick: () => void;\n ref?: HTMLButtonElement | ((el: HTMLButtonElement) => void) | undefined;\n}\n\nexport const Button: Component<ButtonProps> = props => {\n return (\n <ButtonStyled\n class={props.class}\n id={props.id}\n onClick={() => props.onClick()}\n ref={props.ref}\n >\n {props.children}\n </ButtonStyled>\n );\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { createSignal, children, createMemo, createComputed, untrack, batch, createEffect } from 'solid-js';\n\nfunction nextFrame(fn) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nconst Transition = props => {\n let el;\n let first = true;\n const [s1, set1] = createSignal();\n const [s2, set2] = createSignal();\n const resolved = children(() => props.children);\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\"\n };\n });\n\n function enterTransition(el, prev) {\n if (!first || props.appear) {\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n batch(() => {\n s1() !== el && set1(el);\n s2() === el && set2(undefined);\n });\n onAfterEnter && onAfterEnter(el);\n if (props.mode === \"inout\") exitTransition(el, prev);\n }\n }\n }\n\n prev && !props.mode ? set2(el) : set1(el);\n }\n\n function exitTransition(el, prev) {\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n if (!prev.parentNode) return endTransition();\n onBeforeExit && onBeforeExit(prev);\n prev.classList.add(...exitClasses);\n prev.classList.add(...exitActiveClasses);\n nextFrame(() => {\n prev.classList.remove(...exitClasses);\n prev.classList.add(...exitToClasses);\n });\n onExit && onExit(prev, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n prev.addEventListener(\"transitionend\", endTransition);\n prev.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === prev) {\n prev.removeEventListener(\"transitionend\", endTransition);\n prev.removeEventListener(\"animationend\", endTransition);\n prev.classList.remove(...exitActiveClasses);\n prev.classList.remove(...exitToClasses);\n s1() === prev && set1(undefined);\n onAfterExit && onAfterExit(prev);\n if (props.mode === \"outin\") enterTransition(el, prev);\n }\n }\n }\n\n createComputed(prev => {\n el = resolved();\n\n while (typeof el === \"function\") el = el();\n\n return untrack(() => {\n if (el && el !== prev) {\n if (props.mode !== \"outin\") enterTransition(el, prev);else if (first) set1(el);\n }\n\n if (prev && prev !== el && props.mode !== \"inout\") exitTransition(el, prev);\n first = false;\n return el;\n });\n });\n return [s1, s2];\n};\n\nfunction getRect(element) {\n const {\n top,\n bottom,\n left,\n right,\n width,\n height\n } = element.getBoundingClientRect();\n const parentRect = element.parentNode.getBoundingClientRect();\n return {\n top: top - parentRect.top,\n bottom,\n left: left - parentRect.left,\n right,\n width,\n height\n };\n}\n\nconst TransitionGroup = props => {\n const resolved = children(() => props.children);\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\",\n moveClass: props.moveClass || name + \"-move\"\n };\n });\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const [combined, setCombined] = createSignal();\n let p = [];\n let first = true;\n createComputed(() => {\n const c = resolved();\n const comb = [...c];\n const next = new Set(c);\n const prev = new Set(p);\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n\n for (let i = 0; i < c.length; i++) {\n const el = c[i];\n\n if (!first && !prev.has(el)) {\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n onAfterEnter && onAfterEnter(el);\n }\n }\n }\n }\n\n for (let i = 0; i < p.length; i++) {\n const old = p[i];\n\n if (!next.has(old) && old.parentNode) {\n comb.splice(i, 0, old);\n onBeforeExit && onBeforeExit(old);\n old.classList.add(...exitClasses);\n old.classList.add(...exitActiveClasses);\n nextFrame(() => {\n old.classList.remove(...exitClasses);\n old.classList.add(...exitToClasses);\n });\n onExit && onExit(old, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n old.addEventListener(\"transitionend\", endTransition);\n old.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === old) {\n old.removeEventListener(\"transitionend\", endTransition);\n old.removeEventListener(\"animationend\", endTransition);\n old.classList.remove(...exitActiveClasses);\n old.classList.remove(...exitToClasses);\n onAfterExit && onAfterExit(old);\n p = p.filter(i => i !== old);\n setCombined(p);\n }\n }\n }\n }\n\n p = comb;\n setCombined(comb);\n });\n createEffect(nodes => {\n const c = combined();\n c.forEach(child => {\n let n;\n\n if (!(n = nodes.get(child))) {\n nodes.set(child, n = {\n pos: getRect(child),\n new: !first\n });\n } else if (n.new) {\n n.new = false;\n n.newPos = getRect(child);\n }\n\n if (n.new) {\n child.addEventListener(\"transitionend\", () => {\n n.new = false;\n child.parentNode && (n.newPos = getRect(child));\n }, {\n once: true\n });\n }\n\n n.newPos && (n.pos = n.newPos);\n n.newPos = getRect(child);\n });\n\n if (first) {\n first = false;\n return nodes;\n }\n\n c.forEach(child => {\n const c = nodes.get(child);\n const oldPos = c.pos;\n const newPos = c.newPos;\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n\n if (dx || dy) {\n c.moved = true;\n const s = child.style;\n s.transform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n }\n });\n document.body.offsetHeight;\n c.forEach(child => {\n const c = nodes.get(child);\n\n if (c.moved) {\n c.moved = false;\n const s = child.style;\n const moveClasses = classnames().moveClass.split(\" \");\n child.classList.add(...moveClasses);\n s.transform = s.transitionDuration = \"\";\n\n function endTransition(e) {\n if (e && e.target !== child || !child.parentNode) return;\n\n if (!e || /transform$/.test(e.propertyName)) {\n child.removeEventListener(\"transitionend\", endTransition);\n child.classList.remove(...moveClasses);\n }\n }\n\n child.addEventListener(\"transitionend\", endTransition);\n }\n });\n return nodes;\n }, new Map());\n return combined;\n};\n\nexport { Transition, TransitionGroup };\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function clickOutside(el: Element, accessor: Accessor<() => void>): void {\n const onClick = (e: Event): void | boolean => !el.contains(e.target as Node) && accessor()?.();\n document.body.addEventListener('click', onClick);\n\n onCleanup(() => document.body.removeEventListener('click', onClick));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n clickOutside: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function escPressed(_: Element, accessor: Accessor<() => void>): void {\n const onKeyPress = (e: Event): void | boolean => {\n if ((e as KeyboardEvent).key === 'Escape') {\n (document.activeElement as HTMLElement)?.blur();\n accessor()?.();\n }\n };\n document.body.addEventListener('keydown', onKeyPress);\n\n onCleanup(() => document.body.removeEventListener('keydown', onKeyPress));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n keyPressed: () => void;\n }\n }\n}\n","export type Device = 'mobile' | 'tablet' | 'desktop';\n\nconst maxWidth = {\n mobile: 440,\n tablet: 1020\n};\n\nexport function isDevice(device: keyof typeof maxWidth | 'desktop'): boolean {\n const width = window.innerWidth;\n\n switch (device) {\n case 'desktop':\n return width > maxWidth.tablet;\n case 'tablet':\n return width > maxWidth.mobile;\n default:\n case 'mobile':\n return width <= maxWidth.mobile;\n }\n}\n\nexport function media(device: Device): string {\n switch (device) {\n case 'mobile':\n return `@media (max-width: ${maxWidth.mobile}px)`;\n case 'tablet':\n return `@media (max-width: ${maxWidth.tablet}px) (min-width: ${maxWidth.mobile}px)`;\n default:\n case 'desktop':\n return `@media (min-width: ${maxWidth.tablet}px)`;\n }\n}\n\nexport function mediaMin(px: number): string {\n return `@media (min-width: ${px}px)`;\n}\n\nexport function mediaMax(px: number): string {\n return `@media (max-width: ${px}px)`;\n}\n\nexport function mediaMinMax(pxMin: number, pxMax: number): string {\n return `@media (min-width: ${pxMin}px) (max-width: ${pxMax}px)`;\n}\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { styled, useTheme } from 'solid-styled-components';\n\ninterface ArrowIconProps {\n fill?: Property.Color;\n direction?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst rotationDegrees = {\n left: 0,\n top: 90,\n right: 180,\n bottom: 270\n};\n\nexport const ArrowIcon: Component<ArrowIconProps> = props => {\n const theme = useTheme();\n const fill = (): Property.Color => props.fill || theme.colors.icon.secondary;\n const direction = (): 'left' | 'right' | 'top' | 'bottom' => props.direction || 'left';\n\n const Svg = styled('svg')<{ svgDirection: 'left' | 'right' | 'top' | 'bottom' }>`\n transform: rotate(${props => rotationDegrees[props.svgDirection]}deg);\n transition: transform 0.1s ease-in-out;\n `;\n\n return (\n <Svg\n width=\"6\"\n height=\"12\"\n viewBox=\"0 0 6 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n svgDirection={direction()}\n >\n <path\n d=\"M5.1 1.40012L1.5 6.0001L5.1 10.6001\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </Svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface CloseIconProps {\n fill?: Property.Color;\n}\n\nexport const CloseIcon: Component<CloseIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.900031 0.900397L5.00002 5.00039M5.00002 5.00039L9.10003 9.1004M5.00002 5.00039L9.10003 0.900391M5.00002 5.00039L0.900024 9.1004\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const IconButtonStyled = styled.button`\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${props => props.theme!.colors.background.secondary};\n border: none;\n cursor: pointer;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: scale(1.04);\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Property } from 'csstype';\nimport { Component, JSXElement, Match, Show, Switch } from 'solid-js';\nimport { ArrowIcon } from 'src/app/components/icons/arrow-icon';\nimport { CloseIcon } from 'src/app/components/icons/close-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { IconButtonStyled } from './style';\n\nexport interface IconButtonProps extends Styleable {\n fill?: Property.Color;\n children?: JSXElement;\n icon?: 'close' | 'arrow';\n onClick: () => void;\n}\n\nexport const IconButton: Component<IconButtonProps> = props => {\n const icon = (): 'close' | 'arrow' => props.icon || 'close';\n return (\n <IconButtonStyled class={props.class} onClick={() => props.onClick()}>\n <Show when={!!props.children}>{props.children}</Show>\n <Show when={!props.children}>\n <Switch>\n <Match when={icon() === 'close'}>\n <CloseIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'arrow'}>\n <ArrowIcon fill={props.fill} />\n </Match>\n </Switch>\n </Show>\n </IconButtonStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { IconButton } from 'src/app/components/icon-button';\nimport { media } from 'src/app/styles/media';\n\nexport const ModalBackgroundStyled = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n z-index: 1000;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.4);\n\n ${media('mobile')} {\n align-items: flex-end;\n }\n`;\n\nexport const ModalWrapperClass = css`\n position: relative;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 16px 64px rgba(0, 0, 0, 0.16);\n min-height: 100px;\n width: 440px;\n padding: 44px 56px 24px;\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const CloseButtonStyled = styled(IconButton)`\n position: absolute;\n right: 16px;\n top: 16px;\n`;\n","import cn from 'classnames';\nimport { Component, JSXElement, Show } from 'solid-js';\nimport { Transition } from 'solid-transition-group';\nimport clickOutsideDirective from 'src/app/directives/click-outside';\nimport keyPressedDirective from 'src/app/directives/key-pressed';\nimport { Styleable } from 'src/app/models/styleable';\nimport { isDevice, media } from 'src/app/styles/media';\nimport { CloseButtonStyled, ModalBackgroundStyled, ModalWrapperClass } from './style';\nimport { css, useTheme } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { Identifiable } from 'src/app/models/identifiable';\nconst clickOutside = clickOutsideDirective;\nconst keyPressed = keyPressedDirective;\n\nconst borders: BorderRadiusConfig = {\n m: '24px',\n s: '16px',\n none: '0'\n};\n\nexport interface ModalProps extends Styleable, Identifiable {\n children: JSXElement;\n opened: boolean;\n onClose: () => void;\n}\n\nexport const Modal: Component<ModalProps> = props => {\n const theme = useTheme();\n return (\n <Transition\n onBeforeEnter={el => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n el.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n el.firstElementChild!.animate(\n [{ transform: 'translateY(390px)' }, { transform: 'translateY(0)' }],\n {\n duration\n }\n );\n }\n }}\n onExit={(el, done) => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n const backgroundAnimation = el.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n const contentAnimation = el.firstElementChild!.animate(\n [{ transform: 'translateY(0)' }, { transform: 'translateY(390px)' }],\n {\n duration\n }\n );\n\n Promise.all([backgroundAnimation.finished, contentAnimation.finished]).then(\n done\n );\n } else {\n backgroundAnimation.finished.then(done);\n }\n }}\n >\n <Show when={props.opened}>\n <ModalBackgroundStyled>\n <div\n id={props.id}\n class={cn(\n ModalWrapperClass,\n props.class,\n css`\n background-color: ${theme.colors.background.primary};\n border-radius: ${borders[theme.borderRadius]};\n\n ${media('mobile')} {\n border-radius: ${borders[theme.borderRadius]}\n ${borders[theme.borderRadius]} 0 0;\n }\n `\n )}\n use:clickOutside={() => props.onClose()}\n use:keyPressed={() => props.onClose()}\n >\n <CloseButtonStyled icon=\"close\" onClick={() => props.onClose()} />\n {props.children}\n </div>\n </ModalBackgroundStyled>\n </Show>\n </Transition>\n );\n};\n","import { createContext, createSignal, useContext } from 'solid-js';\nimport { createStore } from 'solid-js/store';\n\n// src/index.ts\nvar deepReadObject = (obj, path, defaultValue) => {\n const value = path.trim().split(\".\").reduce((a, b) => a ? a[b] : void 0, obj);\n return value !== void 0 ? value : defaultValue;\n};\nvar template = (str, params, reg = /{{(.*?)}}/g) => str.replace(reg, (_, key) => deepReadObject(params, key, \"\"));\nvar createI18nContext = (init = {}, lang = navigator.language in init ? navigator.language : Object.keys(init)[0]) => {\n const [locale, setLocale] = createSignal(lang);\n const [dict, setDict] = createStore(init);\n const translate = (key, params, defaultValue) => {\n const val = deepReadObject(dict[locale()], key, defaultValue || \"\");\n if (typeof val === \"function\")\n return val(params);\n if (typeof val === \"string\")\n return template(val, params || {});\n return val;\n };\n const actions = {\n add(lang2, table) {\n setDict(lang2, (t) => Object.assign(t || {}, table));\n },\n locale: (lang2) => lang2 ? setLocale(lang2) : locale(),\n dict: (lang2) => deepReadObject(dict, lang2)\n };\n return [translate, actions];\n};\nvar I18nContext = createContext({});\nvar useI18n = () => useContext(I18nContext);\n\nexport { I18nContext, createI18nContext, useI18n };\n","import { styled } from 'solid-styled-components';\n\nexport const H1Styled = styled.h1`\n font-style: normal;\n font-weight: 700;\n font-size: 24px;\n line-height: 30px;\n\n text-align: center;\n letter-spacing: 0.072px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 6px;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H1Styled } from './style';\n\nexport interface H1Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H1: Component<H1Props> = props => {\n const [t] = useI18n();\n return (\n <H1Styled class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H1Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H2Styled = styled.h2`\n font-style: normal;\n font-weight: 510;\n font-size: 16px;\n line-height: 22px;\n\n text-align: center;\n letter-spacing: -0.32px;\n\n color: ${props => props.theme!.colors.text.secondary};\n\n margin-top: 0;\n margin-bottom: 32px;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H2Styled } from './style';\n\nexport interface H2Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H2: Component<H2Props> = props => {\n const [t] = useI18n();\n return (\n <H2Styled class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H2Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H3Styled = styled.h3`\n font-style: normal;\n font-weight: 590;\n font-size: 15px;\n line-height: 20px;\n\n letter-spacing: -0.24px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H3Styled } from './style';\n\ninterface H3Props extends Translateable {\n children?: JSXElement;\n}\n\nexport const H3: Component<H3Props> = props => {\n const [t] = useI18n();\n\n return (\n <H3Styled>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H3Styled>\n );\n};\n","import { Property } from 'csstype';\nimport { styled } from 'solid-styled-components';\n\nexport const TextStyled = styled.div<{\n fontSize: Property.FontSize;\n fontWeight: Property.FontWeight;\n letterSpacing: Property.LetterSpacing;\n lineHeight: Property.LineHeight;\n color: Property.Color;\n}>`\n font-style: normal;\n font-weight: ${props => props.fontWeight};\n font-size: ${props => props.fontSize};\n line-height: ${props => props.lineHeight};\n letter-spacing: ${props => props.letterSpacing};\n\n color: ${props => props.color};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Property } from 'csstype';\nimport { Component, JSXElement, mergeProps } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TextStyled } from './style';\n\nexport interface TextProps extends Styleable, Translateable {\n children?: JSXElement;\n fontSize?: Property.FontSize;\n fontWeight?: Property.FontWeight;\n lineHeight?: Property.LineHeight;\n letterSpacing?: Property.LetterSpacing;\n color?: Property.Color;\n}\n\nexport const Text: Component<TextProps> = inputs => {\n const theme = useTheme();\n const [t] = useI18n();\n\n const color = (): Property.Color => inputs.color || theme.colors.text.primary;\n\n const props = mergeProps(\n {\n fontSize: '14px',\n fontWeight: '510',\n lineHeight: '130%',\n letterSpacing: '-0.154px'\n },\n inputs\n );\n return (\n <TextStyled\n fontSize={props.fontSize}\n fontWeight={props.fontWeight}\n lineHeight={props.lineHeight}\n letterSpacing={props.letterSpacing}\n color={color()}\n class={props.class}\n >\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </TextStyled>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const TonIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"16\"\n height=\"15\"\n viewBox=\"0 0 16 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.1839 12.7069C9.6405 13.6507 9.36881 14.1226 9.05907 14.348C8.42775 14.8074 7.57228 14.8074 6.94096 14.348C6.63122 14.1226 6.35952 13.6507 5.81613 12.7069L1.52066 5.24638C0.768635 3.94024 0.392625 3.28717 0.337617 2.75894C0.225505 1.68236 0.818944 0.655911 1.80788 0.215893C2.29309 0 3.04667 0 4.55383 0H11.4462C12.9534 0 13.7069 0 14.1922 0.215893C15.1811 0.655911 15.7745 1.68236 15.6624 2.75894C15.6074 3.28717 15.2314 3.94024 14.4794 5.24638L10.1839 12.7069ZM7.10002 11.3412L2.56139 3.48002C2.31995 3.06185 2.19924 2.85276 2.18146 2.68365C2.14523 2.33896 2.33507 2.01015 2.65169 1.86919C2.80703 1.80002 3.04847 1.80002 3.53133 1.80002H3.53134L7.10002 1.80002V11.3412ZM8.90001 11.3412L13.4387 3.48002C13.6801 3.06185 13.8008 2.85276 13.8186 2.68365C13.8548 2.33896 13.665 2.01015 13.3484 1.86919C13.193 1.80002 12.9516 1.80002 12.4687 1.80002L8.90001 1.80002V11.3412Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface SuccessIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const SuccessIcon: Component<SuccessIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.success;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M7.5 13L10 15.5L16.5 9\"\n stroke=\"white\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ErrorIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const ErrorIcon: Component<ErrorIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.86358 9.13637C7.51211 8.7849 7.51211 8.21505 7.86358 7.86358C8.21505 7.51211 8.7849 7.51211 9.13637 7.86358L12 10.7272L14.8636 7.86358C15.2151 7.51211 15.7849 7.51211 16.1364 7.86358C16.4878 8.21505 16.4878 8.7849 16.1364 9.13637L13.2728 12L16.1364 14.8636C16.4878 15.2151 16.4878 15.7849 16.1364 16.1364C15.7849 16.4878 15.2151 16.4878 14.8636 16.1364L12 13.2728L9.13637 16.1364C8.7849 16.4878 8.21505 16.4878 7.86358 16.1364C7.51211 15.7849 7.51211 15.2151 7.86358 14.8636L10.7272 12L7.86358 9.13637Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","import cn from 'classnames';\nimport type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport {css, keyframes, useTheme} from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LoaderIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const LoaderIcon: Component<LoaderIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.tertiary;\n\n const rotateAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const svgClass = css`\n animation: ${rotateAnimation} 1s linear infinite;\n `;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M8.00002 18.9282C11.8264 21.1373 16.7191 19.8263 18.9282 16C21.1374 12.1736 19.8264 7.28092 16 5.07178C12.1737 2.86264 7.28096 4.17364 5.07182 7.99998\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import { createContext } from 'solid-js';\nimport { TonConnectUI } from 'src/ton-connect-ui';\n\nexport const TonConnectUiContext = createContext<TonConnectUI>();\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport {useTheme} from \"solid-styled-components\";\n\ninterface CopyIconProps {\n fill?: Property.Color;\n}\n\nexport const CopyIcon: Component<CopyIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.76228 2.09998H7.79998H10.2001H10.2378H10.2378H10.2378C11.0459 2.09997 11.7067 2.09996 12.2438 2.14384C12.7997 2.18926 13.3017 2.28614 13.7706 2.52505C14.5045 2.89896 15.1011 3.49558 15.475 4.22941C15.7139 4.6983 15.8108 5.20038 15.8562 5.75629C15.9001 6.29337 15.9001 6.95422 15.9001 7.76227V7.79998V8.1H16.2H16.2377C17.0457 8.09999 17.7066 8.09998 18.2437 8.14386C18.7996 8.18928 19.3017 8.28616 19.7705 8.52507C20.5044 8.89898 21.101 9.4956 21.4749 10.2294C21.7138 10.6983 21.8107 11.2004 21.8561 11.7563C21.9 12.2934 21.9 12.9542 21.9 13.7623V13.8V16.2V16.2377C21.9 17.0458 21.9 17.7066 21.8561 18.2437C21.8107 18.7996 21.7138 19.3017 21.4749 19.7706C21.101 20.5044 20.5044 21.101 19.7705 21.4749C19.3017 21.7138 18.7996 21.8107 18.2437 21.8561C17.7066 21.9 17.0458 21.9 16.2378 21.9H16.2377H16.2H13.8H13.7623H13.7622C12.9542 21.9 12.2934 21.9 11.7563 21.8561C11.2004 21.8107 10.6983 21.7138 10.2294 21.4749C9.49561 21.101 8.89898 20.5044 8.52507 19.7706C8.28616 19.3017 8.18928 18.7996 8.14386 18.2437C8.09998 17.7066 8.09999 17.0458 8.1 16.2377V16.2V15.9H7.79998H7.76227H7.76218C6.95417 15.9 6.29335 15.9 5.75629 15.8561C5.20038 15.8107 4.6983 15.7138 4.22941 15.4749C3.49558 15.101 2.89896 14.5044 2.52505 13.7705C2.28614 13.3017 2.18926 12.7996 2.14384 12.2437C2.09996 11.7066 2.09997 11.0458 2.09998 10.2377V10.2377V10.2377V10.2V7.79998V7.76228V7.76225V7.76224C2.09997 6.9542 2.09996 6.29336 2.14384 5.75629C2.18926 5.20038 2.28614 4.6983 2.52505 4.22941C2.89896 3.49558 3.49558 2.89896 4.22941 2.52505C4.6983 2.28614 5.20038 2.18926 5.75629 2.14384C6.29336 2.09996 6.95419 2.09997 7.76222 2.09998H7.76224H7.76228ZM8.1 14.1V13.8V13.7623C8.09999 12.9542 8.09998 12.2934 8.14386 11.7563C8.18928 11.2004 8.28616 10.6983 8.52507 10.2294C8.89898 9.4956 9.49561 8.89898 10.2294 8.52507C10.6983 8.28616 11.2004 8.18928 11.7563 8.14386C12.2934 8.09998 12.9542 8.09999 13.7623 8.1H13.8H14.1001V7.79998C14.1001 6.94505 14.0994 6.35798 14.0622 5.90287C14.0259 5.45827 13.9593 5.21944 13.8712 5.0466C13.6699 4.65146 13.3486 4.3302 12.9535 4.12886C12.7806 4.04079 12.5418 3.97419 12.0972 3.93786C11.6421 3.90068 11.055 3.89998 10.2001 3.89998H7.79998C6.94505 3.89998 6.35798 3.90068 5.90287 3.93786C5.45827 3.97419 5.21944 4.04079 5.0466 4.12886C4.65146 4.3302 4.3302 4.65146 4.12886 5.0466C4.04079 5.21944 3.97419 5.45827 3.93786 5.90287C3.90068 6.35798 3.89998 6.94505 3.89998 7.79998V10.2C3.89998 11.0549 3.90068 11.642 3.93786 12.0971C3.97419 12.5417 4.04079 12.7805 4.12886 12.9534C4.3302 13.3485 4.65146 13.6698 5.0466 13.8711C5.21944 13.9592 5.45827 14.0258 5.90287 14.0621C6.35798 14.0993 6.94505 14.1 7.79998 14.1H8.1ZM11.0466 10.1289C11.2195 10.0408 11.4583 9.97421 11.9029 9.93788C12.358 9.9007 12.9451 9.9 13.8 9.9H16.2C17.0549 9.9 17.642 9.9007 18.0971 9.93788C18.5417 9.97421 18.7805 10.0408 18.9534 10.1289C19.3485 10.3302 19.6698 10.6515 19.8711 11.0466C19.9592 11.2195 20.0258 11.4583 20.0621 11.9029C20.0993 12.358 20.1 12.9451 20.1 13.8V16.2C20.1 17.0549 20.0993 17.642 20.0621 18.0971C20.0258 18.5417 19.9592 18.7805 19.8711 18.9534C19.6698 19.3485 19.3485 19.6698 18.9534 19.8711C18.7805 19.9592 18.5417 20.0258 18.0971 20.0621C17.642 20.0993 17.0549 20.1 16.2 20.1H13.8C12.9451 20.1 12.358 20.0993 11.9029 20.0621C11.4583 20.0258 11.2195 19.9592 11.0466 19.8711C10.6515 19.6698 10.3302 19.3485 10.1289 18.9534C10.0408 18.7805 9.97421 18.5417 9.93788 18.0971C9.9007 17.642 9.9 17.0549 9.9 16.2V13.8C9.9 12.9451 9.9007 12.358 9.93788 11.9029C9.97421 11.4583 10.0408 11.2195 10.1289 11.0466C10.3302 10.6515 10.6515 10.3302 11.0466 10.1289Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DisconnectIconProps {\n fill?: Property.Color;\n}\n\nexport const DisconnectIcon: Component<DisconnectIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0001 4.00003H8.80012C7.11996 4.00003 6.27989 4.00003 5.63815 4.32701C5.07366 4.61463 4.61472 5.07357 4.3271 5.63806C4.00012 6.27979 4.00012 7.11987 4.00012 8.80003V15.2C4.00012 16.8802 4.00012 17.7203 4.3271 18.362C4.61472 18.9265 5.07366 19.3854 5.63815 19.6731C6.27989 20 7.11996 20 8.80012 20H12.0001\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9 12H21M21 12L17 8M21 12L17 16\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","export function copyToClipboard(text: string): Promise<void> {\n if (navigator?.clipboard) {\n return navigator.clipboard.writeText(text);\n }\n\n fallbackCopyTextToClipboard(text);\n return Promise.resolve();\n}\n\nfunction fallbackCopyTextToClipboard(text: string): void {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(textArea);\n }\n}\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nconst dropdownBorders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const AccountButtonDropdownStyled = styled.div`\n width: 256px;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => dropdownBorders[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.primary}\n \n color: ${props => props.theme!.colors.text.primary}\n`;\n\nexport const UlStyled = styled.ul`\n background-color: ${props => props.theme!.colors.background.primary};\n padding: 8px;\n`;\n\nexport const MenuButtonStyled = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n width: 100%;\n\n background-color: ${props => props.theme!.colors.background.primary};\n border: none;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n cursor: pointer;\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Component, createSignal, Show, useContext } from 'solid-js';\nimport { Text } from 'src/app/components';\nimport { CopyIcon } from 'src/app/components/icons/copy-icon';\nimport { DisconnectIcon } from 'src/app/components/icons/disconnect-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { AccountButtonDropdownStyled, MenuButtonStyled, UlStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\nconst MenuItemText: Component<{ children: string } & Translateable> = props => (\n <Text\n translationKey={props.translationKey}\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n >\n {props.children}\n </Text>\n);\n\nexport interface AccountButtonDropdownProps extends Styleable, Identifiable {\n onClose: () => void;\n ref: HTMLDivElement | undefined;\n}\n\nexport const AccountButtonDropdown: Component<AccountButtonDropdownProps> = props => {\n const tonConnectUi = useContext(TonConnectUiContext)!;\n const connector = useContext(ConnectorContext)!;\n const [isCopiedShown, setIsCopiedShown] = createSignal(false);\n\n const onCopy = async (): Promise<void> => {\n const userFriendlyAddress = toUserFriendlyAddress(\n tonConnectUi.account!.address,\n tonConnectUi.account!.chain === CHAIN.TESTNET\n );\n await copyToClipboard(userFriendlyAddress);\n setIsCopiedShown(true);\n\n setTimeout(() => setIsCopiedShown(false), 1000);\n };\n\n const onDisconnect = (): void => {\n connector.disconnect();\n props.onClose();\n };\n\n return (\n <AccountButtonDropdownStyled ref={props.ref} class={props.class} id={props.id}>\n <UlStyled>\n <li>\n <MenuButtonStyled onClick={() => onCopy()}>\n <CopyIcon />\n <Show when={!isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copy\">\n Copy address\n </MenuItemText>\n </Show>\n <Show when={isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copied\">\n Address copied!\n </MenuItemText>\n </Show>\n </MenuButtonStyled>\n </li>\n <li>\n <MenuButtonStyled onClick={() => onDisconnect()}>\n <DisconnectIcon />\n <MenuItemText translationKey=\"button.dropdown.disconnect\">\n Disconnect\n </MenuItemText>\n </MenuButtonStyled>\n </li>\n </UlStyled>\n </AccountButtonDropdownStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\nexport const NotificationStyled = styled.div`\n width: 256px;\n padding: 12px 16px;\n display: flex;\n gap: 9px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const TextStyled = styled(Text)`\n margin-top: 4px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { H3 } from 'src/app/components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\nimport { NotificationStyled, TextStyled } from './style';\n\nexport interface NotificationProps extends Styleable {\n header: PropertyRequired<Translateable, 'translationKey'>;\n children?: string;\n text?: Translateable;\n icon?: JSXElement;\n}\n\nexport const Notification: Component<NotificationProps> = props => {\n return (\n <NotificationStyled class={props.class}>\n <div>\n <H3\n translationKey={props.header.translationKey}\n translationValues={props.header.translationValues}\n >\n {props.children}\n </H3>\n <Show when={props.text}>\n <TextStyled\n translationKey={props.text!.translationKey}\n translationValues={props.text!.translationValues}\n />\n </Show>\n </div>\n {props.icon}\n </NotificationStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n align-self: center;\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { LoaderIconStyled } from 'src/app/views/account-button/notifications/confirm-operation-notification/style';\n\ninterface ConfirmOperationNotificationProps extends Styleable {}\n\nexport const ConfirmOperationNotification: Component<ConfirmOperationNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.confirm.header' }}\n class={props.class}\n icon={<LoaderIconStyled />}\n >\n Confirm operation in your wallet\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorTransactionNotificationProps extends Styleable {}\n\nexport const ErrorTransactionNotification: Component<ErrorTransactionNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionCanceled.header' }}\n text={{ translationKey: 'notifications.transactionCanceled.text' }}\n icon={<ErrorIconStyled />}\n class={props.class}\n >\n Transaction cancelled\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\nimport cn from 'classnames';\n\ninterface SuccessTransactionNotificationProps extends Styleable {}\n\nexport const SuccessTransactionNotification: Component<\n SuccessTransactionNotificationProps\n> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionSent.header' }}\n text={{ translationKey: 'notifications.transactionSent.text' }}\n icon={<SuccessIconStyled />}\n class={cn(props.class, 'tc-notification')}\n >\n Transaction sent\n </Notification>\n );\n};\n","import { css } from 'solid-styled-components';\n\nexport const NotificationClass = css`\n transform: translateY(-8px);\n margin-bottom: 12px;\n`;\n","import { Component, createEffect, createSignal, For, Match, on, Switch } from 'solid-js';\nimport { TransitionGroup } from 'solid-transition-group';\nimport { ActionName, action } from 'src/app/state/modals-state';\nimport { ConfirmOperationNotification } from './confirm-operation-notification';\nimport { ErrorTransactionNotification } from './error-transaction-notification';\nimport { SuccessTransactionNotification } from './success-transaction-notification';\nimport { NotificationClass } from './style';\nimport { Styleable } from 'src/app/models/styleable';\nimport {Identifiable} from \"src/app/models/identifiable\";\n\nexport interface NotificationsProps extends Styleable, Identifiable {}\n\nexport const Notifications: Component<NotificationsProps> = props => {\n let lastId = -1;\n const liveTimeoutMs = 4500;\n\n const [openedNotifications, setOpenedNotifications] = createSignal<\n { id: number; action: ActionName }[]\n >([]);\n\n createEffect(\n on(action, action => {\n if (action && action.showNotification) {\n lastId++;\n const id = lastId;\n\n setOpenedNotifications(notifications =>\n notifications\n .filter(notification => notification.action !== 'confirm-transaction')\n .concat({ id, action: action.name })\n );\n setTimeout(\n () =>\n setOpenedNotifications(notifications =>\n notifications.filter(notification => notification.id !== id)\n ),\n liveTimeoutMs\n );\n }\n })\n );\n\n return (\n <div class={props.class} id={props.id}>\n <TransitionGroup\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(0)' },\n { opacity: 1, transform: 'translateY(-8px)' }\n ],\n {\n duration: 200\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(-8px)' },\n { opacity: 0, transform: 'translateY(-30px)' }\n ],\n {\n duration: 200\n }\n );\n a.finished.then(done);\n }}\n >\n <For each={openedNotifications()}>\n {openedNotification => (\n <Switch>\n <Match when={openedNotification.action === 'transaction-sent'}>\n <SuccessTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'transaction-canceled'}>\n <ErrorTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'confirm-transaction'}>\n <ConfirmOperationNotification class={NotificationClass} />\n </Match>\n </Switch>\n )}\n </For>\n </TransitionGroup>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button } from 'src/app/components';\nimport { rgba } from 'src/app/utils/css';\nimport { AccountButtonDropdown } from 'src/app/views/account-button/account-button-dropdown';\nimport { Notifications } from 'src/app/views/account-button/notifications';\nimport { THEME } from 'src/models';\n\nexport const AccountButtonStyled = styled(Button)`\n background-color: ${props => props.theme!.colors.connectButton.background};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n gap: 9px;\n\n transition: all 0.1s ease-in-out;\n\n &:hover:not(:active) {\n transform: scale(1);\n }\n\n &:hover {\n filter: ${props => `brightness(${props.theme!.theme === THEME.DARK ? 1.07 : 0.95})`};\n }\n`;\n\nexport const DropdownButtonStyled = styled(AccountButtonStyled)`\n background-color: ${props => props.theme!.colors.background.primary};\n`;\n\nexport const DropdownContainerStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport const DropdownStyled = styled(AccountButtonDropdown)<{ hidden: boolean }>`\n box-sizing: border-box;\n overflow: hidden;\n margin-top: 12px;\n`;\n\nexport const NotificationsStyled = styled(Notifications)`\n > div:first-child {\n margin-top: 20px;\n }\n`;\n","function getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (validMiddleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement` middleware', 'detected. This will lead to an infinite loop. Ensure only one of', 'either has been passed to the `middleware` array.'].join(' '));\n }\n\n if (!reference || !floating) {\n console.error(['Floating UI: The reference and/or floating element was not defined', 'when `computePosition()` was called. Ensure that both elements have', 'been created and can be measured.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = { ...middlewareData,\n [name]: { ...middlewareData[name],\n ...data\n }\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n\n if (reset && resetCount <= 50) {\n resetCount++;\n\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n\n if (process.env.NODE_ENV !== \"production\") ;\n\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const alignment = getAlignment(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n const currentPlacement = placements[currentIndex];\n\n if (currentPlacement == null) {\n return {};\n }\n\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = side === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip2;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n\n return {};\n }\n\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n let {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = _temp === void 0 ? {} : _temp;\n return {\n name: 'hide',\n\n async fn(middlewareArguments) {\n const {\n rects\n } = middlewareArguments;\n\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n default:\n {\n return {};\n }\n }\n }\n\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({ ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n const paddingObject = getSideObjectFromPadding(padding);\n\n function getBoundingClientRect() {\n // There are two rects and they are disjoined\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n return fallback;\n }\n\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nlet uaString;\nfunction getUAString() {\n if (uaString) {\n return uaString;\n }\n\n const uaData = navigator.userAgentData;\n\n if (uaData && Array.isArray(uaData.brands)) {\n uaString = uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n return uaString;\n }\n\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle(element);\n const backdropFilter = css.backdropFilter || css.WebkitBackdropFilter; // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n return css.transform !== 'none' || css.perspective !== 'none' || (backdropFilter ? backdropFilter !== 'none' : false) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat\n value => {\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nconst FALLBACK_SCALE = {\n x: 1,\n y: 1\n};\nfunction getScale(element) {\n const domElement = !isElement(element) && element.contextElement ? element.contextElement : isElement(element) ? element : null;\n\n if (!domElement) {\n return FALLBACK_SCALE;\n }\n\n const rect = domElement.getBoundingClientRect();\n const css = getComputedStyle(domElement); // Would need to take into account borders, padding, and potential scrollbars\n // which would require a lot of code. Fallback to the old technique to\n // determine scale.\n\n if (css.boxSizing !== 'border-box') {\n if (!isHTMLElement(domElement)) {\n return FALLBACK_SCALE;\n }\n\n return {\n x: domElement.offsetWidth > 0 ? round(rect.width) / domElement.offsetWidth || 1 : 1,\n y: domElement.offsetHeight > 0 ? round(rect.height) / domElement.offsetHeight || 1 : 1\n };\n }\n\n let x = rect.width / parseFloat(css.width);\n let y = rect.height / parseFloat(css.height); // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n\n return {\n x,\n y\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;\n\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scale = FALLBACK_SCALE;\n\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n\n const win = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scale.x;\n const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scale.y;\n const width = clientRect.width / scale.x;\n const height = clientRect.height / scale.y;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, true, strategy === 'fixed', offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n const result = // Step into the shadow DOM of the parent of a slotted node\n node.assignedSlot || // DOM Element detected\n node.parentNode || ( // ShadowRoot detected\n isShadowRoot(node) ? node.host : null) || // Fallback\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n\n const rect = getBoundingClientRect(element);\n return {\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = {\n x: 1,\n y: 1\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n\n if (isLastTraversableNode(parentNode)) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\n// Returns the inner client rect, subtracting scrollbars if present\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : {\n x: 1,\n y: 1\n };\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y,\n width,\n height\n };\n}\n\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n if (clippingAncestor === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n\n if (isElement(clippingAncestor)) {\n return getInnerBoundingClientRect(clippingAncestor, strategy);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\n\n\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element; // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const containingBlock = isContainingBlock(currentNode);\n const shouldDropCurrentNode = elementIsFixed ? !containingBlock && !currentContainingBlockComputedStyle : !containingBlock && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position);\n\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration\n currentContainingBlockComputedStyle = computedStyle;\n }\n\n currentNode = getParentNode(currentNode);\n }\n\n cache.set(element, result);\n return result;\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\n\n\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n\n if (!isElement(reference) && reference.contextElement && !animationFrame) {\n observer.observe(reference.contextElement);\n }\n\n observer.observe(floating);\n }\n\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\n if (animationFrame) {\n frameLoop();\n }\n\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n\n update();\n return () => {\n var _observer;\n\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = { ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, { ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import{createEffect as f,createMemo as R,createSignal as g,onCleanup as y}from\"solid-js\";import{computePosition as E}from\"@floating-ui/dom\";function P(l,u,e){let c=()=>{var t;return(t=e==null?void 0:e.placement)!=null?t:\"bottom\"},d=()=>{var t;return(t=e==null?void 0:e.strategy)!=null?t:\"absolute\"},[n,o]=g({x:null,y:null,placement:c(),strategy:d(),middlewareData:{}}),[x,F]=g();f(()=>{let t=x();if(t)throw t.value});let s=R(()=>(l(),u(),{}));function i(){let t=l(),r=u();if(t&&r){let a=s();E(t,r,{middleware:e==null?void 0:e.middleware,placement:c(),strategy:d()}).then(m=>{a===s()&&o(m)},m=>{F(m)})}}return f(()=>{let t=l(),r=u();if(e==null||e.middleware,c(),d(),t&&r)if(e!=null&&e.whileElementsMounted){let a=e.whileElementsMounted(t,r,i);a&&y(a)}else i()}),{get x(){return n().x},get y(){return n().y},get placement(){return n().placement},get strategy(){return n().strategy},get middlewareData(){return n().middlewareData},update:i}}export{P as useFloating};\n","import { Component, createSignal, onCleanup, onMount, Show, useContext } from 'solid-js';\nimport { ArrowIcon, Text, TonIcon } from 'src/app/components';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { Account, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport {\n AccountButtonStyled,\n DropdownButtonStyled,\n DropdownContainerStyled,\n DropdownStyled,\n NotificationsStyled\n} from './style';\nimport { Portal } from 'solid-js/web';\nimport { useFloating } from 'solid-floating-ui';\nimport { autoUpdate } from '@floating-ui/dom';\nimport { Transition } from 'solid-transition-group';\nimport { useTheme } from 'solid-styled-components';\nimport { CHAIN } from '@tonconnect/protocol';\n\ninterface AccountButtonProps {}\n\nexport const AccountButton: Component<AccountButtonProps> = () => {\n const theme = useTheme();\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [isOpened, setIsOpened] = createSignal(false);\n const [account, setAccount] = createSignal<Account | null>(null);\n\n let dropDownRef: HTMLDivElement | undefined;\n\n const [floating, setFloating] = createSignal<HTMLDivElement | undefined>();\n const [anchor, setAnchor] = createSignal<HTMLButtonElement | undefined>();\n\n const position = useFloating(anchor, floating, {\n whileElementsMounted: autoUpdate,\n placement: 'bottom-end'\n });\n\n const normalizedAddress = (): string => {\n const acc = account();\n if (acc) {\n const userFriendlyAddress = toUserFriendlyAddress(\n acc.address,\n acc.chain === CHAIN.TESTNET\n );\n return userFriendlyAddress.slice(0, 4) + '...' + userFriendlyAddress.slice(-4);\n }\n\n return '';\n };\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (!wallet) {\n setIsOpened(false);\n setAccount(null);\n return;\n }\n\n setAccount(wallet.account);\n });\n\n const onClick = (e: Event): void | boolean => {\n if (!account() || !isOpened()) {\n return;\n }\n const clickToButton = anchor()!.contains(e.target as Node);\n const clickToDropdown = dropDownRef!.contains(e.target as Node);\n\n if (!clickToButton && !clickToDropdown) {\n setIsOpened(false);\n }\n };\n\n onMount(() => {\n document.body.addEventListener('click', onClick);\n });\n\n onCleanup(() => {\n document.body.removeEventListener('click', onClick);\n unsubscribe();\n });\n\n return (\n <>\n <Show when={!account()}>\n <AccountButtonStyled\n onClick={() => tonConnectUI.connectWallet()}\n id=\"tc-connect-button\"\n >\n <TonIcon fill={theme.colors.connectButton.foreground} />\n <Text\n translationKey=\"button.connectWallet\"\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n color={theme.colors.connectButton.foreground}\n >\n Connect wallet\n </Text>\n </AccountButtonStyled>\n </Show>\n <Show when={account()}>\n <DropdownContainerStyled>\n <DropdownButtonStyled\n onClick={() => setIsOpened(v => !v)}\n ref={setAnchor}\n id=\"tc-dropdown-button\"\n >\n <Text fontSize=\"15px\" letterSpacing=\"-0.24px\" fontWeight=\"590\">\n {normalizedAddress()}\n </Text>\n <ArrowIcon direction=\"bottom\" />\n </DropdownButtonStyled>\n <Portal>\n <div\n ref={setFloating}\n style={{\n position: position.strategy,\n top: `${position.y ?? 0}px`,\n left: `${position.x ?? 0}px`,\n 'z-index': 999\n }}\n id=\"tc-dropdown-container\"\n >\n <Transition\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(-8px)' },\n { opacity: 1, transform: 'translateY(0)' }\n ],\n {\n duration: 150\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(0)' },\n { opacity: 0, transform: 'translateY(-8px)' }\n ],\n {\n duration: 150\n }\n );\n a.finished.then(done);\n }}\n >\n <Show when={isOpened()}>\n <DropdownStyled\n hidden={!isOpened()}\n onClose={() => setIsOpened(false)}\n ref={dropDownRef}\n id=\"tc-dropdown\"\n />\n </Show>\n </Transition>\n <NotificationsStyled id=\"tc-notifications\" />\n </div>\n </Portal>\n </DropdownContainerStyled>\n </Show>\n </>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const QrCodeStyled = styled.div`\n position: relative;\n\n > div:first-child {\n height: 276px;\n width: 276px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n > svg {\n height: 276px;\n width: 276px;\n }\n }\n\n rect {\n fill: transparent;\n }\n\n path {\n fill: ${props => props.theme!.colors.text.primary};\n }\n`;\n\nexport const ImageBackground = styled.div`\n position: absolute;\n width: 52px;\n height: 52px;\n background: ${props => props.theme!.colors.background.secondary};\n padding: 7px;\n top: 112px;\n left: 112px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n > img {\n width: 46px;\n height: 46px;\n border-radius: 12px;\n }\n`;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\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 _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var 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 };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var 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 var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\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\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\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\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\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\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\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\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\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\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\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\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\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\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\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, 7, 37, 13],\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { Component, createEffect } from 'solid-js';\nimport { ImageBackground, QrCodeStyled } from './style';\nimport qrcode from 'qrcode-generator';\n\ninterface QRCodeProps {\n imageUrl?: string;\n sourceUrl: string;\n}\n\nexport const QRCode: Component<QRCodeProps> = props => {\n let qrCodeCanvas: HTMLDivElement | undefined;\n\n createEffect(() => {\n const errorCorrectionLevel = 'L';\n const qr = qrcode(0, errorCorrectionLevel);\n qr.addData(props.sourceUrl);\n qr.make();\n qrCodeCanvas!.innerHTML = qr.createSvgTag(4);\n });\n\n return (\n <QrCodeStyled>\n <div ref={qrCodeCanvas} />\n <ImageBackground>\n <img src={props.imageUrl} alt=\"\" />\n </ImageBackground>\n </QrCodeStyled>\n );\n};\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\n\ninterface TranslationProps extends PropertyRequired<Translateable, 'translationKey'> {\n children?: JSXElement;\n}\n\nexport const Translation: Component<TranslationProps> = props => {\n const [t] = useI18n();\n\n return t(props.translationKey, props.translationValues, props.children?.toString());\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, IconButton, Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const QrCodeModalStyled = styled.div`\n padding: 0 24px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const QRBackgroundStyled = styled.div`\n margin-bottom: 16px;\n background-color: ${props => props.theme!.colors.background.secondary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px 0;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n gap: 16px;\n height: 56px;\n margin-bottom: 24px;\n`;\n\nexport const ActionButtonStyled = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.32px;\n width: 100%;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const GetWalletStyled = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const TextStyled = styled(Text)`\n color: ${props => props.theme!.colors.text.secondary};\n font-size: 16px;\n`;\n","import { THEME } from 'src/models/THEME';\n\nexport function openLink(href: string, target = '_self'): void {\n window.open(href, target, 'noreferrer noopener');\n}\n\nexport function openLinkBlank(href: string): void {\n openLink(href, '_blank');\n}\n\nexport function getSystemTheme(): THEME {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {\n return THEME.LIGHT;\n }\n\n return THEME.DARK;\n}\n\nexport function subscribeToThemeChange(callback: (theme: THEME) => void): () => void {\n const handler = (event: MediaQueryListEvent): void =>\n callback(event.matches ? THEME.DARK : THEME.LIGHT);\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', handler);\n return () =>\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', handler);\n}\n","import {\n ConnectAdditionalRequest,\n isWalletInfoInjected,\n WalletInfoInjected,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport { Component, Show, useContext } from 'solid-js';\nimport { Button, H1, H2 } from 'src/app/components';\nimport { QRCode } from 'src/app/components/qr-code';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n ActionButtonStyled,\n ButtonsContainerStyled,\n GetWalletStyled,\n QRBackgroundStyled,\n QrCodeModalStyled,\n StyledIconButton,\n TextStyled\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { openLink, openLinkBlank } from 'src/app/utils/web-api';\nimport { Identifiable } from 'src/app/models/identifiable';\n\nexport interface QrCodeModalProps extends Identifiable {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote | (WalletInfoRemote & WalletInfoInjected);\n onBackClick: () => void;\n}\n\nexport const QrCodeModal: Component<QrCodeModalProps> = props => {\n const connector = useContext(ConnectorContext)!;\n const universalLink = connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n );\n\n return (\n <QrCodeModalStyled id={props.id}>\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n <H1\n translationKey=\"walletModal.qrCodeModal.connectWith\"\n translationValues={{ name: props.wallet.name }}\n >\n Connect with {props.wallet.name}\n </H1>\n <H2\n translationKey=\"walletModal.qrCodeModal.scan\"\n translationValues={{ name: props.wallet.name }}\n >\n Scan QR code with your phone’s or {props.wallet.name}’s camera.\n </H2>\n <QRBackgroundStyled>\n <QRCode sourceUrl={universalLink} imageUrl={props.wallet.imageUrl} />\n </QRBackgroundStyled>\n <ButtonsContainerStyled>\n <ActionButtonStyled onClick={() => openLink(universalLink)}>\n <Translation\n translationKey=\"walletModal.qrCodeModal.openWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Open {props.wallet.name}\n </Translation>\n </ActionButtonStyled>\n <Show when={isWalletInfoInjected(props.wallet) && props.wallet.injected}>\n <ActionButtonStyled\n onClick={() =>\n connector.connect(\n {\n jsBridgeKey: (props.wallet as WalletInfoInjected).jsBridgeKey\n },\n props.additionalRequest\n )\n }\n >\n <Translation translationKey=\"walletModal.qrCodeModal.openExtension\">\n Open Extension\n </Translation>\n </ActionButtonStyled>\n </Show>\n </ButtonsContainerStyled>\n <GetWalletStyled>\n <TextStyled\n translationKey=\"walletModal.qrCodeModal.dontHave\"\n translationValues={{ name: props.wallet.name }}\n >\n Don't have {props.wallet.name}?\n </TextStyled>\n <Button onClick={() => openLinkBlank(props.wallet.aboutUrl)}>\n <Translation translationKey=\"walletModal.qrCodeModal.get\">GET</Translation>\n </Button>\n </GetWalletStyled>\n </QrCodeModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\nexport const WalletItemStyled = styled.button`\n cursor: pointer;\n display: block;\n border: none;\n background-color: unset;\n padding: 12px 12px 24px 12px;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: scale(1.04);\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n img {\n width: 72px;\n height: 72px;\n border-radius: 18px;\n\n margin-bottom: 8px;\n\n ${media('mobile')} {\n width: 64px;\n height: 64px;\n border-radius: 16px;\n }\n }\n\n ${media('mobile')} {\n padding: 10px 10px 20px 10px;\n }\n`;\n\nexport const StyledText = styled(Text)`\n font-weight: 590;\n max-width: 72px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n @supports (-webkit-line-clamp: 2) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: initial;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n`;\n","import { Component } from 'solid-js';\nimport { StyledText, WalletItemStyled } from './style';\n\ninterface WalletItemProps {\n iconUrl: string;\n name: string;\n onClick: () => void;\n}\n\nexport const WalletItem: Component<WalletItemProps> = props => {\n return (\n <WalletItemStyled onClick={() => props.onClick()}>\n <img src={props.iconUrl} alt=\"\" />\n <StyledText>{props.name}</StyledText>\n </WalletItemStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H2 } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const SelectWalletModalStyled = styled.div``;\n\nexport const UlStyled = styled.ul`\n display: flex;\n margin: 0 auto 24px;\n width: fit-content;\n max-width: 100%;\n min-height: 140px;\n overflow: auto;\n padding: 0 24px;\n\n &&::-webkit-scrollbar {\n display: none;\n }\n\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n ${media('mobile')} {\n min-height: 126px;\n }\n`;\n\nexport const H2Styled = styled(H2)`\n ${media('mobile')} {\n margin-bottom: 24px;\n padding: 0 24px;\n min-height: 44px;\n }\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto;\n`;\n","import { WalletInfo } from '@tonconnect/sdk';\nimport { Component, For } from 'solid-js';\nimport { H1 } from 'src/app/components';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { WalletItem } from './wallet-item';\nimport { ButtonStyled, H2Styled, SelectWalletModalStyled, UlStyled } from './style';\nimport { openLinkBlank } from 'src/app/utils/web-api';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface SelectWalletModalProps extends Identifiable {\n walletsList: WalletInfo[];\n onSelect: (wallet: WalletInfo) => void;\n}\n\nexport const SelectWalletModal: Component<SelectWalletModalProps> = props => {\n const learnMoreUrl = 'https://ton.org/wallets';\n\n return (\n <SelectWalletModalStyled id={props.id}>\n <H1 translationKey=\"walletModal.selectWalletModal.connectWallet\">Connect a wallet</H1>\n <H2Styled translationKey=\"walletModal.selectWalletModal.selectWallet\">\n Select your wallet from the options to get started.\n </H2Styled>\n <UlStyled>\n <For each={props.walletsList}>\n {wallet => (\n <li>\n <WalletItem\n iconUrl={wallet.imageUrl}\n name={wallet.name}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n </UlStyled>\n <ButtonStyled onClick={() => openLinkBlank(learnMoreUrl)}>\n <Translation translationKey=\"walletModal.selectWalletModal.learnMore\">\n Learn more\n </Translation>\n </ButtonStyled>\n </SelectWalletModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { H1, LoaderIcon, Modal } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const StyledModal = styled(Modal)`\n padding-left: 0;\n padding-right: 0;\n\n ${media('mobile')} {\n min-height: 390px;\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 12px;\n\n ${media('mobile')} {\n padding: 0 10px;\n }\n`;\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n width: 70px;\n height: 70px;\n`;\n\nexport const LoaderContainerStyled = styled.div`\n margin: 30px 0;\n width: 100%;\n display: flex;\n justify-content: center;\n\n ${media('mobile')} {\n height: 160px;\n align-items: center;\n }\n`;\n","import { ConnectAdditionalRequest, ITonConnect } from '@tonconnect/sdk';\nimport { createStore } from 'solid-js/store';\nimport { Locales } from 'src/models/locales';\nimport { WalletsListConfiguration } from 'src/models/wallets-list-configuration';\n\nexport type AppState = {\n connector: ITonConnect;\n buttonRootId: string | null;\n language: Locales;\n walletsList: WalletsListConfiguration | {};\n getConnectParameters?: () => Promise<ConnectAdditionalRequest>;\n};\n\nexport const [appState, setAppState] = createStore<AppState>({\n buttonRootId: null,\n language: 'en',\n walletsList: {}\n} as AppState);\n","import { WalletInfo, TonConnect } from '@tonconnect/sdk';\nimport { UIWallet } from 'src/models/ui-wallet';\nimport { WalletsListConfiguration } from 'src/models';\n\nexport function uiWalletToWalletInfo(uiWallet: UIWallet): WalletInfo {\n if ('jsBridgeKey' in uiWallet) {\n return {\n ...uiWallet,\n injected: TonConnect.isWalletInjected(uiWallet.jsBridgeKey),\n embedded: TonConnect.isInsideWalletBrowser(uiWallet.jsBridgeKey)\n };\n }\n\n return uiWallet;\n}\n\nexport function applyWalletsListConfiguration(\n walletsList: WalletInfo[],\n configuration?: WalletsListConfiguration\n): WalletInfo[] {\n if (!configuration) {\n return walletsList;\n }\n\n if ('wallets' in configuration) {\n return configuration.wallets\n .map(wallet => {\n if (typeof wallet === 'string') {\n const walletInfo = walletsList.find(item => item.name === wallet);\n\n if (!walletInfo) {\n console.error(\n `Wallet with name === '${wallet}' wasn't found in the wallets list. Check '${wallet}' correctness. Available wallets names: ${walletsList\n .map(i => \"'\" + i.name + \"'\")\n .join(', ')}`\n );\n\n return null;\n }\n return walletInfo;\n }\n\n return uiWalletToWalletInfo(wallet);\n })\n .filter(i => !!i) as WalletInfo[];\n }\n\n const filteredWalletsList = configuration.excludeWallets?.length\n ? walletsList.filter(wallet =>\n configuration.excludeWallets?.every(item => item !== wallet.name)\n )\n : walletsList;\n\n if (!configuration.includeWallets) {\n return filteredWalletsList;\n }\n\n if (configuration.includeWalletsOrder === 'start') {\n return configuration.includeWallets.map(uiWalletToWalletInfo).concat(walletsList);\n }\n\n return walletsList.concat(configuration.includeWallets.map(uiWalletToWalletInfo));\n}\n","import {\n ConnectAdditionalRequest,\n isWalletInfoInjected,\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n on,\n onCleanup,\n Show,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n setLastSelectedWalletInfo,\n setWalletsModalOpen,\n walletsModalOpen\n} from 'src/app/state/modals-state';\nimport { QrCodeModal } from 'src/app/views/modals/wallets-modal/qr-code-modal';\nimport { SelectWalletModal } from 'src/app/views/modals/wallets-modal/select-wallet-modal';\nimport { StyledModal, LoaderIconStyled, LoaderContainerStyled, H1Styled } from './style';\nimport { openLink } from 'src/app/utils/web-api';\nimport { isDevice } from 'src/app/styles/media';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { applyWalletsListConfiguration } from 'src/app/utils/wallets';\n\nexport const WalletsModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext);\n const [fetchedWalletsList] = createResource(() => tonConnectUI!.getWallets());\n const [fetchedAdditionalRequest, { refetch }] = createResource<\n ConnectAdditionalRequest | undefined\n >((_, { refetching }) => {\n if (refetching) {\n return appState.getConnectParameters?.();\n }\n\n return undefined;\n });\n\n createEffect(\n on(walletsModalOpen, () => {\n if (walletsModalOpen() && fetchedAdditionalRequest.state !== 'refreshing') {\n refetch();\n }\n })\n );\n\n const [selectedWalletInfo, setSelectedWalletInfo] = createSignal<WalletInfo | null>(null);\n\n const walletsList = createMemo(() => {\n if (fetchedWalletsList.state !== 'ready') {\n return null;\n }\n\n return applyWalletsListConfiguration(fetchedWalletsList(), appState.walletsList);\n });\n\n const additionalRequestLoading = (): boolean =>\n fetchedAdditionalRequest.state !== 'ready' && fetchedAdditionalRequest.state !== 'errored';\n\n const additionalRequest = createMemo(() => {\n if (fetchedAdditionalRequest.state !== 'ready') {\n return undefined;\n }\n\n return fetchedAdditionalRequest();\n });\n\n const onClose = (): void => {\n setWalletsModalOpen(false);\n setSelectedWalletInfo(null);\n };\n\n const onSelect = (walletInfo: WalletInfo): void => {\n setLastSelectedWalletInfo(walletInfo);\n\n if (isDevice('mobile') && 'universalLink' in walletInfo) {\n return onSelectIfMobile(walletInfo);\n }\n\n if (isWalletInfoInjected(walletInfo) && walletInfo.injected) {\n return onSelectIfInjected(walletInfo);\n }\n\n if ('bridgeUrl' in walletInfo) {\n setSelectedWalletInfo(walletInfo);\n return;\n }\n\n openLink(walletInfo.aboutUrl, '_blank');\n };\n\n const onSelectIfMobile = (walletInfo: WalletInfoRemote): void => {\n const universalLink = connector.connect(\n {\n universalLink: walletInfo.universalLink,\n bridgeUrl: walletInfo.bridgeUrl\n },\n additionalRequest()\n );\n\n openLink(universalLink);\n };\n\n const onSelectIfInjected = (walletInfo: WalletInfoInjected): void => {\n connector.connect(\n {\n jsBridgeKey: walletInfo.jsBridgeKey\n },\n additionalRequest()\n );\n };\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (wallet) {\n onClose();\n }\n });\n\n onCleanup(unsubscribe);\n\n return (\n <StyledModal opened={walletsModalOpen()} onClose={onClose} id=\"tc-wallets-modal-container\">\n <Show when={!walletsList() || additionalRequestLoading()}>\n <H1Styled translationKey=\"walletModal.loading\">Wallets list is loading</H1Styled>\n <LoaderContainerStyled>\n <LoaderIconStyled />\n </LoaderContainerStyled>\n </Show>\n <Show when={walletsList() && !additionalRequestLoading()}>\n <Show when={!selectedWalletInfo()} keyed={false}>\n <SelectWalletModal\n walletsList={walletsList()!}\n onSelect={onSelect}\n id=\"tc-wallets-modal\"\n />\n </Show>\n <Show when={selectedWalletInfo()} keyed={false}>\n <QrCodeModal\n additionalRequest={additionalRequest()}\n wallet={selectedWalletInfo() as WalletInfoRemote}\n onBackClick={() => setSelectedWalletInfo(null)}\n id=\"tc-qr-modal\"\n />\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, Text } from 'src/app/components';\n\nexport const ActionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 20px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 19px;\n`;\n\nexport const TextStyled = styled(Text)`\n font-weight: 510;\n font-size: 16px;\n line-height: 22px;\n letter-spacing: -0.32px;\n text-align: center;\n max-width: 250px;\n\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const ButtonStyled = styled(Button)`\n margin-top: 32px;\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { ActionModalStyled, ButtonStyled, H1Styled, TextStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface ActionModalProps extends Identifiable {\n headerTranslationKey: string;\n icon: JSXElement;\n textTranslationKey?: string;\n onClose: () => void;\n showButton?: boolean;\n}\n\nexport const ActionModal: Component<ActionModalProps> = props => {\n return (\n <ActionModalStyled id={props.id}>\n {props.icon}\n <H1Styled translationKey={props.headerTranslationKey} />\n <TextStyled translationKey={props.textTranslationKey} />\n <Show when={props.showButton !== false}>\n <ButtonStyled onClick={() => props.onClose()}>\n <Translation translationKey=\"common.close\">Close</Translation>\n </ButtonStyled>\n </Show>\n </ActionModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 72px;\n width: 72px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIconStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface ConfirmTransactionModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const ConfirmTransactionModal: Component<ConfirmTransactionModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.confirmTransaction.header\"\n textTranslationKey=\"actionModal.confirmTransaction.text\"\n icon={<LoaderIconStyled />}\n onClose={() => props.onClose()}\n showButton={false}\n id={props.id}\n />\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n height: 66px;\n width: 66px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIconStyled } from 'src/app/views/modals/actions-modal/transaction-canceled-modal/style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface TransactionCanceledModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const TransactionCanceledModal: Component<TransactionCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionCanceled.header\"\n textTranslationKey=\"actionModal.transactionCanceled.text\"\n icon={<ErrorIconStyled />}\n onClose={() => props.onClose()}\n id={props.id}\n />\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n height: 66px;\n width: 66px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIconStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface TransactionSentModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const TransactionSentModal: Component<TransactionSentModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionSent.header\"\n textTranslationKey=\"actionModal.transactionSent.text\"\n icon={<SuccessIconStyled />}\n onClose={() => props.onClose()}\n id={props.id}\n />\n );\n};\n","import { Component, Match, Switch } from 'solid-js';\nimport { Modal } from 'src/app/components';\nimport { action, setAction } from 'src/app/state/modals-state';\nimport { ConfirmTransactionModal } from 'src/app/views/modals/actions-modal/confirm-transaction-modal';\nimport { TransactionCanceledModal } from 'src/app/views/modals/actions-modal/transaction-canceled-modal';\nimport { TransactionSentModal } from 'src/app/views/modals/actions-modal/transaction-sent-modal';\n\nexport const ActionsModal: Component = () => {\n return (\n <Modal\n opened={action() !== null && action()?.openModal === true}\n onClose={() => setAction(null)}\n id=\"tc-actions-modal-container\"\n >\n <Switch>\n <Match when={action()!.name === 'transaction-sent'}>\n <TransactionSentModal\n onClose={() => setAction(null)}\n id=\"tc-transaction-sent-modal\"\n />\n </Match>\n <Match when={action()!.name === 'transaction-canceled'}>\n <TransactionCanceledModal\n onClose={() => setAction(null)}\n id=\"tc-transaction-canceled-modal\"\n />\n </Match>\n <Match when={action()!.name === 'confirm-transaction'}>\n <ConfirmTransactionModal\n onClose={() => setAction(null)}\n id=\"tc-confirm-modal\"\n />\n </Match>\n </Switch>\n </Modal>\n );\n};\n","import { Show } from 'solid-js';\nimport type { Component } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { ThemeProvider } from 'solid-styled-components';\nimport { i18nDictionary } from 'src/app/i18n';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { themeState } from 'src/app/state/theme-state';\nimport { GlobalStyles } from 'src/app/styles/global-styles';\nimport { AccountButton } from 'src/app/views/account-button';\nimport { ActionsModal, WalletsModal } from 'src/app/views/modals';\nimport './styles/style.d.ts';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { createI18nContext, I18nContext } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\n\nexport type AppProps = {\n tonConnectUI: TonConnectUI;\n};\n\nconst App: Component<AppProps> = props => {\n const translations = createI18nContext(i18nDictionary, appState.language);\n\n return (\n <I18nContext.Provider value={translations}>\n <TonConnectUiContext.Provider value={props.tonConnectUI}>\n <ConnectorContext.Provider value={appState.connector}>\n <GlobalStyles />\n <ThemeProvider theme={themeState}>\n <Show when={appState.buttonRootId}>\n <Portal mount={document.getElementById(appState.buttonRootId!)!}>\n <AccountButton />\n </Portal>\n </Show>\n <WalletsModal />\n <ActionsModal />\n </ThemeProvider>\n </ConnectorContext.Provider>\n </TonConnectUiContext.Provider>\n </I18nContext.Provider>\n );\n};\n\nexport default App;\n","import { WalletInfo } from '@tonconnect/sdk';\nimport { render } from 'solid-js/web';\n\nimport {\n Action,\n lastSelectedWalletInfo,\n setAction,\n setWalletsModalOpen\n} from 'src/app/state/modals-state';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport App from './App';\n\nexport const widgetController = {\n openWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(true)),\n closeWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(false)),\n setAction: (action: Action): void => void setTimeout(() => setAction(action)),\n clearAction: (): void => void setTimeout(() => setAction(null)),\n getSelectedWalletInfo: (): WalletInfo | null => lastSelectedWalletInfo(),\n renderApp: (root: string, tonConnectUI: TonConnectUI): (() => void) =>\n render(\n () => <App tonConnectUI={tonConnectUI} />,\n document.getElementById(root) as HTMLElement\n )\n};\n","import { TonConnectError } from '@tonconnect/sdk';\n\nexport class TonConnectUIError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n\n Object.setPrototypeOf(this, TonConnectUIError.prototype);\n }\n}\n","import { WalletInfo } from '@tonconnect/sdk';\nimport { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\n\nexport class WalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_wallet-info';\n\n constructor() {\n if (!localStorage) {\n throw new TonConnectUIError(\n 'window.localStorage is undefined. localStorage is required for TonConnectUI'\n );\n }\n\n this.localStorage = localStorage;\n }\n\n public setWalletInfo(walletInfo: WalletInfo): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getWalletInfo(): WalletInfo | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import type { Account } from '@tonconnect/sdk';\nimport {\n ITonConnect,\n SendTransactionRequest,\n SendTransactionResponse,\n TonConnect,\n TonConnectError,\n Wallet,\n WalletInfo,\n WalletInfoInjected\n} from '@tonconnect/sdk';\nimport { widgetController } from 'src/app/widget-controller';\nimport { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { TonConnectUiCreateOptions } from 'src/models/ton-connect-ui-create-options';\nimport { WalletInfoStorage } from 'src/storage';\nimport { isDevice } from 'src/app/styles/media';\nimport { getSystemTheme, openLink, subscribeToThemeChange } from 'src/app/utils/web-api';\nimport { TonConnectUiOptions } from 'src/models/ton-connect-ui-options';\nimport { setBorderRadius, setColors, setTheme } from 'src/app/state/theme-state';\nimport { mergeOptions } from 'src/app/utils/options';\nimport { setAppState } from 'src/app/state/app.state';\nimport { unwrap } from 'solid-js/store';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { ActionConfiguration, StrictActionConfiguration } from 'src/models/action-configuration';\n\nexport class TonConnectUI {\n public static getWallets(): Promise<WalletInfo[]> {\n return TonConnect.getWallets();\n }\n\n private readonly walletInfoStorage = new WalletInfoStorage();\n\n private readonly connector: ITonConnect;\n\n private _walletInfo: WalletInfo | null = null;\n\n private systemThemeChangeUnsubscribe: (() => void) | null = null;\n\n private actionsConfiguration?: {\n modals?: ('before' | 'success' | 'error')[] | 'all';\n notifications?: ('before' | 'success' | 'error')[] | 'all';\n };\n\n /**\n * Current connection status.\n */\n public get connected(): boolean {\n return this.connector.connected;\n }\n\n /**\n * Current connected account or null.\n */\n public get account(): Account | null {\n return this.connector.account;\n }\n\n /**\n * Curren connected wallet app or null.\n */\n public get wallet(): Wallet | null {\n return this.connector.wallet;\n }\n\n /**\n * Curren connected wallet's info or null.\n */\n public get walletInfo(): WalletInfo | null {\n return this._walletInfo;\n }\n\n /**\n * Set and apply new UI options. Object with partial options should be passed. Passed options will be merged with current options.\n * @param options\n */\n public set uiOptions(options: TonConnectUiOptions) {\n this.checkButtonRootExist(options.buttonRootId);\n\n this.actionsConfiguration = options.actionsConfiguration;\n\n if (options.uiPreferences?.theme) {\n if (options.uiPreferences?.theme !== 'SYSTEM') {\n this.systemThemeChangeUnsubscribe?.();\n setTheme(options.uiPreferences.theme, options.uiPreferences.colorsSet);\n } else {\n setTheme(getSystemTheme(), options.uiPreferences.colorsSet);\n\n if (!this.systemThemeChangeUnsubscribe) {\n this.systemThemeChangeUnsubscribe = subscribeToThemeChange(setTheme);\n }\n }\n } else {\n if (options.uiPreferences?.colorsSet) {\n setColors(options.uiPreferences.colorsSet);\n }\n }\n\n if (options.uiPreferences?.borderRadius) {\n setBorderRadius(options.uiPreferences.borderRadius);\n }\n\n setAppState(state => {\n const merged = mergeOptions(\n {\n ...(options.language && { language: options.language }),\n ...(!!options.walletsList && { walletsList: options.walletsList })\n },\n unwrap(state)\n );\n\n if (options.buttonRootId !== undefined) {\n merged.buttonRootId = options.buttonRootId;\n }\n\n return merged;\n });\n }\n\n constructor(options?: TonConnectUiCreateOptions) {\n if (options && 'connector' in options && options.connector) {\n this.connector = options.connector;\n } else if (options && 'manifestUrl' in options && options.manifestUrl) {\n this.connector = new TonConnect({\n manifestUrl: options.manifestUrl,\n walletsListSource: options.walletsListSource\n });\n } else {\n throw new TonConnectUIError(\n 'You have to specify a `manifestUrl` or a `connector` in the options.'\n );\n }\n\n this.getWallets();\n const rootId = this.normalizeWidgetRoot(options?.widgetRootId);\n\n this.subscribeToWalletChange();\n\n if (options?.restoreConnection !== false) {\n this.connector.restoreConnection().then(() => {\n if (!this.connector.connected) {\n this.walletInfoStorage.removeWalletInfo();\n }\n });\n }\n\n this.uiOptions = mergeOptions(options, { uiPreferences: { theme: 'SYSTEM' } });\n setAppState({\n connector: this.connector,\n getConnectParameters: options?.getConnectParameters\n });\n\n widgetController.renderApp(rootId, this);\n }\n\n /**\n * Returns available wallets list.\n */\n public async getWallets(): Promise<WalletInfo[]> {\n return this.connector.getWallets();\n }\n\n /**\n * Subscribe to connection status change.\n * @return function which has to be called to unsubscribe.\n */\n public onStatusChange(\n callback: (wallet: (Wallet & WalletInfo) | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): ReturnType<ITonConnect['onStatusChange']> {\n return this.connector.onStatusChange(wallet => {\n if (wallet) {\n const lastSelectedWalletInfo =\n widgetController.getSelectedWalletInfo() ||\n this.walletInfoStorage.getWalletInfo();\n\n callback({ ...wallet, ...lastSelectedWalletInfo! });\n } else {\n callback(wallet);\n }\n }, errorsHandler);\n }\n\n /**\n * Opens the modal window and handles a wallet connection.\n */\n public async connectWallet(): Promise<Wallet & WalletInfo> {\n const walletsList = await this.getWallets();\n const embeddedWallet: WalletInfoInjected = walletsList.find(\n wallet => 'embedded' in wallet && wallet.embedded\n ) as WalletInfoInjected;\n\n if (embeddedWallet) {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey });\n } else {\n widgetController.openWalletsModal();\n }\n\n return new Promise((resolve, reject) => {\n const unsubscribe = this.connector.onStatusChange(wallet => {\n unsubscribe!();\n if (wallet) {\n const lastSelectedWalletInfo =\n widgetController.getSelectedWalletInfo() ||\n this.walletInfoStorage.getWalletInfo();\n\n resolve({ ...wallet, ...lastSelectedWalletInfo! });\n } else {\n reject(new TonConnectUIError('Wallet was not connected'));\n }\n }, reject);\n });\n }\n\n /**\n * Disconnect wallet and clean localstorage.\n */\n public disconnect(): Promise<void> {\n this.walletInfoStorage.removeWalletInfo();\n return this.connector.disconnect();\n }\n\n /**\n * Opens the modal window and handles the transaction sending.\n * @param tx transaction to send.\n * @param options modal and notifications behaviour settings. Default is show only 'before' modal and all notifications.\n */\n public async sendTransaction(\n tx: SendTransactionRequest,\n options?: ActionConfiguration\n ): Promise<SendTransactionResponse> {\n if (!this.connected || !this.walletInfo) {\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n if (!isDevice('desktop') && 'universalLink' in this.walletInfo) {\n openLink(this.walletInfo.universalLink);\n }\n\n const { notifications, modals } = this.getModalsAndNotificationsConfiguration(options);\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before')\n });\n\n try {\n const result = await this.connector.sendTransaction(tx);\n\n widgetController.setAction({\n name: 'transaction-sent',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n widgetController.setAction({\n name: 'transaction-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n }\n }\n\n private subscribeToWalletChange(): void {\n this.connector.onStatusChange(wallet => {\n if (wallet) {\n this.updateWalletInfo();\n } else {\n this.walletInfoStorage.removeWalletInfo();\n }\n });\n }\n\n private updateWalletInfo(): void {\n const lastSelectedWalletInfo = widgetController.getSelectedWalletInfo();\n\n if (lastSelectedWalletInfo) {\n this._walletInfo = lastSelectedWalletInfo;\n this.walletInfoStorage.setWalletInfo(lastSelectedWalletInfo);\n } else {\n this._walletInfo = this.walletInfoStorage.getWalletInfo();\n }\n }\n\n private normalizeWidgetRoot(rootId: string | undefined): string {\n if (!rootId || !document.getElementById(rootId)) {\n rootId = 'tc-widget-root';\n const rootElement = document.createElement('div');\n rootElement.id = rootId;\n document.body.appendChild(rootElement);\n }\n\n return rootId;\n }\n\n private checkButtonRootExist(buttonRootId: string | null | undefined): void | never {\n if (buttonRootId == null) {\n return;\n }\n\n if (!document.getElementById(buttonRootId)) {\n throw new TonConnectUIError(`${buttonRootId} element not found in the document.`);\n }\n }\n\n private getModalsAndNotificationsConfiguration(\n options?: ActionConfiguration\n ): StrictActionConfiguration {\n const allActions: StrictActionConfiguration['notifications'] = [\n 'before',\n 'success',\n 'error'\n ];\n\n let notifications: StrictActionConfiguration['notifications'] = allActions;\n if (\n this.actionsConfiguration?.notifications &&\n this.actionsConfiguration?.notifications !== 'all'\n ) {\n notifications = this.actionsConfiguration.notifications;\n }\n\n if (options?.notifications) {\n if (options.notifications === 'all') {\n notifications = allActions;\n } else {\n notifications = options.notifications;\n }\n }\n\n let modals: StrictActionConfiguration['modals'] = ['before'];\n if (this.actionsConfiguration?.modals) {\n if (this.actionsConfiguration.modals === 'all') {\n modals = allActions;\n } else {\n modals = this.actionsConfiguration.modals;\n }\n }\n if (options?.modals) {\n if (options.modals === 'all') {\n modals = allActions;\n } else {\n modals = options.modals;\n }\n }\n\n return {\n notifications,\n modals\n };\n }\n}\n"],"names":["CONNECT_EVENT_ERROR_CODES","CONNECT_ITEM_ERROR_CODES","SEND_TRANSACTION_ERROR_CODES","CHAIN","this","s","i","nacl","e","isNode","h","l","n","o","p","c","u","a","t","crypto","require","__awaiter","P","getWindow","window","walletConfigDTO","Transition","value","error","lookup","children","dispose","template","document","unwrap","r","className","css","GlobalStyles","THEME","isMergeableObject","deepmerge","body","addEventListener","classList","add","event","key","remove","Styles","createGlobalStyles","_$createComponent","borders","ButtonStyled","Button","props","class","id","onClick","ref","classnames","el","clickOutside","accessor","contains","target","onCleanup","removeEventListener","escPressed","_","onKeyPress","activeElement","blur","rotationDegrees","left","top","right","bottom","ArrowIcon","theme","useTheme","fill","colors","icon","secondary","direction","Svg","styled","svgDirection","_tmpl$","_$effect","_$setAttribute","CloseIcon","IconButton","clickOutsideDirective","keyPressed","keyPressedDirective","m","none","Modal","duration","isDevice","animate","opacity","firstElementChild","transform","done","backgroundAnimation","contentAnimation","Promise","all","finished","then","opened","_$use","onClose","_$insert","cn","ModalWrapperClass","background","primary","borderRadius","media","_$className","H1Styled","H1","useI18n","_$memo","translationKey","translationValues","toString","H2Styled","H2","H3","TextStyled","Text","inputs","color","text","mergeProps","fontSize","fontWeight","lineHeight","letterSpacing","TonIcon","SuccessIcon","success","ErrorIcon","LoaderIcon","tertiary","rotateAnimation","keyframes","svgClass","CopyIcon","DisconnectIcon","UlStyled","MenuItemText","AccountButtonDropdown","tonConnectUi","useContext","TonConnectUiContext","connector","ConnectorContext","isCopiedShown","setIsCopiedShown","createSignal","onCopy","userFriendlyAddress","toUserFriendlyAddress","account","address","chain","TESTNET","copyToClipboard","setTimeout","onDisconnect","disconnect","Notification","header","LoaderIconStyled","ConfirmOperationNotification","ErrorIconStyled","ErrorTransactionNotification","SuccessIconStyled","SuccessTransactionNotification","Notifications","lastId","liveTimeoutMs","openedNotifications","setOpenedNotifications","createEffect","on","action","showNotification","notifications","filter","notification","concat","name","openedNotification","NotificationClass","computePosition","platform","g","f","R","E","y","AccountButton","tonConnectUI","isOpened","setIsOpened","setAccount","dropDownRef","floating","setFloating","anchor","setAnchor","position","useFloating","whileElementsMounted","autoUpdate","placement","normalizedAddress","acc","slice","unsubscribe","onStatusChange","wallet","clickToButton","clickToDropdown","onMount","connectWallet","connectButton","foreground","v","strategy","x","qrcode","typeNumber","errorCorrectionLevel","min","max","unicodeMap","_num","num","_this","data","encode","decode","QRCode","qrCodeCanvas","qr","addData","sourceUrl","make","innerHTML","createSvgTag","imageUrl","Translation","QrCodeModal","universalLink","connect","bridgeUrl","additionalRequest","onBackClick","openLink","isWalletInfoInjected","injected","jsBridgeKey","openLinkBlank","aboutUrl","WalletItem","iconUrl","SelectWalletModal","learnMoreUrl","walletsList","onSelect","_a","WalletsModal","locale","appState","language","fetchedWalletsList","createResource","getWallets","fetchedAdditionalRequest","refetch","refetching","getConnectParameters","undefined","walletsModalOpen","state","selectedWalletInfo","setSelectedWalletInfo","createMemo","applyWalletsListConfiguration","additionalRequestLoading","setWalletsModalOpen","walletInfo","setLastSelectedWalletInfo","onSelectIfMobile","onSelectIfInjected","ActionModal","headerTranslationKey","textTranslationKey","showButton","ConfirmTransactionModal","TransactionCanceledModal","TransactionSentModal","ActionsModal","openModal","setAction","App","translations","createI18nContext","i18nDictionary","themeState","buttonRootId","getElementById","widgetController","openWalletsModal","closeWalletsModal","clearAction","getSelectedWalletInfo","lastSelectedWalletInfo","renderApp","root","render"],"mappings":"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,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../sdk/lib/esm/errors/ton-connect.error.js","../../sdk/lib/esm/errors/dapp/dapp-metadata.error.js","../../sdk/lib/esm/errors/protocol/events/connect/manifest-content-error.error.js","../../sdk/lib/esm/errors/protocol/events/connect/manifest-not-found.error.js","../../sdk/lib/esm/errors/wallet/wallet-already-connected.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-connected.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-support-feature.error.js","../../sdk/lib/esm/models/wallet/wallet-connection-source.js","../../sdk/lib/esm/errors/protocol/events/connect/user-rejects.error.js","../../sdk/lib/esm/errors/protocol/responses/bad-request.error.js","../../sdk/lib/esm/errors/protocol/responses/unknown-app.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-injected.error.js","../../sdk/lib/esm/errors/storage/localstorage-not-found.error.js","../../sdk/lib/esm/errors/wallets-manager/fetch-wallets.error.js","../../sdk/lib/esm/errors/address/wrong-address.error.js","../../sdk/lib/esm/errors/binary/parse-hex.error.js","../../sdk/lib/esm/errors/unknown.error.js","../../protocol/lib/esm/models/wallet-message/wallet-event/connect-event.js","../../protocol/lib/esm/models/wallet-message/wallet-response/send-transaction-rpc-response.js","../../protocol/lib/esm/models/CHAIN.js","../../../node_modules/tweetnacl-util/nacl-util.js","../../protocol/lib/esm/utils/base64.js","../../protocol/lib/esm/utils/binary.js","../../protocol/lib/esm/utils/web-api.js","../__vite-browser-external","../../../node_modules/tweetnacl/nacl-fast.js","../../protocol/lib/esm/crypto/session-crypto.js","../../sdk/lib/esm/parsers/connect-errors-parser.js","../../sdk/lib/esm/parsers/rpc-parser.js","../../sdk/lib/esm/parsers/send-transaction-parser.js","../../sdk/lib/esm/storage/http-bridge-gateway-storage.js","../../sdk/lib/esm/utils/url.js","../../sdk/lib/esm/provider/bridge/bridge-gateway.js","../../sdk/lib/esm/storage/bridge-connection-storage.js","../../sdk/lib/esm/resources/protocol.js","../../sdk/lib/esm/provider/bridge/bridge-provider.js","../../sdk/lib/esm/utils/web-api.js","../../sdk/lib/esm/provider/injected/injected-provider.js","../../sdk/lib/esm/storage/default-storage.js","../../sdk/lib/esm/models/wallet/wallet-info.js","../../sdk/lib/esm/wallets-list-manager.js","../../sdk/lib/esm/ton-connect.js","../../sdk/lib/esm/utils/address.js","../../../node_modules/solid-js/dist/solid.js","../../../node_modules/solid-js/web/dist/web.js","../src/app/state/modals-state.ts","../../../node_modules/goober/dist/goober.modern.js","../../../node_modules/solid-styled-components/src/index.js","../src/app/i18n.ts","../src/app/state/connector.context.ts","../../../node_modules/solid-js/store/dist/store.js","../src/models/THEME.ts","../src/app/styles/default-colors.ts","../../../node_modules/deepmerge/dist/cjs.js","../node_modules/is-plain-object/dist/is-plain-object.mjs","../src/app/utils/options.ts","../src/app/state/theme-state.ts","../src/app/styles/global-styles.tsx","../src/app/utils/css.ts","../src/app/components/button/style.ts","../src/app/components/button/index.tsx","../../../node_modules/classnames/index.js","../../../node_modules/solid-transition-group/dist/solid-transition-group.js","../src/app/directives/click-outside.tsx","../src/app/directives/key-pressed.tsx","../src/app/styles/media.ts","../src/app/components/icons/arrow-icon.tsx","../src/app/components/icons/close-icon.tsx","../src/app/components/icon-button/style.ts","../src/app/components/icon-button/index.tsx","../src/app/components/modal/style.ts","../src/app/components/modal/index.tsx","../../../node_modules/@solid-primitives/i18n/dist/index.js","../src/app/components/typography/h1/style.ts","../src/app/components/typography/h1/index.tsx","../src/app/components/typography/h2/style.ts","../src/app/components/typography/h2/index.tsx","../src/app/components/typography/h3/style.ts","../src/app/components/typography/h3/index.tsx","../src/app/components/typography/text/style.ts","../src/app/components/typography/text/index.tsx","../src/app/components/icons/ton-icon.tsx","../src/app/components/icons/success-icon.tsx","../src/app/components/icons/error-icon.tsx","../src/app/components/icons/loader-icon.tsx","../src/app/state/ton-connect-ui.context.ts","../src/app/components/icons/copy-icon.tsx","../src/app/components/icons/disconnect-icon.tsx","../src/app/utils/copy-to-clipboard.ts","../src/app/views/account-button/account-button-dropdown/style.ts","../src/app/views/account-button/account-button-dropdown/index.tsx","../src/app/components/notification/style.ts","../src/app/components/notification/index.tsx","../src/app/views/account-button/notifications/confirm-operation-notification/style.ts","../src/app/views/account-button/notifications/confirm-operation-notification/index.tsx","../src/app/views/account-button/notifications/error-transaction-notification/style.ts","../src/app/views/account-button/notifications/error-transaction-notification/index.tsx","../src/app/views/account-button/notifications/success-transaction-notification/style.ts","../src/app/views/account-button/notifications/success-transaction-notification/index.tsx","../src/app/views/account-button/notifications/style.ts","../src/app/views/account-button/notifications/index.tsx","../src/app/views/account-button/style.ts","../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../../../node_modules/solid-floating-ui/dist/esm/production/index.mjs","../src/app/views/account-button/index.tsx","../src/app/components/qr-code/style.ts","../../../node_modules/qrcode-generator/qrcode.js","../src/app/components/qr-code/index.tsx","../src/app/components/typography/Translation/index.tsx","../src/app/views/modals/wallets-modal/qr-code-modal/style.ts","../src/app/utils/web-api.ts","../src/app/views/modals/wallets-modal/qr-code-modal/index.tsx","../src/app/views/modals/wallets-modal/select-wallet-modal/wallet-item/style.ts","../src/app/views/modals/wallets-modal/select-wallet-modal/wallet-item/index.tsx","../src/app/views/modals/wallets-modal/select-wallet-modal/style.ts","../src/app/views/modals/wallets-modal/select-wallet-modal/index.tsx","../src/app/views/modals/wallets-modal/style.ts","../src/app/state/app.state.ts","../src/app/utils/wallets.ts","../src/app/views/modals/wallets-modal/wallets-modal.tsx","../src/app/views/modals/actions-modal/action-modal/style.ts","../src/app/views/modals/actions-modal/action-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-transaction-modal/style.ts","../src/app/views/modals/actions-modal/confirm-transaction-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-canceled-modal/style.ts","../src/app/views/modals/actions-modal/transaction-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-sent-modal/style.ts","../src/app/views/modals/actions-modal/transaction-sent-modal/index.tsx","../src/app/views/modals/actions-modal/actions-modal.tsx","../src/app/App.tsx","../src/app/widget-controller.tsx","../src/errors/ton-connect-ui.error.ts","../src/storage.ts","../src/ton-connect-ui.ts"],"sourcesContent":["/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nexport class TonConnectError extends Error {\n constructor(message, options) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\nTonConnectError.prefix = '[TON_CONNECT_SDK_ERROR]';\n//# sourceMappingURL=ton-connect.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n//# sourceMappingURL=dapp-metadata.error.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n constructor(message) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\nManifestContentErrorError.additionalMessage = '\\nPassed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n//# sourceMappingURL=manifest-content-error.error.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n constructor(message) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\nManifestNotFoundError.additionalMessage = '\\nManifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n//# sourceMappingURL=manifest-not-found.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-already-connected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nexport class WalletNotConnectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-connected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nexport class WalletNotSupportFeatureError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-support-feature.error.js.map","export function isWalletConnectionSourceJS(value) {\n return 'jsBridgeKey' in value;\n}\n//# sourceMappingURL=wallet-connection-source.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n//# sourceMappingURL=user-rejects.error.js.map","import { TonConnectError } from \"../../ton-connect.error\";\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n//# sourceMappingURL=bad-request.error.js.map","import { TonConnectError } from \"../../ton-connect.error\";\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nexport class UnknownAppError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n//# sourceMappingURL=unknown-app.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nexport class WalletNotInjectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-injected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nexport class LocalstorageNotFoundError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n//# sourceMappingURL=localstorage-not-found.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n//# sourceMappingURL=fetch-wallets.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed address is in incorrect format.\n */\nexport class WrongAddressError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WrongAddressError.prototype);\n }\n}\n//# sourceMappingURL=wrong-address.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed hex is in incorrect format.\n */\nexport class ParseHexError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ParseHexError.prototype);\n }\n}\n//# sourceMappingURL=parse-hex.error.js.map","import { TonConnectError } from \"./ton-connect.error\";\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n//# sourceMappingURL=unknown.error.js.map","export var CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_NOT_FOUND_ERROR\"] = 2] = \"MANIFEST_NOT_FOUND_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_CONTENT_ERROR\"] = 3] = \"MANIFEST_CONTENT_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES || (CONNECT_EVENT_ERROR_CODES = {}));\nexport var CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES || (CONNECT_ITEM_ERROR_CODES = {}));\n","export var SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES || (SEND_TRANSACTION_ERROR_CODES = {}));\n","export var CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN || (CHAIN = {}));\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","import nacl from 'tweetnacl-util';\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = nacl.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return nacl.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = nacl.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return nacl.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(nacl.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexport const Base64 = {\n encode,\n decode\n};\n","export function concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nexport function splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nexport function toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexport function hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\n","export function isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\n","export default {}","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","import { concatUint8Arrays, hexToByteArray, splitToUint8Arrays, toHexString, isNode } from '../utils';\nimport nacl from 'tweetnacl';\nif (isNode()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nexport class SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = toHexString(this.keyPair.publicKey);\n }\n createKeypair() {\n return nacl.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: hexToByteArray(keyPair.publicKey),\n secretKey: hexToByteArray(keyPair.secretKey)\n };\n }\n createNonce() {\n const buffer = new Uint8Array(this.nonceLength);\n return crypto.getRandomValues(buffer);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = nacl.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return concatUint8Arrays(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = splitToUint8Arrays(message, this.nonceLength);\n const decrypted = nacl.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error(`Decryption error: \\n message: ${message.toString()} \\n sender pubkey: ${senderPublicKey.toString()} \\n keypair pubkey: ${this.keyPair.publicKey.toString()} \\n keypair secretkey: ${this.keyPair.secretKey.toString()}`);\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: toHexString(this.keyPair.publicKey),\n secretKey: toHexString(this.keyPair.secretKey)\n };\n }\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from \"../errors\";\nimport { ManifestContentErrorError } from \"../errors/protocol/events/connect/manifest-content-error.error\";\nimport { ManifestNotFoundError } from \"../errors/protocol/events/connect/manifest-not-found.error\";\nimport { UnknownError } from \"../errors/unknown.error\";\nimport { CONNECT_EVENT_ERROR_CODES } from '@tonconnect/protocol';\nconst connectEventErrorsCodes = {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n};\nclass ConnectErrorsParser {\n parseError(error) {\n let ErrorConstructor = UnknownError;\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n return new ErrorConstructor(error.message);\n }\n}\nexport const connectErrorsParser = new ConnectErrorsParser();\n//# sourceMappingURL=connect-errors-parser.js.map","export class RpcParser {\n isError(response) {\n return 'error' in response;\n }\n}\n//# sourceMappingURL=rpc-parser.js.map","import { SEND_TRANSACTION_ERROR_CODES } from '@tonconnect/protocol';\nimport { BadRequestError, UnknownAppError, UserRejectsError } from \"../errors\";\nimport { UnknownError } from \"../errors/unknown.error\";\nimport { RpcParser } from \"./rpc-parser\";\nconst sendTransactionErrors = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\nclass SendTransactionParser extends RpcParser {\n convertToRpcRequest(request) {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n parseAndThrowError(response) {\n let ErrorConstructor = UnknownError;\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n throw new ErrorConstructor(response.error.message);\n }\n convertFromRpcResponse(rpcResponse) {\n return {\n boc: rpcResponse.result\n };\n }\n}\nexport const sendTransactionParser = new SendTransactionParser();\n//# sourceMappingURL=send-transaction-parser.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nexport class HttpBridgeGatewayStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_http-bridge-gateway';\n }\n storeLastEventId(lastEventId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.setItem(this.storeKey, lastEventId);\n });\n }\n removeLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n return stored;\n });\n }\n}\n//# sourceMappingURL=http-bridge-gateway-storage.js.map","export function removeUrlLastSlash(url) {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n return url;\n}\nexport function addPathToUrl(url, path) {\n return removeUrlLastSlash(url) + '/' + path;\n}\n//# sourceMappingURL=url.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../../errors\";\nimport { HttpBridgeGatewayStorage } from \"../../storage/http-bridge-gateway-storage\";\nimport { addPathToUrl } from \"../../utils/url\";\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n }\n catch (err) {\n console.error(err);\n }\n}\nexport class BridgeGateway {\n constructor(storage, bridgeUrl, sessionId, listener, errorsListener) {\n this.bridgeUrl = bridgeUrl;\n this.sessionId = sessionId;\n this.listener = listener;\n this.errorsListener = errorsListener;\n this.ssePath = 'events';\n this.postPath = 'message';\n this.heartbeatMessage = 'heartbeat';\n this.defaultTtl = 300;\n this.isClosed = false;\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n registerSession() {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n const lastEventId = yield this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n this.eventSource = new EventSource(url.toString());\n return new Promise((resolve, reject) => {\n this.eventSource.onerror = reject;\n this.eventSource.onopen = () => {\n this.eventSource.onerror = this.errorsHandler.bind(this);\n this.eventSource.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n });\n }\n send(message, receiver, ttl) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n yield fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n });\n }\n close() {\n var _a;\n this.isClosed = true;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n }\n errorsHandler(e) {\n var _a, _b;\n if (!this.isClosed) {\n if (((_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.readyState) === EventSource.CLOSED) {\n this.eventSource.close();\n this.registerSession();\n return;\n }\n if (((_b = this.eventSource) === null || _b === void 0 ? void 0 : _b.readyState) === EventSource.CONNECTING) {\n console.debug('[TON_CONNET_SDK_ERROR]: Bridge error', JSON.stringify(e));\n return;\n }\n this.errorsListener(e);\n }\n }\n messagesHandler(e) {\n return __awaiter(this, void 0, void 0, function* () {\n if (e.data === this.heartbeatMessage) {\n return;\n }\n yield this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n if (!this.isClosed) {\n let bridgeIncomingMessage;\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n }\n catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n this.listener(bridgeIncomingMessage);\n }\n });\n }\n}\n//# sourceMappingURL=bridge-gateway.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../errors\";\nexport class BridgeConnectionStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_bridge-connection';\n }\n storeConnection(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n const rawSession = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n const rawConnection = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n });\n }\n removeConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n if (connection.type === 'injected') {\n return connection;\n }\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: {\n sessionCrypto,\n walletConnectionSource: connection.session.walletConnectionSource,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n });\n }\n getHttpConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read HTTP connection source while nothing is stored');\n }\n if (connection.type === 'injected') {\n throw new TonConnectError('Trying to read HTTP connection source while injected connection is stored');\n }\n return connection;\n });\n }\n getInjectedConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read Injected bridge connection source while nothing is stored');\n }\n if ((connection === null || connection === void 0 ? void 0 : connection.type) === 'http') {\n throw new TonConnectError('Trying to read Injected bridge connection source while HTTP connection is stored');\n }\n return connection;\n });\n }\n storedConnectionType() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n return connection.type;\n });\n }\n}\n//# sourceMappingURL=bridge-connection-storage.js.map","export const PROTOCOL_VERSION = 2;\n//# sourceMappingURL=protocol.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Base64, SessionCrypto, hexToByteArray } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../../errors/ton-connect.error\";\nimport { BridgeGateway } from \"./bridge-gateway\";\nimport { BridgeConnectionStorage } from \"../../storage/bridge-connection-storage\";\nimport { PROTOCOL_VERSION } from \"../../resources/protocol\";\nexport class BridgeProvider {\n constructor(storage, walletConnectionSource) {\n this.storage = storage;\n this.walletConnectionSource = walletConnectionSource;\n this.type = 'http';\n this.pendingRequests = new Map();\n this.nextRequestId = 0;\n this.session = null;\n this.bridge = null;\n this.listeners = [];\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n });\n }\n connect(message) {\n var _a;\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n const sessionCrypto = new SessionCrypto();\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n this.bridge = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n this.bridge.registerSession();\n return this.generateUniversalLink(message);\n }\n restoreConnection() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n const storedConnection = yield this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n this.session = storedConnection.session;\n this.bridge = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, storedConnection.session.sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n yield this.bridge.registerSession();\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n });\n }\n sendRequest(request) {\n return new Promise((resolve, reject) => {\n const id = this.nextRequestId;\n this.nextRequestId++;\n if (!this.bridge || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n const encodedRequest = this.session.sessionCrypto.encrypt(JSON.stringify(Object.assign(Object.assign({}, request), { id })), hexToByteArray(this.session.walletPublicKey));\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n closeConnection() {\n var _a;\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n this.listeners = [];\n this.session = null;\n this.bridge = null;\n }\n disconnect() {\n var _a;\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n listen(callback) {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n gatewayListener(bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n const walletMessage = JSON.parse(this.session.sessionCrypto.decrypt(Base64.decode(bridgeIncomingMessage.message).toUint8Array(), hexToByteArray(bridgeIncomingMessage.from)));\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n throw new TonConnectError(`Response id ${id} doesn't match any request's id`);\n }\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n if (walletMessage.event === 'connect') {\n yield this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n if (walletMessage.event === 'disconnect') {\n yield this.removeBridgeAndSession();\n }\n this.listeners.forEach(listener => listener(walletMessage));\n });\n }\n gatewayErrorsListener(e) {\n return __awaiter(this, void 0, void 0, function* () {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n });\n }\n updateSession(connectEvent, walletPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = Object.assign(Object.assign({}, this.session), { walletPublicKey });\n const tonAddrItem = connectEvent.payload.items.find(item => item.name === 'ton_addr');\n const connectEventToSave = Object.assign(Object.assign({}, connectEvent), { payload: Object.assign(Object.assign({}, connectEvent.payload), { items: [tonAddrItem] }) });\n yield this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n });\n }\n removeBridgeAndSession() {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = null;\n this.bridge = null;\n yield this.connectionStorage.removeConnection();\n });\n }\n generateUniversalLink(message) {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', PROTOCOL_VERSION.toString());\n url.searchParams.append('id', this.session.sessionCrypto.sessionId);\n url.searchParams.append('r', JSON.stringify(message));\n return url.toString();\n }\n}\n//# sourceMappingURL=bridge-provider.js.map","export function getWindow() {\n if (typeof window === 'undefined') {\n return undefined;\n }\n return window;\n}\nexport function getDocument() {\n if (typeof document === 'undefined') {\n return undefined;\n }\n return document;\n}\nexport function getWebPageManifest() {\n var _a;\n const origin = (_a = getWindow()) === null || _a === void 0 ? void 0 : _a.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n return '';\n}\n//# sourceMappingURL=web-api.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { WalletNotInjectedError } from \"../../errors/wallet/wallet-not-injected.error\";\nimport { BridgeConnectionStorage } from \"../../storage/bridge-connection-storage\";\nimport { getWindow } from \"../../utils/web-api\";\nimport { PROTOCOL_VERSION } from \"../../resources/protocol\";\nexport class InjectedProvider {\n constructor(storage, injectedWalletKey) {\n this.injectedWalletKey = injectedWalletKey;\n this.type = 'injected';\n this.unsubscribeCallback = null;\n this.listenSubscriptions = false;\n this.listeners = [];\n const window = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n this.connectionStorage = new BridgeConnectionStorage(storage);\n this.injectedWallet = window[injectedWalletKey].tonconnect;\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(storage, connection.jsBridgeKey);\n });\n }\n static isWalletInjected(injectedWalletKey) {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n static isInsideWalletBrowser(injectedWalletKey) {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey].tonconnect.isWalletBrowser;\n }\n return false;\n }\n static isWindowContainsWallet(window, injectedWalletKey) {\n return (!!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey] === 'object' &&\n 'tonconnect' in window[injectedWalletKey]);\n }\n connect(message) {\n this._connect(PROTOCOL_VERSION, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const connectEvent = yield this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listeners.forEach(listener => listener(connectEvent));\n }\n else {\n yield this.connectionStorage.removeConnection();\n }\n }\n catch (e) {\n yield this.connectionStorage.removeConnection();\n console.error(e);\n }\n });\n }\n closeConnection() {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n disconnect() {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return this.connectionStorage.removeConnection();\n }\n closeAllListeners() {\n var _a;\n this.listenSubscriptions = false;\n this.listeners = [];\n (_a = this.unsubscribeCallback) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n listen(eventsCallback) {\n this.listeners.push(eventsCallback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n sendRequest(request) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.injectedWallet.send(Object.assign(Object.assign({}, request), { id: '0' }));\n });\n }\n _connect(protocolVersion, message) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const connectEvent = yield this.injectedWallet.connect(protocolVersion, message);\n if (connectEvent.event === 'connect') {\n yield this.updateSession();\n this.makeSubscriptions();\n }\n this.listeners.forEach(listener => listener(connectEvent));\n }\n catch (e) {\n console.debug(e);\n const connectEventError = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e === null || e === void 0 ? void 0 : e.toString()\n }\n };\n this.listeners.forEach(listener => listener(connectEventError));\n }\n });\n }\n makeSubscriptions() {\n this.listenSubscriptions = true;\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n updateSession() {\n return this.connectionStorage.storeConnection({\n type: 'injected',\n jsBridgeKey: this.injectedWalletKey\n });\n }\n}\nInjectedProvider.window = getWindow();\n//# sourceMappingURL=injected-provider.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { LocalstorageNotFoundError } from \"../errors/storage/localstorage-not-found.error\";\nimport { getWindow } from \"../utils/web-api\";\nexport class DefaultStorage {\n constructor() {\n const window = getWindow();\n if (!(window === null || window === void 0 ? void 0 : window.localStorage)) {\n throw new LocalstorageNotFoundError();\n }\n this.window = window;\n }\n getItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(this.window.localStorage.getItem(key));\n });\n }\n removeItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n });\n }\n setItem(key, value) {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n//# sourceMappingURL=default-storage.js.map","export function isWalletInfoInjected(value) {\n return 'jsBridgeKey' in value;\n}\n//# sourceMappingURL=wallet-info.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FetchWalletsError } from \"./errors/wallets-manager/fetch-wallets.error\";\nimport { isWalletInfoInjected } from \"./models/wallet/wallet-info\";\nimport { InjectedProvider } from \"./provider/injected/injected-provider\";\nexport class WalletsListManager {\n constructor(walletsListSource) {\n this.walletsListCache = null;\n this.walletsListSource = 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n if (walletsListSource) {\n this.walletsListSource = walletsListSource;\n }\n }\n getWallets() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n return this.walletsListCache;\n });\n }\n getEmbeddedWallet() {\n return __awaiter(this, void 0, void 0, function* () {\n const walletsList = yield this.getWallets();\n const embeddedWallets = walletsList.filter(item => isWalletInfoInjected(item) && item.embedded);\n if (embeddedWallets.length !== 1) {\n return null;\n }\n return embeddedWallets[0];\n });\n }\n fetchWalletsList() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const walletsResponse = yield fetch(this.walletsListSource);\n const walletsList = yield walletsResponse.json();\n if (!Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n }\n catch (e) {\n throw new FetchWalletsError(e);\n }\n });\n }\n walletConfigDTOListToWalletConfigList(walletConfigDTO) {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n };\n walletConfigDTO.bridge.forEach(bridge => {\n if (bridge.type === 'sse') {\n walletConfig.bridgeUrl = bridge.url;\n walletConfig.universalLink =\n walletConfigDTO.universal_url;\n walletConfig.deepLink = walletConfigDTO.deepLink;\n }\n if (bridge.type === 'js') {\n const jsBridgeKey = bridge.key;\n walletConfig.jsBridgeKey = jsBridgeKey;\n walletConfig.injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n walletConfig.embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n });\n return walletConfig;\n });\n }\n isCorrectWalletConfigDTO(value) {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n if (!('bridge' in value) ||\n !Array.isArray(value.bridge) ||\n !value.bridge.length) {\n return false;\n }\n const bridge = value.bridge;\n if (bridge.some(item => !item || typeof item !== 'object' || !('type' in item))) {\n return false;\n }\n const sseBridge = bridge.find(item => item.type === 'sse');\n if (sseBridge) {\n if (!('url' in sseBridge) ||\n !sseBridge.url ||\n !value.universal_url) {\n return false;\n }\n }\n const jsBridge = bridge.find(item => item.type === 'js');\n if (jsBridge) {\n if (!('key' in jsBridge) || !jsBridge.key) {\n return false;\n }\n }\n return true;\n }\n}\n//# sourceMappingURL=wallets-list-manager.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { DappMetadataError } from \"./errors/dapp/dapp-metadata.error\";\nimport { ManifestContentErrorError } from \"./errors/protocol/events/connect/manifest-content-error.error\";\nimport { ManifestNotFoundError } from \"./errors/protocol/events/connect/manifest-not-found.error\";\nimport { TonConnectError } from \"./errors/ton-connect.error\";\nimport { WalletAlreadyConnectedError } from \"./errors/wallet/wallet-already-connected.error\";\nimport { WalletNotConnectedError } from \"./errors/wallet/wallet-not-connected.error\";\nimport { WalletNotSupportFeatureError } from \"./errors/wallet/wallet-not-support-feature.error\";\nimport { isWalletConnectionSourceJS } from \"./models/wallet/wallet-connection-source\";\nimport { connectErrorsParser } from \"./parsers/connect-errors-parser\";\nimport { sendTransactionParser } from \"./parsers/send-transaction-parser\";\nimport { BridgeProvider } from \"./provider/bridge/bridge-provider\";\nimport { InjectedProvider } from \"./provider/injected/injected-provider\";\nimport { BridgeConnectionStorage } from \"./storage/bridge-connection-storage\";\nimport { DefaultStorage } from \"./storage/default-storage\";\nimport { getWebPageManifest } from \"./utils/web-api\";\nimport { WalletsListManager } from \"./wallets-list-manager\";\nexport class TonConnect {\n constructor(options) {\n this.walletsList = new WalletsListManager();\n this._wallet = null;\n this.provider = null;\n this.statusChangeSubscriptions = [];\n this.statusChangeErrorSubscriptions = [];\n this.dappSettings = {\n manifestUrl: (options === null || options === void 0 ? void 0 : options.manifestUrl) || getWebPageManifest(),\n storage: (options === null || options === void 0 ? void 0 : options.storage) || new DefaultStorage()\n };\n this.walletsList = new WalletsListManager(options === null || options === void 0 ? void 0 : options.walletsListSource);\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError('Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest');\n }\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n /**\n * Returns available wallets list.\n */\n static getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Shows if the wallet is connected right now.\n */\n get connected() {\n return this._wallet !== null;\n }\n /**\n * Current connected account or null if no account is connected.\n */\n get account() {\n var _a;\n return ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.account) || null;\n }\n /**\n * Current connected wallet or null if no account is connected.\n */\n get wallet() {\n return this._wallet;\n }\n set wallet(value) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n /**\n * Returns available wallets list.\n */\n getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n onStatusChange(callback, errorsHandler) {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(item => item !== callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(item => item !== errorsHandler);\n }\n };\n }\n connect(wallet, request) {\n var _a;\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n (_a = this.provider) === null || _a === void 0 ? void 0 : _a.closeConnection();\n this.provider = this.createProvider(wallet);\n return this.provider.connect(this.createConnectRequest(request));\n }\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const [bridgeConnectionType, embeddedWallet] = yield Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = yield BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = yield InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = yield this.createProvider(embeddedWallet);\n }\n else {\n return;\n }\n }\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n });\n }\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n sendTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this.checkConnection();\n this.checkFeatureSupport('SendTransaction');\n const { validUntil } = transaction, tx = __rest(transaction, [\"validUntil\"]);\n const response = yield this.provider.sendRequest(sendTransactionParser.convertToRpcRequest(Object.assign(Object.assign({}, tx), { valid_until: validUntil })));\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n return sendTransactionParser.convertFromRpcResponse(response);\n });\n }\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n yield this.provider.disconnect();\n this.onWalletDisconnected();\n });\n }\n createProvider(wallet) {\n let provider;\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(this.dappSettings.storage, wallet.jsBridgeKey);\n }\n else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n walletEventsListener(e) {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n onWalletConnected(connectEvent) {\n const tonAccountItem = connectEvent.items.find(item => item.name === 'ton_addr');\n const tonProofItem = connectEvent.items.find(item => item.name === 'ton_proof');\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n const wallet = {\n device: connectEvent.device,\n provider: this.provider.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit\n }\n };\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n this.wallet = wallet;\n }\n onWalletConnectError(connectEventError) {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n console.debug(error);\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n onWalletDisconnected() {\n this.wallet = null;\n }\n checkConnection() {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n checkFeatureSupport(feature) {\n var _a;\n if (!((_a = this.wallet) === null || _a === void 0 ? void 0 : _a.device.features.includes(feature))) {\n throw new WalletNotSupportFeatureError();\n }\n }\n createConnectRequest(request) {\n const items = [\n {\n name: 'ton_addr'\n }\n ];\n if (request === null || request === void 0 ? void 0 : request.tonProof) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\nTonConnect.walletsList = new WalletsListManager();\n/**\n * Check if specified wallet is injected and available to use with the app.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isWalletInjected = (walletJSKey) => InjectedProvider.isWalletInjected(walletJSKey);\n/**\n * Check if the app is opened inside specified wallet's browser.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isInsideWalletBrowser = (walletJSKey) => InjectedProvider.isInsideWalletBrowser(walletJSKey);\n//# sourceMappingURL=ton-connect.js.map","import { WrongAddressError, ParseHexError } from \"../errors\";\nimport { Base64 } from '@tonconnect/protocol';\nconst bounceableTag = 0x11;\nconst testOnlyTag = 0x80;\n/**\n * Converts raw TON address to bounceable user-friendly format. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n * @param hexAddress raw TON address formatted as \"0:<hex string without 0x>\".\n * @param [testOnly=false] convert address to test-only form. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n */\nexport function toUserFriendlyAddress(hexAddress, testOnly = false) {\n const { wc, hex } = parseHexAddress(hexAddress);\n let tag = bounceableTag;\n if (testOnly) {\n tag |= testOnlyTag;\n }\n const addr = new Int8Array(34);\n addr[0] = tag;\n addr[1] = wc;\n addr.set(hex, 2);\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n let addressBase64 = Base64.encode(addressWithChecksum);\n return addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction parseHexAddress(hexAddress) {\n if (!hexAddress.includes(':')) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\".`);\n }\n const parts = hexAddress.split(':');\n if (parts.length !== 2) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\" only once.`);\n }\n const wc = parseInt(parts[0]);\n if (wc !== 0 && wc !== -1) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. WC must be eq 0 or -1, but ${wc} received.`);\n }\n const hex = parts[1];\n if ((hex === null || hex === void 0 ? void 0 : hex.length) !== 64) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Hex part must be 64bytes length, but ${hex === null || hex === void 0 ? void 0 : hex.length} received.`);\n }\n return {\n wc,\n hex: hexToBytes(hex)\n };\n}\nfunction crc16(data) {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1;\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\nconst toByteMap = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = '0' + s;\n }\n toByteMap[s] = ord;\n}\nfunction hexToBytes(hex) {\n hex = hex.toLowerCase();\n const length2 = hex.length;\n if (length2 % 2 !== 0) {\n throw new ParseHexError('Hex string must have length a multiple of 2: ' + hex);\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const doubled = i * 2;\n const hexSubstring = hex.substring(doubled, doubled + 2);\n if (!toByteMap.hasOwnProperty(hexSubstring)) {\n throw new ParseHexError('Invalid hex character: ' + hexSubstring);\n }\n result[i] = toByteMap[hexSubstring];\n }\n return result;\n}\n//# sourceMappingURL=address.js.map","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return { ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner || owner\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n resolved = true;\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (!err) setValue(() => v);\n setState(err ? \"errored\" : \"ready\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value(),\n err = error();\n if (err && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(p && \"then\" in p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n Owner = o;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {\n if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (TransitionRunning) o.tState = STALE;else o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) Transition && Transition.running ? node.tState = STALE : node.state = STALE;\n handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if (!runningTransition && node.state === 0 || runningTransition && node.tState === 0) return;\n if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (!runningTransition && node.state || runningTransition && node.tState) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if (!runningTransition && node.state === STALE || runningTransition && node.tState === STALE) {\n updateComputation(node);\n } else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!Updates) Effects = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n if (!runningTransition && source.state === STALE || runningTransition && source.tState === STALE) {\n if (source !== ignore) runTop(source);\n } else if (!runningTransition && source.state === PENDING || runningTransition && source.tState === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!runningTransition && !o.state || runningTransition && !o.tState) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = 0; i < node.tOwned.length; i++) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = 0; i < node.owned.length; i++) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error || typeof err === \"string\") return err;\n return new Error(\"Unknown error\");\n}\nfunction handleError(err) {\n err = castError(err);\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n for (const f of fns) f(err);\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n for (let i = sources.length - 1; i >= 0; i--) {\n if (sources[i]) {\n const descriptors = Object.getOwnPropertyDescriptors(sources[i]);\n for (const key in descriptors) {\n if (key in target) continue;\n Object.defineProperty(target, key, {\n enumerable: true,\n get() {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = (sources[i] || {})[key];\n if (v !== undefined) return v;\n }\n }\n });\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const blocked = new Set(keys.flat());\n if ($PROXY in props) {\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const descriptors = Object.getOwnPropertyDescriptors(props);\n keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));\n return keys.map(k => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (!(key in props)) continue;\n Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {\n get() {\n return props[key];\n },\n set() {\n return true;\n },\n enumerable: true\n });\n }\n return clone;\n });\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n let strictEqual = false;\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => strictEqual ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => child(c)) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let strictEqual = false;\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (strictEqual ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => c(when)) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n let v;\n if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n const res = typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n onError(setErrored);\n return res;\n }\n onError(setErrored);\n return props.children;\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (p = ref[0]) && p !== \"$$f\") {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nlet DEV;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, createSignal, onCleanup, splitProps, createMemo } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: \"formNoValidate\",\n ismap: \"isMap\",\n nomodule: \"noModule\",\n playsinline: \"playsInline\",\n readonly: \"readOnly\"\n});\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, check, isSVG) {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n let node = t.content.firstChild;\n if (isSVG) node = node.firstChild;\n return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template.cloneNode(true);\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) {\n sharedConfig.done = true;\n document.querySelectorAll(\"[id^=pl-]\").forEach(elem => elem.remove());\n }\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context && !current) current = [...parent.childNodes];\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value instanceof Node) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i];\n if (item instanceof Node) {\n normalized.push(item);\n } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if ((typeof item) === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) {\n normalized.push(prev);\n } else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = props.mount || document.body;\n function renderPortal() {\n if (sharedConfig.context) {\n const [s, set] = createSignal(false);\n queueMicrotask(() => set(true));\n return () => s() && props.children;\n } else return () => props.children;\n }\n if (mount instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n onCleanup(() => {\n if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n });\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, renderPortal());\n mount.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => mount.removeChild(container));\n }\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","import { createSignal } from 'solid-js';\nimport { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport type ActionName = 'confirm-transaction' | 'transaction-sent' | 'transaction-canceled';\n\nexport type Action = {\n name: ActionName;\n openModal: boolean;\n showNotification: boolean;\n};\n\nexport const [walletsModalOpen, setWalletsModalOpen] = createSignal(false);\nexport const [lastSelectedWalletInfo, setLastSelectedWalletInfo] =\n createSignal<WalletInfoWithOpenMethod | null>(null);\nexport const [action, setAction] = createSignal<Action | null>(null);\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { css, setup as gooberSetup } from \"goober\";\r\nimport {\r\n mergeProps,\r\n splitProps,\r\n createContext,\r\n useContext,\r\n createComponent,\r\n untrack,\r\n} from \"solid-js\";\r\nimport { Dynamic, isServer, spread } from \"solid-js/web\";\r\nexport { css, glob, extractCss, keyframes } from \"goober\";\r\n\r\nlet getForwardProps = null;\r\n\r\nexport function shouldForwardProp(predicate) {\r\n return props => props.filter(predicate);\r\n}\r\n\r\nexport function setup(prefixer, shouldForwardProp = null) {\r\n gooberSetup(null, prefixer);\r\n getForwardProps = shouldForwardProp;\r\n}\r\nconst ThemeContext = createContext();\r\nexport function ThemeProvider(props) {\r\n return createComponent(ThemeContext.Provider, {\r\n value: props.theme,\r\n get children() {\r\n return props.children;\r\n }\r\n });\r\n}\r\nexport function useTheme() {\r\n return useContext(ThemeContext);\r\n}\r\n\r\nfunction makeStyled(tag) {\r\n let _ctx = this || {};\r\n return (...args) => {\r\n const Styled = props => {\r\n const theme = useContext(ThemeContext);\r\n const withTheme = mergeProps(props, { theme });\r\n const clone = mergeProps(withTheme, {\r\n get class() {\r\n const pClass = withTheme.class,\r\n append = \"class\" in withTheme && /^go[0-9]+/.test(pClass);\r\n // Call `css` with the append flag and pass the props\r\n let className = css.apply(\r\n { target: _ctx.target, o: append, p: withTheme, g: _ctx.g },\r\n args\r\n );\r\n return [pClass, className].filter(Boolean).join(\" \");\r\n }\r\n });\r\n const [local, newProps] = splitProps(clone, [\"as\", \"theme\"]);\r\n const htmlProps = getForwardProps\r\n ? splitProps(newProps, getForwardProps(Object.keys(newProps)))[0]\r\n : newProps;\r\n const createTag = local.as || tag;\r\n let el;\r\n\r\n if (typeof createTag === \"function\") {\r\n el = createTag(htmlProps);\r\n } else {\r\n if (isServer) {\r\n const [local, others] = splitProps(htmlProps, [\"children\", \"theme\"]);\r\n el = Dynamic({\r\n component: createTag,\r\n get children() {\r\n return local.children;\r\n },\r\n ...others\r\n });\r\n } else {\r\n if (_ctx.g == 1) {\r\n // When using Global Styles we don't want to hydrate the unused nodes\r\n el = document.createElement(createTag);\r\n spread(el, htmlProps);\r\n } else {\r\n el = Dynamic(mergeProps({ component: createTag }, htmlProps));\r\n }\r\n }\r\n }\r\n return el;\r\n };\r\n Styled.class = props => {\r\n return untrack(() => {\r\n return css.apply({ target: _ctx.target, p: props, g: _ctx.g }, args);\r\n });\r\n };\r\n\r\n return Styled;\r\n };\r\n}\r\n\r\nexport const styled = new Proxy(makeStyled, {\r\n get(target, tag) {\r\n return target(tag);\r\n }\r\n});\r\n\r\nexport function createGlobalStyles() {\r\n const fn = makeStyled.call({ g: 1 }, \"div\").apply(null, arguments);\r\n\r\n return function GlobalStyles(props) {\r\n fn(props);\r\n return null;\r\n };\r\n}\r\n","import en from 'src/app/assets/i18n/en.json';\nimport ru from 'src/app/assets/i18n/ru.json';\nimport { Locales } from 'src/models/locales';\n\nexport const i18nDictionary: Record<Locales, object> = {\n en: parseDictionary(en),\n ru: parseDictionary(ru)\n};\n\n// replace '$key1.key2.key3' with it's value\nfunction parseDictionary(dictionary: Record<string, unknown>): Record<string, unknown> {\n const refSymbol = '$';\n\n const iterate = (subDictionary: Record<string, unknown>): void => {\n Object.entries(subDictionary).forEach(([key, value]) => {\n if (typeof value === 'object' && value) {\n return iterate(value as Record<string, unknown>);\n }\n\n if (typeof value === 'string') {\n if (value[0] === refSymbol) {\n const path = value.slice(1).split('.');\n let obj: Record<string, unknown> = dictionary;\n path.forEach(item => {\n if (item in obj) {\n obj = obj[item] as Record<string, unknown>;\n } else {\n throw new Error(\n `Cannot parse translations: there is no property ${item} in translation`\n );\n }\n });\n\n subDictionary[key] = obj;\n }\n\n if (value.slice(0, 2) === `\\\\${refSymbol}`) {\n subDictionary[key] = value.slice(1);\n }\n }\n });\n };\n\n iterate(dictionary);\n return dictionary;\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createContext } from 'solid-js';\n\nexport const ConnectorContext = createContext<ITonConnect>();\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $NAME = Symbol(\"store-name\");\nfunction wrap$1(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = {}\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value));\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value) {\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) delete state[property];else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => target[$PROXY][property] = v;\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {\n if (target !== previous) {\n if (property === $ROOT) return target;\n setProperty(parent, property, target);\n }\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(v, {\n [$ROOT]: state\n }, $ROOT, merge, key);\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","export enum THEME {\n DARK = 'DARK',\n LIGHT = 'LIGHT'\n}\n\nexport type Theme = THEME | 'SYSTEM';\n","import { ColorsSet } from 'src/models/colors-set';\n\nexport const defaultLightColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#31A6F5',\n icon: {\n primary: '#0F0F0F',\n secondary: '#7A8999',\n tertiary: '#C1CAD2',\n success: '#29CC6A'\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F1F3F5'\n },\n text: {\n primary: '#0F0F0F',\n secondary: '#7A8999'\n }\n};\n\nexport const defaultDarkColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#E5E5EA',\n icon: {\n primary: '#E5E5EA',\n secondary: '#909099',\n tertiary: '#434347',\n success: '#29CC6A'\n },\n background: {\n primary: '#121214',\n secondary: '#18181A'\n },\n text: {\n primary: '#E5E5EA',\n secondary: '#7D7D85'\n }\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import deepmerge from 'deepmerge';\nimport { DeepPartial } from 'src/app/utils/types';\nimport { isPlainObject } from 'is-plain-object';\n\nexport function mergeOptions<T>(options: DeepPartial<T> | undefined | null, defaultOptions: T): T {\n if (!options) {\n return defaultOptions;\n }\n\n const overwriteMerge = (_: unknown[], sourceArray: unknown[], __: unknown): unknown[] =>\n sourceArray;\n\n return deepmerge(defaultOptions, options, {\n arrayMerge: overwriteMerge,\n isMergeableObject: isPlainObject\n });\n}\n","import { createStore } from 'solid-js/store';\nimport { DefaultTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models/THEME';\nimport { defaultDarkColorsSet, defaultLightColorsSet } from 'src/app/styles/default-colors';\nimport { BorderRadius, PartialColorsSet } from 'src/models';\nimport { mergeOptions } from 'src/app/utils/options';\n\nexport const [themeState, setThemeState] = createStore<DefaultTheme>({\n theme: THEME.LIGHT,\n colors: defaultLightColorsSet,\n borderRadius: 'm'\n});\n\nconst themeColorsMappingDefault = {\n [THEME.LIGHT]: defaultLightColorsSet,\n [THEME.DARK]: defaultDarkColorsSet\n};\n\nconst themeCustomColors: Record<THEME, PartialColorsSet | undefined> = {\n [THEME.LIGHT]: undefined,\n [THEME.DARK]: undefined\n};\n\nexport function setTheme(theme: THEME, colorsSet?: Partial<Record<THEME, PartialColorsSet>>): void {\n if (colorsSet) {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n }\n\n setThemeState({\n theme,\n colors: mergeOptions(themeCustomColors[theme], themeColorsMappingDefault[theme])\n });\n}\n\nexport function setBorderRadius(borderRadius: BorderRadius): void {\n setThemeState({ borderRadius });\n}\n\nexport function setColors(colorsSet: Partial<Record<THEME, PartialColorsSet>>): void {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n\n setThemeState(state => ({\n colors: mergeOptions(\n themeCustomColors[state.theme as THEME],\n themeColorsMappingDefault[state.theme as THEME]\n )\n }));\n}\n","import { JSXElement } from 'solid-js';\nimport { createGlobalStyles } from 'solid-styled-components';\n\nexport const GlobalStyles = (): JSXElement => {\n document.body.addEventListener('mousedown', () => document.body.classList.add('using-mouse'));\n\n document.body.addEventListener('keydown', event => {\n if (event.key === 'Tab') {\n document.body.classList.remove('using-mouse');\n }\n });\n\n const Styles = createGlobalStyles`\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-family: SF Pro, Roboto, sans-serif;\n }\n html, body {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n \n *:focus {\n outline: #08f auto 2px;\n }\n\n body.using-mouse :focus {\n outline: none;\n }\n \n li {\n list-style: none;\n }\n button {\n outline: none;\n }\n`;\n return <Styles />;\n};\n","import { Property } from 'csstype';\ntype Color = Property.Color;\n\nexport function hexToRgb(hex: string): string {\n if (hex[0] === '#') {\n hex = hex.slice(1);\n }\n\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n\n return [r, g, b].join(',');\n}\n\nexport function rgba(color: Color, opacity: number): string {\n if (color[0] === '#') {\n color = hexToRgb(color);\n }\n\n return `rgba(${color}, ${opacity})`;\n}\n","import { styled } from 'solid-styled-components';\nimport { rgba } from 'src/app/utils/css';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const ButtonStyled = styled.button`\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n\n padding: 9px 16px;\n border: none;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};\n\n font-size: 14px;\n font-weight: 590;\n line-height: 18px;\n letter-spacing: -0.154px;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: ${props => (props.disabled ? 'unset' : 'scale(1.04)')};\n }\n\n &:active {\n transform: ${props => (props.disabled ? 'unset' : 'scale(0.96)')};\n }\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { ButtonStyled } from 'src/app/components/button/style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Identifiable } from 'src/app/models/identifiable';\n\nexport interface ButtonProps extends Styleable, Identifiable {\n children: JSXElement;\n onClick?: () => void;\n disabled?: boolean;\n ref?: HTMLButtonElement | ((el: HTMLButtonElement) => void) | undefined;\n}\n\nexport const Button: Component<ButtonProps> = props => {\n return (\n <ButtonStyled\n class={props.class}\n id={props.id}\n onClick={() => props.onClick?.()}\n ref={props.ref}\n disabled={props.disabled}\n >\n {props.children}\n </ButtonStyled>\n );\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { createSignal, children, createMemo, createComputed, untrack, batch, createEffect } from 'solid-js';\n\nfunction nextFrame(fn) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nconst Transition = props => {\n let el;\n let first = true;\n const [s1, set1] = createSignal();\n const [s2, set2] = createSignal();\n const resolved = children(() => props.children);\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\"\n };\n });\n\n function enterTransition(el, prev) {\n if (!first || props.appear) {\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n batch(() => {\n s1() !== el && set1(el);\n s2() === el && set2(undefined);\n });\n onAfterEnter && onAfterEnter(el);\n if (props.mode === \"inout\") exitTransition(el, prev);\n }\n }\n }\n\n prev && !props.mode ? set2(el) : set1(el);\n }\n\n function exitTransition(el, prev) {\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n if (!prev.parentNode) return endTransition();\n onBeforeExit && onBeforeExit(prev);\n prev.classList.add(...exitClasses);\n prev.classList.add(...exitActiveClasses);\n nextFrame(() => {\n prev.classList.remove(...exitClasses);\n prev.classList.add(...exitToClasses);\n });\n onExit && onExit(prev, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n prev.addEventListener(\"transitionend\", endTransition);\n prev.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === prev) {\n prev.removeEventListener(\"transitionend\", endTransition);\n prev.removeEventListener(\"animationend\", endTransition);\n prev.classList.remove(...exitActiveClasses);\n prev.classList.remove(...exitToClasses);\n s1() === prev && set1(undefined);\n onAfterExit && onAfterExit(prev);\n if (props.mode === \"outin\") enterTransition(el, prev);\n }\n }\n }\n\n createComputed(prev => {\n el = resolved();\n\n while (typeof el === \"function\") el = el();\n\n return untrack(() => {\n if (el && el !== prev) {\n if (props.mode !== \"outin\") enterTransition(el, prev);else if (first) set1(el);\n }\n\n if (prev && prev !== el && props.mode !== \"inout\") exitTransition(el, prev);\n first = false;\n return el;\n });\n });\n return [s1, s2];\n};\n\nfunction getRect(element) {\n const {\n top,\n bottom,\n left,\n right,\n width,\n height\n } = element.getBoundingClientRect();\n const parentRect = element.parentNode.getBoundingClientRect();\n return {\n top: top - parentRect.top,\n bottom,\n left: left - parentRect.left,\n right,\n width,\n height\n };\n}\n\nconst TransitionGroup = props => {\n const resolved = children(() => props.children);\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\",\n moveClass: props.moveClass || name + \"-move\"\n };\n });\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const [combined, setCombined] = createSignal();\n let p = [];\n let first = true;\n createComputed(() => {\n const c = resolved();\n const comb = [...c];\n const next = new Set(c);\n const prev = new Set(p);\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n\n for (let i = 0; i < c.length; i++) {\n const el = c[i];\n\n if (!first && !prev.has(el)) {\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n onAfterEnter && onAfterEnter(el);\n }\n }\n }\n }\n\n for (let i = 0; i < p.length; i++) {\n const old = p[i];\n\n if (!next.has(old) && old.parentNode) {\n comb.splice(i, 0, old);\n onBeforeExit && onBeforeExit(old);\n old.classList.add(...exitClasses);\n old.classList.add(...exitActiveClasses);\n nextFrame(() => {\n old.classList.remove(...exitClasses);\n old.classList.add(...exitToClasses);\n });\n onExit && onExit(old, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n old.addEventListener(\"transitionend\", endTransition);\n old.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === old) {\n old.removeEventListener(\"transitionend\", endTransition);\n old.removeEventListener(\"animationend\", endTransition);\n old.classList.remove(...exitActiveClasses);\n old.classList.remove(...exitToClasses);\n onAfterExit && onAfterExit(old);\n p = p.filter(i => i !== old);\n setCombined(p);\n }\n }\n }\n }\n\n p = comb;\n setCombined(comb);\n });\n createEffect(nodes => {\n const c = combined();\n c.forEach(child => {\n let n;\n\n if (!(n = nodes.get(child))) {\n nodes.set(child, n = {\n pos: getRect(child),\n new: !first\n });\n } else if (n.new) {\n n.new = false;\n n.newPos = getRect(child);\n }\n\n if (n.new) {\n child.addEventListener(\"transitionend\", () => {\n n.new = false;\n child.parentNode && (n.newPos = getRect(child));\n }, {\n once: true\n });\n }\n\n n.newPos && (n.pos = n.newPos);\n n.newPos = getRect(child);\n });\n\n if (first) {\n first = false;\n return nodes;\n }\n\n c.forEach(child => {\n const c = nodes.get(child);\n const oldPos = c.pos;\n const newPos = c.newPos;\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n\n if (dx || dy) {\n c.moved = true;\n const s = child.style;\n s.transform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n }\n });\n document.body.offsetHeight;\n c.forEach(child => {\n const c = nodes.get(child);\n\n if (c.moved) {\n c.moved = false;\n const s = child.style;\n const moveClasses = classnames().moveClass.split(\" \");\n child.classList.add(...moveClasses);\n s.transform = s.transitionDuration = \"\";\n\n function endTransition(e) {\n if (e && e.target !== child || !child.parentNode) return;\n\n if (!e || /transform$/.test(e.propertyName)) {\n child.removeEventListener(\"transitionend\", endTransition);\n child.classList.remove(...moveClasses);\n }\n }\n\n child.addEventListener(\"transitionend\", endTransition);\n }\n });\n return nodes;\n }, new Map());\n return combined;\n};\n\nexport { Transition, TransitionGroup };\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function clickOutside(el: Element, accessor: Accessor<() => void>): void {\n const onClick = (e: Event): void | boolean => !el.contains(e.target as Node) && accessor()?.();\n document.body.addEventListener('click', onClick);\n\n onCleanup(() => document.body.removeEventListener('click', onClick));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n clickOutside: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function escPressed(_: Element, accessor: Accessor<() => void>): void {\n const onKeyPress = (e: Event): void | boolean => {\n if ((e as KeyboardEvent).key === 'Escape') {\n (document.activeElement as HTMLElement)?.blur();\n accessor()?.();\n }\n };\n document.body.addEventListener('keydown', onKeyPress);\n\n onCleanup(() => document.body.removeEventListener('keydown', onKeyPress));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n keyPressed: () => void;\n }\n }\n}\n","export type Device = 'mobile' | 'tablet' | 'desktop';\n\nconst maxWidth = {\n mobile: 440,\n tablet: 1020\n};\n\nexport function isDevice(device: keyof typeof maxWidth | 'desktop'): boolean {\n const width = window.innerWidth;\n\n switch (device) {\n case 'desktop':\n return width > maxWidth.tablet;\n case 'tablet':\n return width > maxWidth.mobile;\n default:\n case 'mobile':\n return width <= maxWidth.mobile;\n }\n}\n\nexport function media(device: Device): string {\n switch (device) {\n case 'mobile':\n return `@media (max-width: ${maxWidth.mobile}px)`;\n case 'tablet':\n return `@media (max-width: ${maxWidth.tablet}px) (min-width: ${maxWidth.mobile}px)`;\n default:\n case 'desktop':\n return `@media (min-width: ${maxWidth.tablet}px)`;\n }\n}\n\nexport function mediaMin(px: number): string {\n return `@media (min-width: ${px}px)`;\n}\n\nexport function mediaMax(px: number): string {\n return `@media (max-width: ${px}px)`;\n}\n\nexport function mediaMinMax(pxMin: number, pxMax: number): string {\n return `@media (min-width: ${pxMin}px) (max-width: ${pxMax}px)`;\n}\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { styled, useTheme } from 'solid-styled-components';\n\ninterface ArrowIconProps {\n fill?: Property.Color;\n direction?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst rotationDegrees = {\n left: 0,\n top: 90,\n right: 180,\n bottom: 270\n};\n\nexport const ArrowIcon: Component<ArrowIconProps> = props => {\n const theme = useTheme();\n const fill = (): Property.Color => props.fill || theme.colors.icon.secondary;\n const direction = (): 'left' | 'right' | 'top' | 'bottom' => props.direction || 'left';\n\n const Svg = styled('svg')<{ svgDirection: 'left' | 'right' | 'top' | 'bottom' }>`\n transform: rotate(${props => rotationDegrees[props.svgDirection]}deg);\n transition: transform 0.1s ease-in-out;\n `;\n\n return (\n <Svg\n width=\"6\"\n height=\"12\"\n viewBox=\"0 0 6 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n svgDirection={direction()}\n >\n <path\n d=\"M5.1 1.40012L1.5 6.0001L5.1 10.6001\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </Svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface CloseIconProps {\n fill?: Property.Color;\n}\n\nexport const CloseIcon: Component<CloseIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.900031 0.900397L5.00002 5.00039M5.00002 5.00039L9.10003 9.1004M5.00002 5.00039L9.10003 0.900391M5.00002 5.00039L0.900024 9.1004\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const IconButtonStyled = styled.button`\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${props => props.theme!.colors.background.secondary};\n border: none;\n cursor: pointer;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: scale(1.04);\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Property } from 'csstype';\nimport { Component, JSXElement, Match, Show, Switch } from 'solid-js';\nimport { ArrowIcon } from 'src/app/components/icons/arrow-icon';\nimport { CloseIcon } from 'src/app/components/icons/close-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { IconButtonStyled } from './style';\n\nexport interface IconButtonProps extends Styleable {\n fill?: Property.Color;\n children?: JSXElement;\n icon?: 'close' | 'arrow';\n onClick: () => void;\n}\n\nexport const IconButton: Component<IconButtonProps> = props => {\n const icon = (): 'close' | 'arrow' => props.icon || 'close';\n return (\n <IconButtonStyled class={props.class} onClick={() => props.onClick()}>\n <Show when={!!props.children}>{props.children}</Show>\n <Show when={!props.children}>\n <Switch>\n <Match when={icon() === 'close'}>\n <CloseIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'arrow'}>\n <ArrowIcon fill={props.fill} />\n </Match>\n </Switch>\n </Show>\n </IconButtonStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { IconButton } from 'src/app/components/icon-button';\nimport { media } from 'src/app/styles/media';\n\nexport const ModalBackgroundStyled = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n z-index: 1000;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.4);\n\n ${media('mobile')} {\n align-items: flex-end;\n }\n`;\n\nexport const ModalWrapperClass = css`\n position: relative;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 16px 64px rgba(0, 0, 0, 0.16);\n min-height: 100px;\n width: 440px;\n padding: 44px 56px 24px;\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const CloseButtonStyled = styled(IconButton)`\n position: absolute;\n right: 16px;\n top: 16px;\n`;\n","import cn from 'classnames';\nimport { Component, JSXElement, Show } from 'solid-js';\nimport { Transition } from 'solid-transition-group';\nimport clickOutsideDirective from 'src/app/directives/click-outside';\nimport keyPressedDirective from 'src/app/directives/key-pressed';\nimport { Styleable } from 'src/app/models/styleable';\nimport { isDevice, media } from 'src/app/styles/media';\nimport { CloseButtonStyled, ModalBackgroundStyled, ModalWrapperClass } from './style';\nimport { css, useTheme } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { Identifiable } from 'src/app/models/identifiable';\nconst clickOutside = clickOutsideDirective;\nconst keyPressed = keyPressedDirective;\n\nconst borders: BorderRadiusConfig = {\n m: '24px',\n s: '16px',\n none: '0'\n};\n\nexport interface ModalProps extends Styleable, Identifiable {\n children: JSXElement;\n opened: boolean;\n onClose: () => void;\n}\n\nexport const Modal: Component<ModalProps> = props => {\n const theme = useTheme();\n return (\n <Transition\n onBeforeEnter={el => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n el.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n el.firstElementChild!.animate(\n [{ transform: 'translateY(390px)' }, { transform: 'translateY(0)' }],\n {\n duration\n }\n );\n }\n }}\n onExit={(el, done) => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n const backgroundAnimation = el.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n const contentAnimation = el.firstElementChild!.animate(\n [{ transform: 'translateY(0)' }, { transform: 'translateY(390px)' }],\n {\n duration\n }\n );\n\n Promise.all([backgroundAnimation.finished, contentAnimation.finished]).then(\n done\n );\n } else {\n backgroundAnimation.finished.then(done);\n }\n }}\n >\n <Show when={props.opened}>\n <ModalBackgroundStyled>\n <div\n id={props.id}\n class={cn(\n ModalWrapperClass,\n props.class,\n css`\n background-color: ${theme.colors.background.primary};\n border-radius: ${borders[theme.borderRadius]};\n\n ${media('mobile')} {\n border-radius: ${borders[theme.borderRadius]}\n ${borders[theme.borderRadius]} 0 0;\n }\n `\n )}\n use:clickOutside={() => props.onClose()}\n use:keyPressed={() => props.onClose()}\n >\n <CloseButtonStyled icon=\"close\" onClick={() => props.onClose()} />\n {props.children}\n </div>\n </ModalBackgroundStyled>\n </Show>\n </Transition>\n );\n};\n","import { createContext, createSignal, useContext } from 'solid-js';\nimport { createStore } from 'solid-js/store';\n\n// src/index.ts\nvar deepReadObject = (obj, path, defaultValue) => {\n const value = path.trim().split(\".\").reduce((a, b) => a ? a[b] : void 0, obj);\n return value !== void 0 ? value : defaultValue;\n};\nvar template = (str, params, reg = /{{(.*?)}}/g) => str.replace(reg, (_, key) => deepReadObject(params, key, \"\"));\nvar createI18nContext = (init = {}, lang = navigator.language in init ? navigator.language : Object.keys(init)[0]) => {\n const [locale, setLocale] = createSignal(lang);\n const [dict, setDict] = createStore(init);\n const translate = (key, params, defaultValue) => {\n const val = deepReadObject(dict[locale()], key, defaultValue || \"\");\n if (typeof val === \"function\")\n return val(params);\n if (typeof val === \"string\")\n return template(val, params || {});\n return val;\n };\n const actions = {\n add(lang2, table) {\n setDict(lang2, (t) => Object.assign(t || {}, table));\n },\n locale: (lang2) => lang2 ? setLocale(lang2) : locale(),\n dict: (lang2) => deepReadObject(dict, lang2)\n };\n return [translate, actions];\n};\nvar I18nContext = createContext({});\nvar useI18n = () => useContext(I18nContext);\n\nexport { I18nContext, createI18nContext, useI18n };\n","import { styled } from 'solid-styled-components';\n\nexport const H1Styled = styled.h1`\n font-style: normal;\n font-weight: 700;\n font-size: 24px;\n line-height: 30px;\n\n text-align: center;\n letter-spacing: 0.072px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 6px;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H1Styled } from './style';\n\nexport interface H1Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H1: Component<H1Props> = props => {\n const [t] = useI18n();\n return (\n <H1Styled class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H1Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H2Styled = styled.h2`\n font-style: normal;\n font-weight: 510;\n font-size: 16px;\n line-height: 22px;\n\n text-align: center;\n letter-spacing: -0.32px;\n\n color: ${props => props.theme!.colors.text.secondary};\n\n margin-top: 0;\n margin-bottom: 32px;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H2Styled } from './style';\n\nexport interface H2Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H2: Component<H2Props> = props => {\n const [t] = useI18n();\n return (\n <H2Styled class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H2Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H3Styled = styled.h3`\n font-style: normal;\n font-weight: 590;\n font-size: 15px;\n line-height: 20px;\n\n letter-spacing: -0.24px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H3Styled } from './style';\n\ninterface H3Props extends Translateable {\n children?: JSXElement;\n}\n\nexport const H3: Component<H3Props> = props => {\n const [t] = useI18n();\n\n return (\n <H3Styled>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H3Styled>\n );\n};\n","import { Property } from 'csstype';\nimport { styled } from 'solid-styled-components';\n\nexport const TextStyled = styled.div<{\n fontSize: Property.FontSize;\n fontWeight: Property.FontWeight;\n letterSpacing: Property.LetterSpacing;\n lineHeight: Property.LineHeight;\n color: Property.Color;\n}>`\n font-style: normal;\n font-weight: ${props => props.fontWeight};\n font-size: ${props => props.fontSize};\n line-height: ${props => props.lineHeight};\n letter-spacing: ${props => props.letterSpacing};\n\n color: ${props => props.color};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Property } from 'csstype';\nimport { Component, JSXElement, mergeProps } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TextStyled } from './style';\n\nexport interface TextProps extends Styleable, Translateable {\n children?: JSXElement;\n fontSize?: Property.FontSize;\n fontWeight?: Property.FontWeight;\n lineHeight?: Property.LineHeight;\n letterSpacing?: Property.LetterSpacing;\n color?: Property.Color;\n}\n\nexport const Text: Component<TextProps> = inputs => {\n const theme = useTheme();\n const [t] = useI18n();\n\n const color = (): Property.Color => inputs.color || theme.colors.text.primary;\n\n const props = mergeProps(\n {\n fontSize: '14px',\n fontWeight: '510',\n lineHeight: '130%',\n letterSpacing: '-0.154px'\n },\n inputs\n );\n return (\n <TextStyled\n fontSize={props.fontSize}\n fontWeight={props.fontWeight}\n lineHeight={props.lineHeight}\n letterSpacing={props.letterSpacing}\n color={color()}\n class={props.class}\n >\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </TextStyled>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const TonIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"16\"\n height=\"15\"\n viewBox=\"0 0 16 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.1839 12.7069C9.6405 13.6507 9.36881 14.1226 9.05907 14.348C8.42775 14.8074 7.57228 14.8074 6.94096 14.348C6.63122 14.1226 6.35952 13.6507 5.81613 12.7069L1.52066 5.24638C0.768635 3.94024 0.392625 3.28717 0.337617 2.75894C0.225505 1.68236 0.818944 0.655911 1.80788 0.215893C2.29309 0 3.04667 0 4.55383 0H11.4462C12.9534 0 13.7069 0 14.1922 0.215893C15.1811 0.655911 15.7745 1.68236 15.6624 2.75894C15.6074 3.28717 15.2314 3.94024 14.4794 5.24638L10.1839 12.7069ZM7.10002 11.3412L2.56139 3.48002C2.31995 3.06185 2.19924 2.85276 2.18146 2.68365C2.14523 2.33896 2.33507 2.01015 2.65169 1.86919C2.80703 1.80002 3.04847 1.80002 3.53133 1.80002H3.53134L7.10002 1.80002V11.3412ZM8.90001 11.3412L13.4387 3.48002C13.6801 3.06185 13.8008 2.85276 13.8186 2.68365C13.8548 2.33896 13.665 2.01015 13.3484 1.86919C13.193 1.80002 12.9516 1.80002 12.4687 1.80002L8.90001 1.80002V11.3412Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface SuccessIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const SuccessIcon: Component<SuccessIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.success;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M7.5 13L10 15.5L16.5 9\"\n stroke={theme.colors.constant.white}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ErrorIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const ErrorIcon: Component<ErrorIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.86358 9.13637C7.51211 8.7849 7.51211 8.21505 7.86358 7.86358C8.21505 7.51211 8.7849 7.51211 9.13637 7.86358L12 10.7272L14.8636 7.86358C15.2151 7.51211 15.7849 7.51211 16.1364 7.86358C16.4878 8.21505 16.4878 8.7849 16.1364 9.13637L13.2728 12L16.1364 14.8636C16.4878 15.2151 16.4878 15.7849 16.1364 16.1364C15.7849 16.4878 15.2151 16.4878 14.8636 16.1364L12 13.2728L9.13637 16.1364C8.7849 16.4878 8.21505 16.4878 7.86358 16.1364C7.51211 15.7849 7.51211 15.2151 7.86358 14.8636L10.7272 12L7.86358 9.13637Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n );\n};\n","import cn from 'classnames';\nimport type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport {css, keyframes, useTheme} from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LoaderIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const LoaderIcon: Component<LoaderIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.tertiary;\n\n const rotateAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const svgClass = css`\n animation: ${rotateAnimation} 1s linear infinite;\n `;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M8.00002 18.9282C11.8264 21.1373 16.7191 19.8263 18.9282 16C21.1374 12.1736 19.8264 7.28092 16 5.07178C12.1737 2.86264 7.28096 4.17364 5.07182 7.99998\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import { createContext } from 'solid-js';\nimport { TonConnectUI } from 'src/ton-connect-ui';\n\nexport const TonConnectUiContext = createContext<TonConnectUI>();\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport {useTheme} from \"solid-styled-components\";\n\ninterface CopyIconProps {\n fill?: Property.Color;\n}\n\nexport const CopyIcon: Component<CopyIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.76228 2.09998H7.79998H10.2001H10.2378H10.2378H10.2378C11.0459 2.09997 11.7067 2.09996 12.2438 2.14384C12.7997 2.18926 13.3017 2.28614 13.7706 2.52505C14.5045 2.89896 15.1011 3.49558 15.475 4.22941C15.7139 4.6983 15.8108 5.20038 15.8562 5.75629C15.9001 6.29337 15.9001 6.95422 15.9001 7.76227V7.79998V8.1H16.2H16.2377C17.0457 8.09999 17.7066 8.09998 18.2437 8.14386C18.7996 8.18928 19.3017 8.28616 19.7705 8.52507C20.5044 8.89898 21.101 9.4956 21.4749 10.2294C21.7138 10.6983 21.8107 11.2004 21.8561 11.7563C21.9 12.2934 21.9 12.9542 21.9 13.7623V13.8V16.2V16.2377C21.9 17.0458 21.9 17.7066 21.8561 18.2437C21.8107 18.7996 21.7138 19.3017 21.4749 19.7706C21.101 20.5044 20.5044 21.101 19.7705 21.4749C19.3017 21.7138 18.7996 21.8107 18.2437 21.8561C17.7066 21.9 17.0458 21.9 16.2378 21.9H16.2377H16.2H13.8H13.7623H13.7622C12.9542 21.9 12.2934 21.9 11.7563 21.8561C11.2004 21.8107 10.6983 21.7138 10.2294 21.4749C9.49561 21.101 8.89898 20.5044 8.52507 19.7706C8.28616 19.3017 8.18928 18.7996 8.14386 18.2437C8.09998 17.7066 8.09999 17.0458 8.1 16.2377V16.2V15.9H7.79998H7.76227H7.76218C6.95417 15.9 6.29335 15.9 5.75629 15.8561C5.20038 15.8107 4.6983 15.7138 4.22941 15.4749C3.49558 15.101 2.89896 14.5044 2.52505 13.7705C2.28614 13.3017 2.18926 12.7996 2.14384 12.2437C2.09996 11.7066 2.09997 11.0458 2.09998 10.2377V10.2377V10.2377V10.2V7.79998V7.76228V7.76225V7.76224C2.09997 6.9542 2.09996 6.29336 2.14384 5.75629C2.18926 5.20038 2.28614 4.6983 2.52505 4.22941C2.89896 3.49558 3.49558 2.89896 4.22941 2.52505C4.6983 2.28614 5.20038 2.18926 5.75629 2.14384C6.29336 2.09996 6.95419 2.09997 7.76222 2.09998H7.76224H7.76228ZM8.1 14.1V13.8V13.7623C8.09999 12.9542 8.09998 12.2934 8.14386 11.7563C8.18928 11.2004 8.28616 10.6983 8.52507 10.2294C8.89898 9.4956 9.49561 8.89898 10.2294 8.52507C10.6983 8.28616 11.2004 8.18928 11.7563 8.14386C12.2934 8.09998 12.9542 8.09999 13.7623 8.1H13.8H14.1001V7.79998C14.1001 6.94505 14.0994 6.35798 14.0622 5.90287C14.0259 5.45827 13.9593 5.21944 13.8712 5.0466C13.6699 4.65146 13.3486 4.3302 12.9535 4.12886C12.7806 4.04079 12.5418 3.97419 12.0972 3.93786C11.6421 3.90068 11.055 3.89998 10.2001 3.89998H7.79998C6.94505 3.89998 6.35798 3.90068 5.90287 3.93786C5.45827 3.97419 5.21944 4.04079 5.0466 4.12886C4.65146 4.3302 4.3302 4.65146 4.12886 5.0466C4.04079 5.21944 3.97419 5.45827 3.93786 5.90287C3.90068 6.35798 3.89998 6.94505 3.89998 7.79998V10.2C3.89998 11.0549 3.90068 11.642 3.93786 12.0971C3.97419 12.5417 4.04079 12.7805 4.12886 12.9534C4.3302 13.3485 4.65146 13.6698 5.0466 13.8711C5.21944 13.9592 5.45827 14.0258 5.90287 14.0621C6.35798 14.0993 6.94505 14.1 7.79998 14.1H8.1ZM11.0466 10.1289C11.2195 10.0408 11.4583 9.97421 11.9029 9.93788C12.358 9.9007 12.9451 9.9 13.8 9.9H16.2C17.0549 9.9 17.642 9.9007 18.0971 9.93788C18.5417 9.97421 18.7805 10.0408 18.9534 10.1289C19.3485 10.3302 19.6698 10.6515 19.8711 11.0466C19.9592 11.2195 20.0258 11.4583 20.0621 11.9029C20.0993 12.358 20.1 12.9451 20.1 13.8V16.2C20.1 17.0549 20.0993 17.642 20.0621 18.0971C20.0258 18.5417 19.9592 18.7805 19.8711 18.9534C19.6698 19.3485 19.3485 19.6698 18.9534 19.8711C18.7805 19.9592 18.5417 20.0258 18.0971 20.0621C17.642 20.0993 17.0549 20.1 16.2 20.1H13.8C12.9451 20.1 12.358 20.0993 11.9029 20.0621C11.4583 20.0258 11.2195 19.9592 11.0466 19.8711C10.6515 19.6698 10.3302 19.3485 10.1289 18.9534C10.0408 18.7805 9.97421 18.5417 9.93788 18.0971C9.9007 17.642 9.9 17.0549 9.9 16.2V13.8C9.9 12.9451 9.9007 12.358 9.93788 11.9029C9.97421 11.4583 10.0408 11.2195 10.1289 11.0466C10.3302 10.6515 10.6515 10.3302 11.0466 10.1289Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DisconnectIconProps {\n fill?: Property.Color;\n}\n\nexport const DisconnectIcon: Component<DisconnectIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0001 4.00003H8.80012C7.11996 4.00003 6.27989 4.00003 5.63815 4.32701C5.07366 4.61463 4.61472 5.07357 4.3271 5.63806C4.00012 6.27979 4.00012 7.11987 4.00012 8.80003V15.2C4.00012 16.8802 4.00012 17.7203 4.3271 18.362C4.61472 18.9265 5.07366 19.3854 5.63815 19.6731C6.27989 20 7.11996 20 8.80012 20H12.0001\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9 12H21M21 12L17 8M21 12L17 16\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","export function copyToClipboard(text: string): Promise<void> {\n if (navigator?.clipboard) {\n return navigator.clipboard.writeText(text);\n }\n\n fallbackCopyTextToClipboard(text);\n return Promise.resolve();\n}\n\nfunction fallbackCopyTextToClipboard(text: string): void {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(textArea);\n }\n}\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nconst dropdownBorders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const AccountButtonDropdownStyled = styled.div`\n width: 256px;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => dropdownBorders[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.primary}\n \n color: ${props => props.theme!.colors.text.primary}\n`;\n\nexport const UlStyled = styled.ul`\n background-color: ${props => props.theme!.colors.background.primary};\n padding: 8px;\n`;\n\nexport const MenuButtonStyled = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n width: 100%;\n\n background-color: ${props => props.theme!.colors.background.primary};\n border: none;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n cursor: pointer;\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Component, createSignal, Show, useContext } from 'solid-js';\nimport { Text } from 'src/app/components';\nimport { CopyIcon } from 'src/app/components/icons/copy-icon';\nimport { DisconnectIcon } from 'src/app/components/icons/disconnect-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { AccountButtonDropdownStyled, MenuButtonStyled, UlStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\nconst MenuItemText: Component<{ children: string } & Translateable> = props => (\n <Text\n translationKey={props.translationKey}\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n >\n {props.children}\n </Text>\n);\n\nexport interface AccountButtonDropdownProps extends Styleable, Identifiable {\n onClose: () => void;\n ref: HTMLDivElement | undefined;\n}\n\nexport const AccountButtonDropdown: Component<AccountButtonDropdownProps> = props => {\n const tonConnectUi = useContext(TonConnectUiContext)!;\n const connector = useContext(ConnectorContext)!;\n const [isCopiedShown, setIsCopiedShown] = createSignal(false);\n\n const onCopy = async (): Promise<void> => {\n const userFriendlyAddress = toUserFriendlyAddress(\n tonConnectUi.account!.address,\n tonConnectUi.account!.chain === CHAIN.TESTNET\n );\n await copyToClipboard(userFriendlyAddress);\n setIsCopiedShown(true);\n\n setTimeout(() => setIsCopiedShown(false), 1000);\n };\n\n const onDisconnect = (): void => {\n connector.disconnect();\n props.onClose();\n };\n\n return (\n <AccountButtonDropdownStyled ref={props.ref} class={props.class} id={props.id}>\n <UlStyled>\n <li>\n <MenuButtonStyled onClick={() => onCopy()}>\n <CopyIcon />\n <Show when={!isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copy\">\n Copy address\n </MenuItemText>\n </Show>\n <Show when={isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copied\">\n Address copied!\n </MenuItemText>\n </Show>\n </MenuButtonStyled>\n </li>\n <li>\n <MenuButtonStyled onClick={() => onDisconnect()}>\n <DisconnectIcon />\n <MenuItemText translationKey=\"button.dropdown.disconnect\">\n Disconnect\n </MenuItemText>\n </MenuButtonStyled>\n </li>\n </UlStyled>\n </AccountButtonDropdownStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\nexport const NotificationStyled = styled.div`\n width: 256px;\n padding: 12px 16px;\n display: flex;\n gap: 9px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const TextStyled = styled(Text)`\n margin-top: 4px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { H3 } from 'src/app/components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\nimport { NotificationStyled, TextStyled } from './style';\n\nexport interface NotificationProps extends Styleable {\n header: PropertyRequired<Translateable, 'translationKey'>;\n children?: string;\n text?: Translateable;\n icon?: JSXElement;\n}\n\nexport const Notification: Component<NotificationProps> = props => {\n return (\n <NotificationStyled class={props.class}>\n <div>\n <H3\n translationKey={props.header.translationKey}\n translationValues={props.header.translationValues}\n >\n {props.children}\n </H3>\n <Show when={props.text}>\n <TextStyled\n translationKey={props.text!.translationKey}\n translationValues={props.text!.translationValues}\n />\n </Show>\n </div>\n {props.icon}\n </NotificationStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n align-self: center;\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { LoaderIconStyled } from 'src/app/views/account-button/notifications/confirm-operation-notification/style';\n\ninterface ConfirmOperationNotificationProps extends Styleable {}\n\nexport const ConfirmOperationNotification: Component<ConfirmOperationNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.confirm.header' }}\n class={props.class}\n icon={<LoaderIconStyled />}\n >\n Confirm operation in your wallet\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorTransactionNotificationProps extends Styleable {}\n\nexport const ErrorTransactionNotification: Component<ErrorTransactionNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionCanceled.header' }}\n text={{ translationKey: 'notifications.transactionCanceled.text' }}\n icon={<ErrorIconStyled />}\n class={props.class}\n >\n Transaction cancelled\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\nimport cn from 'classnames';\n\ninterface SuccessTransactionNotificationProps extends Styleable {}\n\nexport const SuccessTransactionNotification: Component<\n SuccessTransactionNotificationProps\n> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionSent.header' }}\n text={{ translationKey: 'notifications.transactionSent.text' }}\n icon={<SuccessIconStyled />}\n class={cn(props.class, 'tc-notification')}\n >\n Transaction sent\n </Notification>\n );\n};\n","import { css } from 'solid-styled-components';\n\nexport const NotificationClass = css`\n transform: translateY(-8px);\n margin-bottom: 12px;\n`;\n","import { Component, createEffect, createSignal, For, Match, on, Switch } from 'solid-js';\nimport { TransitionGroup } from 'solid-transition-group';\nimport { ActionName, action } from 'src/app/state/modals-state';\nimport { ConfirmOperationNotification } from './confirm-operation-notification';\nimport { ErrorTransactionNotification } from './error-transaction-notification';\nimport { SuccessTransactionNotification } from './success-transaction-notification';\nimport { NotificationClass } from './style';\nimport { Styleable } from 'src/app/models/styleable';\nimport {Identifiable} from \"src/app/models/identifiable\";\n\nexport interface NotificationsProps extends Styleable, Identifiable {}\n\nexport const Notifications: Component<NotificationsProps> = props => {\n let lastId = -1;\n const liveTimeoutMs = 4500;\n\n const [openedNotifications, setOpenedNotifications] = createSignal<\n { id: number; action: ActionName }[]\n >([]);\n\n createEffect(\n on(action, action => {\n if (action && action.showNotification) {\n lastId++;\n const id = lastId;\n\n setOpenedNotifications(notifications =>\n notifications\n .filter(notification => notification.action !== 'confirm-transaction')\n .concat({ id, action: action.name })\n );\n setTimeout(\n () =>\n setOpenedNotifications(notifications =>\n notifications.filter(notification => notification.id !== id)\n ),\n liveTimeoutMs\n );\n }\n })\n );\n\n return (\n <div class={props.class} id={props.id}>\n <TransitionGroup\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(0)' },\n { opacity: 1, transform: 'translateY(-8px)' }\n ],\n {\n duration: 200\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(-8px)' },\n { opacity: 0, transform: 'translateY(-30px)' }\n ],\n {\n duration: 200\n }\n );\n a.finished.then(done);\n }}\n >\n <For each={openedNotifications()}>\n {openedNotification => (\n <Switch>\n <Match when={openedNotification.action === 'transaction-sent'}>\n <SuccessTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'transaction-canceled'}>\n <ErrorTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'confirm-transaction'}>\n <ConfirmOperationNotification class={NotificationClass} />\n </Match>\n </Switch>\n )}\n </For>\n </TransitionGroup>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, LoaderIcon } from 'src/app/components';\nimport { rgba } from 'src/app/utils/css';\nimport { AccountButtonDropdown } from 'src/app/views/account-button/account-button-dropdown';\nimport { Notifications } from 'src/app/views/account-button/notifications';\nimport { THEME } from 'src/models';\n\nexport const AccountButtonStyled = styled(Button)`\n background-color: ${props => props.theme!.colors.connectButton.background};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n gap: 9px;\n\n transition: all 0.1s ease-in-out;\n\n &:hover:not(:active) {\n transform: scale(1);\n }\n\n &:hover {\n filter: ${props => `brightness(${props.theme!.theme === THEME.DARK ? 1.07 : 0.95})`};\n }\n`;\n\nexport const DropdownButtonStyled = styled(AccountButtonStyled)`\n width: 140px;\n gap: 11px;\n justify-content: center;\n background-color: ${props => props.theme!.colors.background.primary};\n`;\n\nexport const LoaderButtonStyled = styled(Button)`\n width: 140px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 18px;\n width: 18px;\n`;\n\nexport const DropdownContainerStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport const DropdownStyled = styled(AccountButtonDropdown)<{ hidden: boolean }>`\n box-sizing: border-box;\n overflow: hidden;\n margin-top: 12px;\n`;\n\nexport const NotificationsStyled = styled(Notifications)`\n > div:first-child {\n margin-top: 20px;\n }\n`;\n","function getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (validMiddleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement` middleware', 'detected. This will lead to an infinite loop. Ensure only one of', 'either has been passed to the `middleware` array.'].join(' '));\n }\n\n if (!reference || !floating) {\n console.error(['Floating UI: The reference and/or floating element was not defined', 'when `computePosition()` was called. Ensure that both elements have', 'been created and can be measured.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = { ...middlewareData,\n [name]: { ...middlewareData[name],\n ...data\n }\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n\n if (reset && resetCount <= 50) {\n resetCount++;\n\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n\n if (process.env.NODE_ENV !== \"production\") ;\n\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const alignment = getAlignment(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n const currentPlacement = placements[currentIndex];\n\n if (currentPlacement == null) {\n return {};\n }\n\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = side === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip2;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n\n return {};\n }\n\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n let {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = _temp === void 0 ? {} : _temp;\n return {\n name: 'hide',\n\n async fn(middlewareArguments) {\n const {\n rects\n } = middlewareArguments;\n\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n default:\n {\n return {};\n }\n }\n }\n\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({ ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n const paddingObject = getSideObjectFromPadding(padding);\n\n function getBoundingClientRect() {\n // There are two rects and they are disjoined\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n return fallback;\n }\n\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nlet uaString;\nfunction getUAString() {\n if (uaString) {\n return uaString;\n }\n\n const uaData = navigator.userAgentData;\n\n if (uaData && Array.isArray(uaData.brands)) {\n uaString = uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n return uaString;\n }\n\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle(element);\n const backdropFilter = css.backdropFilter || css.WebkitBackdropFilter; // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n return css.transform !== 'none' || css.perspective !== 'none' || (backdropFilter ? backdropFilter !== 'none' : false) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat\n value => {\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nconst FALLBACK_SCALE = {\n x: 1,\n y: 1\n};\nfunction getScale(element) {\n const domElement = !isElement(element) && element.contextElement ? element.contextElement : isElement(element) ? element : null;\n\n if (!domElement) {\n return FALLBACK_SCALE;\n }\n\n const rect = domElement.getBoundingClientRect();\n const css = getComputedStyle(domElement); // Would need to take into account borders, padding, and potential scrollbars\n // which would require a lot of code. Fallback to the old technique to\n // determine scale.\n\n if (css.boxSizing !== 'border-box') {\n if (!isHTMLElement(domElement)) {\n return FALLBACK_SCALE;\n }\n\n return {\n x: domElement.offsetWidth > 0 ? round(rect.width) / domElement.offsetWidth || 1 : 1,\n y: domElement.offsetHeight > 0 ? round(rect.height) / domElement.offsetHeight || 1 : 1\n };\n }\n\n let x = rect.width / parseFloat(css.width);\n let y = rect.height / parseFloat(css.height); // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n\n return {\n x,\n y\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;\n\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scale = FALLBACK_SCALE;\n\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n\n const win = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scale.x;\n const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scale.y;\n const width = clientRect.width / scale.x;\n const height = clientRect.height / scale.y;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, true, strategy === 'fixed', offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n const result = // Step into the shadow DOM of the parent of a slotted node\n node.assignedSlot || // DOM Element detected\n node.parentNode || ( // ShadowRoot detected\n isShadowRoot(node) ? node.host : null) || // Fallback\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n\n const rect = getBoundingClientRect(element);\n return {\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = {\n x: 1,\n y: 1\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n\n if (isLastTraversableNode(parentNode)) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\n// Returns the inner client rect, subtracting scrollbars if present\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : {\n x: 1,\n y: 1\n };\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y,\n width,\n height\n };\n}\n\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n if (clippingAncestor === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n\n if (isElement(clippingAncestor)) {\n return getInnerBoundingClientRect(clippingAncestor, strategy);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\n\n\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element; // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const containingBlock = isContainingBlock(currentNode);\n const shouldDropCurrentNode = elementIsFixed ? !containingBlock && !currentContainingBlockComputedStyle : !containingBlock && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position);\n\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration\n currentContainingBlockComputedStyle = computedStyle;\n }\n\n currentNode = getParentNode(currentNode);\n }\n\n cache.set(element, result);\n return result;\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\n\n\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n\n if (!isElement(reference) && reference.contextElement && !animationFrame) {\n observer.observe(reference.contextElement);\n }\n\n observer.observe(floating);\n }\n\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\n if (animationFrame) {\n frameLoop();\n }\n\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n\n update();\n return () => {\n var _observer;\n\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = { ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, { ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import{createEffect as f,createMemo as R,createSignal as g,onCleanup as y}from\"solid-js\";import{computePosition as E}from\"@floating-ui/dom\";function P(l,u,e){let c=()=>{var t;return(t=e==null?void 0:e.placement)!=null?t:\"bottom\"},d=()=>{var t;return(t=e==null?void 0:e.strategy)!=null?t:\"absolute\"},[n,o]=g({x:null,y:null,placement:c(),strategy:d(),middlewareData:{}}),[x,F]=g();f(()=>{let t=x();if(t)throw t.value});let s=R(()=>(l(),u(),{}));function i(){let t=l(),r=u();if(t&&r){let a=s();E(t,r,{middleware:e==null?void 0:e.middleware,placement:c(),strategy:d()}).then(m=>{a===s()&&o(m)},m=>{F(m)})}}return f(()=>{let t=l(),r=u();if(e==null||e.middleware,c(),d(),t&&r)if(e!=null&&e.whileElementsMounted){let a=e.whileElementsMounted(t,r,i);a&&y(a)}else i()}),{get x(){return n().x},get y(){return n().y},get placement(){return n().placement},get strategy(){return n().strategy},get middlewareData(){return n().middlewareData},update:i}}export{P as useFloating};\n","import { Component, createSignal, onCleanup, onMount, Show, useContext } from 'solid-js';\nimport { ArrowIcon, Text, TonIcon } from 'src/app/components';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { Account, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport {\n AccountButtonStyled,\n DropdownButtonStyled,\n DropdownContainerStyled,\n DropdownStyled,\n LoaderButtonStyled,\n LoaderIconStyled,\n NotificationsStyled\n} from './style';\nimport { Portal } from 'solid-js/web';\nimport { useFloating } from 'solid-floating-ui';\nimport { autoUpdate } from '@floating-ui/dom';\nimport { Transition } from 'solid-transition-group';\nimport { useTheme } from 'solid-styled-components';\nimport { CHAIN } from '@tonconnect/protocol';\n\ninterface AccountButtonProps {}\n\nexport const AccountButton: Component<AccountButtonProps> = () => {\n const theme = useTheme();\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [isOpened, setIsOpened] = createSignal(false);\n const [account, setAccount] = createSignal<Account | null>(null);\n const [restoringProcess, setRestoringProcess] = createSignal<boolean>(true);\n\n let dropDownRef: HTMLDivElement | undefined;\n\n const [floating, setFloating] = createSignal<HTMLDivElement | undefined>();\n const [anchor, setAnchor] = createSignal<HTMLButtonElement | undefined>();\n\n const position = useFloating(anchor, floating, {\n whileElementsMounted: autoUpdate,\n placement: 'bottom-end'\n });\n\n const normalizedAddress = (): string => {\n const acc = account();\n if (acc) {\n const userFriendlyAddress = toUserFriendlyAddress(\n acc.address,\n acc.chain === CHAIN.TESTNET\n );\n return userFriendlyAddress.slice(0, 4) + '...' + userFriendlyAddress.slice(-4);\n }\n\n return '';\n };\n\n tonConnectUI.connectionRestored.then(() => setRestoringProcess(false));\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (!wallet) {\n setIsOpened(false);\n setAccount(null);\n return;\n }\n\n setAccount(wallet.account);\n });\n\n const onClick = (e: Event): void | boolean => {\n if (!account() || !isOpened()) {\n return;\n }\n const clickToButton = anchor()!.contains(e.target as Node);\n const clickToDropdown = dropDownRef!.contains(e.target as Node);\n\n if (!clickToButton && !clickToDropdown) {\n setIsOpened(false);\n }\n };\n\n onMount(() => {\n document.body.addEventListener('click', onClick);\n });\n\n onCleanup(() => {\n document.body.removeEventListener('click', onClick);\n unsubscribe();\n });\n\n return (\n <>\n <Show when={restoringProcess()}>\n <LoaderButtonStyled disabled={true} id=\"tc-connect-button-loading\">\n <LoaderIconStyled />\n </LoaderButtonStyled>\n </Show>\n <Show when={!restoringProcess()}>\n <Show when={!account()}>\n <AccountButtonStyled\n onClick={() => tonConnectUI.connectWallet()}\n id=\"tc-connect-button\"\n >\n <TonIcon fill={theme.colors.connectButton.foreground} />\n <Text\n translationKey=\"button.connectWallet\"\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n color={theme.colors.connectButton.foreground}\n >\n Connect wallet\n </Text>\n </AccountButtonStyled>\n </Show>\n <Show when={account()}>\n <DropdownContainerStyled>\n <DropdownButtonStyled\n onClick={() => setIsOpened(v => !v)}\n ref={setAnchor}\n id=\"tc-dropdown-button\"\n >\n <Text\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n lineHeight=\"18px\"\n >\n {normalizedAddress()}\n </Text>\n <ArrowIcon direction=\"bottom\" />\n </DropdownButtonStyled>\n <Portal>\n <div\n ref={setFloating}\n style={{\n position: position.strategy,\n top: `${position.y ?? 0}px`,\n left: `${position.x ?? 0}px`,\n 'z-index': 999\n }}\n id=\"tc-dropdown-container\"\n >\n <Transition\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(-8px)' },\n { opacity: 1, transform: 'translateY(0)' }\n ],\n {\n duration: 150\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(0)' },\n { opacity: 0, transform: 'translateY(-8px)' }\n ],\n {\n duration: 150\n }\n );\n a.finished.then(done);\n }}\n >\n <Show when={isOpened()}>\n <DropdownStyled\n hidden={!isOpened()}\n onClose={() => setIsOpened(false)}\n ref={dropDownRef}\n id=\"tc-dropdown\"\n />\n </Show>\n </Transition>\n <NotificationsStyled id=\"tc-notifications\" />\n </div>\n </Portal>\n </DropdownContainerStyled>\n </Show>\n </Show>\n </>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const QrCodeStyled = styled.div`\n position: relative;\n\n > div:first-child {\n height: 276px;\n width: 276px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n > svg {\n height: 276px;\n width: 276px;\n }\n }\n\n rect {\n fill: transparent;\n }\n\n path {\n fill: ${props => props.theme!.colors.text.primary};\n }\n`;\n\nexport const ImageBackground = styled.div`\n position: absolute;\n width: 52px;\n height: 52px;\n background: ${props => props.theme!.colors.background.secondary};\n padding: 7px;\n top: 112px;\n left: 112px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n > img {\n width: 46px;\n height: 46px;\n border-radius: 12px;\n }\n`;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\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 _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var 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 };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var 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 var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\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\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\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\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\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\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\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\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\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\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\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\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\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\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\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, 7, 37, 13],\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { Component, createEffect } from 'solid-js';\nimport { ImageBackground, QrCodeStyled } from './style';\nimport qrcode from 'qrcode-generator';\n\ninterface QRCodeProps {\n imageUrl?: string;\n sourceUrl: string;\n}\n\nexport const QRCode: Component<QRCodeProps> = props => {\n let qrCodeCanvas: HTMLDivElement | undefined;\n\n createEffect(() => {\n const errorCorrectionLevel = 'L';\n const qr = qrcode(0, errorCorrectionLevel);\n qr.addData(props.sourceUrl);\n qr.make();\n qrCodeCanvas!.innerHTML = qr.createSvgTag(4);\n });\n\n return (\n <QrCodeStyled>\n <div ref={qrCodeCanvas} />\n <ImageBackground>\n <img src={props.imageUrl} alt=\"\" />\n </ImageBackground>\n </QrCodeStyled>\n );\n};\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\n\ninterface TranslationProps extends PropertyRequired<Translateable, 'translationKey'> {\n children?: JSXElement;\n}\n\nexport const Translation: Component<TranslationProps> = props => {\n const [t] = useI18n();\n\n return t(props.translationKey, props.translationValues, props.children?.toString());\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, IconButton, Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const QrCodeModalStyled = styled.div`\n padding: 0 24px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const QRBackgroundStyled = styled.div`\n margin-bottom: 16px;\n background-color: ${props => props.theme!.colors.background.secondary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px 0;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n gap: 16px;\n height: 56px;\n margin-bottom: 24px;\n`;\n\nexport const ActionButtonStyled = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.32px;\n width: 100%;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const GetWalletStyled = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const TextStyled = styled(Text)`\n color: ${props => props.theme!.colors.text.secondary};\n font-size: 16px;\n`;\n","import { THEME } from 'src/models/THEME';\n\nexport function openLink(href: string, target = '_self'): void {\n window.open(href, target, 'noreferrer noopener');\n}\n\nexport function openLinkBlank(href: string): void {\n openLink(href, '_blank');\n}\n\nexport function getSystemTheme(): THEME {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {\n return THEME.LIGHT;\n }\n\n return THEME.DARK;\n}\n\nexport function subscribeToThemeChange(callback: (theme: THEME) => void): () => void {\n const handler = (event: MediaQueryListEvent): void =>\n callback(event.matches ? THEME.DARK : THEME.LIGHT);\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', handler);\n return () =>\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', handler);\n}\n","import {\n ConnectAdditionalRequest,\n isWalletInfoInjected,\n WalletInfoInjected,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport { Component, Show, useContext } from 'solid-js';\nimport { Button, H1, H2 } from 'src/app/components';\nimport { QRCode } from 'src/app/components/qr-code';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n ActionButtonStyled,\n ButtonsContainerStyled,\n GetWalletStyled,\n QRBackgroundStyled,\n QrCodeModalStyled,\n StyledIconButton,\n TextStyled\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { openLink, openLinkBlank } from 'src/app/utils/web-api';\nimport { Identifiable } from 'src/app/models/identifiable';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\n\nexport interface QrCodeModalProps extends Identifiable {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote | (WalletInfoRemote & WalletInfoInjected);\n onBackClick: () => void;\n}\n\nexport const QrCodeModal: Component<QrCodeModalProps> = props => {\n const connector = useContext(ConnectorContext)!;\n const universalLink = connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n );\n\n return (\n <QrCodeModalStyled id={props.id}>\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n <H1\n translationKey=\"walletModal.qrCodeModal.connectWith\"\n translationValues={{ name: props.wallet.name }}\n >\n Connect with {props.wallet.name}\n </H1>\n <H2\n translationKey=\"walletModal.qrCodeModal.scan\"\n translationValues={{ name: props.wallet.name }}\n >\n Scan QR code with your phone’s or {props.wallet.name}’s camera.\n </H2>\n <QRBackgroundStyled>\n <QRCode sourceUrl={universalLink} imageUrl={props.wallet.imageUrl} />\n </QRBackgroundStyled>\n <ButtonsContainerStyled>\n <ActionButtonStyled\n onClick={() => {\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n openLink(universalLink);\n }}\n >\n <Translation\n translationKey=\"walletModal.qrCodeModal.openWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Open {props.wallet.name}\n </Translation>\n </ActionButtonStyled>\n <Show when={isWalletInfoInjected(props.wallet) && props.wallet.injected}>\n <ActionButtonStyled\n onClick={() => {\n setLastSelectedWalletInfo(props.wallet as WalletInfoInjected);\n connector.connect(\n {\n jsBridgeKey: (props.wallet as WalletInfoInjected).jsBridgeKey\n },\n props.additionalRequest\n );\n }}\n >\n <Translation translationKey=\"walletModal.qrCodeModal.openExtension\">\n Open Extension\n </Translation>\n </ActionButtonStyled>\n </Show>\n </ButtonsContainerStyled>\n <GetWalletStyled>\n <TextStyled\n translationKey=\"walletModal.qrCodeModal.dontHave\"\n translationValues={{ name: props.wallet.name }}\n >\n Don't have {props.wallet.name}?\n </TextStyled>\n <Button onClick={() => openLinkBlank(props.wallet.aboutUrl)}>\n <Translation translationKey=\"walletModal.qrCodeModal.get\">GET</Translation>\n </Button>\n </GetWalletStyled>\n </QrCodeModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\nexport const WalletItemStyled = styled.button`\n cursor: pointer;\n display: block;\n border: none;\n background-color: unset;\n padding: 12px 12px 24px 12px;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: scale(1.04);\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n img {\n width: 72px;\n height: 72px;\n border-radius: 18px;\n\n margin-bottom: 8px;\n\n ${media('mobile')} {\n width: 64px;\n height: 64px;\n border-radius: 16px;\n }\n }\n\n ${media('mobile')} {\n padding: 10px 10px 20px 10px;\n }\n`;\n\nexport const StyledText = styled(Text)`\n font-weight: 590;\n max-width: 72px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n @supports (-webkit-line-clamp: 2) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: initial;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n`;\n","import { Component } from 'solid-js';\nimport { StyledText, WalletItemStyled } from './style';\n\ninterface WalletItemProps {\n iconUrl: string;\n name: string;\n onClick: () => void;\n}\n\nexport const WalletItem: Component<WalletItemProps> = props => {\n return (\n <WalletItemStyled onClick={() => props.onClick()}>\n <img src={props.iconUrl} alt=\"\" />\n <StyledText>{props.name}</StyledText>\n </WalletItemStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H2 } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const SelectWalletModalStyled = styled.div``;\n\nexport const UlStyled = styled.ul`\n display: flex;\n margin: 0 auto 24px;\n width: fit-content;\n max-width: 100%;\n min-height: 140px;\n overflow: auto;\n padding: 0 24px;\n\n &&::-webkit-scrollbar {\n display: none;\n }\n\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n ${media('mobile')} {\n min-height: 126px;\n }\n`;\n\nexport const H2Styled = styled(H2)`\n ${media('mobile')} {\n margin-bottom: 24px;\n padding: 0 24px;\n min-height: 44px;\n }\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto;\n`;\n","import { WalletInfo } from '@tonconnect/sdk';\nimport { Component, For } from 'solid-js';\nimport { H1 } from 'src/app/components';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { WalletItem } from './wallet-item';\nimport { ButtonStyled, H2Styled, SelectWalletModalStyled, UlStyled } from './style';\nimport { openLinkBlank } from 'src/app/utils/web-api';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface SelectWalletModalProps extends Identifiable {\n walletsList: WalletInfo[];\n onSelect: (wallet: WalletInfo) => void;\n}\n\nexport const SelectWalletModal: Component<SelectWalletModalProps> = props => {\n const learnMoreUrl = 'https://ton.org/wallets';\n\n return (\n <SelectWalletModalStyled id={props.id}>\n <H1 translationKey=\"walletModal.selectWalletModal.connectWallet\">Connect a wallet</H1>\n <H2Styled translationKey=\"walletModal.selectWalletModal.selectWallet\">\n Select your wallet from the options to get started.\n </H2Styled>\n <UlStyled>\n <For each={props.walletsList}>\n {wallet => (\n <li>\n <WalletItem\n iconUrl={wallet.imageUrl}\n name={wallet.name}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n </UlStyled>\n <ButtonStyled onClick={() => openLinkBlank(learnMoreUrl)}>\n <Translation translationKey=\"walletModal.selectWalletModal.learnMore\">\n Learn more\n </Translation>\n </ButtonStyled>\n </SelectWalletModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { H1, LoaderIcon, Modal } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const StyledModal = styled(Modal)`\n padding-left: 0;\n padding-right: 0;\n\n ${media('mobile')} {\n min-height: 390px;\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 12px;\n\n ${media('mobile')} {\n padding: 0 10px;\n }\n`;\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n width: 70px;\n height: 70px;\n`;\n\nexport const LoaderContainerStyled = styled.div`\n margin: 30px 0;\n width: 100%;\n display: flex;\n justify-content: center;\n\n ${media('mobile')} {\n height: 160px;\n align-items: center;\n }\n`;\n","import { ConnectAdditionalRequest, ITonConnect } from '@tonconnect/sdk';\nimport { createStore } from 'solid-js/store';\nimport { Locales } from 'src/models/locales';\nimport { WalletsListConfiguration } from 'src/models/wallets-list-configuration';\n\nexport type AppState = {\n connector: ITonConnect;\n buttonRootId: string | null;\n language: Locales;\n walletsList: WalletsListConfiguration | {};\n getConnectParameters?: () => Promise<ConnectAdditionalRequest>;\n};\n\nexport const [appState, setAppState] = createStore<AppState>({\n buttonRootId: null,\n language: 'en',\n walletsList: {}\n} as AppState);\n","import { WalletInfo, TonConnect } from '@tonconnect/sdk';\nimport { UIWallet } from 'src/models/ui-wallet';\nimport { WalletsListConfiguration } from 'src/models';\n\nexport function uiWalletToWalletInfo(uiWallet: UIWallet): WalletInfo {\n if ('jsBridgeKey' in uiWallet) {\n return {\n ...uiWallet,\n injected: TonConnect.isWalletInjected(uiWallet.jsBridgeKey),\n embedded: TonConnect.isInsideWalletBrowser(uiWallet.jsBridgeKey)\n };\n }\n\n return uiWallet;\n}\n\nexport function applyWalletsListConfiguration(\n walletsList: WalletInfo[],\n configuration?: WalletsListConfiguration\n): WalletInfo[] {\n if (!configuration) {\n return walletsList;\n }\n\n if ('wallets' in configuration) {\n return configuration.wallets\n .map(wallet => {\n if (typeof wallet === 'string') {\n const walletInfo = walletsList.find(item => item.name === wallet);\n\n if (!walletInfo) {\n console.error(\n `Wallet with name === '${wallet}' wasn't found in the wallets list. Check '${wallet}' correctness. Available wallets names: ${walletsList\n .map(i => \"'\" + i.name + \"'\")\n .join(', ')}`\n );\n\n return null;\n }\n return walletInfo;\n }\n\n return uiWalletToWalletInfo(wallet);\n })\n .filter(i => !!i) as WalletInfo[];\n }\n\n const filteredWalletsList = configuration.excludeWallets?.length\n ? walletsList.filter(wallet =>\n configuration.excludeWallets?.every(item => item !== wallet.name)\n )\n : walletsList;\n\n if (!configuration.includeWallets) {\n return filteredWalletsList;\n }\n\n if (configuration.includeWalletsOrder === 'start') {\n return configuration.includeWallets.map(uiWalletToWalletInfo).concat(walletsList);\n }\n\n return walletsList.concat(configuration.includeWallets.map(uiWalletToWalletInfo));\n}\n","import {\n ConnectAdditionalRequest,\n isWalletInfoInjected,\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n on,\n onCleanup,\n Show,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n setLastSelectedWalletInfo,\n setWalletsModalOpen,\n walletsModalOpen\n} from 'src/app/state/modals-state';\nimport { QrCodeModal } from 'src/app/views/modals/wallets-modal/qr-code-modal';\nimport { SelectWalletModal } from 'src/app/views/modals/wallets-modal/select-wallet-modal';\nimport { StyledModal, LoaderIconStyled, LoaderContainerStyled, H1Styled } from './style';\nimport { openLink } from 'src/app/utils/web-api';\nimport { isDevice } from 'src/app/styles/media';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { applyWalletsListConfiguration } from 'src/app/utils/wallets';\n\nexport const WalletsModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext);\n const [fetchedWalletsList] = createResource(() => tonConnectUI!.getWallets());\n const [fetchedAdditionalRequest, { refetch }] = createResource<\n ConnectAdditionalRequest | undefined\n >((_, { refetching }) => {\n if (refetching) {\n return appState.getConnectParameters?.();\n }\n\n return undefined;\n });\n\n createEffect(\n on(walletsModalOpen, () => {\n if (walletsModalOpen() && fetchedAdditionalRequest.state !== 'refreshing') {\n refetch();\n }\n })\n );\n\n const [selectedWalletInfo, setSelectedWalletInfo] = createSignal<WalletInfo | null>(null);\n\n const walletsList = createMemo(() => {\n if (fetchedWalletsList.state !== 'ready') {\n return null;\n }\n\n return applyWalletsListConfiguration(fetchedWalletsList(), appState.walletsList);\n });\n\n const additionalRequestLoading = (): boolean =>\n fetchedAdditionalRequest.state !== 'ready' && fetchedAdditionalRequest.state !== 'errored';\n\n const additionalRequest = createMemo(() => {\n if (fetchedAdditionalRequest.state !== 'ready') {\n return undefined;\n }\n\n return fetchedAdditionalRequest();\n });\n\n const onClose = (): void => {\n setWalletsModalOpen(false);\n setSelectedWalletInfo(null);\n };\n\n const onSelect = (walletInfo: WalletInfo): void => {\n if (isDevice('mobile') && 'universalLink' in walletInfo) {\n setLastSelectedWalletInfo({ ...walletInfo, openMethod: 'universal-link' });\n return onSelectIfMobile(walletInfo);\n }\n\n if (isWalletInfoInjected(walletInfo) && walletInfo.injected) {\n setLastSelectedWalletInfo(walletInfo);\n return onSelectIfInjected(walletInfo);\n }\n\n if ('bridgeUrl' in walletInfo) {\n setLastSelectedWalletInfo({ ...walletInfo, openMethod: 'qrcode' });\n setSelectedWalletInfo(walletInfo);\n return;\n }\n\n openLink(walletInfo.aboutUrl, '_blank');\n };\n\n const onSelectIfMobile = (walletInfo: WalletInfoRemote): void => {\n const universalLink = connector.connect(\n {\n universalLink: walletInfo.universalLink,\n bridgeUrl: walletInfo.bridgeUrl\n },\n additionalRequest()\n );\n\n openLink(universalLink);\n };\n\n const onSelectIfInjected = (walletInfo: WalletInfoInjected): void => {\n connector.connect(\n {\n jsBridgeKey: walletInfo.jsBridgeKey\n },\n additionalRequest()\n );\n };\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (wallet) {\n onClose();\n }\n });\n\n onCleanup(unsubscribe);\n\n return (\n <StyledModal opened={walletsModalOpen()} onClose={onClose} id=\"tc-wallets-modal-container\">\n <Show when={!walletsList() || additionalRequestLoading()}>\n <H1Styled translationKey=\"walletModal.loading\">Wallets list is loading</H1Styled>\n <LoaderContainerStyled>\n <LoaderIconStyled />\n </LoaderContainerStyled>\n </Show>\n <Show when={walletsList() && !additionalRequestLoading()}>\n <Show when={!selectedWalletInfo()} keyed={false}>\n <SelectWalletModal\n walletsList={walletsList()!}\n onSelect={onSelect}\n id=\"tc-wallets-modal\"\n />\n </Show>\n <Show when={selectedWalletInfo()} keyed={false}>\n <QrCodeModal\n additionalRequest={additionalRequest()}\n wallet={selectedWalletInfo() as WalletInfoRemote}\n onBackClick={() => setSelectedWalletInfo(null)}\n id=\"tc-qr-modal\"\n />\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, Text } from 'src/app/components';\n\nexport const ActionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 20px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 19px;\n`;\n\nexport const TextStyled = styled(Text)`\n font-weight: 510;\n font-size: 16px;\n line-height: 22px;\n letter-spacing: -0.32px;\n text-align: center;\n max-width: 250px;\n\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const ButtonStyled = styled(Button)`\n margin-top: 32px;\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { ActionModalStyled, ButtonStyled, H1Styled, TextStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface ActionModalProps extends Identifiable {\n headerTranslationKey: string;\n icon: JSXElement;\n textTranslationKey?: string;\n onClose: () => void;\n showButton?: boolean;\n}\n\nexport const ActionModal: Component<ActionModalProps> = props => {\n return (\n <ActionModalStyled id={props.id}>\n {props.icon}\n <H1Styled translationKey={props.headerTranslationKey} />\n <TextStyled translationKey={props.textTranslationKey} />\n <Show when={props.showButton !== false}>\n <ButtonStyled onClick={() => props.onClose()}>\n <Translation translationKey=\"common.close\">Close</Translation>\n </ButtonStyled>\n </Show>\n </ActionModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 72px;\n width: 72px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIconStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface ConfirmTransactionModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const ConfirmTransactionModal: Component<ConfirmTransactionModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.confirmTransaction.header\"\n textTranslationKey=\"actionModal.confirmTransaction.text\"\n icon={<LoaderIconStyled />}\n onClose={() => props.onClose()}\n showButton={false}\n id={props.id}\n />\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n height: 66px;\n width: 66px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIconStyled } from 'src/app/views/modals/actions-modal/transaction-canceled-modal/style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface TransactionCanceledModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const TransactionCanceledModal: Component<TransactionCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionCanceled.header\"\n textTranslationKey=\"actionModal.transactionCanceled.text\"\n icon={<ErrorIconStyled />}\n onClose={() => props.onClose()}\n id={props.id}\n />\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n height: 66px;\n width: 66px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIconStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface TransactionSentModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const TransactionSentModal: Component<TransactionSentModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionSent.header\"\n textTranslationKey=\"actionModal.transactionSent.text\"\n icon={<SuccessIconStyled />}\n onClose={() => props.onClose()}\n id={props.id}\n />\n );\n};\n","import { Component, Match, Switch } from 'solid-js';\nimport { Modal } from 'src/app/components';\nimport { action, setAction } from 'src/app/state/modals-state';\nimport { ConfirmTransactionModal } from 'src/app/views/modals/actions-modal/confirm-transaction-modal';\nimport { TransactionCanceledModal } from 'src/app/views/modals/actions-modal/transaction-canceled-modal';\nimport { TransactionSentModal } from 'src/app/views/modals/actions-modal/transaction-sent-modal';\n\nexport const ActionsModal: Component = () => {\n return (\n <Modal\n opened={action() !== null && action()?.openModal === true}\n onClose={() => setAction(null)}\n id=\"tc-actions-modal-container\"\n >\n <Switch>\n <Match when={action()!.name === 'transaction-sent'}>\n <TransactionSentModal\n onClose={() => setAction(null)}\n id=\"tc-transaction-sent-modal\"\n />\n </Match>\n <Match when={action()!.name === 'transaction-canceled'}>\n <TransactionCanceledModal\n onClose={() => setAction(null)}\n id=\"tc-transaction-canceled-modal\"\n />\n </Match>\n <Match when={action()!.name === 'confirm-transaction'}>\n <ConfirmTransactionModal\n onClose={() => setAction(null)}\n id=\"tc-confirm-modal\"\n />\n </Match>\n </Switch>\n </Modal>\n );\n};\n","import { Show } from 'solid-js';\nimport type { Component } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { ThemeProvider } from 'solid-styled-components';\nimport { i18nDictionary } from 'src/app/i18n';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { themeState } from 'src/app/state/theme-state';\nimport { GlobalStyles } from 'src/app/styles/global-styles';\nimport { AccountButton } from 'src/app/views/account-button';\nimport { ActionsModal, WalletsModal } from 'src/app/views/modals';\nimport './styles/style.d.ts';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { createI18nContext, I18nContext } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\n\nexport type AppProps = {\n tonConnectUI: TonConnectUI;\n};\n\nconst App: Component<AppProps> = props => {\n const translations = createI18nContext(i18nDictionary, appState.language);\n\n return (\n <I18nContext.Provider value={translations}>\n <TonConnectUiContext.Provider value={props.tonConnectUI}>\n <ConnectorContext.Provider value={appState.connector}>\n <GlobalStyles />\n <ThemeProvider theme={themeState}>\n <Show when={appState.buttonRootId}>\n <Portal mount={document.getElementById(appState.buttonRootId!)!}>\n <AccountButton />\n </Portal>\n </Show>\n <WalletsModal />\n <ActionsModal />\n </ThemeProvider>\n </ConnectorContext.Provider>\n </TonConnectUiContext.Provider>\n </I18nContext.Provider>\n );\n};\n\nexport default App;\n","import { render } from 'solid-js/web';\n\nimport {\n Action,\n lastSelectedWalletInfo,\n setAction,\n setWalletsModalOpen\n} from 'src/app/state/modals-state';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport App from './App';\nimport { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport const widgetController = {\n openWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(true)),\n closeWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(false)),\n setAction: (action: Action): void => void setTimeout(() => setAction(action)),\n clearAction: (): void => void setTimeout(() => setAction(null)),\n getSelectedWalletInfo: (): WalletInfoWithOpenMethod | null => lastSelectedWalletInfo(),\n renderApp: (root: string, tonConnectUI: TonConnectUI): (() => void) =>\n render(\n () => <App tonConnectUI={tonConnectUI} />,\n document.getElementById(root) as HTMLElement\n )\n};\n","import { TonConnectError } from '@tonconnect/sdk';\n\nexport class TonConnectUIError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n\n Object.setPrototypeOf(this, TonConnectUIError.prototype);\n }\n}\n","import { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport class WalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_wallet-info';\n\n constructor() {\n if (!localStorage) {\n throw new TonConnectUIError(\n 'window.localStorage is undefined. localStorage is required for TonConnectUI'\n );\n }\n\n this.localStorage = localStorage;\n }\n\n public setWalletInfo(walletInfo: WalletInfoWithOpenMethod): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getWalletInfo(): WalletInfoWithOpenMethod | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import type { Account } from '@tonconnect/sdk';\nimport {\n ITonConnect,\n SendTransactionRequest,\n SendTransactionResponse,\n TonConnect,\n TonConnectError,\n Wallet,\n WalletInfo,\n WalletInfoInjected\n} from '@tonconnect/sdk';\nimport { widgetController } from 'src/app/widget-controller';\nimport { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { TonConnectUiCreateOptions } from 'src/models/ton-connect-ui-create-options';\nimport { WalletInfoStorage } from 'src/storage';\nimport { getSystemTheme, openLink, subscribeToThemeChange } from 'src/app/utils/web-api';\nimport { TonConnectUiOptions } from 'src/models/ton-connect-ui-options';\nimport { setBorderRadius, setColors, setTheme } from 'src/app/state/theme-state';\nimport { mergeOptions } from 'src/app/utils/options';\nimport { setAppState } from 'src/app/state/app.state';\nimport { unwrap } from 'solid-js/store';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { ActionConfiguration, StrictActionConfiguration } from 'src/models/action-configuration';\nimport { ConnectedWallet, WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport class TonConnectUI {\n public static getWallets(): Promise<WalletInfo[]> {\n return TonConnect.getWallets();\n }\n\n private readonly walletInfoStorage = new WalletInfoStorage();\n\n private readonly connector: ITonConnect;\n\n private _walletInfo: WalletInfoWithOpenMethod | null = null;\n\n private systemThemeChangeUnsubscribe: (() => void) | null = null;\n\n private actionsConfiguration?: {\n modals?: ('before' | 'success' | 'error')[] | 'all';\n notifications?: ('before' | 'success' | 'error')[] | 'all';\n };\n\n /**\n * Promise that resolves after end of th connection restoring process (promise will fire after `onStatusChange`, so you can get actual information about wallet and session after when promise resolved).\n * Resolved value `true`/`false` indicates if the session was restored successfully.\n */\n public readonly connectionRestored = Promise.resolve(false);\n\n /**\n * Current connection status.\n */\n public get connected(): boolean {\n return this.connector.connected;\n }\n\n /**\n * Current connected account or null.\n */\n public get account(): Account | null {\n return this.connector.account;\n }\n\n /**\n * Curren connected wallet app or null.\n */\n public get wallet(): Wallet | null {\n return this.connector.wallet;\n }\n\n /**\n * Curren connected wallet's info or null.\n */\n public get walletInfo(): WalletInfoWithOpenMethod | null {\n return this._walletInfo;\n }\n\n /**\n * Set and apply new UI options. Object with partial options should be passed. Passed options will be merged with current options.\n * @param options\n */\n public set uiOptions(options: TonConnectUiOptions) {\n this.checkButtonRootExist(options.buttonRootId);\n\n this.actionsConfiguration = options.actionsConfiguration;\n\n if (options.uiPreferences?.theme) {\n if (options.uiPreferences?.theme !== 'SYSTEM') {\n this.systemThemeChangeUnsubscribe?.();\n setTheme(options.uiPreferences.theme, options.uiPreferences.colorsSet);\n } else {\n setTheme(getSystemTheme(), options.uiPreferences.colorsSet);\n\n if (!this.systemThemeChangeUnsubscribe) {\n this.systemThemeChangeUnsubscribe = subscribeToThemeChange(setTheme);\n }\n }\n } else {\n if (options.uiPreferences?.colorsSet) {\n setColors(options.uiPreferences.colorsSet);\n }\n }\n\n if (options.uiPreferences?.borderRadius) {\n setBorderRadius(options.uiPreferences.borderRadius);\n }\n\n setAppState(state => {\n const merged = mergeOptions(\n {\n ...(options.language && { language: options.language }),\n ...(!!options.walletsList && { walletsList: options.walletsList })\n },\n unwrap(state)\n );\n\n if (options.buttonRootId !== undefined) {\n merged.buttonRootId = options.buttonRootId;\n }\n\n return merged;\n });\n }\n\n constructor(options?: TonConnectUiCreateOptions) {\n if (options && 'connector' in options && options.connector) {\n this.connector = options.connector;\n } else if (options && 'manifestUrl' in options && options.manifestUrl) {\n this.connector = new TonConnect({\n manifestUrl: options.manifestUrl,\n walletsListSource: options.walletsListSource\n });\n } else {\n throw new TonConnectUIError(\n 'You have to specify a `manifestUrl` or a `connector` in the options.'\n );\n }\n\n this.getWallets();\n const rootId = this.normalizeWidgetRoot(options?.widgetRootId);\n\n this.subscribeToWalletChange();\n\n if (options?.restoreConnection !== false) {\n this.connectionRestored = new Promise(async resolve => {\n await this.connector.restoreConnection();\n\n if (!this.connector.connected) {\n this.walletInfoStorage.removeWalletInfo();\n }\n\n resolve(this.connector.connected);\n });\n }\n\n this.uiOptions = mergeOptions(options, { uiPreferences: { theme: 'SYSTEM' } });\n setAppState({\n connector: this.connector,\n getConnectParameters: options?.getConnectParameters\n });\n\n widgetController.renderApp(rootId, this);\n }\n\n /**\n * Returns available wallets list.\n */\n public async getWallets(): Promise<WalletInfo[]> {\n return this.connector.getWallets();\n }\n\n /**\n * Subscribe to connection status change.\n * @return function which has to be called to unsubscribe.\n */\n public onStatusChange(\n callback: (wallet: ConnectedWallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): ReturnType<ITonConnect['onStatusChange']> {\n return this.connector.onStatusChange(wallet => {\n if (wallet) {\n const lastSelectedWalletInfo =\n widgetController.getSelectedWalletInfo() ||\n this.walletInfoStorage.getWalletInfo();\n\n callback({ ...wallet, ...lastSelectedWalletInfo! });\n } else {\n callback(wallet);\n }\n }, errorsHandler);\n }\n\n /**\n * Opens the modal window and handles a wallet connection.\n */\n public async connectWallet(): Promise<ConnectedWallet> {\n const walletsList = await this.getWallets();\n const embeddedWallet: WalletInfoInjected = walletsList.find(\n wallet => 'embedded' in wallet && wallet.embedded\n ) as WalletInfoInjected;\n\n if (embeddedWallet) {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey });\n } else {\n widgetController.openWalletsModal();\n }\n\n return new Promise((resolve, reject) => {\n const unsubscribe = this.connector.onStatusChange(wallet => {\n unsubscribe!();\n if (wallet) {\n const lastSelectedWalletInfo =\n widgetController.getSelectedWalletInfo() ||\n this.walletInfoStorage.getWalletInfo();\n\n resolve({ ...wallet, ...lastSelectedWalletInfo! });\n } else {\n reject(new TonConnectUIError('Wallet was not connected'));\n }\n }, reject);\n });\n }\n\n /**\n * Disconnect wallet and clean localstorage.\n */\n public disconnect(): Promise<void> {\n this.walletInfoStorage.removeWalletInfo();\n return this.connector.disconnect();\n }\n\n /**\n * Opens the modal window and handles the transaction sending.\n * @param tx transaction to send.\n * @param options modal and notifications behaviour settings. Default is show only 'before' modal and all notifications.\n */\n public async sendTransaction(\n tx: SendTransactionRequest,\n options?: ActionConfiguration\n ): Promise<SendTransactionResponse> {\n if (!this.connected || !this.walletInfo) {\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n if ('universalLink' in this.walletInfo && this.walletInfo.openMethod === 'universal-link') {\n openLink(this.walletInfo.universalLink);\n }\n\n const { notifications, modals } = this.getModalsAndNotificationsConfiguration(options);\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before')\n });\n\n try {\n const result = await this.connector.sendTransaction(tx);\n\n widgetController.setAction({\n name: 'transaction-sent',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n widgetController.setAction({\n name: 'transaction-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n }\n }\n\n private subscribeToWalletChange(): void {\n this.connector.onStatusChange(wallet => {\n if (wallet) {\n this.updateWalletInfo();\n } else {\n this.walletInfoStorage.removeWalletInfo();\n }\n });\n }\n\n private updateWalletInfo(): void {\n const lastSelectedWalletInfo = widgetController.getSelectedWalletInfo();\n\n if (lastSelectedWalletInfo) {\n this._walletInfo = lastSelectedWalletInfo;\n this.walletInfoStorage.setWalletInfo(lastSelectedWalletInfo);\n } else {\n this._walletInfo = this.walletInfoStorage.getWalletInfo();\n }\n }\n\n private normalizeWidgetRoot(rootId: string | undefined): string {\n if (!rootId || !document.getElementById(rootId)) {\n rootId = 'tc-widget-root';\n const rootElement = document.createElement('div');\n rootElement.id = rootId;\n document.body.appendChild(rootElement);\n }\n\n return rootId;\n }\n\n private checkButtonRootExist(buttonRootId: string | null | undefined): void | never {\n if (buttonRootId == null) {\n return;\n }\n\n if (!document.getElementById(buttonRootId)) {\n throw new TonConnectUIError(`${buttonRootId} element not found in the document.`);\n }\n }\n\n private getModalsAndNotificationsConfiguration(\n options?: ActionConfiguration\n ): StrictActionConfiguration {\n const allActions: StrictActionConfiguration['notifications'] = [\n 'before',\n 'success',\n 'error'\n ];\n\n let notifications: StrictActionConfiguration['notifications'] = allActions;\n if (\n this.actionsConfiguration?.notifications &&\n this.actionsConfiguration?.notifications !== 'all'\n ) {\n notifications = this.actionsConfiguration.notifications;\n }\n\n if (options?.notifications) {\n if (options.notifications === 'all') {\n notifications = allActions;\n } else {\n notifications = options.notifications;\n }\n }\n\n let modals: StrictActionConfiguration['modals'] = ['before'];\n if (this.actionsConfiguration?.modals) {\n if (this.actionsConfiguration.modals === 'all') {\n modals = allActions;\n } else {\n modals = this.actionsConfiguration.modals;\n }\n }\n if (options?.modals) {\n if (options.modals === 'all') {\n modals = allActions;\n } else {\n modals = options.modals;\n }\n }\n\n return {\n notifications,\n modals\n };\n }\n}\n"],"names":["CONNECT_EVENT_ERROR_CODES","CONNECT_ITEM_ERROR_CODES","SEND_TRANSACTION_ERROR_CODES","CHAIN","this","s","i","nacl","e","isNode","h","l","n","o","p","c","u","a","t","crypto","require","__awaiter","P","getWindow","window","walletConfigDTO","Transition","value","error","lookup","children","dispose","template","document","unwrap","r","className","css","GlobalStyles","THEME","isMergeableObject","deepmerge","body","addEventListener","classList","add","event","key","remove","Styles","createGlobalStyles","_$createComponent","borders","ButtonStyled","Button","props","class","id","onClick","ref","disabled","classnames","el","clickOutside","accessor","contains","target","onCleanup","removeEventListener","escPressed","_","onKeyPress","activeElement","blur","rotationDegrees","left","top","right","bottom","ArrowIcon","theme","useTheme","fill","colors","icon","secondary","direction","Svg","styled","svgDirection","_tmpl$","_$effect","_$setAttribute","CloseIcon","IconButton","clickOutsideDirective","keyPressed","keyPressedDirective","m","none","Modal","duration","isDevice","animate","opacity","firstElementChild","transform","done","backgroundAnimation","contentAnimation","Promise","all","finished","then","opened","_$use","onClose","_$insert","cn","ModalWrapperClass","background","primary","borderRadius","media","_$className","H1Styled","H1","useI18n","_$memo","translationKey","translationValues","toString","H2Styled","H2","H3","TextStyled","Text","inputs","color","text","mergeProps","fontSize","fontWeight","lineHeight","letterSpacing","TonIcon","SuccessIcon","success","constant","white","ErrorIcon","LoaderIcon","tertiary","rotateAnimation","keyframes","svgClass","CopyIcon","DisconnectIcon","UlStyled","MenuItemText","AccountButtonDropdown","tonConnectUi","useContext","TonConnectUiContext","connector","ConnectorContext","isCopiedShown","setIsCopiedShown","createSignal","onCopy","userFriendlyAddress","toUserFriendlyAddress","account","address","chain","TESTNET","copyToClipboard","setTimeout","onDisconnect","disconnect","Notification","header","LoaderIconStyled","ConfirmOperationNotification","ErrorIconStyled","ErrorTransactionNotification","SuccessIconStyled","SuccessTransactionNotification","Notifications","lastId","liveTimeoutMs","openedNotifications","setOpenedNotifications","createEffect","on","action","showNotification","notifications","filter","notification","concat","name","openedNotification","NotificationClass","computePosition","platform","g","f","R","E","y","AccountButton","tonConnectUI","isOpened","setIsOpened","setAccount","restoringProcess","setRestoringProcess","dropDownRef","floating","setFloating","anchor","setAnchor","position","useFloating","whileElementsMounted","autoUpdate","placement","normalizedAddress","acc","slice","connectionRestored","unsubscribe","onStatusChange","wallet","clickToButton","clickToDropdown","onMount","connectWallet","connectButton","foreground","v","strategy","x","qrcode","typeNumber","errorCorrectionLevel","min","max","unicodeMap","_num","num","_this","data","encode","decode","QRCode","qrCodeCanvas","qr","addData","sourceUrl","make","innerHTML","createSvgTag","imageUrl","Translation","QrCodeModal","universalLink","connect","bridgeUrl","additionalRequest","onBackClick","setLastSelectedWalletInfo","openMethod","openLink","isWalletInfoInjected","injected","jsBridgeKey","openLinkBlank","aboutUrl","WalletItem","iconUrl","SelectWalletModal","learnMoreUrl","walletsList","onSelect","_a","WalletsModal","locale","appState","language","fetchedWalletsList","createResource","getWallets","fetchedAdditionalRequest","refetch","refetching","getConnectParameters","undefined","walletsModalOpen","state","selectedWalletInfo","setSelectedWalletInfo","createMemo","applyWalletsListConfiguration","additionalRequestLoading","setWalletsModalOpen","walletInfo","onSelectIfMobile","onSelectIfInjected","ActionModal","headerTranslationKey","textTranslationKey","showButton","ConfirmTransactionModal","TransactionCanceledModal","TransactionSentModal","ActionsModal","openModal","setAction","App","translations","createI18nContext","i18nDictionary","themeState","buttonRootId","getElementById","widgetController","openWalletsModal","closeWalletsModal","clearAction","getSelectedWalletInfo","lastSelectedWalletInfo","renderApp","root","render"],"mappings":"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,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,YAAM,IAAI;AACV,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAIA,GAAE;AACN,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;AACX,aAAO,IAAI;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"}
|