@txnlab/use-wallet 2.2.0 → 2.3.1
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 +1 -1
- package/dist/cjs/index.js +28 -17
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/src/context/WalletContext.d.ts +8 -0
- package/dist/cjs/src/index.d.ts +1 -1
- package/dist/cjs/src/store/index.d.ts +0 -1
- package/dist/esm/index.js +28 -17
- package/dist/esm/src/context/WalletContext.d.ts +8 -0
- package/dist/esm/src/index.d.ts +1 -1
- package/dist/esm/src/store/index.d.ts +0 -1
- package/dist/index.d.ts +35 -31
- package/package.json +1 -1
- package/dist/cjs/src/store/state/clientStore.d.ts +0 -5
- package/dist/cjs/src/testUtils/createWrapper.d.ts +0 -6
- package/dist/esm/src/store/state/clientStore.d.ts +0 -5
- package/dist/esm/src/testUtils/createWrapper.d.ts +0 -6
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/constants/constants.ts","../../src/algod/index.ts","../../src/media/audio.ts","../../src/clients/base/base.ts","../../node_modules/immer/dist/immer.esm.mjs","../../node_modules/zustand/esm/middleware/immer.mjs","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/index.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/store/state/walletStore.ts","../../src/store/state/debugStore.ts","../../src/store/state/clientStore.ts","../../src/utils/debugLog.ts","../../src/clients/pera/constants.ts","../../src/clients/pera/client.ts","../../src/clients/daffi/constants.ts","../../src/clients/daffi/client.ts","../../src/clients/myalgo/constants.ts","../../src/clients/myalgo/client.ts","../../src/clients/defly/constants.ts","../../src/clients/defly/client.ts","../../src/clients/exodus/constants.ts","../../src/clients/exodus/client.ts","../../src/clients/algosigner/constants.ts","../../src/clients/algosigner/client.ts","../../src/utils/types.ts","../../src/clients/walletconnect2/constants.ts","../../src/clients/walletconnect2/utils.ts","../../src/clients/walletconnect2/client.ts","../../src/clients/kmd/constants.ts","../../src/clients/kmd/client.ts","../../src/clients/mnemonic/constants.ts","../../src/clients/mnemonic/client.ts","../../src/clients/custom/constants.ts","../../src/clients/custom/client.ts","../../src/clients/index.ts","../../src/utils/initializeProviders.ts","../../src/utils/clearAccounts.ts","../../src/utils/providers.ts","../../src/utils/reconnectProviders.ts","../../src/utils/encodeNFDTransactionsArray.ts","../../node_modules/zustand/esm/shallow.mjs","../../src/hooks/useWallet.ts","../../src/hooks/useInitializeProviders.ts"],"sourcesContent":["import { Network } from '../types/node'\n\nexport enum PROVIDER_ID {\n KMD = 'kmd',\n CUSTOM = 'custom',\n PERA = 'pera',\n DAFFI = 'daffi',\n MYALGO = 'myalgo',\n ALGOSIGNER = 'algosigner',\n DEFLY = 'defly',\n EXODUS = 'exodus',\n WALLETCONNECT = 'walletconnect',\n MNEMONIC = 'mnemonic'\n}\n\nexport const DEFAULT_NETWORK: Network = 'mainnet'\n\nexport const DEFAULT_NODE_BASEURL = 'https://mainnet-api.algonode.cloud'\n\nexport const DEFAULT_NODE_TOKEN = ''\n\nexport const DEFAULT_NODE_PORT = ''\n","import type _algosdk from 'algosdk'\nimport type { AlgodClientOptions } from '../types'\nimport { DEFAULT_NODE_BASEURL, DEFAULT_NODE_TOKEN, DEFAULT_NODE_PORT } from '../constants'\n\nexport const getAlgosdk = async () => {\n return (await import('algosdk')).default\n}\n\nexport const getAlgodClient = (\n algosdk: typeof _algosdk,\n algodClientOptions?: AlgodClientOptions\n) => {\n const [\n tokenOrBaseClient = DEFAULT_NODE_TOKEN,\n baseServer = DEFAULT_NODE_BASEURL,\n port = DEFAULT_NODE_PORT,\n headers\n ] = algodClientOptions || []\n\n return new algosdk.Algodv2(tokenOrBaseClient, baseServer, port, headers)\n}\n\nexport default class Algod {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n\n constructor(algosdk: typeof _algosdk, algodClient: _algosdk.Algodv2) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n }\n\n static async init(algodOptions?: AlgodClientOptions) {\n const algosdk = await getAlgosdk()\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n return new Algod(algosdk, algodClient)\n }\n}\n","export const audio =\n 'data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMTAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBw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AAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAewHYlw7VcO6u1QAAAABJRU5ErkJgglRDTVAAAAACAAADMFRQRTIAAAASAAADQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAAIa2IMCACNax9X////////yEJ/V0ACEIyMhCEZTkZ0+5O7LJ88LsHC9jof+v/t/////m9ZUXPM5zoxUO7kVVIcPMLk/+MYxBkIs2YkCACNasYgJMCyKdDVhy4f/6rr/dq/2/////9Nf6vVHdjFKKVSsZxLlOEspJ5spV3g3Rqm6h+3/Yn+jvv31Sis/+MYxDEJU14gCACNTbovf6f//TqsjrdFOxChUR5qsFMld3kDguZF5yJxwqof//7//v///b937f78l2bIZqq2dGS3Qx7mbWcY/+MYxEYKU2IcCACNTXb03HJB7boPk1lbWt7Ofl/+Z1////+1tzRbCMAU1YCPZLAI6B6QEbBsMRoXsb/sybvZelHZlVztof0+/+MYxFcIo2IkCABNZ9///6Nm6b2otZgYgczwEZ2p2LSzE8rNIgaREYoB/5/l+X31+v+X////L6BPh5zAzIvSIyK0RoqaaYWD/+MYxG8JO2IcCABNTWjJCNJ06gO8v//X///////+3/+Vm+u8a5NskpCto+I56a50cyF6hrgHrgfP/0Tv+jehmbfu6+qSqzMy/+MYxIUKm2IYAACNTf007df/p//9r9kUkWQDUmHDKRT0tjhYfEEUfKKLKgGp9NVfKm2tdNe//1r////9aMz3ViOoM8450Lhx/+MYxJUJE2okEABTTIfFk4wF5autKThAMqQflQBbv1mxs2Xb+synaSnLpek2JsN1aS5OzPCAUMaFjBAq+Cr/TrR9syzb+zOz/+MYxKsJe1ooEABNSWjlUZHQMhiqUOyVIoOyod7Rpy2e5ezG5d/7fLd/rdnK99U9hSnvYVOOpZKSky5AycYkjlERorFZpz6q/+MYxMALC2YYAACNMARJ5/l/1tbPN/l/////q+n6tvMg1GVzjrCqTdRaMComMIGR08aF3TPkwwCxKgHWCZm16gO/+cjZXL39/+MYxM4K224cEACTTBvP6Efy////hCMbYrxjGdooKYmWPlHkNMEKEVFZEJ+B05oeC6rI+NYKUQkUAAVJ//+lz8gzIB9Tljss/+MYxN0IS2pgGAGTokIlM/50vGPZv9K8TKVKUJKstKE6PDZsLMqLtSFLxAyJZISgAghBaFkexwBZ+/36z9ra9i7pReoA6ZZS/+MYxPYRI2IIAACTEWYFmMXs6W6/Uk8McGNWTEFNRTMuOTguMqqqqqqqqqqqqqqqqqqqqqr1R/23KVXmSmS3dwbdCmaHtMJr/+MYxOwMk2IoGABTSXdXapSMpZTuc5Aw6au+ddmtX8jXLN+23KnY15r4xkU0XjjCBcVSiPM2LPyIYLAcwhEaIRSSxFUD/9dx/+MYxPQNQ2IcEABTSfnX5c/n/f///+Hj9rbpjbvzVpVRhOsPMpObUYe+kbi64rIDCBR4dErKdJUH/ov18JSOWv0Us4ucJ/k//+MYxPoOA2IgGABTSf13S90jlDau7RIS5tTYuisOSfSIECkm5jgqQgcwhKhiAaRqHKA4WTH/2/dirvfsyNelnI0+ZXDOhJ2Y/+MYxP0Hw2JcGAAMv0mZSEScqeiUd6vZUd63dfp+nvtttmevPexF0OU+ObqNXtJF6GzGXzYpo2RJb45u+XQgZsx6K///usIH/+MYxP8SS2YIAACTEEToCx1n//yP///v9799VbUJeql4pw429VgnNkiNFJlslPoiYUHJtNHSXIX/97No7ITqzd1OY2ZGTeyg/+MYxPALo2IgEABTSNgiMRgSOyKQxUYxbIh2mmYiHOr9PnZf3/xjKdqOY9yduI7g1BiCOiqPcFRNrCA0QilQEDoVBeZQ1KsD/+MYxPwNs2YcEABTSEX+tZP4KKcrLVn8//////87Z/dlugZoWuhCj1IB5NvNBhxKZ2LXY1AXiSIIRGIXy/79JyXRUPZqkYyH/+MYxP8R624MAACZEMyg1hXOx6MMCqzs6/S7r2f1WmS5Vl3KvD3mJxUYky04oj5XFVDzQVktSKYRKhW5GSVSzxOjqv/L/v5n/+MYxPIMO2IoEABTSaORi0aUwmzP0RDU0uKYaAzPXc0ROf////b//xeT3yFasgVF/VqCZxLB2BASWwhYVYeisiTFPfln+H/m/+MYxPwSg2IIAACTEcr6P5e9f//3p4/13SqHrSA4p4LNgAjRYTBIIhWundYhZIWiWsSRZWoTUNnV9lkZUe575EZ1RTUkTMiM/+MYxO0Lq2IgEABNSc6ShpSK6Kf5nVJe3v/pG0pelJM3OKOVypAihMwyTI0tOJxKntMISAjRrrcHBYnKJFxIQbUbj//9/LO4/+MYxPkQo2oMCACTLLuulzbiIs+X/n/wj8h2PWX3xb9Yo9ldUSygeQNFowRSZQiKSA2yYUR4PRt6m/vX8JlFxCmyKdGB+Zsn/+MYxPEN82YQAABNEFZLLvTxuF1V+pbW7T20iQ8koqgFCZ5KSZGOUuycUONtmUqTYWcm+kzvX2/9mRGlL0VkOpsxCHIdy2dG/+MYxPQL02IkGABNSTERVmXYIQmRX2KVlZHV1s03TWjtXjDXZ7jvlTRRJpG//WWyYgjJWDYoqPFBMtjgsIUIICQ0hCUHvH/7/+MYxP8Rm2oMCACTLP7935FXnl////+X89/GL22sZapNljUSFE5X20iHGNlUC2XS4s6B5vFqF/r2WSunLOU7rY72leh2GfRV/+MYxPMMM14kEABTSTvVjXQjqxiHroermO1n0tf//c8hDbYZ3xfFBMy3OcFXnWWkcjD2Vl1kbZG4PJ6EB1DE2aGWrhcMv8vz/+MYxP0OA2ocEABTSIucBhaZMpyNak47////X035kZMsXM0WpgfZPPHxBhM5Ml43jEGEmILMQdamN//eZF/M7zJzOCM3lkog/+MYxP8Sc2IIAACTEXMiYC8mFmKIzYRmNDmyJ2XT5ePz7t35S8FYlsSjXmTQniBcjV8EFtUgbPkM0BYPqkZhSdVyV/2CU/qI/+MYxPALG2IgEABTSGIyAa4fPpOqP///zL/9ozHRbDah+3IoJFmIZqIAZadplRNoZGMeJMC6BynF9fr1/e/9Uvr9FK87KHrl/+MYxP4R82oMCACTENvbZ1+rq5dyesLxgq2KKTaixiizRYieOIROo7HxJFmVzhxNeKGc6YpuVsRf6TwGZtBfqBkhmZjGifFb/+MYxPEMQ2YcEABNSEKT+Xz779da9mcwqH7HDQfLQHaWTK0AgvCx9nJYekVVGjAcWArJiDUbasRbf7NW8c0plV6o61NpSxGb/+MYxPsQi2oQCABTEHu7JZm3ak70avcshLJee3jdia0koI15kKaysTMSVZssoRJj5IhOmyC0RtmlBj/95dY7yOzs1ymZHVti/+MYxPMMQ2I0GABNSWCABWx70I1AuSpO5rkvRWUrjJ+bs6drbzqY1NWyVm1SJVNNEOIZCRhjZokDPUQuPqipN8V+/2b2+6T9/+MYxP0N22IkGACTSSykYc9FzqRV0S/dt//eX+Mjcf4zflHwtNu02tFixT5rQTIqowqx4cdBWgD/t1TvYtKyMiIKKzkVFNPW/+MYxP8OG1osGABNSfMKcwqRGIZXY9XWd0SYTMzlPRzTU7///N8OnXxlimpJwtFkWJvfPUhTElMFllElgDdEqhIUBNEfb7n8/+MYxP8Ps2IYEACTSV/9JZ2juWM8u8CUn6+/79+38M2/XLb/ZuIlRp5HgBkrK5pgIheqKxPbSmuy+9pbkFHWKR8gDuBGxiPO/+MYxPsQs2oQEABTEN50rF/67/M+R31q6LUgfJVEC1piYKQQLtAUNTGEWNMHBlitCDExBTYCf/UpcUmecR0FFR/mAYpGMExA/+MYxPMMe14gCACNS5JujnEgB6Mj5HzmXL89wjCUcYvcxEXwiM3s5ylRLptIRhFQUxOFWGAiRkBIPhpATFy55Lb6/3/100VH/+MYxPwR+14IAACTEZzTNvMWh2scTLK5VKhGQ1TaO1zURSEPJ3/a7Ub96jDH6EZh4qdhUccMOS4UixnG6ZOKVBADgZk3NuoW/+MYxO8LG1IoEABNST8s/PnFbpkQ7LelB8kfW5b/y/e7M3NxJ83eUdjYPpd9WJKaybmbb940m9FrLbr/9PalKzKlNzndT2JZ/+MYxP0Nc2YgEABNSJaEepB3rKy3Sr1MWpURUfkZGlrT01b/b96v9miGSZ26k3WhEoHDQSwaHNkmYsgaFpipAaEODcSrB0XV/+MYxP8Rs2oQEABTELppPumv/r6//Wz5m3rMztHhcFUXBukcLICQKkkSyRSKdVNo4StCEypvv5T+9dwEBKsBOeW6chNHun85/+MYxPMQE2IMAAFTFX/L/KrdlPJr+DEIoEDMSRzjrMCz/GRpp0CIqwHrMOQRKv1MQU1Fqqr//Pnn/6c6peTlOO8rJY5Wv7W9/+MYxO0Lo2IcEABNSUVyzPHrcLItWPJzjmUNHKf+eX+t//zzv5bMmV5a1bFK501X6vyImXIyPRcpKyILli6YBuD5tFUbPf3z/+MYxPkQc2IMAACNEbqR0Xlu7pF5nfns3P+j2tnj3/WVuF0fsGwoDJ21qJKOjTnPb6zfIgifEqr7nb086Z1Oj3V2yzEdleWW/+MYxPILE2YsGACNZFSVakYh7Hn1R8Ehr0RG0qvrzN3W/r3LLknlZHai6NKtuaFbbL9TnNlA8ekfQGDyaEIEJEsQ5LUXvCUy/+MYxP8NQ2okEABTSK9qSshSwCV0mTQymSoBniZzmKyM9f/l2/e33WnSy8i/J9PpKCkmMi2FkClQ2lQTQCXlEFSFqiuPcRmr/+MYxP8SS2YIAADTEDyTiOWRV7//xf/McTjtqg6oPOQl2NMBoEZaUQH9IKCmUZFu5YoUYNWqf3uecP8i/4+iAGHimDZggiCg/+MYxPALi2IgEABNSUsEucZiQz3JCUjhl35f88vnqqzIWvZ9Srimia1gqiJSUgRBU5NHIpMhUmv1mjq80RjFVWuLQeZVMhXp/+MYxPwRm2IIAACTEdDMzRMm4UY3g0MIiRYt/vv88/bLX1bQjHIaHtSQKEU4LBOgufRvVWTQqgcihNSqKUeX+P/dkANzmZ5H/+MYxPAOS2IUCABNLSMR2ZED+v//uKfKkstutsbVdylKosQkBa9Rj7K0lkcWle8kkI3ESQpYhRf9f2tmTtYhrOcrIUNZFrZC/+MYxPELU2IkEABRZSlkUjHMl0Qh3KZVZ2Kvq1kpM82u1m75ZtR+odzxXXUmzsEzltrI2VsYTnWubegOtidCnFU4D4viF/1L/+MYxP4RC2IcEADTSOXZoSoJvXVLyRTLy2u1HynL//n+d0qeml8SPTZ8Nd5PNKcxYzoEDEY/alKPJmheZyVDkf6z06L8++lN/+MYxPQNm2IgEABRSZ5EjQ2Q2+spLP+5cmGHKTlGa7C1TgGl4Cpgy2gK1KIpJ707DPaPbXcT6bRA6inEXvykvwkNgFYZm2Ts/+MYxPgNe2IkGABTSXQ+Z1M2Zl5fX/yl5pk52zDT3IuWGbL1HY1x9qwaYT7IH+om+Hnlp/HMb7cSWT/8Py/76///v/Uv61tk/+MYxP0SK2oMCACTELzduxpqqdiZiRog9zWdJolUTCVoToGtMQU1FMy45OC4yVVVVVVVVVU3/f5HzMYKrylIkRHyMZxcgo+R/+MYxO8Mu2IUCABNLZopGo2ABAM4F2ZGjy5/Plzdfr+ErKJ7M9B6zaOWKpa4mJTZuooMiQEtGD63EUeyTcRT84TnLfdRIpDM/+MYxPcN22IgGABTSWRI2OQzyrBzrRf+dd+170JisvW2X12TIM68ck646Cnp7cjB9IGA6eX/6d1ob1pIiGU+6paaRqGdyM5z/+MYxPoOO2YkGABZSFGMUq3O9w7TMNqrFS/2+hGlT8u/OVVtfLUR3dQgsqoktOHVstUyYNk5LZAiMlw2KwHBMsy3qlJHy/y3/+MYxPwJs2ZcGABNZvhkAYsTR1owmWTmv5Z///3+Y3/1k56O9VDp1IneQ63dvfDnkko1RiCT1XJJpDzNDt6XT0pmGwnSNR1M/+MYxP8Qe2oQCABTECkfR3LpOdP6TxO/l/TLzyyd5tS31kO1NXHtmGJN4sSmCMUkrHMIWXGVkaZtESCLrIg6dxVrbUV43WdF/+MYxPgM62osGABNSG4TDEcYYBPDjMAjaa/+f+/W08+iWkj16mmPHWOJMKMJCUXUqyVFBiIHosUccRSFScM9PnYUPqe47b0A/+MYxP8SG24IAACTEDRlP0N4Uj/PrO+qh2ikhiYfIqT1FjbEHFqHuIATi8amsXLJJRUBghy7Tlfn/nMsrTv2PZzKTeHPpTiP/+MYxPELi2Y0GABNSAG1qU2pX+///1925/tuvaikaU81iFyOfXMkHLSNNGHbkE0AYePASzJM2mhGqq+z/pWU7yUiKn9uZRN//+MYxP0RE2ooGADTSPyHqcmsIjMz6dMmqf/OJJZcPeSj8neVaUIuInKzZtAUaXJQ1RdW76jTJE53EoPLzdUaf/9eiS31lDko/+MYxPMNY2IgEABRSEakRJgfq5piOwGv8yN7fn/VVGNVOpRlGScpmDlSFZw4baiHx8lRNPUlJmb5HeRFdSoGH+qd8z9Ndmez/+MYxPgNQ2YkGABRSBrvQ6K9uixzJSj//1b7HKhK6ghjLik9CL0KjKeqSSZHzDRbxsTtEaL4gURHF4JZFzfRz1nrSRWd0sqI/+MYxP4Pi2IoGADTSTFlNkJJBGBnCHViM6lDNs75EZndq/p9NhcqvM+T1uOxQyUvGidw26AEw4UOEQj7ThOjI5GWCZQwDb46/+MYxPoPm2ogEADTSP96/GakZMpJHyLzzVBKCeNGwablOe1//dfP/O/uZUMn8+e12cvLeogoik1hFAhUULasbBw+m6o/5fTn/+MYxPYOm2IYEABTLEmaHoyJANBGewKRERhB/yJDU0bvOl38vv//+/drU2eOYZWKObUTkDO5g6ocUmB8HBiUJGANFNZ0/m/L/+MYxPYOO2YUEACTSEIno76M008xGbOTD7f63//v/vbjsa+blRqj8VNjDzZTmmetldekWE7kE0RAhgGtMJIWP/t+m/5m+r1p/+MYxPgRq2IICACTLUvP2ODUjGGqxBl3mslGZWR9r0ZtWp8j/9oc1pmynQQUdmHZiA90UOaaFqRlKS5b94BSYoHDFbUbedIy/+MYxOwNk2oUAABTLH+uc/rW2b/GrKPB/k+v9v+7Zi8uy290iDI2TzYiGMCFzklWTUSlpquJJC1fmmvLlWwuSMjzdEjITZkq/+MYxPAOK2IQAABNLTidDEI2N32odQfvntSnK72LqjacGUrYRnGS7ZGkKKlKXMKOcdXggNhfSddKJcVbC6TEsy7YL7I3DM0T/+MYxPINq2YUCABTLAVEIEYBMTELZOuWPnHcmnz70L5/eiuUsRohpHIqPdDRg+NNYutKcCahlUWPfAdiQcXqb3clkXityZEz/+MYxPYQG2oUEACNEBjubD7JyDQcKDCW43yDpZ/76vyyGJ1c0V5rlnXJbHoeJoPiwzTUhiSrLESZtNcfbnM77Zt/2Mn9dXNb/+MYxPALs2IgEABNSdRoyEWlIrBIeZJpZCzb+9bz/+/W+NPU+apnxWZO9W10ZBC1JLeZJJn6fZvCD0hqf7g9I3gNkBDYCAIB/+MYxPwO62YcEABTSIJFWgmGmhyOf//P/Md9a/TdF6/lizfkmkkwi9Zl3E9lm0EFrEJhy0zvKurZkNbm6SlulDoVnMzTCCMf/+MYxPsQE2ocGABZSHRGVtCkYzuedujM6U7+0I58yXncN1C3ukiz0sepZslSbxZqIkMbpJ+Ro13iR7YlRXVaCG0akjPldWKx/+MYxPUN+2IgEABTSUzszyOyUbY6HXJDOyMazl2pu/XZKzZRz79dBnJTUc1V3OAisNMWuYKrNIaT1Ri76bBLCdVNxd+uu21f/+MYxPgOe2IgEADNSVzG8azX79n1f//6/+G1y4dn37LHkC7mOOoo0iTgmG0pw4klYaKKFIGK+v7+VvYhDXaqspXgmMrSKqVY/+MYxPkNA2YgEABNSBDIiqhJUBIyslXYaiqxzqlt637//v26/+5GVfd9w15PZEvaJpTrKiMjET0KSMkBsSaYUQBRBlX/g90R/+MYxP8Q22oMAACTLCBlNDIj7Mp57NyBMakmYVFqp9f9f+3VRU+j2t1NIiM9HECJjijROmHhXImEIwKNUD5Vf/rVeZWdKWMR/+MYxPYPU14YEACTSTdM11vY/aMJplbZmnejN9X/p7vuuUyOZCswsNEju1BxQFRxzSRD2TkhWsyRGiMTQIGFGl+/vunrDKgP/+MYxPML214sGACRSe1SERTsjUMhGN1O5VpPvX0bfP3qG8Mxv+4eY3404zRFYASQXKTUxEUOPE8uUSyKWnLpPLyms+w4jkwr/+MYxP4SC2oIAACTEMnFGmYpGZbl6vkf+Qqc98Xm4K52UeUMOTexbQeIbRiAToV6koy1BDJCvFGZFB5KFW+/xT91hSI5meCE/+MYxPANU2YQAABRLIpmnaBeM62B+H+/++/6+atl3Ws+coXE0q2ZVCyJN0IemDiR5ks5UWTLO1UpxFJ6Xd/wjg5yIzkRFo41/+MYxPUOo2YQAAFTMOcxXyHu/9qvuZ5KPl/GbbU3TlEumeXfBt86VnjU0jshdEs3qJJRMQVvvWbnCuW//6nCK1W2g4ymUMs7/+MYxPUOO2oYEACNSImkc8rafnC9rnCz98vOpqXGa6k2bHUKr6ZtEuSqKQtE0wRqVIjR0SCsfDx9SYEECl9/xGfh6ucVzOXg/+MYxPcOm2owGABTSCxmiIzn5HHc5TR1fuq+18knS2r1FtjbNJJszeh4m0x2TsINPgrNEktOKNstxbb1Tv7N3JSUjIZ1EsHZ/+MYxPcNU2okEABTSBkSujqnWmtUX6aePu7teqtekUByzhRIqg5AOQCtLI9sRLRMOEo0SPw0pKYXVdqWyL6GMQjOhIMpyKC1/+MYxPwNc2IkGABTSXDqM52RHU8iy7Mtyzd+9G6aW9qeSipUIbk9aWQLNpMYiibPZJIWNymsxhYiBiDBsoYKCiAIR66AZlxP/+MYxP8Qm2YcEADTSASgAE0mAJYTY2ApRxs6DAC68Xv/+tVUp3/H+9ixP1DMqH8JS5xKCDEKEb5BzCKGGyUUQTfVEEa9CGIJ/+MYxPcNg2YgEABTSGYVW5n////6tOefuxb3RkMjwAS3gwFWM7opwPlXIaJiCmopmXHJwXLz+U1WnMEWV3Kx8NaVSFdcZzWh/+MYxPwOw2IkGACNSScW+0LLcOqH3SVLp1HpNNH/1z3ffFbT1LVKzciZo0cQlc8oPExUaQaIZQnYg0UB49weA4RQgBRJiIon/+MYxPwRQ1oMCACTLf9ekqlzWiNW+/6Ja7zPJETuim////P2/7602/qaaImmw87LCj6T0qcomFAQ0mHIrjX/675d/U+WU5+7/+MYxPIOi2YQAABTLBJL3c7IZDknRCOyuewxhzEtXV+e9Daf1/+f+d+7rrbeNxcg2XXyoxCq2sIiBS5OJOgg5CiJhWji/9P2/+MYxPIJK2ZUGABHZu2nRjPMvaZAnM9XMz2RZJZWOioZkpbm9L/av33sSjOpQkKyCgNxEPV4VihCA52rsHmMim2iE9JprwZ//+MYxP8TI2YIAABRBPv2vn/2rcvw+jB///H/bf3epo9v6fRJpLSJ+aywXXeRLLNFpWQAhEkYAinF/5e6kOFzIErNaLEG0znO/+MYxO0Ma2IYCABNLWMnz9LX8tv5kvdQU7WTtuBVjIwFSbJeR9Co2qsoGl6EFynajKGSYgopxs1te7VVG2ulAGw6e6NoyNMz/+MYxPYQe2oMAACTEN1drq2i2p5a6+7VRVUybl1FChYqITiUlCAyhF4Dw8g/XFKjBAXkRMxkNnMbnf6L90fZfR2TrUroSqs0/+MYxO8O+2IQAACTFeU5bkRqkSIKVd3dTmazsjkoplu78v26Muh5DVzqKmGsJiJTiUBmB5VDq2kCjc0KNgNB5oqIkIpRDFuW/+MYxO4LA2IcEABNSXze0ejzQhkP+8H0cGUiRLl/PlqNeSc76UG7S2mPKKa6IpCK0Cqhm3lcxWWkdrnkepCCWMIbvlo6/54h/+MYxP0Nq2YkGABTSA4lRgEyytxj5MhI0WRkVl5vfCM49dWVUxJt9cp4mEVGyzgwRHSjLSFlGXmiFlmdjyNdueorf//7TYSv/+MYxP8P62YgGACTSJdHaXR/+f/OX////M7XEl/UDiaIGbB1WwtSl0hllGbtQZO3QlLExBoXaV6sWrpyTMtmYorNOpFBndlR/+MYxPoRw2YMAAFTFaiNZpuU6p9UcnanfSf9lOXU+7mvUtlWC6KhpgsjVEsVR4mLipo4ex5kiQWmFGnDa5Zy9RNv8y+Vk3UY/+MYxO4Na2ogEABTSCEFvX0wA3////7fcxelwYsnBJG7OJpkkwMJPg8nZzpl8o76WLJiSWKk+ylFzcXt8dqmJZxlP5wGb5tR/+MYxPMOk2IcEABTSRHX//yrIXbPQUsgwpFNbCPkSR88qwISZDHhZE7sqyXc2iciIyUlPJSVF//b86NrOit0OVMwZJMsqo9X/+MYxPMLI2okEABNSKtIyUdRJAJ7IUqtd92VdKW6f/91WFy8IXO15KtRQbyqlpRRqFTJMgqRVsjLnERAouZNhYltGnDj7/y4/+MYxP8RW2YMCACTLaq6q5HCYZnOMEZ/ty7Rzxrs/93HTpe4xekkSwNFNiBMDVQSdeJjE0+iyJ4WQkAVG2XI++l6amZAe9J8/+MYxPQMg2YcEABNSIphIBjwBQ6dzHn6Lxl5ep0nOK0IKLuRnTRxG2uw0gKspiFdA2u3InVVQidldkmRtxUGc9/f9ojyU/LN/+MYxP0OU2ogGABTSIsilIgColRPMmIHXolrtTPGcaj6vfnUg1qJO0pLDuB+LLujYYOLtyUZHFSFlEgDAiuRZWtz/MH6NtBO/+MYxP4Rs2oMCACTEJnRUK5sgCmiIMpl+f//3/1df41yVpenFk7IBUDSkzJBBXazjP7OKMI25w07Ff/1Qt6p/kur2odnRFq7/+MYxPINE14cEABNSYIzXW101KV2V5qSMXpM72us1/a7I3/+zn1byGbtaYpFFGcqRRdqSqS7LmhjDYUUSZSFa44Kk3xVGk/y/+MYxPgPI2oYEABTSP/8Dt/vrHIxy+f9//+W0v/eOXDej16uUGAkmSpGTjs1DtIgmCIGAzFh2xul2RAD+qx0TBkc97lmEBEQ/+MYxPYPI14UEABTLcHi/91Io3UMn5+XWYjacKRm2k0Vo58TrmxxFjSSLHCgTFrRNigVEZ9PVW++TP1TQu/vz3dXS6Hf81hy/+MYxPQNE2okEABNSLSv09lr6aJzJPIRRA26CYQYTGgYFAMcOvaXbZiyRc7R9cXWdaYgpqoyST4U+Hkp0uZYNi3tME+lzrO5/+MYxPoRU2oMAACTENIrcttGh3caKS59m5eWnwuuZeoRnWQWmlSkPO43PGx1KhKFmiRHwlrBilVCjLa+NkQ04u3JG3z8/MuR/+MYxO8LQ1ogEABNSXbmHPA3Qpwuu+YFr/oP/Pf62mrg1J2uWswigs1JdGJ5JC04zRlZs1FhBBgPxF9Wa4tT99V603ZjM4ys/+MYxP0Ok2ocEABTSE7OTV6bFTdOl7f9PGG7H+OVU3SnHE71lggZlKnkI5FBJY8iPxKiUohIYLFWX3UpRev/8U5BaGhkJ7KP/+MYxP0NS2okEAFTTJEYLINly//r+tb+9I4x9JlL1EnR5jvKfIkRI5CIQfD7gVBMHJ0IZRUJbj+v/J1+rVf1lVFXcrD3QwRK/+MYxP8R+2YMCADTLZnunbRKytn//jOsWzf8753ayJJpdCoaPE6NkjhpYqQr2REliY4nAjpYmSI28QduYr0V6OXuamVpH3KZ/+MYxPINO2IcEABTSJONtUs3P+ApagtCoy3VZTpU+9nlkMRO1ElggRH0Y0trTCOCnZkdRKIFtbty6///qUrf+1ymjv6//3/x/+MYxPgOW2YgEACTSF895e7z75bS3INjKLHucMNG7DGn0uix6JJM3W0xBTUUzLjk4LjJVVX0/17FXBJZNEJQxXVyS3UIOx0I/+MYxPkNE2IkGABNSVOQ7HM+7DuUt3Q7mjpUFmcjr1unl8NuVbD7m6plQSJtQIuLMFbkdTOVo4XNGpkZmZshRj5KVGyRR6oW/+MYxP8P82okOACTLDX0hZ/NMwIyV2MZOyleP56///LM+7JePftrs1g+k+jJlnog5CvNvjmcS3cDTZkDKhtl8r35yOV+jgtR/+MYxPoOQ2YYEABTSKmIjcsiPb5ZfXf7UH8zFxqUaDwmSPCizYFGwQGwyZIIX0pOLKIpjETlo1U/56E0qoAczJRAWM5G8HJA/+MYxPwK8148GABNSUZyKUXZ6Ik9o/PNrPO4Xd3k45s5ZbFOhlkKfJ2SMjFyc9KZLMjQ60Ps1iyQiQycScX711gnjk89MiiI/+MYxP8TC2oIAACTEM0f+Z/SNfy///f9lc5XLIHLMz46Yck2h2K0dtqT0bECVySOS9qTEGr9rfbPd2TQq7VMzuRDg3vYJJEn/+MYxO0ME2YcEABNSJ2RxzMIKcrhC0U0F3kImjyb03for+r/zq1OmMvJ/7vbWJlSA5zVyGFyjBs22U4ODIPh4hDbrVUbv/ln/+MYxPcNW2YcEABNSGWrMglL8cicpXM60b///+8h4bKpxqdMwhMvkpTs/hZPkDJUtJu2TccDTSJKRRGOl+v/1//9Omu/2pdE/+MYxPwPu2oQCABTLHWi9r07yp99tVRSsxysZJwFXKcDYBwxzjoPraIHIgUpiCmopmXHJwp268/L++7oMjOERqsPR/WT59fe/+MYxPgMU1ooGABTSLv/8+5at2WSQuEzX00HAFGyipKM5p5VFojkAmjknWmIKaimZccnBdUObf4ovk//MMX///X/yt/uOXlx/+MYxP8SW2IIAACTEKktqFqTxCJSJF/JNmSImOhln2AosFn0lTEFNRTMuOTguMlVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPAMw2IgEABTSVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPgK215IGACNTFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8MW2I4GABNSFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8Ks1oUGABTZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEFHMTAgU2Vjb25kcyBvZiBTaWxlbmNlAAAAAAAAAAAAQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAQmxhbmsgQXVkaW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8='\n","import type _algosdk from 'algosdk'\nimport { audio } from '../../media/audio'\nimport type { AccountInfo, Asset, ClientOptions, Metadata, Wallet } from '../../types/wallet'\nimport type { ConfirmedTxn, TxnType } from '../../types/node'\nimport type { RawTxnResponse, TransactionsArray, TxnInfo } from '../../types/api'\n\nconst getIsIOS = () => {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return /iPad|iPhone|iPod/.test(navigator?.userAgent) && !(window as any)?.MSStream\n } else {\n return false\n }\n}\n\nconst isIOS = getIsIOS()\n\nabstract class BaseClient {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n clientOptions?: ClientOptions\n keepWCAlive: HTMLAudioElement\n metadata: Metadata\n\n static metadata: Metadata\n\n abstract connect(onDisconnect: () => void): Promise<Wallet>\n abstract disconnect(): Promise<void>\n abstract reconnect(onDisconnect: () => void): Promise<Wallet | null>\n abstract signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup?: boolean\n ): Promise<Uint8Array[]>\n\n protected constructor(\n metadata: Metadata,\n algosdk: typeof _algosdk,\n algodClient: _algosdk.Algodv2,\n clientOptions?: ClientOptions\n ) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n this.clientOptions = clientOptions\n this.keepWCAlive = new Audio()\n this.metadata = metadata\n }\n\n async healthCheck() {\n return await this.algodClient.healthCheck().do()\n }\n\n async getAccountInfo(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo) {\n throw new Error('Unable to get account information')\n }\n\n return accountInfo as AccountInfo\n }\n\n async getAssets(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo || accountInfo.assets === undefined) {\n throw new Error('Unable to get account assets')\n }\n\n return accountInfo.assets as Asset[]\n }\n\n async waitForConfirmation(txId: string, timeout = 4) {\n const confirmation = (await this.algosdk.waitForConfirmation(\n this.algodClient,\n txId,\n timeout\n )) as ConfirmedTxn\n\n return { txId, ...confirmation }\n }\n\n decodeTransaction = (txn: string, isSigned: boolean) => {\n return isSigned\n ? this.algosdk.decodeSignedTransaction(new Uint8Array(Buffer.from(txn, 'base64'))).txn\n : this.algosdk.decodeUnsignedTransaction(new Uint8Array(Buffer.from(txn, 'base64')))\n }\n\n logEncodedTransaction(txn: string, isSigned: boolean) {\n const txnObj = this.decodeTransaction(txn, isSigned)\n\n console.log('TRANSACTION', {\n isSigned,\n from: txnObj.from && this.algosdk.encodeAddress(txnObj.from.publicKey),\n to: txnObj.to && this.algosdk.encodeAddress(txnObj.to.publicKey),\n type: txnObj.type,\n txn: txnObj\n })\n }\n\n groupTransactionsBySender(transactions: TransactionsArray) {\n function groupBySender(objectArray: TxnInfo[]) {\n return objectArray.reduce(function (acc, obj) {\n const sender = obj.from\n if (!acc[sender]) {\n acc[sender] = []\n }\n acc[sender].push(obj)\n return acc\n }, {} as Record<string, Array<TxnInfo>>)\n }\n\n const decodedGroup = transactions.reduce((acc: TxnInfo[], [type, txn], index) => {\n if (type === 'u') {\n const decodedTxn = this.decodeTransaction(txn, false)\n const from = decodedTxn.from ? this.algosdk.encodeAddress(decodedTxn.from.publicKey) : ''\n const to = decodedTxn.to ? this.algosdk.encodeAddress(decodedTxn.to.publicKey) : ''\n const type = (decodedTxn.type as TxnType) || ''\n const amount = Number(decodedTxn.amount) || 0 // convert from bigint to number\n\n const txnObj = {\n groupIndex: index,\n amount,\n from,\n to,\n type,\n txn\n }\n\n acc.push(txnObj)\n }\n\n return acc\n }, [])\n\n return groupBySender(decodedGroup)\n }\n\n async sendRawTransactions(transactions: Uint8Array[], waitRoundsToConfirm?: number) {\n const sentTransaction = (await this.algodClient\n .sendRawTransaction(transactions)\n .do()) as RawTxnResponse\n\n if (!sentTransaction) {\n throw new Error('Transaction failed.')\n }\n\n const decodedTxn = this.algosdk.decodeSignedTransaction(transactions[0])\n const waitRounds = waitRoundsToConfirm || decodedTxn.txn.lastRound - decodedTxn.txn.firstRound\n\n const confirmedTransaction = await this.waitForConfirmation(sentTransaction.txId, waitRounds)\n\n return {\n id: sentTransaction.txId,\n ...confirmedTransaction\n }\n }\n\n async keepWCAliveStart() {\n // Playing an audio file prevents Wallet Connect's\n // web socket connection from being dropped when\n // iOS goes into background mode\n\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.src = audio\n this.keepWCAlive.autoplay = true\n this.keepWCAlive.volume = 0\n this.keepWCAlive.loop = true\n await this.keepWCAlive.play()\n }\n\n keepWCAliveStop() {\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.pause()\n }\n}\n\nexport default BaseClient\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.g&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=i[s];\"string\"!=typeof p&&\"number\"!=typeof p&&(p=\"\"+p),0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.g&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,g:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,g:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?g(c):O(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React.startTransition !== undefined) {\n didWarnOld18Alpha = true;\n\n error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n }\n }\n } // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n\n\n var value = getSnapshot();\n\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n\n if (!objectIs(value, cachedValue)) {\n error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n didWarnUncachedGetSnapshot = true;\n }\n }\n } // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n\n\n var _useState = useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n\n\n useLayoutEffect(function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n\n var handleStoreChange = function () {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\nvar shim = require('use-sync-external-store/shim');\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n // Use this to track the rendered snapshot.\n var instRef = useRef(null);\n var inst;\n\n if (instRef.current === null) {\n inst = {\n hasValue: false,\n value: null\n };\n instRef.current = inst;\n } else {\n inst = instRef.current;\n }\n\n var _useMemo = useMemo(function () {\n // Track the memoized state using closure variables that are local to this\n // memoized instance of a getSnapshot function. Intentionally not using a\n // useRef hook, because that state would be shared across all concurrent\n // copies of the hook/component.\n var hasMemo = false;\n var memoizedSnapshot;\n var memoizedSelection;\n\n var memoizedSelector = function (nextSnapshot) {\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n hasMemo = true;\n memoizedSnapshot = nextSnapshot;\n\n var _nextSelection = selector(nextSnapshot);\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (inst.hasValue) {\n var currentSelection = inst.value;\n\n if (isEqual(currentSelection, _nextSelection)) {\n memoizedSelection = currentSelection;\n return currentSelection;\n }\n }\n }\n\n memoizedSelection = _nextSelection;\n return _nextSelection;\n } // We may be able to reuse the previous invocation's result.\n\n\n // We may be able to reuse the previous invocation's result.\n var prevSnapshot = memoizedSnapshot;\n var prevSelection = memoizedSelection;\n\n if (objectIs(prevSnapshot, nextSnapshot)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection;\n } // The snapshot has changed, so we need to compute a new selection.\n\n\n // The snapshot has changed, so we need to compute a new selection.\n var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n return prevSelection;\n }\n\n memoizedSnapshot = nextSnapshot;\n memoizedSelection = nextSelection;\n return nextSelection;\n }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n // Assigning this to a constant so that Flow knows it can't change.\n var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n var getSnapshotWithSelector = function () {\n return memoizedSelector(getSnapshot());\n };\n\n var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n };\n return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n getSelection = _useMemo[0],\n getServerSelection = _useMemo[1];\n\n var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n useEffect(function () {\n inst.hasValue = true;\n inst.value = value;\n }, [value]);\n useDebugValue(value);\n return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api)\n return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst oldImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst newImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persistImpl = (config, baseOptions) => {\n if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\"\n );\n }\n return oldImpl(config, baseOptions);\n }\n return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { useState, useEffect } from 'react'\nimport { immer } from 'zustand/middleware/immer'\nimport { create } from 'zustand'\nimport { devtools, persist } from 'zustand/middleware'\nimport type { Account } from '../../types'\nimport { PROVIDER_ID } from '../../constants'\n\nexport const walletStoreSelector = (state: WalletStore) => ({\n accounts: state.accounts,\n activeAccount: state.activeAccount,\n setActiveAccount: state.setActiveAccount,\n clearActiveAccount: state.clearActiveAccount,\n addAccounts: state.addAccounts,\n removeAccounts: state.removeAccounts\n})\n\nexport type WalletStore = {\n accounts: Account[]\n activeAccount: Account | null | undefined\n setActiveAccount: (account: Account) => void\n clearActiveAccount: (id: PROVIDER_ID) => void\n addAccounts: (accounts: Account[]) => void\n removeAccounts: (providerId: PROVIDER_ID) => void\n}\n\nconst emptyState: WalletStore = {\n accounts: [],\n activeAccount: undefined,\n setActiveAccount: () => {\n return\n },\n clearActiveAccount: () => {\n return\n },\n addAccounts: () => {\n return\n },\n removeAccounts: () => {\n return\n }\n}\n\nexport const useWalletStore = create<WalletStore>()(\n immer(\n persist(\n devtools((set, _get) => ({\n accounts: [],\n activeAccount: null,\n setActiveAccount: (account: Account) => {\n set((state) => {\n state.activeAccount = account\n })\n },\n clearActiveAccount: (id: PROVIDER_ID) => {\n set((state) => {\n if (id === state.activeAccount?.providerId) state.activeAccount = null\n })\n },\n addAccounts: (accounts: Account[]) => {\n set((state) => {\n const uniqueAccounts = [...state.accounts, ...accounts].reduce<Account[]>(\n (uniqueAccounts, o) => {\n if (\n !uniqueAccounts.some(\n (obj) => obj.providerId === o.providerId && obj.address === o.address\n )\n ) {\n uniqueAccounts.push(o)\n }\n return uniqueAccounts\n },\n []\n )\n\n // Remove duplicates that occur when a user reconnects Pera wallet\n state.accounts = uniqueAccounts\n })\n },\n removeAccounts: (providerId: PROVIDER_ID) => {\n set((state) => {\n state.accounts = state.accounts.filter((account) => account.providerId !== providerId)\n })\n }\n })),\n {\n name: 'txnlab-use-wallet', // key in local storage\n version: 1 // increment to deprecate stored data\n }\n )\n )\n)\n\n// This a fix to ensure zustand never hydrates the store before React hydrates the page\n// otherwise it causes a mismatch between SSR and client render\n// see: https://github.com/pmndrs/zustand/issues/1145\nexport const useHydratedWalletStore = ((selector, compare) => {\n const store = useWalletStore(selector, compare)\n const [hydrated, setHydrated] = useState(false)\n\n useEffect(() => setHydrated(true), [])\n\n return hydrated ? store : selector(emptyState)\n}) as typeof useWalletStore\n","import { create } from 'zustand'\n\ntype DebugStore = {\n debug: boolean\n setDebug: (debug: boolean) => void\n}\n\nexport const useDebugStore = create<DebugStore>((set) => ({\n debug: false,\n setDebug: (debug: boolean) => set({ debug })\n}))\n","import { createContext } from 'react'\nimport { SupportedProviders } from '../../types/providers'\n\nconst ClientContext = createContext<SupportedProviders | null>(null)\n\nexport { ClientContext }\n\nexport default ClientContext.Provider\n","import { ProviderConfig, ProviderConfigMapping } from '../types'\nimport { useDebugStore } from '../store/index'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const debugLog = (...args: any[]) => {\n const { debug } = useDebugStore.getState()\n\n if (debug) {\n console.log('%c[USE-WALLET]', 'color: #FF602E; font-weight: bold;', ...(args as unknown[]))\n }\n}\n\nexport const getProviderList = <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>\n) => {\n return providers\n .map((provider) => {\n if (typeof provider === 'string') {\n return provider\n }\n\n return provider.id\n })\n .map((id) => id.toUpperCase())\n .join(', ')\n}\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4='\n","/**\n * Documentation:\n * https://github.com/perawallet/connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { PeraWalletConnect } from '@perawallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n PeraTransaction,\n PeraWalletClientConstructor,\n PeraWalletConnectOptions\n} from './types'\n\nclass PeraWalletClient extends BaseClient {\n #client: PeraWalletConnect\n clientOptions?: PeraWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: PeraWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = PeraWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.PERA,\n name: 'Pera',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.PERA>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initializing...`)\n\n let PeraWalletConnect\n if (clientStatic) {\n PeraWalletConnect = clientStatic\n } else if (getDynamicClient) {\n PeraWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Pera Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const peraWallet = new PeraWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new PeraWalletClient({\n metadata: PeraWalletClient.metadata,\n client: peraWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${PeraWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n\n return {\n ...PeraWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...PeraWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<PeraTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default PeraWalletClient\n","export const ICON =\n 'data:image/png;base64,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'\n","/**\n * Documentation:\n * https://github.com/RDinitiativ/daffiwallet_connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DaffiWalletConnect } from '@daffiwallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DaffiTransaction,\n DaffiWalletClientConstructor,\n DaffiWalletConnectOptions\n} from './types'\n\nclass DaffiWalletClient extends BaseClient {\n #client: DaffiWalletConnect\n clientOptions?: DaffiWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DaffiWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DaffiWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DAFFI,\n name: 'Daffi',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DAFFI>) {\n try {\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initializing...`)\n\n let DaffiWalletConnect\n if (clientStatic) {\n DaffiWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DaffiWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Daffi Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const daffiWallet = new DaffiWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DaffiWalletClient({\n metadata: DaffiWalletClient.metadata,\n client: daffiWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${DaffiWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DaffiTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DaffiWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogIDxjaXJjbGUgZmlsbD0iIzI0NUVDNiIgY3g9IjE2IiBjeT0iMTYiIHI9IjE2Ii8+CiAgPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxMi40LDIxLjIgMTQuNSwyMS4yIDE1LjMsMTkuOSAxNi42LDE3LjYgMTguMSwxNC45IDE5LjksMTEuNyAyMC4yLDExLjIgMjAuMywxMS43IDIyLjksMjEuMiAyNSwyMS4yIDIxLjUsOC45IDIxLjQsOC42IDE5LjUsOC42IDE5LjUsOC43IDE3LjgsMTEuOCAxNiwxNC45IDE1LjgsMTQuMSAxNS4yLDExLjcgMTUuMSwxMS41IDE0LjQsOC45IDE0LjMsOC42IDEyLjQsOC42IDEyLjQsOC43IDEwLjcsMTEuOCA4LjksMTUgNy4xLDE4IDUuMywyMS4yIDcuNCwyMS4yIDkuMiwxOCAxMSwxNC44IDEyLjgsMTEuNiAxMy4xLDExLjEgMTMuMiwxMS42IDEzLjcsMTMuNyAxNC40LDE2LjMgMTQuNiwxNy4yIDE0LjIsMTgiLz4KPC9zdmc+'\n","/**\n * Documentation:\n * https://github.com/randlabs/myalgo-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type MyAlgoConnect from '@randlabs/myalgo-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MyAlgoConnectOptions, MyAlgoWalletClientConstructor } from './types'\n\nclass MyAlgoWalletClient extends BaseClient {\n #client: MyAlgoConnect\n clientOptions?: MyAlgoConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: MyAlgoWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = MyAlgoWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MYALGO,\n name: 'MyAlgo',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MYALGO>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initializing...`)\n\n let MyAlgoConnect\n if (clientStatic) {\n MyAlgoConnect = clientStatic\n } else if (getDynamicClient) {\n MyAlgoConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'MyAlgo Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const myAlgo = new MyAlgoConnect({\n ...(clientOptions ? clientOptions : { disableLedgerNano: false })\n })\n\n const provider = new MyAlgoWalletClient({\n metadata: MyAlgoWalletClient.metadata,\n client: myAlgo,\n clientOptions,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect() {\n const accounts = await this.#client.connect()\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${MyAlgoWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((account) => ({\n ...account,\n providerId: MyAlgoWalletClient.metadata.id\n }))\n\n return {\n ...MyAlgoWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the transactions to be signed\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, add it to the transactions to be signed,\n if (indexesToSign && indexesToSign.length && indexesToSign?.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // Otherwise, if the transaction is unsigned and is to be sent from a connected account,\n // add it to the transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()?.blob\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default MyAlgoWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEuNjgyMDksMCwwLDEuNjgyMDksMjI2LjM2OCwyMTIuODE4KSI+CiAgICAgICAgPHBhdGggZD0iTTMyNy4wNDksMjgwLjE5MkwxNjkuNTI0LDEzTDEyLDI4MC4xOTJMMTY5LjUyNCwxODkuMDg0TDMyNy4wNDksMjgwLjE5MloiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS42ODIwOSwwLDAsMS42ODIwOSwyMjYuMzY4LDIxMi44MTgpIj4KICAgICAgICA8cGF0aCBkPSJNMjk5LjU0NiwzMDdMMTY5LjUyNSwyMzguNDczTDM5LjUwNCwzMDdMMTY5LjUyNSwyNjQuNjdMMjk5LjU0NiwzMDdaIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg=='\n","/**\n * Helpful resources:\n * https://github.com/blockshake-io/defly-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DeflyWalletConnect } from '@blockshake/defly-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DeflyTransaction,\n DeflyWalletClientConstructor,\n DeflyWalletConnectOptions\n} from './types'\n\nclass DeflyWalletClient extends BaseClient {\n #client: DeflyWalletConnect\n clientOptions?: DeflyWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DeflyWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DeflyWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DEFLY,\n name: 'Defly',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DEFLY>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initializing...`)\n\n let DeflyWalletConnect\n if (clientStatic) {\n DeflyWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DeflyWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Defly Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const deflyWallet = new DeflyWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DeflyWalletClient({\n metadata: DeflyWalletClient.metadata,\n client: deflyWallet,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts || accounts.length === 0) {\n throw new Error(`No accounts found for ${DeflyWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n return null\n }\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DeflyTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DeflyWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjUuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgMzAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNDM0MjYxNjcxNDAxMDY1ODIyNzAwMDAwMDIxMzA3Njg5MDYwNzMxMTM0ODRfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEwMjUxOTMxNjAxNTI3NjU4MTY0MDAwMDAxNjI3NDExMjM4MzE3NTY0MTc1OV8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEzODU2MzM4MjQ2MjA4NjAyMDM1MDAwMDAxNDg3ODQ5MDI3MDc4MjA3MTIwN18pO30KCS5zdDR7bWFzazp1cmwoI21hc2swXzE2NjFfMjk1XzAwMDAwMDg4MTMyMjUxNTk3NDQxNTczNDkwMDAwMDExNjkzNjEyMDE4NTA2NjgxNDgxXyk7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMDAwMDAxMDYxMjA2MzI0NjE3OTI4NzExNjAwMDAwMDc0MzM5MTMwMzgzMzc3NjY1NzZfKTt9Cjwvc3R5bGU+CjxnPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNDYuNjAzIiB5MT0iOS4yMjEyIiB4Mj0iMTc0LjE1OCIgeTI9IjMwOC41NDI2IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xCgkJTDI3NC43LDkzLjl6Ii8+CgkKCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjkuMzUxNiIgeTE9Ii0xOS4xNTczIiB4Mj0iNTYuOTA2NiIgeTI9IjI4MC4xNjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1Xyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCWw2OS4yLTQ1LjFWMjNMMjUuMyw5My45TDQzLDE1MC4xbC0xNy43LDU2LjJMMTMzLjcsMjc3di0zOS42bC02OS40LTQ1LjFMNzIuNSwxNjYuNHoiLz4KCTxkZWZzPgoJCTxmaWx0ZXIgaWQ9IkFkb2JlX09wYWNpdHlNYXNrRmlsdGVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ij4KCQkJPGZlQ29sb3JNYXRyaXggIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDAiLz4KCQk8L2ZpbHRlcj4KCTwvZGVmcz4KCQoJCTxtYXNrIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0IiBpZD0ibWFzazBfMTY2MV8yOTVfMDAwMDAwODgxMzIyNTE1OTc0NDE1NzM0OTAwMDAwMTE2OTM2MTIwMTg1MDY2ODE0ODFfIj4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjQ2LjYwMzgiIHkxPSI5LjIyMTQiIHgyPSIxNzQuMTU4OCIgeTI9IjMwOC41NDI4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjQ2RjkiLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0JCRkJFMCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTsiIGQ9IgoJCQlNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xTDI3NC43LDkzLjl6Ii8+CgkJCgkJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMTk4MTE3MDc2MjE0NzI4MTQyNzAwMDAwMTA4Mjk2NTkzODM4NTEyMDI0OTFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyOS4zNTIxIiB5MT0iLTE5LjE1NzEiIHgyPSI1Ni45MDcxIiB5Mj0iMjgwLjE2NDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzMDIpIj4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQkJGQkUwIi8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE5ODExNzA3NjIxNDcyODE0MjcwMDAwMDEwODI5NjU5MzgzODUxMjAyNDkxXyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCQlsNjkuMi00NS4xVjIzTDI1LjMsOTMuOUw0MywxNTAuMWwtMTcuNyw1Ni4yTDEzMy43LDI3N3YtMzkuNmwtNjkuNC00NS4xTDcyLjUsMTY2LjR6Ii8+Cgk8L21hc2s+Cgk8ZyBjbGFzcz0ic3Q0Ij4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDEwOTAxOTkxODU1Nzc3MzA1MzQyMDAwMDAxNzYwMjQwNTkwODA2NzEyMDMwMF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDYuNDY2MiIgeTE9IjIyOC43NTU0IiB4Mj0iMTcxLjg2MzgiIHkyPSIxMzUuMTAzOSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDMwMikiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiM4OTUyRkY7c3RvcC1vcGFjaXR5OjAuODciLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0RBQkRGRjtzdG9wLW9wYWNpdHk6MCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJCgkJCTxyZWN0IHg9IjI1LjQiIHk9IjIzIiBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTA5MDE5OTE4NTU3NzczMDUzNDIwMDAwMDE3NjAyNDA1OTA4MDY3MTIwMzAwXyk7IiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg=='\n","/**\n * Documentation:\n * https://docs.exodus.com/api-reference/algorand-provider-api/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Exodus, ExodusClientConstructor, ExodusOptions, WindowExtended } from './types'\n\nclass ExodusClient extends BaseClient {\n #client: Exodus\n clientOptions: ExodusOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: ExodusClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = ExodusClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.EXODUS,\n name: 'Exodus',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.EXODUS>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).exodus === undefined) {\n throw new Error('Exodus is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const exodus = (window as WindowExtended).exodus.algorand\n\n const provider = new ExodusClient({\n metadata: ExodusClient.metadata,\n client: exodus,\n algosdk: algosdk,\n algodClient: algodClient,\n clientOptions: clientOptions || { onlyIfTrusted: false },\n network\n })\n\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${ExodusClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.exodus.com/web3-wallet'\n )\n return null\n }\n }\n\n async connect() {\n const { address } = await this.#client.connect({\n onlyIfTrusted: this.clientOptions.onlyIfTrusted\n })\n\n if (!address) {\n throw new Error(`No accounts found for ${ExodusClient.metadata.id}`)\n }\n\n const accounts = [\n {\n name: `Exodus 1`,\n address,\n providerId: ExodusClient.metadata.id\n }\n ]\n\n return {\n ...ExodusClient.metadata,\n accounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).exodus === undefined ||\n (window as WindowExtended).exodus.algorand.isConnected !== true\n ) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the unsigned transactions.\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified\n // add it to the arrays of transactions to be signed.\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // If the transaction isn't already signed and is to be sent from a connected account,\n // add it to the arrays of transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default ExodusClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg=='\n\nexport const DEFAULT_NETWORK = 'MainNet'\n","/**\n * Documentation:\n * https://github.com/PureStake/algosigner/blob/develop/docs/dApp-integration.md\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { useWalletStore } from '../../store'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type {\n AlgoSigner,\n AlgoSignerClientConstructor,\n AlgoSignerTransaction,\n WindowExtended\n} from './types'\n\nclass AlgoSignerClient extends BaseClient {\n #client: AlgoSigner\n network: Network\n walletStore: typeof useWalletStore\n\n constructor({ metadata, client, algosdk, algodClient, network }: AlgoSignerClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.network = network\n this.walletStore = useWalletStore\n }\n\n static metadata = {\n id: PROVIDER_ID.ALGOSIGNER,\n name: 'AlgoSigner',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.ALGOSIGNER>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).algorand === undefined) {\n throw new Error('AlgoSigner is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const algosigner = (window as WindowExtended).algorand\n\n const provider = new AlgoSignerClient({\n metadata: AlgoSignerClient.metadata,\n client: algosigner,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${AlgoSignerClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.purestake.com/technology/algosigner'\n )\n return null\n }\n }\n\n async connect() {\n const { accounts } = await this.#client.enable({ genesisID: this.getGenesisID() })\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${AlgoSignerClient.metadata.id}`)\n }\n\n const mappedAccounts = await Promise.all(\n accounts.map(async (address, index) => {\n // check to see if this is a rekeyed account\n const { 'auth-addr': authAddr } = await this.getAccountInfo(address)\n\n return {\n name: `AlgoSigner ${index + 1}`,\n address,\n providerId: AlgoSignerClient.metadata.id,\n ...(authAddr && { authAddr })\n }\n })\n )\n\n // sort the accounts in the order they were returned by AlgoSigner\n mappedAccounts.sort((a, b) => accounts.indexOf(a.address) - accounts.indexOf(b.address))\n\n return {\n ...AlgoSignerClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (window === undefined || (window as WindowExtended).algorand === undefined) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<AlgoSignerTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const sender = this.algosdk.encodeAddress(isSigned ? txn.txn.snd : txn.snd)\n const authAddress = this.getAuthAddress(sender) // rekeyed-to account, or undefined\n\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else if (!isSigned && connectedAccounts.includes(sender)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else {\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n ),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTxns(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions\n // if `returnGroup` is true\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result[i]\n signedByUser && acc.push(new Uint8Array(Buffer.from(signedByUser, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n getGenesisID() {\n if (this.network === 'betanet') {\n return 'betanet-v1.0'\n }\n if (this.network === 'testnet') {\n return 'testnet-v1.0'\n }\n if (this.network === 'mainnet') {\n return 'mainnet-v1.0'\n }\n return this.network\n }\n\n getAuthAddress(address: string): string | undefined {\n const accounts = this.walletStore.getState().accounts\n const account = accounts.find(\n (acct) => acct.address === address && acct.providerId === this.metadata.id\n )\n\n return account?.authAddr\n }\n}\n\nexport default AlgoSignerClient\n","import { PublicNetwork } from 'src/types'\n\nexport const isPublicNetwork = (network: string): network is PublicNetwork => {\n return network === 'betanet' || network === 'testnet' || network === 'mainnet'\n}\n","import type { PublicNetwork } from 'src/types'\n\nexport const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg=='\n\nexport const ALGORAND_CHAINS: { [key in PublicNetwork]: string } = {\n mainnet: 'algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73k',\n testnet: 'algorand:SGO1GKSzyE7IEPItTxCByw9x8FmnrCDe',\n betanet: 'algorand:mFgazF-2uRS1tMiL9dsj01hJGySEmPN2'\n}\n","import { JsonRpcRequest } from './types'\n\nconst getPayloadId = (): number => {\n const date = Date.now() * Math.pow(10, 3)\n const extra = Math.floor(Math.random() * Math.pow(10, 3))\n return date + extra\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const formatJsonRpcRequest = <T = any>(method: string, params: T): JsonRpcRequest => {\n return {\n id: getPayloadId(),\n jsonrpc: '2.0',\n method,\n params\n }\n}\n","/**\n * Documentation:\n * https://docs.walletconnect.com/2.0/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { isPublicNetwork } from '../../utils/types'\nimport { ALGORAND_CHAINS, ICON } from './constants'\nimport { formatJsonRpcRequest } from './utils'\nimport type {\n WalletConnectModalSign,\n WalletConnectModalSignOptions,\n WalletConnectModalSignSession\n} from '@walletconnect/modal-sign-html'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type { WalletConnectClientConstructor, WalletConnectTransaction } from './types'\n\nclass WalletConnectClient extends BaseClient {\n #client: WalletConnectModalSign\n clientOptions?: WalletConnectModalSignOptions\n network: Network\n chain: string\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n }: WalletConnectClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.chain = chain\n this.metadata = WalletConnectClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.WALLETCONNECT,\n name: 'WalletConnect',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.WALLETCONNECT>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initializing...`)\n\n let Client\n if (clientStatic) {\n Client = clientStatic\n } else if (getDynamicClient) {\n Client = await getDynamicClient()\n } else {\n throw new Error(\n 'WalletConnect provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n if (!clientOptions) {\n throw new Error('WalletConnect provider missing required property: clientOptions')\n }\n\n if (!isPublicNetwork(network)) {\n throw new Error(\n `WalletConnect only supports Algorand mainnet, testnet, and betanet. \"${network}\" is not supported.`\n )\n }\n\n const chain = ALGORAND_CHAINS[network]\n\n // Initialize client\n const client = new Client({\n ...clientOptions,\n modalOptions: {\n explorerExcludedWalletIds: 'ALL',\n ...clientOptions.modalOptions\n }\n })\n\n // Initialize algod client\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n // Initialize provider client\n const provider = new WalletConnectClient({\n metadata: WalletConnectClient.metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n })\n\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (error) {\n console.error('Error initializing WalletConnect client', error)\n return null\n }\n }\n\n public async connect(): Promise<Wallet> {\n const requiredNamespaces = {\n algorand: {\n chains: [this.chain],\n methods: ['algo_signTxn'],\n events: []\n }\n }\n\n try {\n const session: WalletConnectModalSignSession = await this.#client.connect({\n requiredNamespaces\n })\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n } catch (error) {\n console.error('Error connecting to WalletConnect', error)\n throw error\n }\n }\n\n public async reconnect() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n return null\n }\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n }\n\n public async disconnect() {\n try {\n const session = await this.#getSession()\n\n await this.#client.disconnect({\n topic: session.topic,\n // replicates getSdkError('USER_DISCONNECTED') from @walletconnect/utils\n reason: {\n message: 'User disconnected.',\n code: 6000\n }\n })\n } catch (error) {\n console.error('Error disconnecting', error)\n }\n }\n\n public async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign: number[] = [],\n returnGroup = true\n ) {\n // Flatten transactions array if nested\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n const { txnsToSign, signedIndexes } = this.#composeTransactions(\n transactions,\n connectedAccounts,\n indexesToSign\n )\n\n const request = formatJsonRpcRequest('algo_signTxn', [txnsToSign])\n\n const session = await this.#getSession()\n\n const response = await this.#client.request<Array<string | null>>({\n chainId: this.chain,\n topic: session.topic,\n request\n })\n\n // Check if the result is the same length as the transactions\n const lengthsMatch = response.length === transactions.length\n\n // Join the signed transactions with the original group of transactions\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedTxn = lengthsMatch ? response[i] : response.shift()\n signedTxn && acc.push(new Uint8Array(Buffer.from(signedTxn, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n #composeTransactions(\n transactions: Uint8Array[],\n connectedAccounts: string[],\n indexesToSign: number[]\n ) {\n // Decode the transactions\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n // Track signed transactions\n const signedIndexes: number[] = []\n\n // Marshal the transactions into WalletConnect format\n const txnsToSign = decodedTxns.reduce<WalletConnectTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const senderAccount = !isSigned\n ? this.algosdk.encodeAddress(txn['snd'])\n : this.algosdk.encodeAddress(txn.txn['snd'])\n\n const shouldSign =\n indexesToSign.includes(i) || (!isSigned && connectedAccounts.includes(senderAccount))\n\n if (shouldSign) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64')\n : Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n return { txnsToSign, signedIndexes }\n }\n\n async #getSession() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n throw new Error('Session is not connected')\n }\n return session\n }\n\n #mapAccounts(accounts: string[]) {\n return accounts.map((accountStr, index) => ({\n name: `WalletConnect ${index + 1}`,\n address: accountStr.split(':').pop() as string,\n providerId: WalletConnectClient.metadata.id\n }))\n }\n}\n\nexport default WalletConnectClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+'\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Account, Wallet } from '../../types/wallet'\nimport type { InitWalletHandle, KMDWalletClientConstructor, ListWalletResponse } from './types'\n\nclass KMDWalletClient extends BaseClient {\n #client: _algosdk.Kmd\n #wallet: string\n #password: string\n walletId: string\n network: Network\n\n constructor({\n metadata,\n client,\n wallet,\n password,\n algosdk,\n algodClient,\n network\n }: KMDWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.#client = client\n this.#wallet = wallet\n this.#password = password\n this.walletId = ''\n this.network = network\n this.metadata = KMDWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.KMD,\n name: 'KMD',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.KMD>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initializing...`)\n\n const {\n token = 'a'.repeat(64),\n host = 'http://localhost',\n port = '4002',\n wallet = 'unencrypted-default-wallet',\n password = ''\n } = clientOptions || {}\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const kmdClient = new algosdk.Kmd(token, host, port)\n\n const provider = new KMDWalletClient({\n metadata: KMDWalletClient.metadata,\n password,\n wallet,\n client: kmdClient,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n // TODO: prompt for wallet and password?\n return {\n ...KMDWalletClient.metadata,\n accounts: await this.listAccounts(this.#wallet, this.requestPassword())\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(): Promise<Wallet | null> {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pw = prompt('KMD password')\n return pw ? pw : ''\n }\n\n async getWalletToken(walletId: string, password: string): Promise<string> {\n const handleResp: InitWalletHandle = await this.#client.initWalletHandle(walletId, password)\n return handleResp.wallet_handle_token\n }\n\n async releaseToken(token: string): Promise<void> {\n await this.#client.releaseWalletHandle(token)\n }\n\n async listWallets(): Promise<Record<string, string>> {\n const walletResponse = await this.#client.listWallets()\n const walletList: Array<ListWalletResponse> = walletResponse['wallets']\n const walletMap: Record<string, string> = {}\n for (const w of walletList) {\n walletMap[w.name] = w.id\n }\n return walletMap\n }\n\n async listAccounts(wallet: string, password: string): Promise<Array<Account>> {\n // Get a handle token\n const walletId = await this.getWalletId()\n const token = await this.getWalletToken(walletId, password)\n\n // Fetch accounts and format them as lib expects\n const listResponse = await this.#client.listKeys(token)\n const addresses: Array<string> = listResponse['addresses']\n const mappedAccounts = addresses.map((address: string, index: number) => {\n return {\n name: `KMDWallet ${index + 1}`,\n address,\n providerId: KMDWalletClient.metadata.id\n }\n })\n\n // Release handle token\n await this.releaseToken(token)\n\n return mappedAccounts\n }\n\n async getWalletId(): Promise<string> {\n // Use cached if available\n if (this.walletId !== '') return this.walletId\n\n const walletMap = await this.listWallets()\n if (!(this.#wallet in walletMap)) throw Error('No wallet named: ' + this.#wallet)\n this.walletId = walletMap[this.#wallet]\n\n return this.walletId\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n // Get a handle token\n const walletId = await this.getWalletId()\n const pw = this.requestPassword()\n const token = await this.getWalletToken(walletId, pw)\n\n const signedTxns: Array<Uint8Array> = []\n // Sign them with the client.\n const signingPromises: Promise<Uint8Array>[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else if (!connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))) {\n return\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n signingPromises.push(this.#client.signTransaction(token, pw, txn) as Promise<Uint8Array>)\n })\n\n const signingResults = await Promise.all(signingPromises)\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return formattedTxns\n }\n}\n\nexport default KMDWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { TransactionsArray } from '../../types/api'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MnemonicWalletClientConstructor } from './types'\n\nclass MnemonicWalletClient extends BaseClient {\n #client?: _algosdk.Account\n network: Network\n\n constructor({ metadata, algosdk, algodClient, network }: MnemonicWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.network = network\n this.metadata = MnemonicWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MNEMONIC,\n name: 'MNEMONIC',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MNEMONIC>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initializing...`)\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const provider = new MnemonicWalletClient({\n metadata: MnemonicWalletClient.metadata,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initialized`)\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async connect() {\n const password = this.requestPassword()\n\n if (!password) {\n this.#client = undefined\n throw new Error('Mnemonic passphrase is required')\n }\n\n this.#client = this.algosdk.mnemonicToSecretKey(password)\n\n return {\n ...MnemonicWalletClient.metadata,\n accounts: [\n {\n name: `MnemonicWallet 1`,\n address: this.#client.addr,\n providerId: MnemonicWalletClient.metadata.id\n }\n ]\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n this.#client = undefined\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pass = prompt('enter mnemonic passphrase, 25 words')\n return pass ? pass : ''\n }\n\n signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n if (!this.#client) {\n throw new Error('Client not connected')\n }\n\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n const signedTxns: Uint8Array[] = []\n // Sign them with the client.\n const signingResults: Uint8Array[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else if (!connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))) {\n return\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n const signedTxn = txn.signTxn(this.#client?.sk as Uint8Array)\n signingResults.push(signedTxn)\n })\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return Promise.resolve(formattedTxns)\n }\n\n signEncodedTransactions(_transactions: TransactionsArray): Promise<Uint8Array[]> {\n throw new Error('Method not implemented.')\n }\n}\n\nexport default MnemonicWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3Csvg fill='%23000000' width='800px' height='800px' viewBox='0 0 24 24' id='wallet' data-name='Flat Line' xmlns='http://www.w3.org/2000/svg' class='icon flat-line'%3E%3Cpath id='secondary' d='M16,12h5V8H5A2,2,0,0,1,3,6V19a1,1,0,0,0,1,1H20a1,1,0,0,0,1-1V16H16a1,1,0,0,1-1-1V13A1,1,0,0,1,16,12Z' style='fill: rgb(44, 169, 188); stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary' d='M19,4H5A2,2,0,0,0,3,6H3A2,2,0,0,0,5,8H21' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary-2' data-name='primary' d='M21,8V19a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V6A2,2,0,0,0,5,8Zm0,4H16a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1h5Z' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3C/svg%3E\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { AlgodClientOptions, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Metadata, Wallet } from '../../types/wallet'\nimport type { CustomProvider, CustomWalletClientConstructor } from './types'\n\nclass CustomWalletClient extends BaseClient {\n network: Network\n providerProxy: CustomProvider\n\n static metadata: Metadata = {\n id: PROVIDER_ID.CUSTOM,\n icon: ICON,\n isWalletConnect: false,\n name: 'Custom'\n }\n\n constructor({\n providerProxy,\n metadata,\n algosdk,\n algodClient,\n network\n }: CustomWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.providerProxy = providerProxy\n this.network = network\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.CUSTOM>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initializing...`)\n\n if (!clientOptions) {\n throw new Error(`Attempt to create custom wallet with no provider specified.`)\n }\n\n const algosdk: typeof _algosdk =\n algosdkStatic || (await Algod.init(algodOptions as AlgodClientOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions as AlgodClientOptions)\n\n try {\n return new CustomWalletClient({\n providerProxy: clientOptions.getProvider({\n algod: algodClient,\n algosdkStatic: algosdk,\n network\n }),\n metadata: {\n ...CustomWalletClient.metadata,\n name: clientOptions.name,\n icon: clientOptions.icon ?? CustomWalletClient.metadata.icon\n },\n algodClient,\n algosdk,\n network\n })\n } finally {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initialized`, '✅')\n }\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n return await this.providerProxy.connect(this.metadata)\n }\n\n async disconnect() {\n await this.providerProxy.disconnect()\n }\n\n async reconnect(): Promise<Wallet | null> {\n return await this.providerProxy.reconnect(this.metadata)\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n return await this.providerProxy.signTransactions(\n connectedAccounts,\n txnGroups,\n indexesToSign,\n returnGroup\n )\n }\n}\n\nexport default CustomWalletClient\n","import pera from './pera'\nimport daffi from './daffi'\nimport myalgo from './myalgo'\nimport defly from './defly'\nimport exodus from './exodus'\nimport algosigner from './algosigner'\nimport walletconnect from './walletconnect2'\nimport kmd from './kmd'\nimport mnemonic from './mnemonic'\nimport { CustomProvider } from './custom/types'\nimport custom from './custom'\n\nexport {\n pera,\n myalgo,\n defly,\n exodus,\n algosigner,\n walletconnect,\n kmd,\n mnemonic,\n custom,\n CustomProvider\n}\n\nexport default {\n [pera.metadata.id]: pera,\n [daffi.metadata.id]: daffi,\n [myalgo.metadata.id]: myalgo,\n [defly.metadata.id]: defly,\n [exodus.metadata.id]: exodus,\n [algosigner.metadata.id]: algosigner,\n [walletconnect.metadata.id]: walletconnect,\n [kmd.metadata.id]: kmd,\n [mnemonic.metadata.id]: mnemonic,\n [custom.metadata.id]: custom\n}\n","import type algosdk from 'algosdk'\nimport allClients from '../clients'\nimport {\n CommonInitParams,\n NodeConfig,\n ProviderConfig,\n ProviderConfigMapping,\n SupportedProviders\n} from '../types'\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n DEFAULT_NETWORK\n} from '../constants'\nimport { debugLog, getProviderList } from './debugLog'\n\nexport const initializeProviders = async <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>,\n nodeConfig?: NodeConfig,\n algosdkStatic?: typeof algosdk\n): Promise<SupportedProviders> => {\n if (typeof window === 'undefined') {\n debugLog('Window object is not available, skipping initialization')\n return {} as SupportedProviders\n }\n\n // Set all providers to null to preserve order\n const initializedProviders = providers.reduce((acc, provider) => {\n const providerId = typeof provider === 'string' ? provider : provider.id\n acc[providerId] = null\n return acc\n }, {} as SupportedProviders)\n\n const {\n network = DEFAULT_NETWORK,\n nodeServer = DEFAULT_NODE_BASEURL,\n nodePort = DEFAULT_NODE_PORT,\n nodeToken = DEFAULT_NODE_TOKEN\n } = nodeConfig || {}\n\n const initClient = async (provider: T | ProviderConfig<T>): Promise<void> => {\n const { id, ...providerConfig } = typeof provider === 'string' ? { id: provider } : provider\n\n const initParams: CommonInitParams = {\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic,\n ...providerConfig\n }\n\n const client = await allClients[id].init(initParams)\n initializedProviders[id] = client\n }\n\n debugLog('Initializing providers:', getProviderList(providers))\n\n const initPromises = providers.map((provider) => initClient(provider))\n await Promise.all(initPromises)\n\n return initializedProviders\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store/index'\n\nexport const clearAccounts = (id: PROVIDER_ID) => {\n const { clearActiveAccount, removeAccounts } = useWalletStore.getState()\n\n clearActiveAccount(id)\n removeAccounts(id)\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store'\n\nexport const getActiveProviders = () => {\n const accounts = useWalletStore.getState().accounts\n return [...new Set(accounts.map((acct) => acct.providerId))]\n}\n\nexport const isActiveProvider = (id: PROVIDER_ID) => {\n const activeProviders = getActiveProviders()\n return activeProviders.includes(id)\n}\n","import { clearAccounts } from './clearAccounts'\nimport { isActiveProvider } from './providers'\nimport type { SupportedProviders } from '../types/providers'\n\nexport const reconnectProviders = async (providers: SupportedProviders) => {\n try {\n const clients = Object.values(providers)\n\n for (const client of clients) {\n const id = client?.metadata.id\n\n // Only reconnect to active providers\n if (id && isActiveProvider(id)) {\n await client.reconnect(() => clearAccounts(id))\n }\n }\n } catch (e) {\n console.error(e)\n }\n}\n","export type NFDTransactionsArray = ['u' | 's', string][]\n\nexport function encodeNFDTransactionsArray(transactionsArray: NFDTransactionsArray) {\n return transactionsArray.map(([_type, txn]) => {\n return new Uint8Array(Buffer.from(txn, 'base64'))\n })\n}\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nvar shallow$1 = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow(objA, objB);\n};\n\nexport { shallow$1 as default, shallow };\n","import { useState, useMemo, useContext, useEffect } from 'react'\nimport type algosdk from 'algosdk'\nimport { getAlgosdk } from '../algod'\nimport { useHydratedWalletStore, walletStoreSelector } from '../store/index'\nimport { TransactionsArray, WalletClient, Provider } from '../types'\nimport { PROVIDER_ID } from '../constants'\nimport { ClientContext } from '../store/state/clientStore'\nimport allClients from '../clients'\nimport { clearAccounts } from '../utils/clearAccounts'\nimport shallow from 'zustand/shallow'\n\nexport default function useWallet() {\n const [providers, setProviders] = useState<Provider[] | null>(null)\n const clients = useContext(ClientContext)\n\n const {\n activeAccount,\n accounts: connectedAccounts,\n setActiveAccount: _setActiveAccount,\n addAccounts\n } = useHydratedWalletStore(walletStoreSelector, shallow)\n\n const getAccountsByProvider = (id: PROVIDER_ID) => {\n return connectedAccounts.filter((account) => account.providerId === id)\n }\n\n const connectedActiveAccounts = useMemo(\n () => connectedAccounts.filter((account) => account.providerId === activeAccount?.providerId),\n [connectedAccounts, activeAccount]\n )\n\n useEffect(() => {\n if (!clients) {\n setProviders(null)\n return\n }\n\n const supportedClients = Object.keys(clients) as PROVIDER_ID[]\n setProviders(\n supportedClients\n // Remove any clients that didn't initialise\n .filter((id) => !!clients?.[id])\n .map((id) => {\n return {\n ...allClients[id],\n // Override static details with any instance details\n ...clients[id],\n accounts: getAccountsByProvider(id),\n isActive: activeAccount?.providerId === id,\n isConnected: connectedAccounts.some((accounts) => accounts.providerId === id),\n connect: () => connect(id),\n disconnect: () => disconnect(id),\n reconnect: () => reconnect(id),\n setActiveProvider: () => setActive(id),\n setActiveAccount: (account: string) => selectActiveAccount(id, account)\n }\n })\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clients, connectedAccounts, connectedActiveAccounts, activeAccount])\n\n const getClient = (id?: PROVIDER_ID): WalletClient => {\n if (!id) throw new Error('Provider ID is missing.')\n\n const walletClient = clients?.[id]\n\n if (!walletClient) throw new Error(`Client not found for ID: ${id}`)\n\n return walletClient\n }\n\n const status = useMemo(() => {\n if (activeAccount === undefined) {\n return 'initializing'\n }\n\n if (activeAccount === null && connectedAccounts.length) {\n return 'connected'\n }\n\n if (activeAccount === null && !connectedAccounts.length) {\n return 'disconnected'\n }\n\n if (activeAccount && activeAccount.address) {\n return 'active'\n }\n\n return 'error'\n }, [activeAccount, connectedAccounts.length])\n\n const isActive = useMemo(() => {\n return status === 'active'\n }, [status])\n\n const isReady = useMemo(() => {\n return status !== 'initializing'\n }, [status])\n\n const selectActiveAccount = (providerId: PROVIDER_ID, address: string) => {\n try {\n const account = connectedActiveAccounts.find(\n (acct) => acct.address === address && acct.providerId === providerId\n )\n\n if (!account) {\n throw new Error(`No accounts with address ${address} found.`)\n }\n\n _setActiveAccount(account)\n } catch (e) {\n console.error(e)\n }\n }\n\n const connect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.connect(() => clearAccounts(id))\n\n if (!walletInfo || !walletInfo.accounts.length) {\n throw new Error('Failed to connect ' + id)\n }\n\n _setActiveAccount(walletInfo.accounts[0])\n addAccounts(walletInfo.accounts)\n } catch (e) {\n console.error(e)\n }\n }\n\n const reconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.reconnect(() => clearAccounts(id))\n\n if (walletInfo && walletInfo.accounts.length) {\n addAccounts(walletInfo.accounts)\n }\n } catch (e) {\n console.error(e)\n await disconnect(id)\n }\n }\n\n const disconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n\n await walletClient?.disconnect()\n } catch (e) {\n console.error(e)\n } finally {\n clearAccounts(id)\n }\n }\n\n const setActive = (id: PROVIDER_ID) => {\n try {\n const accounts = getAccountsByProvider(id)\n _setActiveAccount(accounts[0])\n } catch (e) {\n console.error(e)\n }\n }\n\n const signTransactions = async (\n transactions: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n if (!walletClient || !activeAccount?.address) {\n throw new Error('No wallet found.')\n }\n\n const signedTransactions = await walletClient.signTransactions(\n connectedActiveAccounts.map((acct) => acct.address),\n transactions,\n indexesToSign,\n returnGroup\n )\n\n return signedTransactions\n }\n\n const sendTransactions = async (transactions: Uint8Array[], waitRoundsToConfirm?: number) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n const result = await walletClient?.sendRawTransactions(transactions, waitRoundsToConfirm)\n\n return result\n }\n\n const signer: algosdk.TransactionSigner = async (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ) => {\n const algosdk = await getAlgosdk()\n const txnBlobs: Array<Uint8Array> = txnGroup.map(algosdk.encodeUnsignedTransaction)\n\n return await Promise.resolve(signTransactions(txnBlobs, indexesToSign, false))\n }\n\n const getAccountInfo = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n const accountInfo = await walletClient?.getAccountInfo(activeAccount.address)\n\n return accountInfo\n }\n\n const getAddress = () => {\n return activeAccount?.address\n }\n\n const getAssets = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n return await walletClient?.getAssets(activeAccount.address)\n }\n\n const groupTransactionsBySender = (transactions: TransactionsArray) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n return walletClient?.groupTransactionsBySender(transactions)\n }\n\n return {\n clients,\n providers,\n connectedAccounts,\n connectedActiveAccounts,\n activeAccount,\n activeAddress: activeAccount?.address,\n status,\n isActive,\n isReady,\n signer,\n signTransactions,\n sendTransactions,\n getAddress,\n groupTransactionsBySender,\n getAccountInfo,\n getAssets\n }\n}\n","import { useState, useEffect } from 'react'\nimport { initializeProviders, reconnectProviders } from '../utils'\nimport { useDebugStore } from '../store'\nimport type algosdk from 'algosdk'\nimport type { NodeConfig, ProvidersArray, SupportedProviders } from '../types/providers'\n\ninterface InitializeProvidersOptions {\n providers: ProvidersArray\n nodeConfig?: NodeConfig\n algosdkStatic?: typeof algosdk\n debug?: boolean\n}\n\nexport default function useInitializeProviders({\n providers,\n nodeConfig,\n algosdkStatic,\n debug = false\n}: InitializeProvidersOptions) {\n // Enable debug mode\n const { setDebug } = useDebugStore()\n useEffect(() => setDebug(debug), [debug, setDebug])\n\n // Initialize providers\n const [walletProviders, setWalletProviders] = useState<SupportedProviders | null>(null)\n\n useEffect(() => {\n async function initializeAndConnect() {\n try {\n // Initialize with provided configuration\n const initializedProviders = await initializeProviders(providers, nodeConfig, algosdkStatic)\n\n setWalletProviders(initializedProviders)\n\n // Reconnect the session when the user returns to the app\n await reconnectProviders(initializedProviders)\n } catch (error) {\n console.error('Error initializing wallet providers:', error)\n }\n }\n\n void initializeAndConnect()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return walletProviders\n}\n"],"names":["PROVIDER_ID","produce","require$$0","require$$1","useDebugValue","useState","useEffect","createContext","ICON","pera","daffi","myalgo","defly","exodus","algosigner","walletconnect","kmd","mnemonic","custom","useContext","shallow","useMemo"],"mappings":"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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAA+tO,IAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,QAAQ,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAA6D,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,sHAAsH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mHAAmH,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,2EAA2E,CAAC,EAAE,CAAC,sCAAsC,CAAC,EAAE,CAAC,0DAA0D,CAAC,EAAE,CAAC,0DAA0D,CAAC,EAAE,CAAC,4CAA4C,CAAC,EAAE,CAAC,qEAAqE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,4CAA4C,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,qCAAqC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,kBAAkB,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,EAAE,CAAC,2EAA2E,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,qJAAqJ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,kCAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,uFAAuF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAI,IAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAM,WAAW,EAAE,OAAO,OAAO,EAAE,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,OAAM,WAAW,EAAE,OAAO,OAAO,EAAE,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;;ACEtljB,MAAM,SAAS,GAAG,CAAC,WAAW,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK;AACxD,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK;AAC/C,IAAI,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,UAAU,GAAGC,EAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AACjF,IAAI,OAAO,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AACzC,GAAG,CAAC;AACJ,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC;AACF,MAAM,KAAK,GAAG,SAAS;;ACTvB,MAAM,eAAe,GAAG,CAAC,WAAW,KAAK;AACzC,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,MAAM,SAAS,mBAAmB,IAAI,GAAG,EAAE,CAAC;AAC9C,EAAE,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AACzC,IAAI,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;AAC/E,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AACtC,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC;AAClC,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC5H,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AACtE,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC;AAC/B,EAAE,MAAM,SAAS,GAAG,CAAC,QAAQ,KAAK;AAClC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,IAAI,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,GAAG,CAAC;AACJ,EAAE,MAAM,OAAO,GAAG,MAAM;AACxB,IAAI,IAAI,CAAC,SAAe,GAAG,SAAe,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,YAAY,EAAE;AAC5E,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,wMAAwM;AAChN,OAAO,CAAC;AACR,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;AACtB,GAAG,CAAC;AACJ,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACzD,EAAE,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC/C,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,WAAW,KAAK,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBpF,IAAI,CAAC,CAAC,UAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;CACnc,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,OAAO,MAAM,EAAE,WAAW,GAAG,OAAO,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,uCAA4B,CAAA,oBAAA,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;ACC3U;AACA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC3C,GAAE,CAAC,WAAW;AAGd;AACA;AACA,CAAA;GACE,OAAO,8BAA8B,KAAK,WAAW;GACrD,OAAO,8BAA8B,CAAC,2BAA2B;AACnE,KAAI,UAAU;GACZ;GACA,8BAA8B,CAAC,2BAA2B,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;EACzE;AACD,WAAU,IAAI,KAAK,GAAG,UAAgB,CAAC;AACvC;AACA,CAAA,IAAI,oBAAoB,GAAG,KAAK,CAAC,kDAAkD,CAAC;AACpF;CACA,SAAS,KAAK,CAAC,MAAM,EAAE;GACrB;KACE;AACJ,OAAM,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;SACjH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC;AACP;OACM,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;MACrC;IACF;EACF;AACD;AACA,CAAA,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;AAC3C;AACA;GACE;AACF,KAAI,IAAI,sBAAsB,GAAG,oBAAoB,CAAC,sBAAsB,CAAC;AAC7E,KAAI,IAAI,KAAK,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,CAAC;AAC1D;AACA,KAAI,IAAI,KAAK,KAAK,EAAE,EAAE;OAChB,MAAM,IAAI,IAAI,CAAC;OACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;MAC7B;AACL;AACA;KACI,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;AAClD,OAAM,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,MAAK,CAAC,CAAC;AACP;KACI,cAAc,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;AACjD;AACA;AACA;AACA,KAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACxE;EACF;AACD;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;GAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACnE;EACF;AACD;AACA,CAAA,IAAI,QAAQ,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;AAChE;AACA;AACA;AACA,CAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ;AAC7B,KAAI,SAAS,GAAG,KAAK,CAAC,SAAS;AAC/B,KAAI,eAAe,GAAG,KAAK,CAAC,eAAe;AAC3C,KAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;CACxC,IAAI,iBAAiB,GAAG,KAAK,CAAC;CAC9B,IAAI,0BAA0B,GAAG,KAAK,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,oBAAoB,CAAC,SAAS,EAAE,WAAW;AACpD;AACA;AACA;AACA,CAAA,iBAAiB,EAAE;GACjB;KACE,IAAI,CAAC,iBAAiB,EAAE;AAC5B,OAAM,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE;SACvC,iBAAiB,GAAG,IAAI,CAAC;AACjC;SACQ,KAAK,CAAC,gEAAgE,GAAG,6CAA6C,GAAG,gEAAgE,GAAG,yBAAyB,CAAC,CAAC;QACxN;MACF;IACF;AACH;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;AAC5B;GACE;KACE,IAAI,CAAC,0BAA0B,EAAE;AACrC,OAAM,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;AACtC;OACM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;AACzC,SAAQ,KAAK,CAAC,sEAAsE,CAAC,CAAC;AACtF;SACQ,0BAA0B,GAAG,IAAI,CAAC;QACnC;MACF;IACF;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,SAAS,GAAG,QAAQ,CAAC;AAC3B,KAAI,IAAI,EAAE;OACJ,KAAK,EAAE,KAAK;OACZ,WAAW,EAAE,WAAW;MACzB;AACL,IAAG,CAAC;AACJ,OAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;AAC9B,OAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACjC;AACA;AACA;AACA;GACE,eAAe,CAAC,YAAY;AAC9B,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,KAAI,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACnC;AACA;AACA;AACA;AACA,KAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;AACtC;AACA,OAAM,WAAW,CAAC;SACV,IAAI,EAAE,IAAI;AAClB,QAAO,CAAC,CAAC;MACJ;IACF,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;GACpC,SAAS,CAAC,YAAY;AACxB;AACA;AACA,KAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;AACtC;AACA,OAAM,WAAW,CAAC;SACV,IAAI,EAAE,IAAI;AAClB,QAAO,CAAC,CAAC;MACJ;AACL;KACI,IAAI,iBAAiB,GAAG,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;AACxC;AACA,SAAQ,WAAW,CAAC;WACV,IAAI,EAAE,IAAI;AACpB,UAAS,CAAC,CAAC;QACJ;AACP,MAAK,CAAC;AACN;AACA;AACA,KAAI,OAAO,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACxC,IAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAClB,GAAE,aAAa,CAAC,KAAK,CAAC,CAAC;GACrB,OAAO,KAAK,CAAC;EACd;AACD;CACA,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACtC,GAAE,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3C,GAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B;AACA,GAAE,IAAI;AACN,KAAI,IAAI,SAAS,GAAG,iBAAiB,EAAE,CAAC;KACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC,OAAO,KAAK,EAAE;KACd,OAAO,IAAI,CAAC;IACb;EACF;AACD;AACA,CAAA,SAAS,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE;AAC3E;AACA;AACA;AACA;GACE,OAAO,WAAW,EAAE,CAAC;EACtB;AACD;CACA,IAAI,SAAS,GAAG,CAAC,EAAE,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC;AACpJ;AACA,CAAA,IAAI,mBAAmB,GAAG,CAAC,SAAS,CAAC;AACrC;AACA,CAAA,IAAI,IAAI,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAC/E,CAAA,IAAI,sBAAsB,GAAG,KAAK,CAAC,oBAAoB,KAAK,SAAS,GAAG,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;AAC1G;AACA,CAA4B,oCAAA,CAAA,oBAAA,GAAG,sBAAsB,CAAC;AACtD;AACA,CAAA;GACE,OAAO,8BAA8B,KAAK,WAAW;GACrD,OAAO,8BAA8B,CAAC,0BAA0B;AAClE,KAAI,UAAU;GACZ;GACA,8BAA8B,CAAC,0BAA0B,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;EACxE;AACD;AACA,IAAG,GAAG,CAAC;AACP,EAAA;;;;;;;;;;AC7OA;AACA,EAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACzC,MAAA,CAAA,OAAA,GAAiBC,gDAAgE,CAAC;AACpF,GAAC,MAAM;IACL,MAAA,CAAA,OAAA,GAAiBC,6CAA6D,CAAC;AACjF,GAAA;;;;;;;;;;;;;;;;;;;;ACGa,IAAI,CAAC,CAAC,UAAgB,CAAC,CAAC,CAACA,WAAA,EAAuC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAC7Q,CAAA,2BAAA,CAAA,gCAAwC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvf,CAAA,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;ACAzD;AACA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC3C,GAAE,CAAC,WAAW;AAGd;AACA;AACA,CAAA;GACE,OAAO,8BAA8B,KAAK,WAAW;GACrD,OAAO,8BAA8B,CAAC,2BAA2B;AACnE,KAAI,UAAU;GACZ;GACA,8BAA8B,CAAC,2BAA2B,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;EACzE;AACD,WAAU,IAAI,KAAK,GAAG,UAAgB,CAAC;CACvC,IAAI,IAAI,GAAGA,WAAA,EAAuC,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;GAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACnE;EACF;AACD;AACA,CAAA,IAAI,QAAQ,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;AAChE;AACA,CAAA,IAAI,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACrD;AACA;AACA;AACA,CAAA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;AACzB,KAAI,SAAS,GAAG,KAAK,CAAC,SAAS;AAC/B,KAAI,OAAO,GAAG,KAAK,CAAC,OAAO;AAC3B,KAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;AACxC;CACA,SAAS,gCAAgC,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE;AACxG;AACA,GAAE,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;GAC3B,IAAI,IAAI,CAAC;AACX;AACA,GAAE,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE;AAChC,KAAI,IAAI,GAAG;OACL,QAAQ,EAAE,KAAK;OACf,KAAK,EAAE,IAAI;AACjB,MAAK,CAAC;AACN,KAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3B,IAAG,MAAM;AACT,KAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IACxB;AACH;AACA,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,YAAY;AACrC;AACA;AACA;AACA;AACA,KAAI,IAAI,OAAO,GAAG,KAAK,CAAC;KACpB,IAAI,gBAAgB,CAAC;KACrB,IAAI,iBAAiB,CAAC;AAC1B;AACA,KAAI,IAAI,gBAAgB,GAAG,UAAU,YAAY,EAAE;OAC7C,IAAI,CAAC,OAAO,EAAE;AACpB;SACQ,OAAO,GAAG,IAAI,CAAC;SACf,gBAAgB,GAAG,YAAY,CAAC;AACxC;AACA,SAAQ,IAAI,cAAc,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AACpD;AACA,SAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC;AACA;AACA;AACA,WAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,aAAY,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9C;AACA,aAAY,IAAI,OAAO,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE;eAC7C,iBAAiB,GAAG,gBAAgB,CAAC;eACrC,OAAO,gBAAgB,CAAC;cACzB;YACF;UACF;AACT;SACQ,iBAAiB,GAAG,cAAc,CAAC;SACnC,OAAO,cAAc,CAAC;QACvB;AACP;AACA;AACA;AACA,OAAM,IAAI,YAAY,GAAG,gBAAgB,CAAC;AAC1C,OAAM,IAAI,aAAa,GAAG,iBAAiB,CAAC;AAC5C;AACA,OAAM,IAAI,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;AAChD;SACQ,OAAO,aAAa,CAAC;QACtB;AACP;AACA;AACA;AACA,OAAM,IAAI,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OACM,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE;SAClE,OAAO,aAAa,CAAC;QACtB;AACP;OACM,gBAAgB,GAAG,YAAY,CAAC;OAChC,iBAAiB,GAAG,aAAa,CAAC;OAClC,OAAO,aAAa,CAAC;AAC3B,MAAK,CAAC;AACN;AACA;AACA;KACI,IAAI,sBAAsB,GAAG,iBAAiB,KAAK,SAAS,GAAG,IAAI,GAAG,iBAAiB,CAAC;AAC5F;KACI,IAAI,uBAAuB,GAAG,YAAY;AAC9C,OAAM,OAAO,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,MAAK,CAAC;AACN;KACI,IAAI,6BAA6B,GAAG,sBAAsB,KAAK,IAAI,GAAG,SAAS,GAAG,YAAY;AAClG,OAAM,OAAO,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,CAAC;AACxD,MAAK,CAAC;AACN,KAAI,OAAO,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,CAAC;IACjE,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzD,OAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;AAChC,OAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvC;GACE,IAAI,KAAK,GAAG,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;GAC9E,SAAS,CAAC,YAAY;AACxB,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,IAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,GAAE,aAAa,CAAC,KAAK,CAAC,CAAC;GACrB,OAAO,KAAK,CAAC;EACd;AACD;AACA,CAAwC,wBAAA,CAAA,gCAAA,GAAG,gCAAgC,CAAC;AAC5E;AACA,CAAA;GACE,OAAO,8BAA8B,KAAK,WAAW;GACrD,OAAO,8BAA8B,CAAC,0BAA0B;AAClE,KAAI,UAAU;GACZ;GACA,8BAA8B,CAAC,0BAA0B,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;EACxE;AACD;AACA,IAAG,GAAG,CAAC;AACP,EAAA;;;;;ACnKA;AACA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;GACzC,MAAA,CAAA,OAAA,GAAiBD,oCAA8E,CAAC;AAClG,EAAC,MAAM;GACL,MAAA,CAAA,OAAA,GAAiBC,iCAA2E,CAAC;AAC/F,EAAA;;;;;ACDA,MAAM,EAAE,gCAAgC,EAAE,GAAG,2BAA2B,CAAC;AACzE,SAAS,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC5D,EAAE,MAAM,KAAK,GAAG,gCAAgC;AAChD,IAAI,GAAG,CAAC,SAAS;AACjB,IAAI,GAAG,CAAC,QAAQ;AAChB,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,QAAQ;AACtC,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,GAAG,CAAC;AACJ,EAAEC,wBAAa,CAAC,KAAK,CAAC,CAAC;AACvB,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,WAAW,KAAK;AACpC,EAAE,IAAI,CAAC,SAAe,GAAG,SAAe,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,YAAY,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AAC/G,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,iIAAiI;AACvI,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AACzF,EAAE,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACtF,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACpC,EAAE,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AACF,MAAM,MAAM,GAAG,CAAC,WAAW,KAAK,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU;;AClBlF,MAAM,kBAAkB,mBAAmB,IAAI,GAAG,EAAE,CAAC;AACrD,MAAM,yBAAyB,GAAG,CAAC,IAAI,KAAK;AAC5C,EAAE,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO,EAAE,CAAC;AACd,EAAE,OAAO,MAAM,CAAC,WAAW;AAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,4BAA4B,GAAG,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,KAAK;AAC7E,EAAE,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AACxB,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;AACrD,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,kBAAkB,EAAE,CAAC;AAC7D,GAAG;AACH,EAAE,MAAM,aAAa,GAAG;AACxB,IAAI,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;AACnD,IAAI,MAAM,EAAE,EAAE;AACd,GAAG,CAAC;AACJ,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACtD,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;AACtD,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,eAAe,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK;AACtE,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,eAAe,CAAC;AAC9E,EAAE,IAAI,kBAAkB,CAAC;AACzB,EAAE,IAAI;AACN,IAAI,kBAAkB,GAAG,CAAC,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,SAAe,GAAG,SAAe,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,YAAY,KAAK,MAAM,CAAC,4BAA4B,CAAC;AACjK,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,GAAG;AACH,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC3B,IAAI,IAAI,CAAC,SAAe,GAAG,SAAe,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,YAAY,IAAI,OAAO,EAAE;AACvF,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,8EAA8E;AACtF,OAAO,CAAC;AACR,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,GAAG;AACH,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,qBAAqB,EAAE,GAAG,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;AACpH,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC;AACzB,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,KAAK;AACnD,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,WAAW;AACpB,MAAM,OAAO,CAAC,CAAC;AACf,IAAI,MAAM,MAAM,GAAG,YAAY,KAAK,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,mBAAmB,IAAI,WAAW,EAAE,GAAG,OAAO,YAAY,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;AACrK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AAC1B,MAAM,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACnE,MAAM,OAAO,CAAC,CAAC;AACf,KAAK;AACL,IAAI,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI;AACjD,MAAM;AACN,QAAQ,GAAG,MAAM;AACjB,QAAQ,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,OAAO;AACP,MAAM;AACN,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC;AAClD,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE;AAC/B,OAAO;AACP,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC;AACJ,EAAE,MAAM,oBAAoB,GAAG,CAAC,GAAG,CAAC,KAAK;AACzC,IAAI,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC5C,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACd,IAAI,WAAW,GAAG,mBAAmB,CAAC;AACtC,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClD,EAAE,IAAI,qBAAqB,CAAC,IAAI,KAAK,WAAW,EAAE;AAClD,IAAI,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChE,GAAG,MAAM;AACT,IAAI,qBAAqB,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AACpE,IAAI,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI;AACjD,MAAM,MAAM,CAAC,WAAW;AACxB,QAAQ,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK;AAC5E,UAAU,GAAG;AACb,UAAU,GAAG,KAAK,qBAAqB,CAAC,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE;AAChF,SAAS,CAAC;AACV,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,GAAG,CAAC,oBAAoB,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;AACtE,IAAI,IAAI,8BAA8B,GAAG,KAAK,CAAC;AAC/C,IAAI,MAAM,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC1C,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK;AAC7B,MAAM,IAAI,CAAC,SAAe,GAAG,SAAe,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,8BAA8B,EAAE;AAC/I,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,oHAAoH;AAC9H,SAAS,CAAC;AACV,QAAQ,8BAA8B,GAAG,IAAI,CAAC;AAC9C,OAAO;AACP,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,KAAK,CAAC;AACN,GAAG;AACH,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK;AACpC,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,QAAQ,OAAO,CAAC,IAAI;AACxB,MAAM,KAAK,QAAQ;AACnB,QAAQ,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;AACjD,UAAU,OAAO,CAAC,KAAK;AACvB,YAAY,yDAAyD;AACrE,WAAW,CAAC;AACZ,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,OAAO,aAAa;AAC5B,UAAU,OAAO,CAAC,OAAO;AACzB,UAAU,CAAC,MAAM,KAAK;AACtB,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE;AAC9C,cAAc,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AACpC,gBAAgB,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,gBAAgB,OAAO;AACvB,eAAe;AACf,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1D,gBAAgB,OAAO,CAAC,KAAK;AAC7B,kBAAkB,CAAC;AACnB;AACA;AACA;AACA,oBAAoB,CAAC;AACrB,iBAAiB,CAAC;AAClB,eAAe;AACf,cAAc,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,cAAc,IAAI,iBAAiB,KAAK,KAAK,CAAC,IAAI,iBAAiB,KAAK,IAAI,EAAE;AAC9E,gBAAgB,OAAO;AACvB,eAAe;AACf,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE;AACxF,gBAAgB,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACxD,eAAe;AACf,cAAc,OAAO;AACrB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,CAAC,oBAAoB;AACzC,cAAc,OAAO;AACrB,YAAY,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU;AAClD,cAAc,OAAO;AACrB,YAAY,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjC,WAAW;AACX,SAAS,CAAC;AACV,MAAM,KAAK,UAAU;AACrB,QAAQ,QAAQ,OAAO,CAAC,OAAO,CAAC,IAAI;AACpC,UAAU,KAAK,OAAO;AACtB,YAAY,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC/C,YAAY,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AAClC,cAAc,OAAO,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnF,aAAa;AACb,YAAY,OAAO,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1G,UAAU,KAAK,QAAQ;AACvB,YAAY,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AAClC,cAAc,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5E,cAAc,OAAO;AACrB,aAAa;AACb,YAAY,OAAO,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1G,UAAU,KAAK,UAAU;AACzB,YAAY,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK;AAC3D,cAAc,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AACpC,gBAAgB,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC5C,gBAAgB,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9E,gBAAgB,OAAO;AACvB,eAAe;AACf,cAAc,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,cAAc,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACrG,aAAa,CAAC,CAAC;AACf,UAAU,KAAK,eAAe,CAAC;AAC/B,UAAU,KAAK,gBAAgB;AAC/B,YAAY,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK;AAC3D,cAAc,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AACpC,gBAAgB,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC5C,gBAAgB,OAAO;AACvB,eAAe;AACf,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACnF,gBAAgB,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,eAAe;AACf,aAAa,CAAC,CAAC;AACf,UAAU,KAAK,cAAc,EAAE;AAC/B,YAAY,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;AACxD,YAAY,MAAM,iBAAiB,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AACrH,YAAY,IAAI,CAAC,iBAAiB;AAClC,cAAc,OAAO;AACrB,YAAY,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AAClC,cAAc,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACtD,aAAa,MAAM;AACnB,cAAc,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,aAAa;AACb,YAAY,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI;AACzD,cAAc,IAAI;AAClB;AACA,cAAc,eAAe;AAC7B,aAAa,CAAC;AACd,YAAY,OAAO;AACnB,WAAW;AACX,UAAU,KAAK,iBAAiB;AAChC,YAAY,OAAO,WAAW,GAAG,CAAC,WAAW,CAAC;AAC9C,SAAS;AACT,QAAQ,OAAO;AACf,KAAK;AACL,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,YAAY,CAAC;AAC9B,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK;AAC1C,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI;AACN,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACrC,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,iEAAiE;AACvE,MAAM,CAAC;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,IAAI,MAAM,KAAK,KAAK,CAAC;AACvB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AACd,CAAC,CAAC;AA4BF;AACA,SAAS,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE;AAChD,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,IAAI;AACN,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;AAC3B,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO;AACX,GAAG;AACH,EAAE,MAAM,cAAc,GAAG;AACzB,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK;AACvB,MAAM,IAAI,EAAE,CAAC;AACb,MAAM,MAAM,KAAK,GAAG,CAAC,IAAI,KAAK;AAC9B,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,UAAU,OAAO,IAAI,CAAC;AACtB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5E,OAAO,CAAC;AACR,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;AACnE,MAAM,IAAI,GAAG,YAAY,OAAO,EAAE;AAClC,QAAQ,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,OAAO;AACP,MAAM,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO;AAChD,MAAM,IAAI;AACV,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC3E,KAAK;AACL,IAAI,UAAU,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AAClD,GAAG,CAAC;AACJ,EAAE,OAAO,cAAc,CAAC;AACxB,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK;AACtC,EAAE,IAAI;AACN,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7B,IAAI,IAAI,MAAM,YAAY,OAAO,EAAE;AACnC,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,OAAO;AACX,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/C,OAAO;AACP,MAAM,KAAK,CAAC,WAAW,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,KAAK,CAAC;AACN,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO;AACX,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP,MAAM,KAAK,CAAC,UAAU,EAAE;AACxB,QAAQ,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;AACF,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK;AAC5D,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,UAAU,EAAE,MAAM,YAAY;AAClC,IAAI,SAAS,EAAE,IAAI,CAAC,SAAS;AAC7B,IAAI,WAAW,EAAE,IAAI,CAAC,KAAK;AAC3B,IAAI,UAAU,EAAE,CAAC,KAAK,KAAK,KAAK;AAChC,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,KAAK,EAAE,CAAC,cAAc,EAAE,YAAY,MAAM;AAC9C,MAAM,GAAG,YAAY;AACrB,MAAM,GAAG,cAAc;AACvB,KAAK,CAAC;AACN,IAAI,GAAG,WAAW;AAClB,GAAG,CAAC;AACJ,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC;AAC1B,EAAE,MAAM,kBAAkB,mBAAmB,IAAI,GAAG,EAAE,CAAC;AACvD,EAAE,MAAM,wBAAwB,mBAAmB,IAAI,GAAG,EAAE,CAAC;AAC7D,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,IAAI;AACN,IAAI,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AACnC,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,MAAM;AACjB,MAAM,CAAC,GAAG,IAAI,KAAK;AACnB,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,CAAC,oDAAoD,EAAE,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC;AAC7H,SAAS,CAAC;AACV,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACrB,OAAO;AACP,MAAM,GAAG;AACT,MAAM,GAAG;AACT,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC1D,EAAE,MAAM,OAAO,GAAG,MAAM;AACxB,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;AACnD,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI;AAChF,MAAM,CAAC,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;AACzE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACnB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,MAAM,WAAW,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC;AACrC,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AACrC,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClC,IAAI,KAAK,OAAO,EAAE,CAAC;AACnB,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,MAAM;AAC7B,IAAI,CAAC,GAAG,IAAI,KAAK;AACjB,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,MAAM,KAAK,OAAO,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,GAAG;AACP,IAAI,GAAG;AACP,GAAG,CAAC;AACJ,EAAE,IAAI,gBAAgB,CAAC;AACvB,EAAE,MAAM,OAAO,GAAG,MAAM;AACxB,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,OAAO;AACb,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD,IAAI,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;AAC7H,IAAI,OAAO,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK;AAC1F,MAAM,IAAI,YAAY,EAAE;AACxB,QAAQ,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACjD,OAAO;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,KAAK;AAC1C,MAAM,IAAI,wBAAwB,EAAE;AACpC,QAAQ,IAAI,OAAO,wBAAwB,CAAC,OAAO,KAAK,QAAQ,IAAI,wBAAwB,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;AAC1H,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE;AAC/B,YAAY,OAAO,OAAO,CAAC,OAAO;AAClC,cAAc,wBAAwB,CAAC,KAAK;AAC5C,cAAc,wBAAwB,CAAC,OAAO;AAC9C,aAAa,CAAC;AACd,WAAW;AACX,UAAU,OAAO,CAAC,KAAK;AACvB,YAAY,CAAC,qFAAqF,CAAC;AACnG,WAAW,CAAC;AACZ,SAAS,MAAM;AACf,UAAU,OAAO,wBAAwB,CAAC,KAAK,CAAC;AAChD,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK;AAC/B,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK;AACtC,QAAQ,aAAa;AACrB,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,YAAY;AAClD,OAAO,CAAC;AACR,MAAM,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAClC,MAAM,OAAO,OAAO,EAAE,CAAC;AACvB,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;AAClB,MAAM,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;AACnG,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACrE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACpB,MAAM,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,OAAO,GAAG;AAChB,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,MAAM,OAAO,GAAG;AAChB,QAAQ,GAAG,OAAO;AAClB,QAAQ,GAAG,UAAU;AACrB,OAAO,CAAC;AACR,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE;AACjC,QAAQ,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;AAC1C,OAAO;AACP,KAAK;AACL,IAAI,YAAY,EAAE,MAAM;AACxB,MAAM,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,UAAU,EAAE,MAAM,OAAO;AAC7B,IAAI,SAAS,EAAE,MAAM,OAAO,EAAE;AAC9B,IAAI,WAAW,EAAE,MAAM,WAAW;AAClC,IAAI,SAAS,EAAE,CAAC,EAAE,KAAK;AACvB,MAAM,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,MAAM,OAAO,MAAM;AACnB,QAAQ,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtC,OAAO,CAAC;AACR,KAAK;AACL,IAAI,iBAAiB,EAAE,CAAC,EAAE,KAAK;AAC/B,MAAM,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,MAAM,OAAO,MAAM;AACnB,QAAQ,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5C,OAAO,CAAC;AACR,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,OAAO,gBAAgB,IAAI,YAAY,CAAC;AAC1C,CAAC,CAAC;AACF,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK;AAC5D,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,OAAO,EAAE,iBAAiB,CAAC,MAAM,YAAY,CAAC;AAClD,IAAI,UAAU,EAAE,CAAC,KAAK,KAAK,KAAK;AAChC,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,KAAK,EAAE,CAAC,cAAc,EAAE,YAAY,MAAM;AAC9C,MAAM,GAAG,YAAY;AACrB,MAAM,GAAG,cAAc;AACvB,KAAK,CAAC;AACN,IAAI,GAAG,WAAW;AAClB,GAAG,CAAC;AACJ,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC;AAC1B,EAAE,MAAM,kBAAkB,mBAAmB,IAAI,GAAG,EAAE,CAAC;AACvD,EAAE,MAAM,wBAAwB,mBAAmB,IAAI,GAAG,EAAE,CAAC;AAC7D,EAAE,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAChC,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,MAAM;AACjB,MAAM,CAAC,GAAG,IAAI,KAAK;AACnB,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,CAAC,oDAAoD,EAAE,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC;AAC7H,SAAS,CAAC;AACV,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACrB,OAAO;AACP,MAAM,GAAG;AACT,MAAM,GAAG;AACT,KAAK,CAAC;AACN,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,MAAM;AACxB,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;AACnD,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AACzC,MAAM,KAAK;AACX,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO;AAC9B,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC;AACrC,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AACrC,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClC,IAAI,KAAK,OAAO,EAAE,CAAC;AACnB,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,MAAM;AAC7B,IAAI,CAAC,GAAG,IAAI,KAAK;AACjB,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,MAAM,KAAK,OAAO,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,GAAG;AACP,IAAI,GAAG;AACP,GAAG,CAAC;AACJ,EAAE,IAAI,gBAAgB,CAAC;AACvB,EAAE,MAAM,OAAO,GAAG,MAAM;AACxB,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;AACf,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,OAAO;AACb,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AACvC,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC;AAC5D,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,kBAAkB,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,KAAK,CAAC,CAAC;AAChK,IAAI,OAAO,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,wBAAwB,KAAK;AACtG,MAAM,IAAI,wBAAwB,EAAE;AACpC,QAAQ,IAAI,OAAO,wBAAwB,CAAC,OAAO,KAAK,QAAQ,IAAI,wBAAwB,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;AAC1H,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE;AAC/B,YAAY,OAAO,OAAO,CAAC,OAAO;AAClC,cAAc,wBAAwB,CAAC,KAAK;AAC5C,cAAc,wBAAwB,CAAC,OAAO;AAC9C,aAAa,CAAC;AACd,WAAW;AACX,UAAU,OAAO,CAAC,KAAK;AACvB,YAAY,CAAC,qFAAqF,CAAC;AACnG,WAAW,CAAC;AACZ,SAAS,MAAM;AACf,UAAU,OAAO,wBAAwB,CAAC,KAAK,CAAC;AAChD,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK;AAC/B,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK;AACtC,QAAQ,aAAa;AACrB,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,YAAY;AAClD,OAAO,CAAC;AACR,MAAM,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAClC,MAAM,OAAO,OAAO,EAAE,CAAC;AACvB,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM;AAClB,MAAM,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;AACnG,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC;AAC/B,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACrE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACpB,MAAM,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,EAAE,GAAG,CAAC,OAAO,GAAG;AAChB,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK;AAChC,MAAM,OAAO,GAAG;AAChB,QAAQ,GAAG,OAAO;AAClB,QAAQ,GAAG,UAAU;AACrB,OAAO,CAAC;AACR,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE;AAC9B,QAAQ,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACrC,OAAO;AACP,KAAK;AACL,IAAI,YAAY,EAAE,MAAM;AACxB,MAAM,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,UAAU,EAAE,MAAM,OAAO;AAC7B,IAAI,SAAS,EAAE,MAAM,OAAO,EAAE;AAC9B,IAAI,WAAW,EAAE,MAAM,WAAW;AAClC,IAAI,SAAS,EAAE,CAAC,EAAE,KAAK;AACvB,MAAM,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,MAAM,OAAO,MAAM;AACnB,QAAQ,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtC,OAAO,CAAC;AACR,KAAK;AACL,IAAI,iBAAiB,EAAE,CAAC,EAAE,KAAK;AAC/B,MAAM,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,MAAM,OAAO,MAAM;AACnB,QAAQ,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5C,OAAO,CAAC;AACR,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC9B,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,OAAO,gBAAgB,IAAI,YAAY,CAAC;AAC1C,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK;AAC7C,EAAE,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,aAAa,IAAI,WAAW,EAAE;AACjG,IAAI,IAAI,CAAC,SAAe,GAAG,SAAe,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,YAAY,EAAE;AAC5E,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,gHAAgH;AACxH,OAAO,CAAC;AACR,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC,CAAC;AACF,MAAM,OAAO,GAAG,WAAW;;AC7jBpB,MAAM,mBAAmB,GAAG,CAAC,KAAkB,MAAM;IAC1D,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;IACxC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;IAC5C,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;AACrC,CAAA,CAAC,CAAA;AAWF,MAAM,UAAU,GAAgB;AAC9B,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,aAAa,EAAE,SAAS;IACxB,gBAAgB,EAAE,MAAK;QACrB,OAAM;KACP;IACD,kBAAkB,EAAE,MAAK;QACvB,OAAM;KACP;IACD,WAAW,EAAE,MAAK;QAChB,OAAM;KACP;IACD,cAAc,EAAE,MAAK;QACnB,OAAM;KACP;CACF,CAAA;AAEM,MAAM,cAAc,GAAG,MAAM,EAAe,CACjD,KAAK,CACH,OAAO,CACL,QAAQ,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM;AACvB,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,gBAAgB,EAAE,CAAC,OAAgB,KAAI;AACrC,QAAA,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,KAAK,CAAC,aAAa,GAAG,OAAO,CAAA;AAC/B,SAAC,CAAC,CAAA;KACH;AACD,IAAA,kBAAkB,EAAE,CAAC,EAAe,KAAI;AACtC,QAAA,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,EAAE,KAAK,KAAK,CAAC,aAAa,EAAE,UAAU;AAAE,gBAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;AACxE,SAAC,CAAC,CAAA;KACH;AACD,IAAA,WAAW,EAAE,CAAC,QAAmB,KAAI;AACnC,QAAA,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,MAAM,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,MAAM,CAC5D,CAAC,cAAc,EAAE,CAAC,KAAI;gBACpB,IACE,CAAC,cAAc,CAAC,IAAI,CAClB,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CACtE,EACD;AACA,oBAAA,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACvB,iBAAA;AACD,gBAAA,OAAO,cAAc,CAAA;aACtB,EACD,EAAE,CACH,CAAA;;AAGD,YAAA,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAA;AACjC,SAAC,CAAC,CAAA;KACH;AACD,IAAA,cAAc,EAAE,CAAC,UAAuB,KAAI;AAC1C,QAAA,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,CAAA;AACxF,SAAC,CAAC,CAAA;KACH;AACF,CAAA,CAAC,CAAC,EACH;AACE,IAAA,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,CAAC;CACX,CACF,CACF,CACF,CAAA;AAED;AACA;AACA;AACO,MAAM,sBAAsB,IAAI,CAAC,QAAQ,EAAE,OAAO,KAAI;IAC3D,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGC,mBAAQ,CAAC,KAAK,CAAC,CAAA;IAE/CC,oBAAS,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;AAEtC,IAAA,OAAO,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC,CAA0B;;AC/FpB,MAAM,aAAa,GAAG,MAAM,CAAa,CAAC,GAAG,MAAM;AACxD,IAAA,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,CAAC,KAAc,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAA,CAAC,CAAC;;ACPH,MAAM,aAAa,GAAGC,wBAAa,CAA4B,IAAI,CAAC,CAAA;AAIpE,kBAAe,aAAa,CAAC,QAAQ;;ACJrC;AACO,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAW,KAAI;IACzC,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAA;AAE1C,IAAA,IAAI,KAAK,EAAE;QACT,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,oCAAoC,EAAE,GAAI,IAAkB,CAAC,CAAA;AAC5F,KAAA;AACH,CAAC,CAAA;AAEM,MAAM,eAAe,GAAG,CAC7B,SAAuC,KACrC;AACF,IAAA,OAAO,SAAS;AACb,SAAA,GAAG,CAAC,CAAC,QAAQ,KAAI;AAChB,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;QAED,OAAO,QAAQ,CAAC,EAAE,CAAA;AACpB,KAAC,CAAC;SACD,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;;ACzBM,MAAMC,MAAI,GACf,4BAA4B;AAC5B,IAAA,0jDAA0jD;;ACF5jD;;;AAGG;AAgBH,MAAM,gBAAiB,SAAQ,UAAU,CAAA;AACvC,IAAA,OAAO,CAAmB;AAC1B,IAAA,aAAa,CAA2B;AACxC,IAAA,OAAO,CAAS;AAEhB,IAAA,WAAA,CAAY,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,WAAW,EACX,OAAO,EACqB,EAAA;AAC5B,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;KAC1C;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,IAAI;AACpB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,IAAI;KACtB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,OAAO,GAAG,eAAe,EACI,EAAA;QAC7B,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;AAE7D,YAAA,IAAI,iBAAiB,CAAA;AACrB,YAAA,IAAI,YAAY,EAAE;gBAChB,iBAAiB,GAAG,YAAY,CAAA;AACjC,aAAA;AAAM,iBAAA,IAAI,gBAAgB,EAAE;AAC3B,gBAAA,iBAAiB,GAAG,MAAM,gBAAgB,EAAE,CAAA;AAC7C,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;AACF,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAEzD,YAAA,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;AACvC,gBAAA,IAAI,aAAa,IAAI,aAAa,CAAC;AACpC,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;gBACpC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;AACnC,gBAAA,MAAM,EAAE,UAAU;gBAClB,aAAa;gBACb,OAAO;gBACP,WAAW;gBACX,OAAO;AACR,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAE9D,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AACzC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;IAED,MAAM,OAAO,CAAC,YAAwB,EAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAE7C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;AAEtD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,CAAyB,sBAAA,EAAA,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAA,CAAC,CAAA;AACzE,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,KAAa,MAAM;AACvE,YAAA,IAAI,EAAE,CAAA,YAAA,EAAe,KAAK,GAAG,CAAC,CAAE,CAAA;YAChC,OAAO;AACP,YAAA,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACzC,SAAA,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,GAAG,gBAAgB,CAAC,QAAQ;AAC5B,YAAA,QAAQ,EAAE,cAAc;SACzB,CAAA;KACF;IAED,MAAM,SAAS,CAAC,YAAwB,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAE1E,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEtD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,YAAY,EAAE,CAAA;AACd,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;QAED,OAAO;YACL,GAAG,gBAAgB,CAAC,QAAQ;AAC5B,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,KAAa,MAAM;AAC1D,gBAAA,IAAI,EAAE,CAAA,YAAA,EAAe,KAAK,GAAG,CAAC,CAAE,CAAA;gBAChC,OAAO;AACP,gBAAA,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACzC,aAAA,CAAC,CAAC;SACJ,CAAA;KACF;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;KAChC;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,SAAwC,EACxC,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,YAAY,GAAiB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;cACzD,SAA4B,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;cAClD,SAA0B,CAAA;;QAG/B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAAyD,CAAA;QAE1D,MAAM,aAAa,GAAa,EAAE,CAAA;;;AAIlC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACvE,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA;;AAG7B,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtE,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7D,iBAAA,CAAC,CAAA;;;AAGH,aAAA;AAAM,iBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAC9E,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,QAAQ;AACX,0BAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;0BACzD,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;;;AAGH,aAAA;AAAM,iBAAA,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1F,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7D,iBAAA,CAAC,CAAA;;AAEH,aAAA;AAAM,iBAAA,IAAI,QAAQ,EAAE;gBACnB,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;iBAAM,IAAI,CAAC,QAAQ,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;;AAGN,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;;AAG/D,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACnE,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;AACnC,gBAAA,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACvC,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;gBACtB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,UAAU,CAAA;KAClB;;;ACvNI,MAAMQ,MAAI,GACf,o0yDAAo0yD;;ACDt0yD;;;AAGG;AAgBH,MAAM,iBAAkB,SAAQ,UAAU,CAAA;AACxC,IAAA,OAAO,CAAoB;AAC3B,IAAA,aAAa,CAA4B;AACzC,IAAA,OAAO,CAAS;AAEhB,IAAA,WAAA,CAAY,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,WAAW,EACX,OAAO,EACsB,EAAA;AAC7B,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAA;KAC3C;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,KAAK;AACrB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,IAAI;KACtB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,OAAO,GAAG,eAAe,EACK,EAAA;QAC9B,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;AAE9D,YAAA,IAAI,kBAAkB,CAAA;AACtB,YAAA,IAAI,YAAY,EAAE;gBAChB,kBAAkB,GAAG,YAAY,CAAA;AAClC,aAAA;AAAM,iBAAA,IAAI,gBAAgB,EAAE;AAC3B,gBAAA,kBAAkB,GAAG,MAAM,gBAAgB,EAAE,CAAA;AAC9C,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAA;AACF,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAEzD,YAAA,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC;AACzC,gBAAA,IAAI,aAAa,IAAI,aAAa,CAAC;AACpC,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;gBACrC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;AACpC,gBAAA,MAAM,EAAE,WAAW;gBACnB,aAAa;gBACb,OAAO;gBACP,WAAW;gBACX,OAAO;AACR,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAE/D,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AACzC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;IAED,MAAM,OAAO,CAAC,YAAwB,EAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAE7C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;AAEtD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,CAAyB,sBAAA,EAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAA,CAAC,CAAA;AAC1E,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,KAAa,MAAM;AACvE,YAAA,IAAI,EAAE,CAAA,aAAA,EAAgB,KAAK,GAAG,CAAC,CAAE,CAAA;YACjC,OAAO;AACP,YAAA,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AAC1C,SAAA,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,GAAG,iBAAiB,CAAC,QAAQ;AAC7B,YAAA,QAAQ,EAAE,cAAc;SACzB,CAAA;KACF;IAED,MAAM,SAAS,CAAC,YAAwB,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAE1E,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEtD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,YAAY,EAAE,CAAA;AACd,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;QAED,OAAO;YACL,GAAG,iBAAiB,CAAC,QAAQ;AAC7B,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,KAAa,MAAM;AAC1D,gBAAA,IAAI,EAAE,CAAA,aAAA,EAAgB,KAAK,GAAG,CAAC,CAAE,CAAA;gBACjC,OAAO;AACP,gBAAA,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AAC1C,aAAA,CAAC,CAAC;SACJ,CAAA;KACF;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;KAChC;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,SAAwC,EACxC,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,YAAY,GAAiB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;cACzD,SAA4B,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;cAClD,SAA0B,CAAA;;QAG/B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAAyD,CAAA;QAE1D,MAAM,aAAa,GAAa,EAAE,CAAA;;;AAIlC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACxE,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA;;AAG7B,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtE,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7D,iBAAA,CAAC,CAAA;;;AAGH,aAAA;AAAM,iBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAC9E,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,QAAQ;AACX,0BAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;0BACzD,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;;;AAGH,aAAA;AAAM,iBAAA,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1F,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7D,iBAAA,CAAC,CAAA;;AAEH,aAAA;AAAM,iBAAA,IAAI,QAAQ,EAAE;gBACnB,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;iBAAM,IAAI,CAAC,QAAQ,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;;AAGN,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;;AAG/D,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACnE,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;AACnC,gBAAA,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACvC,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;gBACtB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,UAAU,CAAA;KAClB;;;ACvNI,MAAMQ,MAAI,GACf,4BAA4B;AAC5B,IAAA,ktBAAktB;;ACFptB;;;AAGG;AAWH,MAAM,kBAAmB,SAAQ,UAAU,CAAA;AACzC,IAAA,OAAO,CAAe;AACtB,IAAA,aAAa,CAAuB;AACpC,IAAA,OAAO,CAAS;AAEhB,IAAA,WAAA,CAAY,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,WAAW,EACX,OAAO,EACuB,EAAA;AAC9B,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAA;KAC5C;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,MAAM;AACtB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,KAAK;KACvB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,OAAO,GAAG,eAAe,EACM,EAAA;QAC/B,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;AAE/D,YAAA,IAAI,aAAa,CAAA;AACjB,YAAA,IAAI,YAAY,EAAE;gBAChB,aAAa,GAAG,YAAY,CAAA;AAC7B,aAAA;AAAM,iBAAA,IAAI,gBAAgB,EAAE;AAC3B,gBAAA,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAA;AACzC,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAA;AACF,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAEzD,YAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;AAC/B,gBAAA,IAAI,aAAa,GAAG,aAAa,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;AAClE,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;gBACtC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;AACrC,gBAAA,MAAM,EAAE,MAAM;gBACd,aAAa;AACb,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,WAAW;gBACxB,OAAO;AACR,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAEhE,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AACzC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;AAED,IAAA,MAAM,OAAO,GAAA;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;AAE7C,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,CAAyB,sBAAA,EAAA,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAA,CAAC,CAAA;AAC3E,SAAA;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM;AAChD,YAAA,GAAG,OAAO;AACV,YAAA,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE;AAC3C,SAAA,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,GAAG,kBAAkB,CAAC,QAAQ;AAC9B,YAAA,QAAQ,EAAE,cAAc;SACzB,CAAA;KACF;;AAGD,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,OAAO,IAAI,CAAA;KACZ;;AAGD,IAAA,MAAM,UAAU,GAAA;QACd,OAAM;KACP;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,YAA0B,EAC1B,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAAyD,CAAA;QAE1D,MAAM,aAAa,GAAa,EAAE,CAAA;;AAGlC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AAClE,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA;;AAG7B,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AACvE,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;;;AAG1B,aAAA;AAAM,iBAAA,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1F,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;;QAGN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;AAE7D,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACnE,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAA;AACzC,gBAAA,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACvC,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;AACtB,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,UAAU,CAAA;KAClB;;;AClKI,MAAMQ,MAAI,GACf,4BAA4B;AAC5B,IAAA,8rCAA8rC;;ACFhsC;;;AAGG;AAgBH,MAAM,iBAAkB,SAAQ,UAAU,CAAA;AACxC,IAAA,OAAO,CAAoB;AAC3B,IAAA,aAAa,CAA4B;AACzC,IAAA,OAAO,CAAS;AAEhB,IAAA,WAAA,CAAY,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,WAAW,EACX,OAAO,EACsB,EAAA;AAC7B,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAA;KAC3C;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,KAAK;AACrB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,IAAI;KACtB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,OAAO,GAAG,eAAe,EACK,EAAA;QAC9B,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;AAE9D,YAAA,IAAI,kBAAkB,CAAA;AACtB,YAAA,IAAI,YAAY,EAAE;gBAChB,kBAAkB,GAAG,YAAY,CAAA;AAClC,aAAA;AAAM,iBAAA,IAAI,gBAAgB,EAAE;AAC3B,gBAAA,kBAAkB,GAAG,MAAM,gBAAgB,EAAE,CAAA;AAC9C,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAA;AACF,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAEzD,YAAA,MAAM,WAAW,GAAG,IAAI,kBAAkB,CAAC;AACzC,gBAAA,IAAI,aAAa,IAAI,aAAa,CAAC;AACpC,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;gBACrC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;AACpC,gBAAA,MAAM,EAAE,WAAW;gBACnB,OAAO;gBACP,WAAW;gBACX,OAAO;AACR,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAE/D,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AACzC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;IAED,MAAM,OAAO,CAAC,YAAwB,EAAA;AACpC,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAEjE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEtD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,CAAyB,sBAAA,EAAA,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAA,CAAC,CAAA;AAC1E,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,KAAa,MAAM;AACvE,YAAA,IAAI,EAAE,CAAA,aAAA,EAAgB,KAAK,GAAG,CAAC,CAAE,CAAA;YACjC,OAAO;AACP,YAAA,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AAC1C,SAAA,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,GAAG,iBAAiB,CAAC,QAAQ;AAC7B,YAAA,QAAQ,EAAE,cAAc;SACzB,CAAA;KACF;IAED,MAAM,SAAS,CAAC,YAAwB,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QAEtD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;QAED,OAAO;YACL,GAAG,iBAAiB,CAAC,QAAQ;AAC7B,YAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,KAAa,MAAM;AAC1D,gBAAA,IAAI,EAAE,CAAA,aAAA,EAAgB,KAAK,GAAG,CAAC,CAAE,CAAA;gBACjC,OAAO;AACP,gBAAA,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AAC1C,aAAA,CAAC,CAAC;SACJ,CAAA;KACF;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;KAChC;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,SAAwC,EACxC,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,YAAY,GAAiB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;cACzD,SAA4B,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;cAClD,SAA0B,CAAA;;QAG/B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAAyD,CAAA;QAE1D,MAAM,aAAa,GAAa,EAAE,CAAA;;;AAIlC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACxE,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA;;AAG7B,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtE,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7D,iBAAA,CAAC,CAAA;;;AAGH,aAAA;AAAM,iBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBAC9E,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,QAAQ;AACX,0BAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;0BACzD,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;;;AAGH,aAAA;AAAM,iBAAA,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1F,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7D,iBAAA,CAAC,CAAA;;AAEH,aAAA;AAAM,iBAAA,IAAI,QAAQ,EAAE;gBACnB,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;iBAAM,IAAI,CAAC,QAAQ,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5D,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;;AAGN,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;;AAG/D,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACnE,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;AACnC,gBAAA,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACvC,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;gBACtB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,UAAU,CAAA;KAClB;;;ACpNI,MAAMQ,MAAI,GACf,4BAA4B;AAC5B,IAAA,0jKAA0jK;;ACF5jK;;;AAGG;AAUH,MAAM,YAAa,SAAQ,UAAU,CAAA;AACnC,IAAA,OAAO,CAAQ;AACf,IAAA,aAAa,CAAe;AAC5B,IAAA,OAAO,CAAS;AAEhB,IAAA,WAAA,CAAY,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,WAAW,EACX,OAAO,EACiB,EAAA;AACxB,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;KACtC;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,MAAM;AACtB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,KAAK;KACvB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAO,GAAG,eAAe,EACM,EAAA;QAC/B,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;YAE/D,IAAI,OAAO,MAAM,IAAI,WAAW,IAAK,MAAyB,CAAC,MAAM,KAAK,SAAS,EAAE;AACnF,gBAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAC5C,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AACzD,YAAA,MAAM,MAAM,GAAI,MAAyB,CAAC,MAAM,CAAC,QAAQ,CAAA;AAEzD,YAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;gBAChC,QAAQ,EAAE,YAAY,CAAC,QAAQ;AAC/B,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,aAAa,EAAE,aAAa,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;gBACxD,OAAO;AACR,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAEhE,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACf,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,mBAAA,EAAsB,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,EACnD,sCAAsC,EACtC,oCAAoC,CACrC,CAAA;AACD,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;AAED,IAAA,MAAM,OAAO,GAAA;QACX,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;AAChD,SAAA,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,CAAyB,sBAAA,EAAA,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAA,CAAC,CAAA;AACrE,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA;AACE,gBAAA,IAAI,EAAE,CAAU,QAAA,CAAA;gBAChB,OAAO;AACP,gBAAA,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE;AACrC,aAAA;SACF,CAAA;QAED,OAAO;YACL,GAAG,YAAY,CAAC,QAAQ;YACxB,QAAQ;SACT,CAAA;KACF;;IAGD,MAAM,SAAS,CAAC,YAAwB,EAAA;QACtC,IACE,MAAM,KAAK,SAAS;YACnB,MAAyB,CAAC,MAAM,KAAK,SAAS;YAC9C,MAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,IAAI,EAC/D;AACA,YAAA,YAAY,EAAE,CAAA;AACf,SAAA;AAED,QAAA,OAAO,IAAI,CAAA;KACZ;;AAGD,IAAA,MAAM,UAAU,GAAA;QACd,OAAM;KACP;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,SAAwC,EACxC,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,YAAY,GAAiB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;cACzD,SAA4B,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;cAClD,SAA0B,CAAA;;QAG/B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAAyD,CAAA;QAE1D,MAAM,aAAa,GAAa,EAAE,CAAA;;AAGlC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AAClE,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA;;;AAI7B,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtE,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;;;AAG1B,aAAA;AAAM,iBAAA,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1F,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;;QAGN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;;AAG7D,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACnE,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;AACnC,gBAAA,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AACvC,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;gBACtB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,UAAU,CAAA;KAClB;;;AC9KI,MAAMQ,MAAI,GACf,4BAA4B;AAC5B,IAAA,89DAA89D;;ACFh+D;;;AAGG;AAgBH,MAAM,gBAAiB,SAAQ,UAAU,CAAA;AACvC,IAAA,OAAO,CAAY;AACnB,IAAA,OAAO,CAAS;AAChB,IAAA,WAAW,CAAuB;IAElC,WAAY,CAAA,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAA+B,EAAA;AAC1F,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAA;KAClC;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,UAAU;AAC1B,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,KAAK;KACvB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,YAAY,EACZ,aAAa,EACb,OAAO,GAAG,eAAe,EACU,EAAA;QACnC,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,UAAU,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;YAEnE,IAAI,OAAO,MAAM,IAAI,WAAW,IAAK,MAAyB,CAAC,QAAQ,KAAK,SAAS,EAAE;AACrF,gBAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;AAChD,aAAA;AAED,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AACzD,YAAA,MAAM,UAAU,GAAI,MAAyB,CAAC,QAAQ,CAAA;AAEtD,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC;gBACpC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;AACnC,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,WAAW;gBACxB,OAAO;AACR,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,UAAU,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAEpE,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACf,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,mBAAA,EAAsB,gBAAgB,CAAC,QAAQ,CAAC,IAAI,GAAG,EACvD,sCAAsC,EACtC,iDAAiD,CAClD,CAAA;AACD,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;AAED,IAAA,MAAM,OAAO,GAAA;QACX,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AAElF,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,CAAyB,sBAAA,EAAA,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAA,CAAC,CAAA;AACzE,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,QAAQ,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,KAAK,KAAI;;AAEpC,YAAA,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAEpE,OAAO;AACL,gBAAA,IAAI,EAAE,CAAA,WAAA,EAAc,KAAK,GAAG,CAAC,CAAE,CAAA;gBAC/B,OAAO;AACP,gBAAA,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACxC,gBAAA,IAAI,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC9B,CAAA;SACF,CAAC,CACH,CAAA;;AAGD,QAAA,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QAExF,OAAO;YACL,GAAG,gBAAgB,CAAC,QAAQ;AAC5B,YAAA,QAAQ,EAAE,cAAc;SACzB,CAAA;KACF;;IAGD,MAAM,SAAS,CAAC,YAAwB,EAAA;QACtC,IAAI,MAAM,KAAK,SAAS,IAAK,MAAyB,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC7E,YAAA,YAAY,EAAE,CAAA;AACf,SAAA;AAED,QAAA,OAAO,IAAI,CAAA;KACZ;;AAGD,IAAA,MAAM,UAAU,GAAA;QACd,OAAM;KACP;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,YAA0B,EAC1B,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAAyD,CAAA;QAE1D,MAAM,aAAa,GAAa,EAAE,CAAA;;;AAIlC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AAC7E,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA;YAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;YAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;AAE/C,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACtE,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC3D,IAAI,WAAW,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC9C,iBAAA,CAAC,CAAA;AACH,aAAA;iBAAM,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1D,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC3D,IAAI,WAAW,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC9C,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA;gBACL,GAAG,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CACxC,QAAQ;AACN,0BAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;AACpE,0BAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CACrE;AACD,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;;QAGN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;;;AAItD,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACnE,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAC9B,gBAAA,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC9E,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;AACtB,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,UAAU,CAAA;KAClB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,cAAc,CAAA;AACtB,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,cAAc,CAAA;AACtB,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,cAAc,CAAA;AACtB,SAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAA;KACpB;AAED,IAAA,cAAc,CAAC,OAAe,EAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAA;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAC3E,CAAA;QAED,OAAO,OAAO,EAAE,QAAQ,CAAA;KACzB;;;AC5MI,MAAM,eAAe,GAAG,CAAC,OAAe,KAA8B;IAC3E,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAA;AAChF,CAAC;;ACFM,MAAMQ,MAAI,GACf,4BAA4B;AAC5B,IAAA,0uCAA0uC,CAAA;AAEruC,MAAM,eAAe,GAAuC;AACjE,IAAA,OAAO,EAAE,2CAA2C;AACpD,IAAA,OAAO,EAAE,2CAA2C;AACpD,IAAA,OAAO,EAAE,2CAA2C;CACrD;;ACRD,MAAM,YAAY,GAAG,MAAa;AAChC,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACzD,OAAO,IAAI,GAAG,KAAK,CAAA;AACrB,CAAC,CAAA;AAED;AACO,MAAM,oBAAoB,GAAG,CAAU,MAAc,EAAE,MAAS,KAAoB;IACzF,OAAO;QACL,EAAE,EAAE,YAAY,EAAE;AAClB,QAAA,OAAO,EAAE,KAAK;QACd,MAAM;QACN,MAAM;KACP,CAAA;AACH,CAAC;;AChBD;;;AAGG;AAkBH,MAAM,mBAAoB,SAAQ,UAAU,CAAA;AAC1C,IAAA,OAAO,CAAwB;AAC/B,IAAA,aAAa,CAAgC;AAC7C,IAAA,OAAO,CAAS;AAChB,IAAA,KAAK,CAAQ;AAEb,IAAA,WAAA,CAAY,EACV,QAAQ,EACR,MAAM,EACN,aAAa,EACb,OAAO,EACP,WAAW,EACX,OAAO,EACP,KAAK,EAC0B,EAAA;AAC/B,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAA;KAC7C;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,aAAa;AAC7B,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,IAAI;KACtB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,OAAO,GAAG,eAAe,EACa,EAAA;QACtC,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,aAAa,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;AAEtE,YAAA,IAAI,MAAM,CAAA;AACV,YAAA,IAAI,YAAY,EAAE;gBAChB,MAAM,GAAG,YAAY,CAAA;AACtB,aAAA;AAAM,iBAAA,IAAI,gBAAgB,EAAE;AAC3B,gBAAA,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAA;AAClC,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAA;AACF,aAAA;YAED,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;AACnF,aAAA;AAED,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;AAC7B,gBAAA,MAAM,IAAI,KAAK,CACb,wEAAwE,OAAO,CAAA,mBAAA,CAAqB,CACrG,CAAA;AACF,aAAA;AAED,YAAA,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;;AAGtC,YAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AACxB,gBAAA,GAAG,aAAa;AAChB,gBAAA,YAAY,EAAE;AACZ,oBAAA,yBAAyB,EAAE,KAAK;oBAChC,GAAG,aAAa,CAAC,YAAY;AAC9B,iBAAA;AACF,aAAA,CAAC,CAAA;;AAGF,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;;AAGzD,YAAA,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC;gBACvC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;gBACtC,MAAM;gBACN,aAAa;gBACb,OAAO;gBACP,WAAW;gBACX,OAAO;gBACP,KAAK;AACN,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,aAAa,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAEvE,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AAC/D,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;AAEM,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,QAAQ,EAAE;AACR,gBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACpB,OAAO,EAAE,CAAC,cAAc,CAAC;AACzB,gBAAA,MAAM,EAAE,EAAE;AACX,aAAA;SACF,CAAA;QAED,IAAI;YACF,MAAM,OAAO,GAAkC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBACxE,kBAAkB;AACnB,aAAA,CAAC,CAAA;YAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAA;YAEhD,OAAO;gBACL,GAAG,mBAAmB,CAAC,QAAQ;AAC/B,gBAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aACtC,CAAA;AACF,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;AACzD,YAAA,MAAM,KAAK,CAAA;AACZ,SAAA;KACF;AAEM,IAAA,MAAM,SAAS,GAAA;QACpB,MAAM,OAAO,GAA8C,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;AAC1F,QAAA,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAClC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAA;QAEhD,OAAO;YACL,GAAG,mBAAmB,CAAC,QAAQ;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;SACtC,CAAA;KACF;AAEM,IAAA,MAAM,UAAU,GAAA;QACrB,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;AAExC,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;;AAEpB,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,oBAAoB;AAC7B,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA;AACF,aAAA,CAAC,CAAA;AACH,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;AAC5C,SAAA;KACF;AAEM,IAAA,MAAM,gBAAgB,CAC3B,iBAA2B,EAC3B,SAAwC,EACxC,aAAA,GAA0B,EAAE,EAC5B,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,YAAY,GAAiB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;cACzD,SAA4B,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;cAClD,SAA0B,CAAA;AAE/B,QAAA,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAC7D,YAAY,EACZ,iBAAiB,EACjB,aAAa,CACd,CAAA;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;AAElE,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAuB;YAChE,OAAO,EAAE,IAAI,CAAC,KAAK;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO;AACR,SAAA,CAAC,CAAA;;QAGF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAA;;AAG5D,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACnE,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;AAC/D,gBAAA,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AACxE,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;AACtB,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,UAAU,CAAA;KAClB;AAED,IAAA,oBAAoB,CAClB,YAA0B,EAC1B,iBAA2B,EAC3B,aAAuB,EAAA;;QAGvB,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAAyD,CAAA;;QAG1D,MAAM,aAAa,GAAa,EAAE,CAAA;;AAGlC,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAA6B,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AAChF,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAA;YAE7B,MAAM,aAAa,GAAG,CAAC,QAAQ;kBAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC,kBAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;YAE9C,MAAM,UAAU,GACd,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAA;AAEvF,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrD,iBAAA,CAAC,CAAA;AACH,aAAA;AAAM,iBAAA;gBACL,GAAG,CAAC,IAAI,CAAC;AACP,oBAAA,GAAG,EAAE,QAAQ;AACX,0BAAE,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CAAC,yBAAyB,CACpC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAC1D,CACF,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtB,0BAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACnD,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAC,CAAA;AACH,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAA;KACrC;AAED,IAAA,MAAM,WAAW,GAAA;QACf,MAAM,OAAO,GAA8C,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAA;AAC1F,QAAA,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAC5C,SAAA;AACD,QAAA,OAAO,OAAO,CAAA;KACf;AAED,IAAA,YAAY,CAAC,QAAkB,EAAA;QAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,MAAM;AAC1C,YAAA,IAAI,EAAE,CAAA,cAAA,EAAiB,KAAK,GAAG,CAAC,CAAE,CAAA;YAClC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY;AAC9C,YAAA,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE;AAC5C,SAAA,CAAC,CAAC,CAAA;KACJ;;;AC1RI,MAAMQ,MAAI,GACf,4BAA4B;AAC5B,IAAA,0XAA0X;;ACS5X,MAAM,eAAgB,SAAQ,UAAU,CAAA;AACtC,IAAA,OAAO,CAAc;AACrB,IAAA,OAAO,CAAQ;AACf,IAAA,SAAS,CAAQ;AACjB,IAAA,QAAQ,CAAQ;AAChB,IAAA,OAAO,CAAS;AAEhB,IAAA,WAAA,CAAY,EACV,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,WAAW,EACX,OAAO,EACoB,EAAA;AAC3B,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AAErC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAA;KACzC;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,GAAG;AACnB,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,KAAK;KACvB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAO,GAAG,eAAe,EACG,EAAA;QAC5B,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;AAE5D,YAAA,MAAM,EACJ,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EACtB,IAAI,GAAG,kBAAkB,EACzB,IAAI,GAAG,MAAM,EACb,MAAM,GAAG,4BAA4B,EACrC,QAAQ,GAAG,EAAE,EACd,GAAG,aAAa,IAAI,EAAE,CAAA;AAEvB,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AACzD,YAAA,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAEpD,YAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;gBACnC,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,QAAQ;gBACR,MAAM;AACN,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,WAAW;gBACxB,OAAO;AACR,aAAA,CAAC,CAAA;AAEF,YAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AAE7D,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AACzC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;AAED,IAAA,MAAM,OAAO,GAAA;;QAEX,OAAO;YACL,GAAG,eAAe,CAAC,QAAQ;AAC3B,YAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;SACxE,CAAA;KACF;;AAGD,IAAA,MAAM,UAAU,GAAA;QACd,OAAM;KACP;;AAGD,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,eAAe,GAAA;;AAEb,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;QACjC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;KACpB;AAED,IAAA,MAAM,cAAc,CAAC,QAAgB,EAAE,QAAgB,EAAA;AACrD,QAAA,MAAM,UAAU,GAAqB,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC5F,OAAO,UAAU,CAAC,mBAAmB,CAAA;KACtC;IAED,MAAM,YAAY,CAAC,KAAa,EAAA;QAC9B,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;KAC9C;AAED,IAAA,MAAM,WAAW,GAAA;QACf,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;AACvD,QAAA,MAAM,UAAU,GAA8B,cAAc,CAAC,SAAS,CAAC,CAAA;QACvE,MAAM,SAAS,GAA2B,EAAE,CAAA;AAC5C,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;YAC1B,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;AACzB,SAAA;AACD,QAAA,OAAO,SAAS,CAAA;KACjB;AAED,IAAA,MAAM,YAAY,CAAC,MAAc,EAAE,QAAgB,EAAA;;AAEjD,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;;QAG3D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACvD,QAAA,MAAM,SAAS,GAAkB,YAAY,CAAC,WAAW,CAAC,CAAA;QAC1D,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,KAAa,KAAI;YACtE,OAAO;AACL,gBAAA,IAAI,EAAE,CAAA,UAAA,EAAa,KAAK,GAAG,CAAC,CAAE,CAAA;gBAC9B,OAAO;AACP,gBAAA,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE;aACxC,CAAA;AACH,SAAC,CAAC,CAAA;;AAGF,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAE9B,QAAA,OAAO,cAAc,CAAA;KACtB;AAED,IAAA,MAAM,WAAW,GAAA;;AAEf,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAA;AAE9C,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;AAC1C,QAAA,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC;YAAE,MAAM,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;QACjF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEvC,OAAO,IAAI,CAAC,QAAQ,CAAA;KACrB;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,SAAwC,EACxC,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;;QAGlB,MAAM,YAAY,GAAiB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;cACzD,SAA4B,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;cAClD,SAA0B,CAAA;;QAG/B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAA2E,CAAA;;AAG5E,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;AACzC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAErD,MAAM,UAAU,GAAsB,EAAE,CAAA;;QAExC,MAAM,eAAe,GAA0B,EAAE,CAAA;QAEjD,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;AAChC,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAA;;YAG9B,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;;AAGlC,YAAA,IAAI,QAAQ,EAAE;gBACZ,OAAM;;AAEP,aAAA;AAAM,iBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACxF,OAAM;AACP,aAAA;;AAEI,iBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC1E,OAAM;AACP,aAAA;;AAGD,YAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,CAAA;AAElC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;AAChE,YAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAwB,CAAC,CAAA;AAC3F,SAAC,CAAC,CAAA;QAEF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;;QAGzD,IAAI,SAAS,GAAG,CAAC,CAAA;QAEjB,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,KAAI;;;AAGjE,YAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;gBAEnC,SAAS,IAAI,CAAC,CAAA;AACf,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;AACtB,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,aAAa,CAAA;KACrB;;;ACtOI,MAAMQ,MAAI,GACf,qYAAqY;;ACUvY,MAAM,oBAAqB,SAAQ,UAAU,CAAA;AAC3C,IAAA,OAAO,CAAmB;AAC1B,IAAA,OAAO,CAAS;IAEhB,WAAY,CAAA,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAmC,EAAA;AACtF,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AAErC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAA;KAC9C;IAED,OAAO,QAAQ,GAAG;QAChB,EAAE,EAAER,mBAAW,CAAC,QAAQ;AACxB,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAEQ,MAAI;AACV,QAAA,eAAe,EAAE,KAAK;KACvB,CAAA;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,YAAY,EACZ,aAAa,EACb,OAAO,GAAG,eAAe,EACQ,EAAA;QACjC,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAR,mBAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;AAEjE,YAAA,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;YACzE,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;AAEzD,YAAA,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC;gBACxC,QAAQ,EAAE,oBAAoB,CAAC,QAAQ;AACvC,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,WAAW,EAAE,WAAW;gBACxB,OAAO;AACR,aAAA,CAAC,CAAA;YAEF,QAAQ,CAAC,CAAG,EAAAA,mBAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,CAAC,CAAA;AAE7D,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AACzC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;;AAGD,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAEvC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;AACnD,SAAA;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAEzD,OAAO;YACL,GAAG,oBAAoB,CAAC,QAAQ;AAChC,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,CAAkB,gBAAA,CAAA;AACxB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AAC1B,oBAAA,UAAU,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE;AAC7C,iBAAA;AACF,aAAA;SACF,CAAA;KACF;;AAGD,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QACxB,OAAM;KACP;;AAGD,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,OAAO,IAAI,CAAA;KACZ;IAED,eAAe,GAAA;;AAEb,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qCAAqC,CAAC,CAAA;QAC1D,OAAO,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;KACxB;IAED,gBAAgB,CACd,iBAA2B,EAC3B,SAAwC,EACxC,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACxC,SAAA;;QAGD,MAAM,YAAY,GAAiB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;cACzD,SAA4B,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;cAClD,SAA0B,CAAA;;QAG/B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACpC,SAAC,CAA2E,CAAA;QAE5E,MAAM,UAAU,GAAiB,EAAE,CAAA;;QAEnC,MAAM,cAAc,GAAiB,EAAE,CAAA;QAEvC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;AAChC,YAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,CAAA;;YAG9B,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;;AAGlC,YAAA,IAAI,QAAQ,EAAE;gBACZ,OAAM;;AAEP,aAAA;AAAM,iBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACxF,OAAM;AACP,aAAA;;AAEI,iBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC1E,OAAM;AACP,aAAA;;AAGD,YAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,CAAA;AAElC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;AAChE,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAgB,CAAC,CAAA;AAC7D,YAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAChC,SAAC,CAAC,CAAA;;QAGF,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAe,CAAC,GAAG,EAAE,GAAG,KAAI;;;AAGjE,YAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAA;gBAEnC,SAAS,IAAI,CAAC,CAAA;AACf,aAAA;AAAM,iBAAA,IAAI,WAAW,EAAE;AACtB,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,aAAA;AAED,YAAA,OAAO,GAAG,CAAA;SACX,EAAE,EAAE,CAAC,CAAA;AAEN,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;KACtC;AAED,IAAA,uBAAuB,CAAC,aAAgC,EAAA;AACtD,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;KAC3C;;;ACvKI,MAAM,IAAI,GACf,o0BAAo0B;;ACUt0B,MAAM,kBAAmB,SAAQ,UAAU,CAAA;AACzC,IAAA,OAAO,CAAS;AAChB,IAAA,aAAa,CAAgB;IAE7B,OAAO,QAAQ,GAAa;QAC1B,EAAE,EAAEA,mBAAW,CAAC,MAAM;AACtB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,IAAI,EAAE,QAAQ;KACf,CAAA;IAED,WAAY,CAAA,EACV,aAAa,EACb,QAAQ,EACR,OAAO,EACP,WAAW,EACX,OAAO,EACuB,EAAA;AAC9B,QAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AAErC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;KACvB;AAED,IAAA,aAAa,IAAI,CAAC,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAO,GAAG,eAAe,EACM,EAAA;QAC/B,IAAI;YACF,QAAQ,CAAC,CAAG,EAAAA,mBAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAkB,gBAAA,CAAA,CAAC,CAAA;YAE/D,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2DAAA,CAA6D,CAAC,CAAA;AAC/E,aAAA;AAED,YAAA,MAAM,OAAO,GACX,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAkC,CAAC,EAAE,OAAO,CAAA;YACjF,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,YAAkC,CAAC,CAAA;YAE/E,IAAI;gBACF,OAAO,IAAI,kBAAkB,CAAC;AAC5B,oBAAA,aAAa,EAAE,aAAa,CAAC,WAAW,CAAC;AACvC,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,aAAa,EAAE,OAAO;wBACtB,OAAO;qBACR,CAAC;AACF,oBAAA,QAAQ,EAAE;wBACR,GAAG,kBAAkB,CAAC,QAAQ;wBAC9B,IAAI,EAAE,aAAa,CAAC,IAAI;wBACxB,IAAI,EAAE,aAAa,CAAC,IAAI,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI;AAC7D,qBAAA;oBACD,WAAW;oBACX,OAAO;oBACP,OAAO;AACR,iBAAA,CAAC,CAAA;AACH,aAAA;AAAS,oBAAA;AACR,gBAAA,QAAQ,CAAC,CAAA,EAAGA,mBAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAc,YAAA,CAAA,EAAE,GAAG,CAAC,CAAA;AACjE,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAA;AACzC,YAAA,OAAO,IAAI,CAAA;AACZ,SAAA;KACF;AAED,IAAA,MAAM,OAAO,GAAA;QACX,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACvD;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAA;KACtC;AAED,IAAA,MAAM,SAAS,GAAA;QACb,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACzD;IAED,MAAM,gBAAgB,CACpB,iBAA2B,EAC3B,SAAwC,EACxC,aAAwB,EACxB,WAAW,GAAG,IAAI,EAAA;AAElB,QAAA,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAC9C,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,WAAW,CACZ,CAAA;KACF;;;AC5EH,iBAAe;AACb,IAAA,CAACS,gBAAI,CAAC,QAAQ,CAAC,EAAE,GAAGA,gBAAI;AACxB,IAAA,CAACC,iBAAK,CAAC,QAAQ,CAAC,EAAE,GAAGA,iBAAK;AAC1B,IAAA,CAACC,kBAAM,CAAC,QAAQ,CAAC,EAAE,GAAGA,kBAAM;AAC5B,IAAA,CAACC,iBAAK,CAAC,QAAQ,CAAC,EAAE,GAAGA,iBAAK;AAC1B,IAAA,CAACC,YAAM,CAAC,QAAQ,CAAC,EAAE,GAAGA,YAAM;AAC5B,IAAA,CAACC,gBAAU,CAAC,QAAQ,CAAC,EAAE,GAAGA,gBAAU;AACpC,IAAA,CAACC,mBAAa,CAAC,QAAQ,CAAC,EAAE,GAAGA,mBAAa;AAC1C,IAAA,CAACC,eAAG,CAAC,QAAQ,CAAC,EAAE,GAAGA,eAAG;AACtB,IAAA,CAACC,oBAAQ,CAAC,QAAQ,CAAC,EAAE,GAAGA,oBAAQ;AAChC,IAAA,CAACC,kBAAM,CAAC,QAAQ,CAAC,EAAE,GAAGA,kBAAM;CAC7B;;ACnBM,MAAM,mBAAmB,GAAG,OACjC,SAAuC,EACvC,UAAuB,EACvB,aAA8B,KACC;AAC/B,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,QAAQ,CAAC,yDAAyD,CAAC,CAAA;AACnE,QAAA,OAAO,EAAwB,CAAA;AAChC,KAAA;;IAGD,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AAC9D,QAAA,MAAM,UAAU,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;AACxE,QAAA,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;AACtB,QAAA,OAAO,GAAG,CAAA;KACX,EAAE,EAAwB,CAAC,CAAA;IAE5B,MAAM,EACJ,OAAO,GAAG,eAAe,EACzB,UAAU,GAAG,oBAAoB,EACjC,QAAQ,GAAG,iBAAiB,EAC5B,SAAS,GAAG,kBAAkB,EAC/B,GAAG,UAAU,IAAI,EAAE,CAAA;AAEpB,IAAA,MAAM,UAAU,GAAG,OAAO,QAA+B,KAAmB;QAC1E,MAAM,EAAE,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAA;AAE5F,QAAA,MAAM,UAAU,GAAqB;YACnC,OAAO;AACP,YAAA,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC;YAC/C,aAAa;AACb,YAAA,GAAG,cAAc;SAClB,CAAA;AAED,QAAA,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AACpD,QAAA,oBAAoB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAA;AACnC,KAAC,CAAA;IAED,QAAQ,CAAC,yBAAyB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA;AAE/D,IAAA,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;AACtE,IAAA,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAE/B,IAAA,OAAO,oBAAoB,CAAA;AAC7B,CAAC;;AC1DM,MAAM,aAAa,GAAG,CAAC,EAAe,KAAI;IAC/C,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAA;IAExE,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACtB,cAAc,CAAC,EAAE,CAAC,CAAA;AACpB,CAAC;;ACLM,MAAM,kBAAkB,GAAG,MAAK;IACrC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAA;IACnD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,CAAC,CAAA;AAEM,MAAM,gBAAgB,GAAG,CAAC,EAAe,KAAI;AAClD,IAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;AAC5C,IAAA,OAAO,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AACrC,CAAC;;MCPY,kBAAkB,GAAG,OAAO,SAA6B,KAAI;IACxE,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAExC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,MAAM,EAAE,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAA;;AAG9B,YAAA,IAAI,EAAE,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE;AAC9B,gBAAA,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;AAChD,aAAA;AACF,SAAA;AACF,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjB,KAAA;AACH;;ACjBM,SAAU,0BAA0B,CAAC,iBAAuC,EAAA;IAChF,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAI;AAC5C,QAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;AACnD,KAAC,CAAC,CAAA;AACJ;;ACNA,SAAS,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;AAC7B,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AAC7B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC9F,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,IAAI,YAAY,GAAG,IAAI,IAAI,YAAY,GAAG,EAAE;AAClD,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC/B,MAAM,OAAO,KAAK,CAAC;AACnB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;AACrC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5C,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,IAAI,YAAY,GAAG,IAAI,IAAI,YAAY,GAAG,EAAE;AAClD,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC/B,MAAM,OAAO,KAAK,CAAC;AACnB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;AAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5B,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACjD,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7G,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,IAAI,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AAChC,EAAE,IAAI,CAAC,SAAe,GAAG,SAAe,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,YAAY,EAAE;AAC1E,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,qGAAqG;AAC3G,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;;AClCa,SAAU,SAAS,GAAA;IAC/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGb,mBAAQ,CAAoB,IAAI,CAAC,CAAA;AACnE,IAAA,MAAM,OAAO,GAAGc,qBAAU,CAAC,aAAa,CAAC,CAAA;IAEzC,MAAM,EACJ,aAAa,EACb,QAAQ,EAAE,iBAAiB,EAC3B,gBAAgB,EAAE,iBAAiB,EACnC,WAAW,EACZ,GAAG,sBAAsB,CAAC,mBAAmB,EAAEC,SAAO,CAAC,CAAA;AAExD,IAAA,MAAM,qBAAqB,GAAG,CAAC,EAAe,KAAI;AAChD,QAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,KAAK,EAAE,CAAC,CAAA;AACzE,KAAC,CAAA;AAED,IAAA,MAAM,uBAAuB,GAAGC,kBAAO,CACrC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,KAAK,aAAa,EAAE,UAAU,CAAC,EAC7F,CAAC,iBAAiB,EAAE,aAAa,CAAC,CACnC,CAAA;IAEDf,oBAAS,CAAC,MAAK;QACb,IAAI,CAAC,OAAO,EAAE;YACZ,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,OAAM;AACP,SAAA;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAkB,CAAA;AAC9D,QAAA,YAAY,CACV,gBAAgB;;AAEb,aAAA,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAC/B,aAAA,GAAG,CAAC,CAAC,EAAE,KAAI;YACV,OAAO;gBACL,GAAG,UAAU,CAAC,EAAE,CAAC;;gBAEjB,GAAG,OAAO,CAAC,EAAE,CAAC;AACd,gBAAA,QAAQ,EAAE,qBAAqB,CAAC,EAAE,CAAC;AACnC,gBAAA,QAAQ,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE;AAC1C,gBAAA,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC;AAC7E,gBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,EAAE,CAAC;AAC1B,gBAAA,UAAU,EAAE,MAAM,UAAU,CAAC,EAAE,CAAC;AAChC,gBAAA,SAAS,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC;AAC9B,gBAAA,iBAAiB,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC;gBACtC,gBAAgB,EAAE,CAAC,OAAe,KAAK,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC;aACxE,CAAA;SACF,CAAC,CACL,CAAA;;KAEF,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAAA;AAExE,IAAA,MAAM,SAAS,GAAG,CAAC,EAAgB,KAAkB;AACnD,QAAA,IAAI,CAAC,EAAE;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAEnD,QAAA,MAAM,YAAY,GAAG,OAAO,GAAG,EAAE,CAAC,CAAA;AAElC,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,CAAA,CAAE,CAAC,CAAA;AAEpE,QAAA,OAAO,YAAY,CAAA;AACrB,KAAC,CAAA;AAED,IAAA,MAAM,MAAM,GAAGe,kBAAO,CAAC,MAAK;QAC1B,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,YAAA,OAAO,cAAc,CAAA;AACtB,SAAA;AAED,QAAA,IAAI,aAAa,KAAK,IAAI,IAAI,iBAAiB,CAAC,MAAM,EAAE;AACtD,YAAA,OAAO,WAAW,CAAA;AACnB,SAAA;QAED,IAAI,aAAa,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AACvD,YAAA,OAAO,cAAc,CAAA;AACtB,SAAA;AAED,QAAA,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,EAAE;AAC1C,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;AAED,QAAA,OAAO,OAAO,CAAA;KACf,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;AAE7C,IAAA,MAAM,QAAQ,GAAGA,kBAAO,CAAC,MAAK;QAC5B,OAAO,MAAM,KAAK,QAAQ,CAAA;AAC5B,KAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AAEZ,IAAA,MAAM,OAAO,GAAGA,kBAAO,CAAC,MAAK;QAC3B,OAAO,MAAM,KAAK,cAAc,CAAA;AAClC,KAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AAEZ,IAAA,MAAM,mBAAmB,GAAG,CAAC,UAAuB,EAAE,OAAe,KAAI;QACvE,IAAI;YACF,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAC1C,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CACrE,CAAA;YAED,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAA,OAAA,CAAS,CAAC,CAAA;AAC9D,aAAA;YAED,iBAAiB,CAAC,OAAO,CAAC,CAAA;AAC3B,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjB,SAAA;AACH,KAAC,CAAA;AAED,IAAA,MAAM,OAAO,GAAG,OAAO,EAAe,KAAI;QACxC,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;AAClC,YAAA,MAAM,UAAU,GAAG,MAAM,YAAY,EAAE,OAAO,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;YAEvE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC9C,gBAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAA;AAC3C,aAAA;YAED,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,YAAA,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACjC,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjB,SAAA;AACH,KAAC,CAAA;AAED,IAAA,MAAM,SAAS,GAAG,OAAO,EAAe,KAAI;QAC1C,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;AAClC,YAAA,MAAM,UAAU,GAAG,MAAM,YAAY,EAAE,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;AAEzE,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC5C,gBAAA,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACjC,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAChB,YAAA,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;AACrB,SAAA;AACH,KAAC,CAAA;AAED,IAAA,MAAM,UAAU,GAAG,OAAO,EAAe,KAAI;QAC3C,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;AAElC,YAAA,MAAM,YAAY,EAAE,UAAU,EAAE,CAAA;AACjC,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjB,SAAA;AAAS,gBAAA;YACR,aAAa,CAAC,EAAE,CAAC,CAAA;AAClB,SAAA;AACH,KAAC,CAAA;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,EAAe,KAAI;QACpC,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAA;AAC1C,YAAA,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjB,SAAA;AACH,KAAC,CAAA;AAED,IAAA,MAAM,gBAAgB,GAAG,OACvB,YAA2C,EAC3C,aAAwB,EACxB,WAAW,GAAG,IAAI,KAChB;QACF,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;AAEzD,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;AAC5C,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;AACpC,SAAA;QAED,MAAM,kBAAkB,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAC5D,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,EACnD,YAAY,EACZ,aAAa,EACb,WAAW,CACZ,CAAA;AAED,QAAA,OAAO,kBAAkB,CAAA;AAC3B,KAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,OAAO,YAA0B,EAAE,mBAA4B,KAAI;QAC1F,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;QAEzD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;AAEzF,QAAA,OAAO,MAAM,CAAA;AACf,KAAC,CAAA;IAED,MAAM,MAAM,GAA8B,OACxC,QAA+B,EAC/B,aAAuB,KACrB;AACF,QAAA,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAsB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAA;AAEnF,QAAA,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;AAChF,KAAC,CAAA;AAED,IAAA,MAAM,cAAc,GAAG,YAAW;AAChC,QAAA,IAAI,CAAC,aAAa;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAE3D,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAExD,MAAM,WAAW,GAAG,MAAM,YAAY,EAAE,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE7E,QAAA,OAAO,WAAW,CAAA;AACpB,KAAC,CAAA;IAED,MAAM,UAAU,GAAG,MAAK;QACtB,OAAO,aAAa,EAAE,OAAO,CAAA;AAC/B,KAAC,CAAA;AAED,IAAA,MAAM,SAAS,GAAG,YAAW;AAC3B,QAAA,IAAI,CAAC,aAAa;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAE3D,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAExD,OAAO,MAAM,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;AAC7D,KAAC,CAAA;AAED,IAAA,MAAM,yBAAyB,GAAG,CAAC,YAA+B,KAAI;QACpE,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;AAEzD,QAAA,OAAO,YAAY,EAAE,yBAAyB,CAAC,YAAY,CAAC,CAAA;AAC9D,KAAC,CAAA;IAED,OAAO;QACL,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,uBAAuB;QACvB,aAAa;QACb,aAAa,EAAE,aAAa,EAAE,OAAO;QACrC,MAAM;QACN,QAAQ;QACR,OAAO;QACP,MAAM;QACN,gBAAgB;QAChB,gBAAgB;QAChB,UAAU;QACV,yBAAyB;QACzB,cAAc;QACd,SAAS;KACV,CAAA;AACH;;AC9OwB,SAAA,sBAAsB,CAAC,EAC7C,SAAS,EACT,UAAU,EACV,aAAa,EACb,KAAK,GAAG,KAAK,EACc,EAAA;;AAE3B,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;AACpC,IAAAf,oBAAS,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;;IAGnD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGD,mBAAQ,CAA4B,IAAI,CAAC,CAAA;IAEvFC,oBAAS,CAAC,MAAK;AACb,QAAA,eAAe,oBAAoB,GAAA;YACjC,IAAI;;gBAEF,MAAM,oBAAoB,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;gBAE5F,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;;AAGxC,gBAAA,MAAM,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;AAC/C,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAA;AAC7D,aAAA;SACF;QAED,KAAK,oBAAoB,EAAE,CAAA;;KAE5B,EAAE,EAAE,CAAC,CAAA;AAEN,IAAA,OAAO,eAAe,CAAA;AACxB;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,47]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/constants/constants.ts","../../src/algod/index.ts","../../src/media/audio.ts","../../src/clients/base/base.ts","../../node_modules/immer/dist/immer.esm.mjs","../../node_modules/zustand/esm/middleware/immer.mjs","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../../node_modules/zustand/esm/index.mjs","../../node_modules/zustand/esm/middleware.mjs","../../src/store/state/walletStore.ts","../../src/store/state/debugStore.ts","../../src/utils/debugLog.ts","../../src/clients/pera/constants.ts","../../src/clients/pera/client.ts","../../src/clients/daffi/constants.ts","../../src/clients/daffi/client.ts","../../src/clients/myalgo/constants.ts","../../src/clients/myalgo/client.ts","../../src/clients/defly/constants.ts","../../src/clients/defly/client.ts","../../src/clients/exodus/constants.ts","../../src/clients/exodus/client.ts","../../src/clients/algosigner/constants.ts","../../src/clients/algosigner/client.ts","../../src/utils/types.ts","../../src/clients/walletconnect2/constants.ts","../../src/clients/walletconnect2/utils.ts","../../src/clients/walletconnect2/client.ts","../../src/clients/kmd/constants.ts","../../src/clients/kmd/client.ts","../../src/clients/mnemonic/constants.ts","../../src/clients/mnemonic/client.ts","../../src/clients/custom/constants.ts","../../src/clients/custom/client.ts","../../src/clients/index.ts","../../src/utils/initializeProviders.ts","../../src/utils/clearAccounts.ts","../../src/utils/providers.ts","../../src/utils/reconnectProviders.ts","../../src/utils/encodeNFDTransactionsArray.ts","../../src/context/WalletContext.tsx","../../node_modules/zustand/esm/shallow.mjs","../../src/hooks/useWallet.ts","../../src/hooks/useInitializeProviders.ts"],"sourcesContent":["import { Network } from '../types/node'\n\nexport enum PROVIDER_ID {\n KMD = 'kmd',\n CUSTOM = 'custom',\n PERA = 'pera',\n DAFFI = 'daffi',\n MYALGO = 'myalgo',\n ALGOSIGNER = 'algosigner',\n DEFLY = 'defly',\n EXODUS = 'exodus',\n WALLETCONNECT = 'walletconnect',\n MNEMONIC = 'mnemonic'\n}\n\nexport const DEFAULT_NETWORK: Network = 'mainnet'\n\nexport const DEFAULT_NODE_BASEURL = 'https://mainnet-api.algonode.cloud'\n\nexport const DEFAULT_NODE_TOKEN = ''\n\nexport const DEFAULT_NODE_PORT = ''\n","import type _algosdk from 'algosdk'\nimport type { AlgodClientOptions } from '../types'\nimport { DEFAULT_NODE_BASEURL, DEFAULT_NODE_TOKEN, DEFAULT_NODE_PORT } from '../constants'\n\nexport const getAlgosdk = async () => {\n return (await import('algosdk')).default\n}\n\nexport const getAlgodClient = (\n algosdk: typeof _algosdk,\n algodClientOptions?: AlgodClientOptions\n) => {\n const [\n tokenOrBaseClient = DEFAULT_NODE_TOKEN,\n baseServer = DEFAULT_NODE_BASEURL,\n port = DEFAULT_NODE_PORT,\n headers\n ] = algodClientOptions || []\n\n return new algosdk.Algodv2(tokenOrBaseClient, baseServer, port, headers)\n}\n\nexport default class Algod {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n\n constructor(algosdk: typeof _algosdk, algodClient: _algosdk.Algodv2) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n }\n\n static async init(algodOptions?: AlgodClientOptions) {\n const algosdk = await getAlgosdk()\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n return new Algod(algosdk, algodClient)\n }\n}\n","export const audio =\n 'data:audio/mp3;base64,SUQzBAAAAAIYBlRJVDIAAAAWAAAAMTAgU2Vjb25kcyBvZiBTaWxlbmNlVFBFMQAAABIAAABBbmFyIFNvZnR3YXJlIExMQ1RBTEIAAAAMAAAAQmxhbmsgQXVkaW9BUElDAAIPAgAAAGltYWdlL2pwZWcAAwCJUE5HDQoaCgAAAA1JSERSAAAEOAAABDgIBgAAAOwQbI8AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACD0AAAg9AQWVVbYAAAAHdElNRQffCgsFHDEDbwR2AAAgAElEQVR42uzde5RVZd0H8N8wDDcBAS8o6oCJVyxTsDSxojJvgVYq3jVNUQgzaZWmpqh56+ItNa+kr4Cay9Q0DQ1DWb2WeSm8pGRy0RAEgRFhuIzz/tFbC5yZc86eOWfmPDOfz1rvemvvZz9779+zz3DOt2fvXRER9QEAAACQsE5KAAAAAKROwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8ABAAAAJE/AAQAAACRPwAEAAAAkT8BBq9pss81i4sSJMXToUMUAAACgaCoiol4ZaA177rln3HzzzdG/f/+oqamJww8/PGbNmqUwAAAAtJgZHLSKk046Ke67777o379/RET07t07pk6dGtXV1YoDAABAi5nBQcmde+65MW7cuEbXvfjii3HIIYfE2rVrFQoAAIBmq4yIC5WBUqioqIgf/ehHceqppzbZZosttohevXrFk08+qWAAAAA0/zdomMFBCVRWVsZPfvKTGD16dEHtjzrqqJgxY4bCAQAA0CwCDoquU6dOccMNN8SoUaMK3mbOnDkxYsSIWL16tQICAACQmVtUKLoLL7wwjj766Ezb9OnTJz788MP44x//qIAAAABkZgYHRXXyySfHxRdf3Kxt16xZEyNGjIg333xTIQEAAMjEa2Ipmv333z8mTpzY7O27dOnSou0BAADouMzgoCh23333uO+++6J79+4t7utLX/pSvPLKK4oKAABAwczgoMW22mqruOOOO4oSbkREjBs3TlEBAADIxAwOWqRTp05x3333xV577VW0Puvq6uIzn/lMzJ8/X4EBAAAo7PepEtASp59+elHDjYiIysrKOO200xQXAACAgpnBQbPtuuuu8cgjj0RVVVXR+66trY0999wzlixZotAAAADkZQYHzdKtW7e4/vrrSxJu/Kf/r3/96woNAABAQQQcNMv5558f22+/fUn3MWrUKIUGAACgIAIOMvvCF74Q3/jGN0q+nz322COqq6sVHAAAgLwEHGRSVVUVl156adH7Xbp0aaPLzeIAAACgEAIOMjn22GOLPqvimWeeic997nOxaNGiBusOOeQQRQcAACAvAQcF69GjR5x55plF7fOhhx6KI488MhYvXhxTp05tsH7IkCGx3XbbKT4AAAA5CTgo2De/+c3YbLPNitbfM888E+PGjYs1a9ZERMTkyZOjvr7hW4vN4gAAACAfAQcF6dOnT4wdO7Zo/S1dujTGjh0bdXV1/1321ltvxaxZsxq0HTFihAEAAAAgJwEHBfnWt74VvXv3Llp/Z555ZrzzzjsNlj/++OMNln3iE5+Irl27GgQAAACaJOAgr/79+8dJJ51UtP5uu+22RoOMiIhp06Y1WFZVVRWf+MQnDAQAAABNEnCQ19ixY6Nbt25F6evdd9+Nyy+/vMn1s2bNanRmx5577mkgAAAAaJKAg9wXSKdOMWrUqKL199Of/jQ++OCDnG0am90h4AAAACDn71clIJe99tor+vfvX5S+3njjjZgyZUredo0FHMOGDTMYAAAANEnAQU4jR44sWl8/+tGPYt26dXnbPf3007Fq1aoNlm2yySax7bbbGhAAAAAaJeCgSZWVlXHwwQcXpa9nn302HnvssYLarl69Ol588cUGyz/1qU8ZFAAAABol4KBJe++9d2y66aZF6euiiy7K1P6VV15psGyPPfYwKAAAADRKwEGTDjnkkKL088gjj8Rzzz2XaZuXX365wbKBAwcaFAAAABol4KBRnTt3joMOOqjF/axbty4uvfTSzNs1NoNjq622MjAAAAA0SsBBo/bZZ5/o27dvi/v5n//5n3jzzTczb/faa69FfX39BssGDBhgYAAAAGiUgINGFeOBnitWrIirrrqqWduuXr063n///Q2Wde/evSihCwAAAO2PgING7brrri3u46abborFixc3e/ulS5c2WOY2FQAAABoj4KBRQ4YMadH2a9eujV/+8pct6mPZsmUNlrlNBQAAgMYIOGigT58+LQ4SHnrooViyZEmL+mgs4DCDAwAAgMYIOGhg8ODBLe6jpbM3IiI++OCDBssEHAAAADRGwEED/fr1a9H2s2bNiueee67Fx9HYA0UFHAAAADRGwEEDLX1TyaRJk4pyHJtvvnmDZZ7BAQAAQGMEHDTQkhkcy5YtiwceeKAox7HZZps1WNazZ08DBAAAQAMCDhro06dPs7e9++67o7a2tsXH0KVLl+jdu3eD5Z07dzZAAAAANCDgoIHKyspmbVdfXx933nlnUY5hu+22K+qxAQAA0L4JOGhg5cqVzdpu+vTpMWfOnKIcw/7779/ocgEHAAAAjRFw0EBzA45ivBr2Pw488MBGl7tFBQAAgMYIOGjggw8+yLzN3Llz48knnyzK/rfaaqv4+Mc/3ug6AQcAAACNEXDQQHNmcEyePDk+/PDDouz/oIMOanKdW1QAAABojICDBpoTcDz22GNF2XePHj1i7NixTa4XcAAAANAYAQcNZL1FZc6cOfGPf/yjKPseP3589O/fv8n1Ag4AAAAaI+CggawzOKZNm1aU/W699dZx2mmn5WzjGRwAAAA0RsBBA1lncDz++ONF2e95550XXbt2zdmmWM/5AAAAoH0RcNBAlhkcNTU18ac//anF+9xzzz1j1KhRedstWrTIAAEAANCAgIMG3nnnnaivry+o7fTp02PdunUt2l9FRUVMnDixoLb/+te/DBAAAAANCDhoYPXq1bFw4cKC2hbj+RuHHXZYfPKTnyyo7YIFCwwQAAAADQg4aNScOXPytlm3bl1Mnz69Rfvp0aNH/OAHPyi4vYADAACAxgg4aNTcuXPztvnzn/8cNTU1LdrPuHHjcr4W9qMEHAAAADRGwEGjCgk4Xn/99RbtY6uttorTTz890zaewQEAAEBjBBw0qpBbVJYvX96ifVx55ZXRrVu3TNuYwQEAAEBjBBw0at68eXnbtCTgOO6442LEiBGZtxNwAAAA0JjOSkBjCpnBsWzZsmb1PXDgwLjgggsyb7dmzZp47733DA4AANCqKioqmr0sa9tCt1+3bl18+OGHBmc9Ao717LTTTrHjjju2yoVbqu1b+mFaf3ltbW3OW0h233336Ny5c6Z9VVRUxJgxY6JHjx6Zx2fBggVx4oknluRcy2Vcy+EPain2laVdSuea0nWVyjXoXNvn562tx6pcz7UUY9Xevos4V99FfBfxXaRcPgPl6OSTT45HH33UD/n1xzQi6pXh3yZMmBATJkxQCAAAAMraKaecEo888ohCrMcMjiJZvHhxo7ds1Nc3nh9lWZ61j6Zk7bu6ujp69+7dZH8LFiyIxYsXF3yM3bp1ix122KHZSens2bPj/fffb9b5t8U4pDDG5VyTVMcy6z6LcZ4pjHG51NvnNYyxz6ux7EDfF4yxsWwP36E68vf7Aw44IMaNG9fk+k6dPFJTwFEi1113Xdxyyy3t6py+973vxZlnntnk+nvvvTeuuOKKgvqqqqqK3/72t80ON9asWRNf/vKXY/Xq1S42AACg3dtpp51yrk/9FptSEPnQpL/97W851/fp06fgvs4666wYMmRIs4/lL3/5i3ADAADoMPI9QNQMjkZqogQ0ZdasWTnX9+3bt6B+9thjj/jWt77VomP54x//aEAAAIAOQ8CRnYrQpLfffjvna1kLmcHRrVu3uPbaa6OysrJFxzJz5kwDAgAAdBj5ntch4GikJkpALrlmcVRXV+fd/rzzzouPfexjLTqGVatWxQsvvGAwAACADsMMjuxUhJxyPYejuro6unbt2uT64cOHxze+8Y0WH8PMmTNj7dq1BgMAAOgw8s3g8JDRhgQc5JQr4OjUqVOTszM22WSTuOaaa4ryobvzzjsNBAAA0KHkm8HR0scAtEcCDnLK96DR7bffvtEP2o033hhbbrlli/c/Z86cmD59uoEAAAA6FLeoZKci5DRv3rxYvnx5k+sbCzjOOeecGD58eFH2f8cdd+SdmgUAANDeeMhodipCXrlmcXw04Dj44INj7NixRdnvqlWrYurUqQYAAADocMzgyE5FyCvXczjWDzgGDx4cV111VdH2e//990dNTY0BAAAAOpx8AYeHjDbUWQnIJ1fAsd1220VlZWV07949br/99ujZs2fR9jtp0iTFBwAAOiQzOLJTEfLKFXB06dIlqqur46qrrorBgwcXbZ9/+tOf4pVXXlF8AACgQxJwZKci5DV37tyct4pcfvnlcfDBBxd1nzfeeKPCAwAAHZaHjGanIhT0wXrppZeaXL/vvvsWdX9PPfVUTJs2TeEBAIAO/Tss5495AUfDmigBhch1m0oxrVu3Ls4//3wFBwAAOjS3qGSnIhQk16tii+n222+P2bNnKzgAANChCTiyUxEK0hozOBYvXhw/+9nPFBsAAOjwBBzZqQgFefPNN2PFihUl3cell16a82GmAAAAHYWAIzsVoeAP18svv1yy/l988cW45557FBoAACA8ZLQ5VISCvfLKKyX74J533nl5P8AAAAAdRb4ZHBUVFYr0EQIOCjJkyJA47LDDStL3TTfdFM8//7wiAwAA/D+3qGSnIuQ1aNCgmDJlSvTq1avofb/44otx2WWXKTIAAMB6BBzZqQg59e/fP+65557YbLPNit73+++/H6effnqsXbtWoQEAANYj4MhORWjSxhtvHFOnTo1tttmmJP1/73vfi7lz5yo0AABA1h/zAo6GNVECGtO9e/e46667YqeddipJ/1OnTo0HH3xQoQEAABphBkd2KkIDVVVVceutt8bQoUNL0v/rr78e5513nkIDAAA0QcCRnYqwgYqKirjmmmtixIgRJel/9erVcdppp8WqVasUGwAAoAkCjuxUhA1ccsklceihh5as/3PPPTf+/ve/KzQAAEAOAo7sOisBEf+euXHppZfGCSecULJ93HjjjTFlyhTFBgAAyCNfwFFRUaFIHyHgIDp16hQ//elPY/To0SXbxyOPPBKXXHKJYgMAABSgvr4+7+84NiTg6OgXQOfOce2115b0tpTnn38+xo8fn/cDCgAAwL+5RaUZv2+VoOOqqqqKG2+8MQ466KCS7WPevHlx4oknRm1trYIDAABlpbHbPJq69aNYywtt27lz7p/rAo6GBBxFMmzYsFi9enWbfwgKXV5VVRWjR4+OHXbYoWQ1qa2tjYcffjgOP/zwZp9j1vMs5R+jch3LcqxJKc+znGpVLv9QpjrGqX5e29sY+7waS2NsjP0b4zthR/hO2B4JOAQcJTNy5MgYOXKkQqynW7duMXbsWIUAAAAoMgFHQwKOIlm8eHEsW7aswfLGnjvR1LMoWtq2Keu3raioiIEDB0aPHj1KWo958+bF0qVLS16HLLVpzbEo13Mrh/PNcm6pjaVza/3jNZbOrb2dm3/v2te5+Qym9z3FZ9C5ldP3lL59+8a9994r4BBwtL7rrrsubrnllrI+xt69e8eUKVNKHm5ERBx88MGxZMkSFwYAAEAzbLLJJjnXCzgaqYkSdAz9+vWL++67L/bYY49W2V9r7QcAAKA98haV7FSkA+jdu3fce++9seuuu7baPocPH67wAAAAzSTgyE5F2rlu3brFHXfcEbvsskur7lfAAQAA0Hz5ni3Skd4YUygBRzvWuXPnuOmmm+LTn/50q+97p512ik033dQgAAAANIMZHNmpSDtVUVERP/vZz2K//fZrs/2bxQEAANA8Ao7sVKSduvDCC+Owww4r6T5mzpwZNTU1Ta7fd999DQQAAEAzCDiyU5F2aPz48XHKKaeUdB/PPfdcnHjiifHXv/61yTYCDgAAgObJF3BUVlYq0kcIONqZL37xi3H22WeXdB+vvvpqHHvssbFy5cp4/vnnm2y39dZbx6BBgwwKAABARh4ymp2Aox0ZOHBg/PznPy/phT537tw4+uijY/ny5RER8cILL+Rs7zkcAAAA2blFJTsVaSe6desWt956a2y88cYl28eiRYviqKOOioULF/53Wb6Aw20qAAAA2Qk4slORduLyyy+PIUOGlKz/mpqaOOqoo2LOnDkbLH/33XfjrbfeanK7ffbZx9QpAACAjPLdoiLgaKQmSpC+448/Po444oiS9V9bWxvHH398vPrqq42uzzWLo1+/fiUNXgAAANqrXLM4BByN1EQJ0rbHHnvExRdfXLL+161bF6eeemr8+c9/brKN21QAAACKL1fAYaZ8QwKOhHXp0iWuvfbaqKqqKkn/9fX1ceaZZ8YTTzyRs12uN6lEeNAoAABAc3+TNflj3gyOhjVRgnSNHz8+Pvaxj5Ws/x/+8Idx//335203a9asWLduXZPr99prr5KFMAAAAO1VXV1d0z/mBRwNa6IEadp2221j/PjxJev/5z//edx2220FtV21alW89tprTa7v3r17DB061KABAABkkOsWlcrKSgX6CAFHoq644oro0qVLSfr+/e9/H5dffnmmbfLdpuI5HAAAANl4Bkc2nZUgPV/72tdK9lyLN998M8aNG5f3ncsf9fzzz8dxxx3X5Prhw4fHj3/844iI2GSTTWLPPfeMXXbZJfr16xd9+/bd4P/36dMnVq5cGUuWLInFixfH4sWL//uf586dGzNmzIhly5a5EAAAgHbNW1SyEXAkpnfv3nHhhReWpO8PPvggvvGNb0RNTU3mbV988cWc63fbbbf42c9+Fp/61KcKem5Iz549Y/PNN290XV1dXTz77LPx+OOPx7Rp0+KNN95wYQAAAO2Oh4xmI+BIzLnnnhubbrppST44Z5xxRrz++uvN2n727NmxYsWK6NmzZ6Pru3TpEkceeWRRjrWysjL22muv2GuvveL888+PN998Mx577LG4+eabY+HChS4SAACgXTCDIxsVScigQYPimGOOKUnf11xzTTz66KMt+uDlm8VRKttuu22cfvrpMXPmzBg/fnzJnk0CAADQmgQc2ahIQk455ZSSXMRPPPFE/OQnP2n29hUVFXHEEUfE4MGD27Q+G220UZxzzjkxY8aMOPDAA10wAABA0gQc2ahIIjbeeOMYPXp00ft9880341vf+lbmh4r+xy677BIPPvhgXH311bHFFluURa0GDhwYt912W9x7772x8847u3gAAIAkeYtKNgKORBx33HHRo0ePon9YzjjjjGY9VLRXr15x8cUXx+9+97sYNmxYWdZs+PDh8dhjj8URRxzhAgIAAJLjIaPZqEgCqqqq4uSTTy56vzfffHM899xzmbf76le/Gk8//XScfPLJUVlZWfa1u/rqq2PChAkuJAAAICluUclGRRJwyCGHRP/+/Yva5z//+c+48sorM21TWVkZl156aVx//fVNvsK1XE2YMCGuuuqqqKqqckEBAABJyBVwlPv/2NwWBBwJGDNmTNE/JN/5zneitra24G169+4dd911V5x44onJ1nH06NFx1113Ra9evVxUAABA2fMMjmwEHGVu+PDhMWTIkKL2efvtt8ezzz5bcPuBAwfGb37zm/jc5z6XfD333XffeOCBB4o+IwYAAKDY3KKSjYqUua9+9atF7W/OnDlx2WWXFdz+05/+dDzyyCOx/fbbt5ua7rzzzvHLX/4yunXr5gIDAADKloeMZtNZCcpbsWdNfPe7341Vq1YV1PaTn/xkTJ06tV0GAbvttltcddVVcfrpp7vIAICSa2oqeTGWZ52mXoy+2+J8inGe5XTcxTjPFI67PV2zbTGWuZ4hKOAQcJTMgQceGNtss01RPwQbb7xxDBgwoGjHOH/+/Bg1alSMGjUq77H07NkzDjjggHY9y+GQQw6JwYMHx9///vd2/Y9WOf3x949W+/likuoXLWNsjP0w8m9MW/2NACg2AUcjf5cjojspCGQAACAASURBVF4Z/m3ChAleJwoAAEDZW7hwYey+++4KsR4zOIrk1Vdfjblz5zZY3tg9U03dR/XR5cOGDSvawzDnz58fL7zwQt5jiPj3cze22GKLDjN2a9eujccffzyWLVtWlHErZdumlOIYWvt8s9SgXMfHuXXMczOWzs25Ff/flfb8GfT3xbm5Tp1blrZPPPFEbLfddo22N4NDwFEyd999d9xyyy1F66+qqipeeeWVov2AP/zww2PevHl5206cOLFDhRv/qfWuu+4aX/jCF2LlypUuZgAAoCzU1dU1uU7A0UhNlKA8DR06NDbaaKOi9HXXXXcVFG7svffeccopp3TIeldXV8cZZ5zhwgMAAMpGrtfEVlZWKtBHCDjK1Gc/+9mi9LNy5cq4+uqr818InTrFxIkTO3TNTzvttBg0aJCLDwAAKAteE5uNipSpYr0e9t5774133303b7vRo0fHrrvu2qFr3qVLlw4f8gAAAOUj1wwOb3JqSMBRpnbaaaei9DN58uS8bXr27Blnn322okfEfvvtF1/84hcVAgAAaHO5Ag4zOBqpiRKUn169ekX37t1b3M9f//rXePnll/O2+/a3vx2bbbaZwv+/iy66KKqqqhQCAABoUwKObFSkDG2++eZF6WfKlCl522y55ZYd9sGiTdl2223j1FNPVQgAAKBNCTiy8ZrYMtS/f/8W97Fy5cr49a9/nbfdqFGjokuXLm1ynq+++mrceuutUV1dHQMHDozq6uqorq6OTTfdtM3HYMyYMXHzzTfH2rVrXZAAAECbEHBkI+AoQ8W4XeShhx6KFStW5G138MEHF/346+rq4sknn4y+ffvG0KFDm2zXp0+fmDp1aoPlgwYNimOOOSZGjx7dZmHHpptuGgcccED85je/cUECAABtItdbVDxktCGRTxkqxgyOQn6Y9+/fP2cAkdW8efPiyiuvjD333DOOP/74eOyxx3K233LLLaNnz54Nls+ZMyd+9KMfxdChQ+PUU0+Np556KucHu1SOO+44FyMAANBmzODIRkXKUEufwbF27dp45pln8rY76KCDipL6zZo1K4488sjYe++94+qrr4533nknIiJef/31vNvusMMOOc/j4YcfjiOPPDI+85nPxOOPP96q47DPPvvEoEGDXJAAAECbEHBkoyJlqKUBx1/+8pdYtWpV3nYHHnhgi/ZTU1MT5557bhx00EGNzrJ47bXX8vax/fbbF7SvuXPnxoknnhgTJ05stediVFRUxLHHHuuCBAAA2kSugCNCyNGgHkpQflp6i8rTTz+dt02/fv1i7733bvY+fv/738dnP/vZmDRpUtTV1TXaZv78+bFy5cqc/eSawfFR9fX1cdNNN8UhhxwS8+bNa5WxGD16tFfGAgAAbULAkY1qlKGWzuAoJODYb7/9orKysln9X3vttXHCCSfEokWLcrarr6+P2bNn52yTJeD4jxdffDG+/OUvt8oDQDfZZJM44IADXJQAAECry/csQg8a3ZCAo515//3348UXX8zbbtttt83c99q1a2PMmDFx+eWX500S/yPfbSrNCTgi/n17zJgxY+Luu+8ueU332WcfFxYAANDqzODIRjXK0OLFi5u97d///vcmbxlZX9++fTP3feGFF2aeNZHvQaNbb7119OjRo9nne/bZZ8dzzz1X0vHYY489XJQAAECrE3BkoxplaMmSJc3e9o033iioXZ8+fTL1e++998akSZMyH0++GRwVFRUxePDgZp/vmjVr4pvf/GYsXLiwZOOx0047Rffu3V2YAABAqxJwZKMaZaglAcc//vGPgtplmcHxt7/9Lb7//e8363gKeZNKc29T+Y+FCxfGySefHGvWrCnJeHTu3Dl22203FyYAANCqBBzZqEYZasktKsUOOJYsWRInn3xyrF69ulnH8/bbb8cHH3yQs01LA46IiOeff77ZIUwh3KYCAAC0Ng8ZzUbAUYbK6RaVCRMmxNtvv92iD2S+53AUI+CIiLjnnnvi97//fUnGRMABAAC0tnwBR3PfjNleCTjKUHNncHz44Ycxd+7cgtr27t07b5t58+bF448/3uLzKdWbVBpz0003lWRMdt99dxcmAADQqtyiko1qlKH58+c3a7sVK1bEunXrCmq7dOnSvG2mTJmSNzEsRL6Ao7q6Orp27VqU2s2cOTNefvnloo9J1oeyAgAAtJSAIxvVKEMvv/xyQQHERy1btqzgtvPmzcu5ft26dXHPPfcU5XzyBRydOnWK7bbbrmj1K8Usji5durgwAQCAViXgyEY1yvQifvrppzNvt3z58oLb5psl8sQTTxTt1aut8SaV9T344IPxzjvvFHVMKisr3d8GAAC0Kg8ZzUbAUaZmzJiReZssAUe+Z3X89re/Ldq5LFiwIN5///2cbYoZcKxduzZuu+22oo+JWRwAAEBrMoMjG9UoU80JOIp5i8qCBQuKej6t9SaV/5g8eXJRnh+yPgEHAADQmgQc2ahGmfrXv/4Vs2fPzrRNXV1dwW3z3aJS7Fs85syZk3N9MZ/BEfHvsKclr7dtTLEehAoAAFAIAUc2qlHGss7i6NevX8FtZ8+enfONK4sWLSrqueS7JWabbbYpev0KefZHpg+LPx4AAEArEnBk/M2mBOXrySefzNQ+S8BRU1MTzzzzTKPrVq1alfeZGVnluyWmR48esckmmxR1n8UMONatWxeLFy92UQIAAK3GQ0azEXCUsaeeeirTbRZZAo6IiGnTprXahyTfDI6I4s/iyPfcjyzeeuutnDNeAAAAii3fDA5vetyQgKOM1dXVxR133FFw+6wzIJoKOLp16xabbbZZUc+lkICjurq6qPss5gyOfM8QAQAAKDa3qGTTWQnK25QpU+K73/1uQW/w6NKlS2y00UbxwQcfFNT3vHnz4tVXX42dd965wbptttkm3n333aKdx8KFC2PNmjU5z2Prrbcuau1mz54d9fX1RZmR8uabb7oYAYAWaew7SVPfU4q1vFR9l/K4i3GOKZ9Pa49lW12brtnC2vfp00fAIeBofQceeGCjt1gU4wMzb968GDx4cEHHcfXVVzf5rIjG+m7qtouzzz670VkLLTmf2tranAHHkUceGdtvv31RvySsXLkyNtpooxaP79ChQ+P6669P8o95Of2R78hfQFI+n478BcQY+5Lph1HH+jem1NcVQLH5O/SRekREvTL824QJE2LChAkKAQAAQNnbb7/94uWXX1aI/2cGR5G89NJL8cYbbzRY3thTb5t6Em6utiNGjCjoIaJLliyJ6dOnZzqGvfbaKwYOHLjB+qVLl/73GR3NOd7Glu+5556xww47NHnsNTU18dBDDxWtZhERhx12WPTs2bPF43vPPffEihUrilKH1mrblHI93izbZ6lBSufr3NI9t/b6Gcxybq5T5+bc0vn7Yiydm3Nr23PLsv1ll10WJ5xwQpPH4hYVAUdJ/OpXv4pbbrmlZP1/9atfbfIWifX17ds3Lrjggli2bFnBfe+4444xffr0DaY39e3bN3784x/Hv/71r6Kdw5gxY+KCCy5ocn3Xrl3j+9//fqY/LvmMHDmyxQHH66+/Ht/5zndc5AAAQKvykNFsVCMRDz74YLz66qv5B7RTp/jsZz+bqe/XXnstHnvssQbL999//6KeQ743qXTt2jU233zzou6zR48eLe5jxowZLkAAAKDV5fsffwUcH6mHEqThww8/jIsvvrigtiNGjMjc/9VXX91g2UknnVTU9yoX8qrYYr5JZcCAAdG9e/cW9yPgAAAA2kJdXV3uH/QCjg3roQTp+MMf/hBPPfVU3nb77bdf5h/2s2bNismTJ2+wbLvttotDDz20aMc/f/78vG2qq6uLtr/dd9+9xX2sWbMm/vd//9fFBwAAtDq3qGSjGom56KKL8l7k/fr1i+OPP75Zfb/99tsbLPv+979f0MNNC7FixYpYsmRJzjblFnD8+c9/jlWrVrnwAACAVifgyEY1EvPKK6/Efffdl7fd6aefHt26dcvU9/vvvx/f/e53N1i29dZbxxlnnFG04583b17O9dtss03R9lWMgOP+++930QEAAG3CMziyUY0EXXHFFVFbW5uzzeabbx7HHnts5r5nzJgRt99++wbLli5dWrRjzxdwFGsGR/fu3WO33XZrUR+LFy8WcAAAAG3GMziyUY0ELViwIK677rq87caNGxddu3bN3P8Pf/jDuOeee/773996662iHXu+B40W6yGjX/nKV1r8BpU77rgj1qxZ44IDAADaRL5bVCoqKhRpPQKORF133XXxt7/9LWeb/v37xzHHHNOsD9GECRNi0qRJsWbNmgbP5WiJfAHHVlttVZQU8sgjj2zR9mvWrIk777zThQYAALQZz+DIRjUStW7duvj2t7+dd4bB+PHjY+ONN27WB+ncc8+NIUOGxAsvvFC04853i0pVVVVsscUWLdrHoEGDYq+99mpRH7/+9a/j3XffdaEBAABtRsCRjWok7LXXXosrr7wyZ5v+/fvH1Vdf3ex9fPDBB7F69eqiHXO+GRwRLX8Ox+jRo1s0VWvt2rVxww03uMAAAIA2JeDIRjUS94tf/CL+8pe/5Gyz//77x6mnnloWx7tgwYJYu3ZtzjYteZNKr169mnVbzvp+/vOfx+zZs11cAABAmxJwZKMa7eCCP+OMM2LVqlU525177rlFeW1qS9XV1eV9pkdLZnBMmDAhNt1002ZvP3v27BbNeAEAACjm772cP+gFHBvWQwnSN2fOnDj//PNztqmqqopf/OIX0bt37zY/3nzP4Wjum1R23HHHOOmkk1r0x+Oss87KO8MEAACgNXhNbDaq0U5MmTIlJk+enLPNNttsUxazE/I9h2PAgAHN6vfiiy+Ozp07N/u4Jk2aFM8995yLCQAAKAv19fW5f9ALODashxK0Hz/4wQ/i+eefz9nmgAMOiEsuuaRNPwj5Ao7m3GIycuTIGD58eLOP6aWXXorLLrvMRQQAAJQNt6hkoxrtyNq1a+Ob3/xm3tebnnTSSXHjjTdGly5d2uQ4892istlmm2Xqb8cdd8z7Nplc5syZE8ccc0ysXLnSRQQAAJQNt6hkoxrtzDvvvBNjxoyJdevW5Ww3cuTImDp1aps8kyPfDI5+/foV/EHdaqutYurUqbHxxhs361gWLlwYRx55ZN5QCAAAoLXlm8FRUVGhSOsRcLRDzzzzTJxzzjl579fae++949e//nVsscUWrXp8+QKOTp06Rb9+/fL207dv35g6dWqzj7+mpiaOPvrovDNKAAAA2oJncGSjGu3U5MmT49xzz83bbuedd46HH344dthhh1Y7tpqamli+fHnONvluU+nevXvceeedMXjw4GYdw4oVK+KEE06IV1991cUCAACUJc/gyEY12rFf/vKXBYUcAwYMiN/85jcxZsyYqKqqapVja8mDRgcMGBBTpkyJoUOHNmvfc+bMia985Svxpz/9yUUCAACULc/gyEY12rlJkyYVFHL06tUrLrjggpgxY0bsv//+JT+ufAFHUzM4Dj300Jg+fXp8+tOfbtZ+Z8yYEQceeGC8/vrrLg4AAKCsmcGRjWp0AJMmTYrzzjuvoLaDBg2KSZMmxa9+9avYZZddSnZM8+fPz7n+ozM4evfuHTfccEPccMMNzX4w6k033RTHHnts3ttjAAAAyoGAIxvV6CBuv/32OP/88wtuv88++8S0adPiJz/5SebXthYiywyOz3/+8/Hkk0/GoYce2qx91dTUxPjx42PixIl5p3gBAACUCwFHNp2VoOO47bbboqKiIi666KKC2nfq1CmOPvro+PrXvx5PPfVU/O53v4snnngiFi1a1OJjyRdwDB48OE477bQ46qijYvvtt2/2fh544IG48MILi3LMAAAArUnAkY2Ao4O59dZb4/3334+LLrooevXqVdA2Xbt2jf322y/222+/qK+vj+effz6mTZsW06ZNi9dee61Zx/Huu+/mXL///vu36Fkg//znP+Pss8+OmTNnGnQAACBJAo5sBBwd0D333BNPPfVUXHHFFfGlL30p07YVFRUxdOjQGDp0aJxzzjkxZ86cePzxx+Oll16KOXPmxNy5c/POlqisrIyuXbuW5NxWr14d1157bVx//fWxZs0agw0AACRLwJGNgKODWrBgQRx//PHxta99Lb73ve9FdXV1s/oZNGhQnHLKKRssW7lyZSxYsCBWrVoVq1evjtra2qitrY2qqqqorq6Orbbaquivo62trY2pU6fGjTfeGG+99ZYBBgAAkpcv4KioqFCk9Qg4Orj7778/HnzwwRg5cmSMGzcuhgwZ0uI+e/ToEdttt12rHH9NTU1MmjQpbr311liyZIkBBQAA2g0zOLIRcBB1dXXxwAMPxAMPPBCf//zn49RTT43hw4dH587le3ksXLgwbrnllrjzzjtjxYoVBhEAAGh3BBzZCDjYwB/+8If4wx/+EP369YsDDzwwRo4cGZ/5zGfKIuxYsWJFTJ8+PR599NF49NFHPWMDAABo1+rq6nKuF3BsSMBBo957772YPHlyTJ48+b9hx7777hvDhg2LAQMGtNpxLFq0KH73u9/FY489FjNnzoy1a9caHAAAoEMwgyMbAQd5rR92RERsscUWMWzYsBg6dGgMGzYshgwZEt26dSv6fi+++OL4xS9+EfX19QYBAADocPL9FhJwbEjAQWbvvPNOPPzww/Hwww//d1m/fv1iyy23jAEDBsSWW2753//cs2fPqKura/T/dtxxxxg2bFiT+6mtrRVuAAAAJdPUW0iKsTzrG04aa58vwBBw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AAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4AAABgT3AAAAAAe4IDAAAA2BMcAAAAwJ7gAAAAAPYEBwAAALAnOAAAAIA9wQEAAADsCQ4A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/+MYxPkNE2IkGABNSVOQ7HM+7DuUt3Q7mjpUFmcjr1unl8NuVbD7m6plQSJtQIuLMFbkdTOVo4XNGpkZmZshRj5KVGyRR6oW/+MYxP8P82okOACTLDX0hZ/NMwIyV2MZOyleP56///LM+7JePftrs1g+k+jJlnog5CvNvjmcS3cDTZkDKhtl8r35yOV+jgtR/+MYxPoOQ2YYEABTSKmIjcsiPb5ZfXf7UH8zFxqUaDwmSPCizYFGwQGwyZIIX0pOLKIpjETlo1U/56E0qoAczJRAWM5G8HJA/+MYxPwK8148GABNSUZyKUXZ6Ik9o/PNrPO4Xd3k45s5ZbFOhlkKfJ2SMjFyc9KZLMjQ60Ps1iyQiQycScX711gnjk89MiiI/+MYxP8TC2oIAACTEM0f+Z/SNfy///f9lc5XLIHLMz46Yck2h2K0dtqT0bECVySOS9qTEGr9rfbPd2TQq7VMzuRDg3vYJJEn/+MYxO0ME2YcEABNSJ2RxzMIKcrhC0U0F3kImjyb03for+r/zq1OmMvJ/7vbWJlSA5zVyGFyjBs22U4ODIPh4hDbrVUbv/ln/+MYxPcNW2YcEABNSGWrMglL8cicpXM60b///+8h4bKpxqdMwhMvkpTs/hZPkDJUtJu2TccDTSJKRRGOl+v/1//9Omu/2pdE/+MYxPwPu2oQCABTLHWi9r07yp99tVRSsxysZJwFXKcDYBwxzjoPraIHIgUpiCmopmXHJwp268/L++7oMjOERqsPR/WT59fe/+MYxPgMU1ooGABTSLv/8+5at2WSQuEzX00HAFGyipKM5p5VFojkAmjknWmIKaimZccnBdUObf4ovk//MMX///X/yt/uOXlx/+MYxP8SW2IIAACTEKktqFqTxCJSJF/JNmSImOhln2AosFn0lTEFNRTMuOTguMlVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPAMw2IgEABTSVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45OC4yVVVVVVVVVVVV/+MYxPgK215IGACNTFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8MW2I4GABNSFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8Ks1oUGABTZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVEFHMTAgU2Vjb25kcyBvZiBTaWxlbmNlAAAAAAAAAAAAQW5hciBTb2Z0d2FyZSBMTEMAAAAAAAAAAAAAAAAAQmxhbmsgQXVkaW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8='\n","import type _algosdk from 'algosdk'\nimport { audio } from '../../media/audio'\nimport type { AccountInfo, Asset, ClientOptions, Metadata, Wallet } from '../../types/wallet'\nimport type { ConfirmedTxn, TxnType } from '../../types/node'\nimport type { RawTxnResponse, TransactionsArray, TxnInfo } from '../../types/api'\n\nconst getIsIOS = () => {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return /iPad|iPhone|iPod/.test(navigator?.userAgent) && !(window as any)?.MSStream\n } else {\n return false\n }\n}\n\nconst isIOS = getIsIOS()\n\nabstract class BaseClient {\n algosdk: typeof _algosdk\n algodClient: _algosdk.Algodv2\n clientOptions?: ClientOptions\n keepWCAlive: HTMLAudioElement\n metadata: Metadata\n\n static metadata: Metadata\n\n abstract connect(onDisconnect: () => void): Promise<Wallet>\n abstract disconnect(): Promise<void>\n abstract reconnect(onDisconnect: () => void): Promise<Wallet | null>\n abstract signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup?: boolean\n ): Promise<Uint8Array[]>\n\n protected constructor(\n metadata: Metadata,\n algosdk: typeof _algosdk,\n algodClient: _algosdk.Algodv2,\n clientOptions?: ClientOptions\n ) {\n this.algosdk = algosdk\n this.algodClient = algodClient\n this.clientOptions = clientOptions\n this.keepWCAlive = new Audio()\n this.metadata = metadata\n }\n\n async healthCheck() {\n return await this.algodClient.healthCheck().do()\n }\n\n async getAccountInfo(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo) {\n throw new Error('Unable to get account information')\n }\n\n return accountInfo as AccountInfo\n }\n\n async getAssets(address: string) {\n const accountInfo = await this.algodClient.accountInformation(address).do()\n\n if (!accountInfo || accountInfo.assets === undefined) {\n throw new Error('Unable to get account assets')\n }\n\n return accountInfo.assets as Asset[]\n }\n\n async waitForConfirmation(txId: string, timeout = 4) {\n const confirmation = (await this.algosdk.waitForConfirmation(\n this.algodClient,\n txId,\n timeout\n )) as ConfirmedTxn\n\n return { txId, ...confirmation }\n }\n\n decodeTransaction = (txn: string, isSigned: boolean) => {\n return isSigned\n ? this.algosdk.decodeSignedTransaction(new Uint8Array(Buffer.from(txn, 'base64'))).txn\n : this.algosdk.decodeUnsignedTransaction(new Uint8Array(Buffer.from(txn, 'base64')))\n }\n\n logEncodedTransaction(txn: string, isSigned: boolean) {\n const txnObj = this.decodeTransaction(txn, isSigned)\n\n console.log('TRANSACTION', {\n isSigned,\n from: txnObj.from && this.algosdk.encodeAddress(txnObj.from.publicKey),\n to: txnObj.to && this.algosdk.encodeAddress(txnObj.to.publicKey),\n type: txnObj.type,\n txn: txnObj\n })\n }\n\n groupTransactionsBySender(transactions: TransactionsArray) {\n function groupBySender(objectArray: TxnInfo[]) {\n return objectArray.reduce(function (acc, obj) {\n const sender = obj.from\n if (!acc[sender]) {\n acc[sender] = []\n }\n acc[sender].push(obj)\n return acc\n }, {} as Record<string, Array<TxnInfo>>)\n }\n\n const decodedGroup = transactions.reduce((acc: TxnInfo[], [type, txn], index) => {\n if (type === 'u') {\n const decodedTxn = this.decodeTransaction(txn, false)\n const from = decodedTxn.from ? this.algosdk.encodeAddress(decodedTxn.from.publicKey) : ''\n const to = decodedTxn.to ? this.algosdk.encodeAddress(decodedTxn.to.publicKey) : ''\n const type = (decodedTxn.type as TxnType) || ''\n const amount = Number(decodedTxn.amount) || 0 // convert from bigint to number\n\n const txnObj = {\n groupIndex: index,\n amount,\n from,\n to,\n type,\n txn\n }\n\n acc.push(txnObj)\n }\n\n return acc\n }, [])\n\n return groupBySender(decodedGroup)\n }\n\n async sendRawTransactions(transactions: Uint8Array[], waitRoundsToConfirm?: number) {\n const sentTransaction = (await this.algodClient\n .sendRawTransaction(transactions)\n .do()) as RawTxnResponse\n\n if (!sentTransaction) {\n throw new Error('Transaction failed.')\n }\n\n const decodedTxn = this.algosdk.decodeSignedTransaction(transactions[0])\n const waitRounds = waitRoundsToConfirm || decodedTxn.txn.lastRound - decodedTxn.txn.firstRound\n\n const confirmedTransaction = await this.waitForConfirmation(sentTransaction.txId, waitRounds)\n\n return {\n id: sentTransaction.txId,\n ...confirmedTransaction\n }\n }\n\n async keepWCAliveStart() {\n // Playing an audio file prevents Wallet Connect's\n // web socket connection from being dropped when\n // iOS goes into background mode\n\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.src = audio\n this.keepWCAlive.autoplay = true\n this.keepWCAlive.volume = 0\n this.keepWCAlive.loop = true\n await this.keepWCAlive.play()\n }\n\n keepWCAliveStop() {\n if (!isIOS) {\n return\n }\n\n this.keepWCAlive.pause()\n }\n}\n\nexport default BaseClient\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){var r;return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!(null===(r=n.constructor)||void 0===r?void 0:r[L])||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)||(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.g&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:i,o:null,g:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.R,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=i[s];\"string\"!=typeof p&&\"number\"!=typeof p&&(p=\"\"+p),0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},N:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.R,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.R,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.R=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=N(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.g&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,R:void 0,t:n,k:this,C:!1,g:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.R.set(n,!0),t.o.set(n,r),t.R.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.R.set(n,!1):r.R.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.R=new Map,i(n.t,(function(r){n.R.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=N(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,g:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{F:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){F(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=N(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.R[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&(void 0!==t||r in n.o)||Number.isNaN(t)&&Number.isNaN(n.o[r])||(n.o[r]=t,n.R[r]=!0),!0},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.R[r]=!1,E(n),k(n)):delete n.R[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.O=B,this.D=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=N(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?g(c):O(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw g(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.D&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=R(e));var i=w(this),o=N(this,e,void 0);return o[Q].C=!0,O(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.D=n},i.setUseProxies=function(r){r&&!B&&n(20),this.O=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React.startTransition !== undefined) {\n didWarnOld18Alpha = true;\n\n error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n }\n }\n } // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n\n\n var value = getSnapshot();\n\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n\n if (!objectIs(value, cachedValue)) {\n error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n didWarnUncachedGetSnapshot = true;\n }\n }\n } // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n\n\n var _useState = useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n\n\n useLayoutEffect(function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n\n var handleStoreChange = function () {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = require('react');\nvar shim = require('use-sync-external-store/shim');\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n // Use this to track the rendered snapshot.\n var instRef = useRef(null);\n var inst;\n\n if (instRef.current === null) {\n inst = {\n hasValue: false,\n value: null\n };\n instRef.current = inst;\n } else {\n inst = instRef.current;\n }\n\n var _useMemo = useMemo(function () {\n // Track the memoized state using closure variables that are local to this\n // memoized instance of a getSnapshot function. Intentionally not using a\n // useRef hook, because that state would be shared across all concurrent\n // copies of the hook/component.\n var hasMemo = false;\n var memoizedSnapshot;\n var memoizedSelection;\n\n var memoizedSelector = function (nextSnapshot) {\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n hasMemo = true;\n memoizedSnapshot = nextSnapshot;\n\n var _nextSelection = selector(nextSnapshot);\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (inst.hasValue) {\n var currentSelection = inst.value;\n\n if (isEqual(currentSelection, _nextSelection)) {\n memoizedSelection = currentSelection;\n return currentSelection;\n }\n }\n }\n\n memoizedSelection = _nextSelection;\n return _nextSelection;\n } // We may be able to reuse the previous invocation's result.\n\n\n // We may be able to reuse the previous invocation's result.\n var prevSnapshot = memoizedSnapshot;\n var prevSelection = memoizedSelection;\n\n if (objectIs(prevSnapshot, nextSnapshot)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection;\n } // The snapshot has changed, so we need to compute a new selection.\n\n\n // The snapshot has changed, so we need to compute a new selection.\n var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n return prevSelection;\n }\n\n memoizedSnapshot = nextSnapshot;\n memoizedSelection = nextSelection;\n return nextSelection;\n }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n // Assigning this to a constant so that Flow knows it can't change.\n var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n var getSnapshotWithSelector = function () {\n return memoizedSelector(getSnapshot());\n };\n\n var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n };\n return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n getSelection = _useMemo[0],\n getServerSelection = _useMemo[1];\n\n var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n useEffect(function () {\n inst.hasValue = true;\n inst.value = value;\n }, [value]);\n useDebugValue(value);\n return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api)\n return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst oldImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst newImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persistImpl = (config, baseOptions) => {\n if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\"\n );\n }\n return oldImpl(config, baseOptions);\n }\n return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n","import { useState, useEffect } from 'react'\nimport { immer } from 'zustand/middleware/immer'\nimport { create } from 'zustand'\nimport { devtools, persist } from 'zustand/middleware'\nimport type { Account } from '../../types'\nimport { PROVIDER_ID } from '../../constants'\n\nexport const walletStoreSelector = (state: WalletStore) => ({\n accounts: state.accounts,\n activeAccount: state.activeAccount,\n setActiveAccount: state.setActiveAccount,\n clearActiveAccount: state.clearActiveAccount,\n addAccounts: state.addAccounts,\n removeAccounts: state.removeAccounts\n})\n\nexport type WalletStore = {\n accounts: Account[]\n activeAccount: Account | null | undefined\n setActiveAccount: (account: Account) => void\n clearActiveAccount: (id: PROVIDER_ID) => void\n addAccounts: (accounts: Account[]) => void\n removeAccounts: (providerId: PROVIDER_ID) => void\n}\n\nconst emptyState: WalletStore = {\n accounts: [],\n activeAccount: undefined,\n setActiveAccount: () => {\n return\n },\n clearActiveAccount: () => {\n return\n },\n addAccounts: () => {\n return\n },\n removeAccounts: () => {\n return\n }\n}\n\nexport const useWalletStore = create<WalletStore>()(\n immer(\n persist(\n devtools((set, _get) => ({\n accounts: [],\n activeAccount: null,\n setActiveAccount: (account: Account) => {\n set((state) => {\n state.activeAccount = account\n })\n },\n clearActiveAccount: (id: PROVIDER_ID) => {\n set((state) => {\n if (id === state.activeAccount?.providerId) state.activeAccount = null\n })\n },\n addAccounts: (accounts: Account[]) => {\n set((state) => {\n const uniqueAccounts = [...state.accounts, ...accounts].reduce<Account[]>(\n (uniqueAccounts, o) => {\n if (\n !uniqueAccounts.some(\n (obj) => obj.providerId === o.providerId && obj.address === o.address\n )\n ) {\n uniqueAccounts.push(o)\n }\n return uniqueAccounts\n },\n []\n )\n\n // Remove duplicates that occur when a user reconnects Pera wallet\n state.accounts = uniqueAccounts\n })\n },\n removeAccounts: (providerId: PROVIDER_ID) => {\n set((state) => {\n state.accounts = state.accounts.filter((account) => account.providerId !== providerId)\n })\n }\n })),\n {\n name: 'txnlab-use-wallet', // key in local storage\n version: 1 // increment to deprecate stored data\n }\n )\n )\n)\n\n// This a fix to ensure zustand never hydrates the store before React hydrates the page\n// otherwise it causes a mismatch between SSR and client render\n// see: https://github.com/pmndrs/zustand/issues/1145\nexport const useHydratedWalletStore = ((selector, compare) => {\n const store = useWalletStore(selector, compare)\n const [hydrated, setHydrated] = useState(false)\n\n useEffect(() => setHydrated(true), [])\n\n return hydrated ? store : selector(emptyState)\n}) as typeof useWalletStore\n","import { create } from 'zustand'\n\ntype DebugStore = {\n debug: boolean\n setDebug: (debug: boolean) => void\n}\n\nexport const useDebugStore = create<DebugStore>((set) => ({\n debug: false,\n setDebug: (debug: boolean) => set({ debug })\n}))\n","import { ProviderConfig, ProviderConfigMapping } from '../types'\nimport { useDebugStore } from '../store/index'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const debugLog = (...args: any[]) => {\n const { debug } = useDebugStore.getState()\n\n if (debug) {\n console.log('%c[USE-WALLET]', 'color: #FF602E; font-weight: bold;', ...(args as unknown[]))\n }\n}\n\nexport const getProviderList = <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>\n) => {\n return providers\n .map((provider) => {\n if (typeof provider === 'string') {\n return provider\n }\n\n return provider.id\n })\n .map((id) => id.toUpperCase())\n .join(', ')\n}\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNzcgMTg3Ij48cmVjdCB4PSItMTEuMzgiIHk9Ii0yNS45NyIgd2lkdGg9IjIwMC4wMiIgaGVpZ2h0PSIyMzEuNTMiIHN0eWxlPSJmaWxsOiNmZTU7Ii8+PHBhdGggZD0iTTk0LjA1LDU5LjYxYzIuMDUsOC40OCwxLjM2LDE1Ljk0LTEuNTUsMTYuNjYtMi45LC43Mi02LjkxLTUuNTctOC45Ni0xNC4wNS0yLjA1LTguNDgtMS4zNi0xNS45NCwxLjU1LTE2LjY2LDIuOS0uNzIsNi45MSw1LjU3LDguOTYsMTQuMDVaIiBzdHlsZT0iZmlsbDojMWMxYzFjOyIvPjxwYXRoIGQ9Ik0xMjcuODUsNjYuOWMtNC41My00LjgxLTEzLjU1LTMuNS0yMC4xNSwyLjkxLTYuNTksNi40MS04LjI2LDE1LjUtMy43MywyMC4zMSw0LjUzLDQuOCwxMy41NSwzLjUsMjAuMTUtMi45MXM4LjI2LTE1LjUsMy43My0yMC4zMVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTkxLjc5LDE0MC40N2MyLjktLjcyLDMuNDktOC42LDEuMzItMTcuNjEtMi4xNy05LTYuMjktMTUuNzEtOS4xOS0xNC45OS0yLjksLjcyLTMuNDksOC42LTEuMzIsMTcuNjEsMi4xNyw5LDYuMjksMTUuNzEsOS4xOSwxNC45OVoiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTYyLjIyLDcxLjNjOC4zNywyLjQ3LDE0LjQ4LDYuOCwxMy42Niw5LjY3LS44MywyLjg3LTguMjgsMy4yLTE2LjY1LC43My04LjM3LTIuNDctMTQuNDgtNi44LTEzLjY2LTkuNjcsLjgzLTIuODcsOC4yOC0zLjIsMTYuNjUtLjczWiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48cGF0aCBkPSJNMTE2LjU0LDEwMy43NGM4Ljg4LDIuNjIsMTUuNDEsNy4wNywxNC41OSw5Ljk0LS44MywyLjg3LTguNywzLjA4LTE3LjU4LC40Ni04Ljg4LTIuNjItMTUuNDEtNy4wNy0xNC41OS05Ljk0LC44My0yLjg3LDguNy0zLjA4LDE3LjU4LS40NloiIHN0eWxlPSJmaWxsOiMxYzFjMWM7Ii8+PHBhdGggZD0iTTcxLjY0LDk3LjcxYy0yLjA4LTIuMTUtOC44OCwuOTgtMTUuMiw2Ljk5LTYuMzIsNi4wMS05Ljc2LDEyLjYzLTcuNjksMTQuNzgsMi4wOCwyLjE1LDguODgtLjk4LDE1LjItNi45OSw2LjMyLTYuMDEsOS43Ni0xMi42Myw3LjY5LTE0Ljc4WiIgc3R5bGU9ImZpbGw6IzFjMWMxYzsiLz48L3N2Zz4='\n","/**\n * Documentation:\n * https://github.com/perawallet/connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { PeraWalletConnect } from '@perawallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n PeraTransaction,\n PeraWalletClientConstructor,\n PeraWalletConnectOptions\n} from './types'\n\nclass PeraWalletClient extends BaseClient {\n #client: PeraWalletConnect\n clientOptions?: PeraWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: PeraWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = PeraWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.PERA,\n name: 'Pera',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.PERA>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initializing...`)\n\n let PeraWalletConnect\n if (clientStatic) {\n PeraWalletConnect = clientStatic\n } else if (getDynamicClient) {\n PeraWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Pera Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const peraWallet = new PeraWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new PeraWalletClient({\n metadata: PeraWalletClient.metadata,\n client: peraWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.PERA.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${PeraWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n\n return {\n ...PeraWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...PeraWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Pera Wallet ${index + 1}`,\n address,\n providerId: PeraWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<PeraTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default PeraWalletClient\n","export const ICON =\n 'data:image/png;base64,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'\n","/**\n * Documentation:\n * https://github.com/RDinitiativ/daffiwallet_connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DaffiWalletConnect } from '@daffiwallet/connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DaffiTransaction,\n DaffiWalletClientConstructor,\n DaffiWalletConnectOptions\n} from './types'\n\nclass DaffiWalletClient extends BaseClient {\n #client: DaffiWalletConnect\n clientOptions?: DaffiWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DaffiWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DaffiWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DAFFI,\n name: 'Daffi',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DAFFI>) {\n try {\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initializing...`)\n\n let DaffiWalletConnect\n if (clientStatic) {\n DaffiWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DaffiWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Daffi Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const daffiWallet = new DaffiWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DaffiWalletClient({\n metadata: DaffiWalletClient.metadata,\n client: daffiWallet,\n clientOptions,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DAFFI.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect()\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${DaffiWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n onDisconnect()\n return null\n }\n\n return {\n ...DaffiWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Daffi Wallet ${index + 1}`,\n address,\n providerId: DaffiWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DaffiTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DaffiWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogIDxjaXJjbGUgZmlsbD0iIzI0NUVDNiIgY3g9IjE2IiBjeT0iMTYiIHI9IjE2Ii8+CiAgPHBvbHlnb24gZmlsbD0iI0ZGRkZGRiIgcG9pbnRzPSIxMi40LDIxLjIgMTQuNSwyMS4yIDE1LjMsMTkuOSAxNi42LDE3LjYgMTguMSwxNC45IDE5LjksMTEuNyAyMC4yLDExLjIgMjAuMywxMS43IDIyLjksMjEuMiAyNSwyMS4yIDIxLjUsOC45IDIxLjQsOC42IDE5LjUsOC42IDE5LjUsOC43IDE3LjgsMTEuOCAxNiwxNC45IDE1LjgsMTQuMSAxNS4yLDExLjcgMTUuMSwxMS41IDE0LjQsOC45IDE0LjMsOC42IDEyLjQsOC42IDEyLjQsOC43IDEwLjcsMTEuOCA4LjksMTUgNy4xLDE4IDUuMywyMS4yIDcuNCwyMS4yIDkuMiwxOCAxMSwxNC44IDEyLjgsMTEuNiAxMy4xLDExLjEgMTMuMiwxMS42IDEzLjcsMTMuNyAxNC40LDE2LjMgMTQuNiwxNy4yIDE0LjIsMTgiLz4KPC9zdmc+'\n","/**\n * Documentation:\n * https://github.com/randlabs/myalgo-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type MyAlgoConnect from '@randlabs/myalgo-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MyAlgoConnectOptions, MyAlgoWalletClientConstructor } from './types'\n\nclass MyAlgoWalletClient extends BaseClient {\n #client: MyAlgoConnect\n clientOptions?: MyAlgoConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: MyAlgoWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = MyAlgoWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MYALGO,\n name: 'MyAlgo',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MYALGO>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initializing...`)\n\n let MyAlgoConnect\n if (clientStatic) {\n MyAlgoConnect = clientStatic\n } else if (getDynamicClient) {\n MyAlgoConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'MyAlgo Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const myAlgo = new MyAlgoConnect({\n ...(clientOptions ? clientOptions : { disableLedgerNano: false })\n })\n\n const provider = new MyAlgoWalletClient({\n metadata: MyAlgoWalletClient.metadata,\n client: myAlgo,\n clientOptions,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MYALGO.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect() {\n const accounts = await this.#client.connect()\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${MyAlgoWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((account) => ({\n ...account,\n providerId: MyAlgoWalletClient.metadata.id\n }))\n\n return {\n ...MyAlgoWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the transactions to be signed\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, add it to the transactions to be signed,\n if (indexesToSign && indexesToSign.length && indexesToSign?.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // Otherwise, if the transaction is unsigned and is to be sent from a connected account,\n // add it to the transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()?.blob\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default MyAlgoWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiLz4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEuNjgyMDksMCwwLDEuNjgyMDksMjI2LjM2OCwyMTIuODE4KSI+CiAgICAgICAgPHBhdGggZD0iTTMyNy4wNDksMjgwLjE5MkwxNjkuNTI0LDEzTDEyLDI4MC4xOTJMMTY5LjUyNCwxODkuMDg0TDMyNy4wNDksMjgwLjE5MloiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS42ODIwOSwwLDAsMS42ODIwOSwyMjYuMzY4LDIxMi44MTgpIj4KICAgICAgICA8cGF0aCBkPSJNMjk5LjU0NiwzMDdMMTY5LjUyNSwyMzguNDczTDM5LjUwNCwzMDdMMTY5LjUyNSwyNjQuNjdMMjk5LjU0NiwzMDdaIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg=='\n","/**\n * Helpful resources:\n * https://github.com/blockshake-io/defly-connect\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DeflyWalletConnect } from '@blockshake/defly-connect'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type {\n DeflyTransaction,\n DeflyWalletClientConstructor,\n DeflyWalletConnectOptions\n} from './types'\n\nclass DeflyWalletClient extends BaseClient {\n #client: DeflyWalletConnect\n clientOptions?: DeflyWalletConnectOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: DeflyWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = DeflyWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.DEFLY,\n name: 'Defly',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.DEFLY>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initializing...`)\n\n let DeflyWalletConnect\n if (clientStatic) {\n DeflyWalletConnect = clientStatic\n } else if (getDynamicClient) {\n DeflyWalletConnect = await getDynamicClient()\n } else {\n throw new Error(\n 'Defly Wallet provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const deflyWallet = new DeflyWalletConnect({\n ...(clientOptions && clientOptions)\n })\n\n const provider = new DeflyWalletClient({\n metadata: DeflyWalletClient.metadata,\n client: deflyWallet,\n algosdk,\n algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.DEFLY.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(onDisconnect: () => void): Promise<Wallet> {\n const accounts = await this.#client.connect().catch(console.info)\n\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts || accounts.length === 0) {\n throw new Error(`No accounts found for ${DeflyWalletClient.metadata.id}`)\n }\n\n const mappedAccounts = accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n async reconnect(onDisconnect: () => void) {\n const accounts = await this.#client.reconnectSession().catch(console.info)\n this.#client.connector?.on('disconnect', onDisconnect)\n\n if (!accounts) {\n return null\n }\n\n return {\n ...DeflyWalletClient.metadata,\n accounts: accounts.map((address: string, index: number) => ({\n name: `Defly Wallet ${index + 1}`,\n address,\n providerId: DeflyWalletClient.metadata.id\n }))\n }\n }\n\n async disconnect() {\n await this.#client.disconnect()\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<DeflyTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified, designate that it should be signed\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // If the indexes to be signed is specified, but it's not included in it,\n // designate that it should not be signed\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(i)) {\n acc.push({\n txn: isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn\n : this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n // If the transaction is unsigned and is to be sent from a connected account,\n // designate that it should be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i])\n })\n // Otherwise, designate that it should not be signed\n } else if (isSigned) {\n acc.push({\n txn: this.algosdk.decodeSignedTransaction(transactions[i]).txn,\n signers: []\n })\n } else if (!isSigned) {\n acc.push({\n txn: this.algosdk.decodeUnsignedTransaction(transactions[i]),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction([txnsToSign])\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default DeflyWalletClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjUuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDAgMzAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNDM0MjYxNjcxNDAxMDY1ODIyNzAwMDAwMDIxMzA3Njg5MDYwNzMxMTM0ODRfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEwMjUxOTMxNjAxNTI3NjU4MTY0MDAwMDAxNjI3NDExMjM4MzE3NTY0MTc1OV8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDEzODU2MzM4MjQ2MjA4NjAyMDM1MDAwMDAxNDg3ODQ5MDI3MDc4MjA3MTIwN18pO30KCS5zdDR7bWFzazp1cmwoI21hc2swXzE2NjFfMjk1XzAwMDAwMDg4MTMyMjUxNTk3NDQxNTczNDkwMDAwMDExNjkzNjEyMDE4NTA2NjgxNDgxXyk7fQoJLnN0NXtmaWxsOnVybCgjU1ZHSURfMDAwMDAxMDYxMjA2MzI0NjE3OTI4NzExNjAwMDAwMDc0MzM5MTMwMzgzMzc3NjY1NzZfKTt9Cjwvc3R5bGU+CjxnPgoJCgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNDYuNjAzIiB5MT0iOS4yMjEyIiB4Mj0iMTc0LjE1OCIgeTI9IjMwOC41NDI2IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xCgkJTDI3NC43LDkzLjl6Ii8+CgkKCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjkuMzUxNiIgeTE9Ii0xOS4xNTczIiB4Mj0iNTYuOTA2NiIgeTI9IjI4MC4xNjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNCQkZCRTAiLz4KCTwvbGluZWFyR3JhZGllbnQ+Cgk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMDE4MjI4MjM3MTUxMjM5MTUxMzIwMDAwMDE3ODM4NjY0MjU5NzY2MjczOTI1Xyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCWw2OS4yLTQ1LjFWMjNMMjUuMyw5My45TDQzLDE1MC4xbC0xNy43LDU2LjJMMTMzLjcsMjc3di0zOS42bC02OS40LTQ1LjFMNzIuNSwxNjYuNHoiLz4KCTxkZWZzPgoJCTxmaWx0ZXIgaWQ9IkFkb2JlX09wYWNpdHlNYXNrRmlsdGVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ij4KCQkJPGZlQ29sb3JNYXRyaXggIHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIxIDAgMCAwIDAgIDAgMSAwIDAgMCAgMCAwIDEgMCAwICAwIDAgMCAxIDAiLz4KCQk8L2ZpbHRlcj4KCTwvZGVmcz4KCQoJCTxtYXNrIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjI1LjQiIHk9IjIzIiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0IiBpZD0ibWFzazBfMTY2MV8yOTVfMDAwMDAwODgxMzIyNTE1OTc0NDE1NzM0OTAwMDAwMTE2OTM2MTIwMTg1MDY2ODE0ODFfIj4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjQ2LjYwMzgiIHkxPSI5LjIyMTQiIHgyPSIxNzQuMTU4OCIgeTI9IjMwOC41NDI4IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzAyKSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMwQjQ2RjkiLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0JCRkJFMCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggc3R5bGU9ImZpbGw6dXJsKCNTVkdJRF8wMDAwMDE2NTkyOTcyNDMwMzE2NDIwMzAwMDAwMDAwNzEwMTkwNDk4NDUxOTkxNTE2Ml8pO2ZpbHRlcjp1cmwoI0Fkb2JlX09wYWNpdHlNYXNrRmlsdGVyKTsiIGQ9IgoJCQlNMjc0LjcsOTMuOUwxNjYuNiwyM3YzOS42bDY5LjQsNDUuMWwtOC4yLDI1LjhoLTYxLjJ2MzIuOWg2MS4ybDguMiwyNS44bC02OS40LDQ1LjFWMjc3bDEwOC4yLTcwLjdMMjU3LDE1MC4xTDI3NC43LDkzLjl6Ii8+CgkJCgkJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMTk4MTE3MDc2MjE0NzI4MTQyNzAwMDAwMTA4Mjk2NTkzODM4NTEyMDI0OTFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyOS4zNTIxIiB5MT0iLTE5LjE1NzEiIHgyPSI1Ni45MDcxIiB5Mj0iMjgwLjE2NDIiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzMDIpIj4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzBCNDZGOSIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQkJGQkUwIi8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE5ODExNzA3NjIxNDcyODE0MjcwMDAwMDEwODI5NjU5MzgzODUxMjAyNDkxXyk7IiBkPSJNNzIuNSwxNjYuNGg2MXYtMzIuOUg3Mi4ybC03LjktMjUuOAoJCQlsNjkuMi00NS4xVjIzTDI1LjMsOTMuOUw0MywxNTAuMWwtMTcuNyw1Ni4yTDEzMy43LDI3N3YtMzkuNmwtNjkuNC00NS4xTDcyLjUsMTY2LjR6Ii8+Cgk8L21hc2s+Cgk8ZyBjbGFzcz0ic3Q0Ij4KCQkKCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDEwOTAxOTkxODU1Nzc3MzA1MzQyMDAwMDAxNzYwMjQwNTkwODA2NzEyMDMwMF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNDYuNDY2MiIgeTE9IjIyOC43NTU0IiB4Mj0iMTcxLjg2MzgiIHkyPSIxMzUuMTAzOSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDMwMikiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiM4OTUyRkY7c3RvcC1vcGFjaXR5OjAuODciLz4KCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0RBQkRGRjtzdG9wLW9wYWNpdHk6MCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJCgkJCTxyZWN0IHg9IjI1LjQiIHk9IjIzIiBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTA5MDE5OTE4NTU3NzczMDUzNDIwMDAwMDE3NjAyNDA1OTA4MDY3MTIwMzAwXyk7IiB3aWR0aD0iMjQ3LjYiIGhlaWdodD0iMjU0Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg=='\n","/**\n * Documentation:\n * https://docs.exodus.com/api-reference/algorand-provider-api/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Exodus, ExodusClientConstructor, ExodusOptions, WindowExtended } from './types'\n\nclass ExodusClient extends BaseClient {\n #client: Exodus\n clientOptions: ExodusOptions\n network: Network\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network\n }: ExodusClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.metadata = ExodusClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.EXODUS,\n name: 'Exodus',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.EXODUS>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).exodus === undefined) {\n throw new Error('Exodus is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const exodus = (window as WindowExtended).exodus.algorand\n\n const provider = new ExodusClient({\n metadata: ExodusClient.metadata,\n client: exodus,\n algosdk: algosdk,\n algodClient: algodClient,\n clientOptions: clientOptions || { onlyIfTrusted: false },\n network\n })\n\n debugLog(`${PROVIDER_ID.EXODUS.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${ExodusClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.exodus.com/web3-wallet'\n )\n return null\n }\n }\n\n async connect() {\n const { address } = await this.#client.connect({\n onlyIfTrusted: this.clientOptions.onlyIfTrusted\n })\n\n if (!address) {\n throw new Error(`No accounts found for ${ExodusClient.metadata.id}`)\n }\n\n const accounts = [\n {\n name: `Exodus 1`,\n address,\n providerId: ExodusClient.metadata.id\n }\n ]\n\n return {\n ...ExodusClient.metadata,\n accounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (\n window === undefined ||\n (window as WindowExtended).exodus === undefined ||\n (window as WindowExtended).exodus.algorand.isConnected !== true\n ) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Get the unsigned transactions.\n const txnsToSign = decodedTxns.reduce<Uint8Array[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n // If the indexes to be signed is specified\n // add it to the arrays of transactions to be signed.\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n // If the transaction isn't already signed and is to be sent from a connected account,\n // add it to the arrays of transactions to be signed\n } else if (!isSigned && connectedAccounts.includes(this.algosdk.encodeAddress(txn['snd']))) {\n signedIndexes.push(i)\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTransaction(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions.\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result.shift()\n signedByUser && acc.push(signedByUser)\n } else if (returnGroup) {\n acc.push(transactions[i])\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n}\n\nexport default ExodusClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PHN2ZyB3aWR0aD0iMjM4IiBoZWlnaHQ9IjIzOCIgdmlld0JveD0iMCAwIDIzOCAyMzgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik01MS43MDUgMTQ1LjA0MkgxMTYuNzA1TDEwNy43MDUgMTU1LjA0Mkg1MS43MDVWMTQ1LjA0MloiIGZpbGw9IiNENjQ1MDAiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDcuNTE5IDE5MS41NTdMMTI5LjU3NyAxNDQuMzk0TDE0Mi40MDQgMTI3LjExMkwxNjcuODc1IDE5MS41NTdIMTQ3LjUxOVpNMTEwLjkzNiA5NS4zOTMyTDEyMC42MTMgMTIwLjgzMUwxMzMuMzU5IDEwNC4yMjhMMTE3LjQ3NSA2NC4wNDIyQzExNS45MjggNjAuMTI4IDExMi4xNDYgNTcuNTU2NSAxMDcuOTM4IDU3LjU1NjVDMTAzLjcyOSA1Ny41NTY1IDk5Ljk0NzQgNjAuMTI4IDk4LjQwMDMgNjQuMDQyMkw2Ny45NjU5IDE0MS4wNDJIODcuNzgwN0M5NS40MTUzIDEyMS4wMTEgMTAyLjg5MyAxMDEuMzk5IDEwNS4xOTggOTUuMzU0MUMxMDUuNjQxIDk0LjE5MTIgMTA2Ljc0MyA5My40NTk5IDEwNy45ODcgOTMuNDU5OUgxMDguMTMyQzEwOS4zNzggOTMuNDU5OSAxMTAuNDkzIDk0LjIyOTMgMTEwLjkzNiA5NS4zOTMyWk04MC45MjEgMTU5LjA0MkM3NC45Mjg5IDE3NC43NjggNjkuODY2MSAxODguMDYzIDY4LjU0NDcgMTkxLjU1N0g0OEw2MC44NTE0IDE1OS4wNDJIODAuOTIxWiIgZmlsbD0iIzIyMkI2MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ni4wMjYgNTQuNzUwOUMxNzcuOTk3IDUyLjA4NzIgMTgxLjc1NCA1MS41MjU3IDE4NC40MTggNTMuNDk2N0MxODcuMDgyIDU1LjQ2NzggMTg3LjY0MyA1OS4yMjUxIDE4NS42NzIgNjEuODg4OEwxMzAuMDEzIDEzNy4xMDdDMTI5LjcxNCAxMzcuNTEyIDEyOS4zNDEgMTM3Ljg1NyAxMjguOTEzIDEzOC4xMjNMMTE3Ljg1NiAxNDUuMDEzQzExNy4wODcgMTQ1LjQ5MyAxMTYuMTI4IDE0NC43ODMgMTE2LjM2MSAxNDMuOTA3TDExOS43MTggMTMxLjMxOEMxMTkuODQ3IDEzMC44MzIgMTIwLjA2OCAxMzAuMzc0IDEyMC4zNjcgMTI5Ljk3TDE3MC42NyA2MS45ODlMMTY5LjkyOSA2MS40NDA1QzE2OS40ODUgNjEuMTEyIDE2OC44NTkgNjEuMjA1NiAxNjguNTMgNjEuNjQ5NkwxNTIuMzExIDgzLjU2ODhDMTUyLjU4NiA4NC4yMDIzIDE1Mi41MjQgODQuOTYxMiAxNTIuMDg0IDg1LjU1NjJMMTQ5LjExIDg5LjU3NTVDMTQ4LjQ1MyA5MC40NjM0IDE0Ny4yMDEgOTAuNjUwNiAxNDYuMzEzIDg5Ljk5MzZDMTQ1LjQyNSA4OS4zMzY2IDE0NS4yMzggODguMDg0MSAxNDUuODk1IDg3LjE5NjJMMTQ3LjY3OSA4NC43ODQ3TDE0OC44NjkgODMuMTc2OUwxNjcuMzA4IDU4LjI1NzRDMTY4LjYyMiA1Ni40ODE1IDE3MS4xMjcgNTYuMTA3MiAxNzIuOTAzIDU3LjQyMTJMMTczLjY0NCA1Ny45Njk3TDE3Ni4wMjYgNTQuNzUwOVoiIGZpbGw9IiNENjQ1MDAiLz4KPC9zdmc+Cg=='\n\nexport const DEFAULT_NETWORK = 'MainNet'\n","/**\n * Documentation:\n * https://github.com/PureStake/algosigner/blob/develop/docs/dApp-integration.md\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { useWalletStore } from '../../store'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type {\n AlgoSigner,\n AlgoSignerClientConstructor,\n AlgoSignerTransaction,\n WindowExtended\n} from './types'\n\nclass AlgoSignerClient extends BaseClient {\n #client: AlgoSigner\n network: Network\n walletStore: typeof useWalletStore\n\n constructor({ metadata, client, algosdk, algodClient, network }: AlgoSignerClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.network = network\n this.walletStore = useWalletStore\n }\n\n static metadata = {\n id: PROVIDER_ID.ALGOSIGNER,\n name: 'AlgoSigner',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.ALGOSIGNER>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initializing...`)\n\n if (typeof window == 'undefined' || (window as WindowExtended).algorand === undefined) {\n throw new Error('AlgoSigner is not available.')\n }\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const algosigner = (window as WindowExtended).algorand\n\n const provider = new AlgoSignerClient({\n metadata: AlgoSignerClient.metadata,\n client: algosigner,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.ALGOSIGNER.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.warn(e)\n console.warn(\n `Error initializing ${AlgoSignerClient.metadata.name}.`,\n 'Do you have the extension installed?',\n 'https://www.purestake.com/technology/algosigner'\n )\n return null\n }\n }\n\n async connect() {\n const { accounts } = await this.#client.enable({ genesisID: this.getGenesisID() })\n\n if (accounts.length === 0) {\n throw new Error(`No accounts found for ${AlgoSignerClient.metadata.id}`)\n }\n\n const mappedAccounts = await Promise.all(\n accounts.map(async (address, index) => {\n // check to see if this is a rekeyed account\n const { 'auth-addr': authAddr } = await this.getAccountInfo(address)\n\n return {\n name: `AlgoSigner ${index + 1}`,\n address,\n providerId: AlgoSignerClient.metadata.id,\n ...(authAddr && { authAddr })\n }\n })\n )\n\n // sort the accounts in the order they were returned by AlgoSigner\n mappedAccounts.sort((a, b) => accounts.indexOf(a.address) - accounts.indexOf(b.address))\n\n return {\n ...AlgoSignerClient.metadata,\n accounts: mappedAccounts\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(onDisconnect: () => void) {\n if (window === undefined || (window as WindowExtended).algorand === undefined) {\n onDisconnect()\n }\n\n return null\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n async signTransactions(\n connectedAccounts: string[],\n transactions: Uint8Array[],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n const signedIndexes: number[] = []\n\n // Marshal the transactions,\n // and add the signers property if they shouldn't be signed.\n const txnsToSign = decodedTxns.reduce<AlgoSignerTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const sender = this.algosdk.encodeAddress(isSigned ? txn.txn.snd : txn.snd)\n const authAddress = this.getAuthAddress(sender) // rekeyed-to account, or undefined\n\n if (indexesToSign && indexesToSign.length && indexesToSign.includes(i)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else if (!isSigned && connectedAccounts.includes(sender)) {\n signedIndexes.push(i)\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(transactions[i]),\n ...(authAddress && { authAddr: authAddress })\n })\n } else {\n acc.push({\n txn: this.#client.encoding.msgpackToBase64(\n isSigned\n ? this.algosdk.decodeSignedTransaction(transactions[i]).txn.toByte()\n : this.algosdk.decodeUnsignedTransaction(transactions[i]).toByte()\n ),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n // Sign them with the client.\n const result = await this.#client.signTxns(txnsToSign)\n\n // Join the newly signed transactions with the original group of transactions\n // if `returnGroup` is true\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedByUser = result[i]\n signedByUser && acc.push(new Uint8Array(Buffer.from(signedByUser, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n getGenesisID() {\n if (this.network === 'betanet') {\n return 'betanet-v1.0'\n }\n if (this.network === 'testnet') {\n return 'testnet-v1.0'\n }\n if (this.network === 'mainnet') {\n return 'mainnet-v1.0'\n }\n return this.network\n }\n\n getAuthAddress(address: string): string | undefined {\n const accounts = this.walletStore.getState().accounts\n const account = accounts.find(\n (acct) => acct.address === address && acct.providerId === this.metadata.id\n )\n\n return account?.authAddr\n }\n}\n\nexport default AlgoSignerClient\n","import { PublicNetwork } from 'src/types'\n\nexport const isPublicNetwork = (network: string): network is PublicNetwork => {\n return network === 'betanet' || network === 'testnet' || network === 'mainnet'\n}\n","import type { PublicNetwork } from 'src/types'\n\nexport const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNDgwIDQ4MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwIDQ4MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMzMzk2RkY7fQo8L3N0eWxlPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTI2LjYsMTY4YzYyLjYtNjEuMywxNjQuMi02MS4zLDIyNi44LDBsNy41LDcuNGMzLjEsMy4xLDMuMSw4LDAsMTEuMWwtMjUuOCwyNS4yYy0xLjYsMS41LTQuMSwxLjUtNS43LDAKCWwtMTAuNC0xMC4yYy00My43LTQyLjgtMTE0LjUtNDIuOC0xNTguMiwwbC0xMS4xLDEwLjljLTEuNiwxLjUtNC4xLDEuNS01LjcsMGwtMjUuOC0yNS4yYy0zLjEtMy4xLTMuMS04LDAtMTEuMUwxMjYuNiwxNjh6CgkgTTQwNi43LDIyMC4ybDIyLjksMjIuNWMzLjEsMy4xLDMuMSw4LDAsMTEuMUwzMjYuMiwzNTUuMWMtMy4xLDMuMS04LjIsMy4xLTExLjMsMGwtNzMuNC03MS45Yy0wLjgtMC44LTIuMS0wLjgtMi44LDBsLTczLjQsNzEuOQoJYy0zLjEsMy4xLTguMiwzLjEtMTEuMywwTDUwLjMsMjUzLjhjLTMuMS0zLjEtMy4xLTgsMC0xMS4xbDIyLjktMjIuNWMzLjEtMy4xLDguMi0zLjEsMTEuMywwbDczLjQsNzEuOWMwLjgsMC44LDIuMSwwLjgsMi44LDAKCWw3My40LTcxLjljMy4xLTMuMSw4LjItMy4xLDExLjMsMGw3My40LDcxLjljMC44LDAuOCwyLjEsMC44LDIuOCwwbDczLjQtNzEuOUMzOTguNSwyMTcuMSw0MDMuNiwyMTcuMSw0MDYuNywyMjAuMkw0MDYuNywyMjAuMnoiLz4KPC9zdmc+Cg=='\n\nexport const ALGORAND_CHAINS: { [key in PublicNetwork]: string } = {\n mainnet: 'algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73k',\n testnet: 'algorand:SGO1GKSzyE7IEPItTxCByw9x8FmnrCDe',\n betanet: 'algorand:mFgazF-2uRS1tMiL9dsj01hJGySEmPN2'\n}\n","import { JsonRpcRequest } from './types'\n\nconst getPayloadId = (): number => {\n const date = Date.now() * Math.pow(10, 3)\n const extra = Math.floor(Math.random() * Math.pow(10, 3))\n return date + extra\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const formatJsonRpcRequest = <T = any>(method: string, params: T): JsonRpcRequest => {\n return {\n id: getPayloadId(),\n jsonrpc: '2.0',\n method,\n params\n }\n}\n","/**\n * Documentation:\n * https://docs.walletconnect.com/2.0/\n */\nimport Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { isPublicNetwork } from '../../utils/types'\nimport { ALGORAND_CHAINS, ICON } from './constants'\nimport { formatJsonRpcRequest } from './utils'\nimport type {\n WalletConnectModalSign,\n WalletConnectModalSignOptions,\n WalletConnectModalSignSession\n} from '@walletconnect/modal-sign-html'\nimport type { DecodedSignedTransaction, DecodedTransaction, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Wallet } from '../../types/wallet'\nimport type { WalletConnectClientConstructor, WalletConnectTransaction } from './types'\n\nclass WalletConnectClient extends BaseClient {\n #client: WalletConnectModalSign\n clientOptions?: WalletConnectModalSignOptions\n network: Network\n chain: string\n\n constructor({\n metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n }: WalletConnectClientConstructor) {\n super(metadata, algosdk, algodClient)\n this.#client = client\n this.clientOptions = clientOptions\n this.network = network\n this.chain = chain\n this.metadata = WalletConnectClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.WALLETCONNECT,\n name: 'WalletConnect',\n icon: ICON,\n isWalletConnect: true\n }\n\n static async init({\n clientOptions,\n algodOptions,\n clientStatic,\n getDynamicClient,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.WALLETCONNECT>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initializing...`)\n\n let Client\n if (clientStatic) {\n Client = clientStatic\n } else if (getDynamicClient) {\n Client = await getDynamicClient()\n } else {\n throw new Error(\n 'WalletConnect provider missing required property: clientStatic or getDynamicClient'\n )\n }\n\n if (!clientOptions) {\n throw new Error('WalletConnect provider missing required property: clientOptions')\n }\n\n if (!isPublicNetwork(network)) {\n throw new Error(\n `WalletConnect only supports Algorand mainnet, testnet, and betanet. \"${network}\" is not supported.`\n )\n }\n\n const chain = ALGORAND_CHAINS[network]\n\n // Initialize client\n const client = new Client({\n ...clientOptions,\n modalOptions: {\n explorerExcludedWalletIds: 'ALL',\n ...clientOptions.modalOptions\n }\n })\n\n // Initialize algod client\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n // Initialize provider client\n const provider = new WalletConnectClient({\n metadata: WalletConnectClient.metadata,\n client,\n clientOptions,\n algosdk,\n algodClient,\n network,\n chain\n })\n\n debugLog(`${PROVIDER_ID.WALLETCONNECT.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (error) {\n console.error('Error initializing WalletConnect client', error)\n return null\n }\n }\n\n public async connect(): Promise<Wallet> {\n const requiredNamespaces = {\n algorand: {\n chains: [this.chain],\n methods: ['algo_signTxn'],\n events: []\n }\n }\n\n try {\n const session: WalletConnectModalSignSession = await this.#client.connect({\n requiredNamespaces\n })\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n } catch (error) {\n console.error('Error connecting to WalletConnect', error)\n throw error\n }\n }\n\n public async reconnect() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n return null\n }\n\n const { accounts } = session.namespaces.algorand\n\n return {\n ...WalletConnectClient.metadata,\n accounts: this.#mapAccounts(accounts)\n }\n }\n\n public async disconnect() {\n try {\n const session = await this.#getSession()\n\n await this.#client.disconnect({\n topic: session.topic,\n // replicates getSdkError('USER_DISCONNECTED') from @walletconnect/utils\n reason: {\n message: 'User disconnected.',\n code: 6000\n }\n })\n } catch (error) {\n console.error('Error disconnecting', error)\n }\n }\n\n public async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign: number[] = [],\n returnGroup = true\n ) {\n // Flatten transactions array if nested\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n const { txnsToSign, signedIndexes } = this.#composeTransactions(\n transactions,\n connectedAccounts,\n indexesToSign\n )\n\n const request = formatJsonRpcRequest('algo_signTxn', [txnsToSign])\n\n const session = await this.#getSession()\n\n const response = await this.#client.request<Array<string | null>>({\n chainId: this.chain,\n topic: session.topic,\n request\n })\n\n // Check if the result is the same length as the transactions\n const lengthsMatch = response.length === transactions.length\n\n // Join the signed transactions with the original group of transactions\n const signedTxns = transactions.reduce<Uint8Array[]>((acc, txn, i) => {\n if (signedIndexes.includes(i)) {\n const signedTxn = lengthsMatch ? response[i] : response.shift()\n signedTxn && acc.push(new Uint8Array(Buffer.from(signedTxn, 'base64')))\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return signedTxns\n }\n\n #composeTransactions(\n transactions: Uint8Array[],\n connectedAccounts: string[],\n indexesToSign: number[]\n ) {\n // Decode the transactions\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<DecodedTransaction | DecodedSignedTransaction>\n\n // Track signed transactions\n const signedIndexes: number[] = []\n\n // Marshal the transactions into WalletConnect format\n const txnsToSign = decodedTxns.reduce<WalletConnectTransaction[]>((acc, txn, i) => {\n const isSigned = 'txn' in txn\n\n const senderAccount = !isSigned\n ? this.algosdk.encodeAddress(txn['snd'])\n : this.algosdk.encodeAddress(txn.txn['snd'])\n\n const shouldSign =\n indexesToSign.includes(i) || (!isSigned && connectedAccounts.includes(senderAccount))\n\n if (shouldSign) {\n signedIndexes.push(i)\n acc.push({\n txn: Buffer.from(transactions[i]).toString('base64')\n })\n } else {\n acc.push({\n txn: isSigned\n ? Buffer.from(\n this.algosdk.encodeUnsignedTransaction(\n this.algosdk.decodeSignedTransaction(transactions[i]).txn\n )\n ).toString('base64')\n : Buffer.from(transactions[i]).toString('base64'),\n signers: []\n })\n }\n\n return acc\n }, [])\n\n return { txnsToSign, signedIndexes }\n }\n\n async #getSession() {\n const session: WalletConnectModalSignSession | undefined = await this.#client.getSession()\n if (typeof session === 'undefined') {\n throw new Error('Session is not connected')\n }\n return session\n }\n\n #mapAccounts(accounts: string[]) {\n return accounts.map((accountStr, index) => ({\n name: `WalletConnect ${index + 1}`,\n address: accountStr.split(':').pop() as string,\n providerId: WalletConnectClient.metadata.id\n }))\n }\n}\n\nexport default WalletConnectClient\n","export const ICON =\n 'data:image/svg+xml;base64,' +\n 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDkuODMgMjEwLjMzIj48dGV4dCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDE2MS4zMSkiIHN0eWxlPSJmb250LWZhbWlseTpJQk1QbGV4U2Fucy1NZWRtLCAmYXBvcztJQk0gUGxleCBTYW5zJmFwb3M7OyBmb250LXNpemU6MTkwcHg7Ij48dHNwYW4geD0iMCIgeT0iMCI+S01EPC90c3Bhbj48L3RleHQ+PC9zdmc+'\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Account, Wallet } from '../../types/wallet'\nimport type { InitWalletHandle, KMDWalletClientConstructor, ListWalletResponse } from './types'\n\nclass KMDWalletClient extends BaseClient {\n #client: _algosdk.Kmd\n #wallet: string\n #password: string\n walletId: string\n network: Network\n\n constructor({\n metadata,\n client,\n wallet,\n password,\n algosdk,\n algodClient,\n network\n }: KMDWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.#client = client\n this.#wallet = wallet\n this.#password = password\n this.walletId = ''\n this.network = network\n this.metadata = KMDWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.KMD,\n name: 'KMD',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.KMD>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initializing...`)\n\n const {\n token = 'a'.repeat(64),\n host = 'http://localhost',\n port = '4002',\n wallet = 'unencrypted-default-wallet',\n password = ''\n } = clientOptions || {}\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n const kmdClient = new algosdk.Kmd(token, host, port)\n\n const provider = new KMDWalletClient({\n metadata: KMDWalletClient.metadata,\n password,\n wallet,\n client: kmdClient,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.KMD.toUpperCase()} initialized`, '✅')\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n // TODO: prompt for wallet and password?\n return {\n ...KMDWalletClient.metadata,\n accounts: await this.listAccounts(this.#wallet, this.requestPassword())\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect(): Promise<Wallet | null> {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pw = prompt('KMD password')\n return pw ? pw : ''\n }\n\n async getWalletToken(walletId: string, password: string): Promise<string> {\n const handleResp: InitWalletHandle = await this.#client.initWalletHandle(walletId, password)\n return handleResp.wallet_handle_token\n }\n\n async releaseToken(token: string): Promise<void> {\n await this.#client.releaseWalletHandle(token)\n }\n\n async listWallets(): Promise<Record<string, string>> {\n const walletResponse = await this.#client.listWallets()\n const walletList: Array<ListWalletResponse> = walletResponse['wallets']\n const walletMap: Record<string, string> = {}\n for (const w of walletList) {\n walletMap[w.name] = w.id\n }\n return walletMap\n }\n\n async listAccounts(wallet: string, password: string): Promise<Array<Account>> {\n // Get a handle token\n const walletId = await this.getWalletId()\n const token = await this.getWalletToken(walletId, password)\n\n // Fetch accounts and format them as lib expects\n const listResponse = await this.#client.listKeys(token)\n const addresses: Array<string> = listResponse['addresses']\n const mappedAccounts = addresses.map((address: string, index: number) => {\n return {\n name: `KMDWallet ${index + 1}`,\n address,\n providerId: KMDWalletClient.metadata.id\n }\n })\n\n // Release handle token\n await this.releaseToken(token)\n\n return mappedAccounts\n }\n\n async getWalletId(): Promise<string> {\n // Use cached if available\n if (this.walletId !== '') return this.walletId\n\n const walletMap = await this.listWallets()\n if (!(this.#wallet in walletMap)) throw Error('No wallet named: ' + this.#wallet)\n this.walletId = walletMap[this.#wallet]\n\n return this.walletId\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n // Get a handle token\n const walletId = await this.getWalletId()\n const pw = this.requestPassword()\n const token = await this.getWalletToken(walletId, pw)\n\n const signedTxns: Array<Uint8Array> = []\n // Sign them with the client.\n const signingPromises: Promise<Uint8Array>[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else {\n const senderAddress = this.algosdk.encodeAddress(dtxn.snd)\n const rekeyAddress = dtxn.rekey ? this.algosdk.encodeAddress(dtxn.rekey) : null\n\n const isSignerConnected = rekeyAddress\n ? connectedAccounts.includes(rekeyAddress) && connectedAccounts.includes(senderAddress)\n : connectedAccounts.includes(senderAddress)\n\n if (!isSignerConnected) {\n return\n }\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n\n const promise = txn.reKeyTo\n ? this.#client.signTransactionWithSpecificPublicKey(token, pw, txn, txn.reKeyTo.publicKey)\n : this.#client.signTransaction(token, pw, txn)\n\n signingPromises.push(promise as Promise<Uint8Array>)\n })\n\n const signingResults = await Promise.all(signingPromises)\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return formattedTxns\n }\n}\n\nexport default KMDWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='UTF-8'%3f%3e %3c!-- Generated by Pixelmator Pro 3.2.2 --%3e %3csvg width='409' height='210' viewBox='0 0 409 210' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctext id='MNEMONIC' xml:space='preserve' x='0' y='129' font-family='Helvetica' font-size='72' fill='black'%3eMNEMONIC%3c/text%3e%3c/svg%3e\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { TransactionsArray } from '../../types/api'\nimport type { Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { MnemonicWalletClientConstructor } from './types'\n\nclass MnemonicWalletClient extends BaseClient {\n #client?: _algosdk.Account\n network: Network\n\n constructor({ metadata, algosdk, algodClient, network }: MnemonicWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.network = network\n this.metadata = MnemonicWalletClient.metadata\n }\n\n static metadata = {\n id: PROVIDER_ID.MNEMONIC,\n name: 'MNEMONIC',\n icon: ICON,\n isWalletConnect: false\n }\n\n static async init({\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.MNEMONIC>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initializing...`)\n\n const algosdk = algosdkStatic || (await Algod.init(algodOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions)\n\n const provider = new MnemonicWalletClient({\n metadata: MnemonicWalletClient.metadata,\n algosdk: algosdk,\n algodClient: algodClient,\n network\n })\n\n debugLog(`${PROVIDER_ID.MNEMONIC.toUpperCase()} initialized`)\n\n return provider\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async connect() {\n const password = this.requestPassword()\n\n if (!password) {\n this.#client = undefined\n throw new Error('Mnemonic passphrase is required')\n }\n\n this.#client = this.algosdk.mnemonicToSecretKey(password)\n\n return {\n ...MnemonicWalletClient.metadata,\n accounts: [\n {\n name: `MnemonicWallet 1`,\n address: this.#client.addr,\n providerId: MnemonicWalletClient.metadata.id\n }\n ]\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async disconnect() {\n this.#client = undefined\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n async reconnect() {\n return null\n }\n\n requestPassword() {\n // TODO: store it locally?\n const pass = prompt('enter mnemonic passphrase, 25 words')\n return pass ? pass : ''\n }\n\n signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ): Promise<Uint8Array[]> {\n if (!this.#client) {\n throw new Error('Client not connected')\n }\n\n // If txnGroups is a nested array, flatten it\n const transactions: Uint8Array[] = Array.isArray(txnGroups[0])\n ? (txnGroups as Uint8Array[][]).flatMap((txn) => txn)\n : (txnGroups as Uint8Array[])\n\n // Decode the transactions to access their properties.\n const decodedTxns = transactions.map((txn) => {\n return this.algosdk.decodeObj(txn)\n }) as Array<_algosdk.EncodedTransaction | _algosdk.EncodedSignedTransaction>\n\n const signedTxns: Uint8Array[] = []\n // Sign them with the client.\n const signingResults: Uint8Array[] = []\n\n decodedTxns.forEach((dtxn, idx) => {\n const isSigned = 'txn' in dtxn\n\n // push the incoming txn into signed, we'll overwrite it later\n signedTxns.push(transactions[idx])\n\n // Its already signed, skip it\n if (isSigned) {\n return\n // Not specified in indexes to sign, skip it\n } else if (indexesToSign && indexesToSign.length && !indexesToSign.includes(Number(idx))) {\n return\n }\n // Not to be signed by our signer, skip it\n else if (!connectedAccounts.includes(this.algosdk.encodeAddress(dtxn.snd))) {\n return\n }\n\n // overwrite with an empty blob\n signedTxns[idx] = new Uint8Array()\n\n const txn = this.algosdk.Transaction.from_obj_for_encoding(dtxn)\n const signedTxn = txn.signTxn(this.#client?.sk as Uint8Array)\n signingResults.push(signedTxn)\n })\n\n // Restore the newly signed txns in the correct order\n let signedIdx = 0\n const formattedTxns = signedTxns.reduce<Uint8Array[]>((acc, txn) => {\n // If its an empty array, infer that it is one of the\n // ones we wanted to have signed and overwrite the empty buff\n if (txn.length === 0) {\n acc.push(signingResults[signedIdx])\n\n signedIdx += 1\n } else if (returnGroup) {\n acc.push(txn)\n }\n\n return acc\n }, [])\n\n return Promise.resolve(formattedTxns)\n }\n\n signEncodedTransactions(_transactions: TransactionsArray): Promise<Uint8Array[]> {\n throw new Error('Method not implemented.')\n }\n}\n\nexport default MnemonicWalletClient\n","export const ICON =\n \"data:image/svg+xml,%3Csvg fill='%23000000' width='800px' height='800px' viewBox='0 0 24 24' id='wallet' data-name='Flat Line' xmlns='http://www.w3.org/2000/svg' class='icon flat-line'%3E%3Cpath id='secondary' d='M16,12h5V8H5A2,2,0,0,1,3,6V19a1,1,0,0,0,1,1H20a1,1,0,0,0,1-1V16H16a1,1,0,0,1-1-1V13A1,1,0,0,1,16,12Z' style='fill: rgb(44, 169, 188); stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary' d='M19,4H5A2,2,0,0,0,3,6H3A2,2,0,0,0,5,8H21' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3Cpath id='primary-2' data-name='primary' d='M21,8V19a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V6A2,2,0,0,0,5,8Zm0,4H16a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1h5Z' style='fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;'%3E%3C/path%3E%3C/svg%3E\"\n","import Algod, { getAlgodClient } from '../../algod'\nimport BaseClient from '../base'\nimport { DEFAULT_NETWORK, PROVIDER_ID } from '../../constants'\nimport { debugLog } from '../../utils/debugLog'\nimport { ICON } from './constants'\nimport type _algosdk from 'algosdk'\nimport type { AlgodClientOptions, Network } from '../../types/node'\nimport type { InitParams } from '../../types/providers'\nimport type { Metadata, Wallet } from '../../types/wallet'\nimport type { CustomProvider, CustomWalletClientConstructor } from './types'\n\nclass CustomWalletClient extends BaseClient {\n network: Network\n providerProxy: CustomProvider\n\n static metadata: Metadata = {\n id: PROVIDER_ID.CUSTOM,\n icon: ICON,\n isWalletConnect: false,\n name: 'Custom'\n }\n\n constructor({\n providerProxy,\n metadata,\n algosdk,\n algodClient,\n network\n }: CustomWalletClientConstructor) {\n super(metadata, algosdk, algodClient)\n\n this.providerProxy = providerProxy\n this.network = network\n }\n\n static async init({\n clientOptions,\n algodOptions,\n algosdkStatic,\n network = DEFAULT_NETWORK\n }: InitParams<PROVIDER_ID.CUSTOM>): Promise<BaseClient | null> {\n try {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initializing...`)\n\n if (!clientOptions) {\n throw new Error(`Attempt to create custom wallet with no provider specified.`)\n }\n\n const algosdk: typeof _algosdk =\n algosdkStatic || (await Algod.init(algodOptions as AlgodClientOptions)).algosdk\n const algodClient = getAlgodClient(algosdk, algodOptions as AlgodClientOptions)\n\n try {\n return new CustomWalletClient({\n providerProxy: clientOptions.getProvider({\n algod: algodClient,\n algosdkStatic: algosdk,\n network\n }),\n metadata: {\n ...CustomWalletClient.metadata,\n name: clientOptions.name,\n icon: clientOptions.icon ?? CustomWalletClient.metadata.icon\n },\n algodClient,\n algosdk,\n network\n })\n } finally {\n debugLog(`${PROVIDER_ID.CUSTOM.toUpperCase()} initialized`, '✅')\n }\n } catch (e) {\n console.error('Error initializing...', e)\n return null\n }\n }\n\n async connect(): Promise<Wallet> {\n return await this.providerProxy.connect(this.metadata)\n }\n\n async disconnect() {\n await this.providerProxy.disconnect()\n }\n\n async reconnect(): Promise<Wallet | null> {\n return await this.providerProxy.reconnect(this.metadata)\n }\n\n async signTransactions(\n connectedAccounts: string[],\n txnGroups: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) {\n return await this.providerProxy.signTransactions(\n connectedAccounts,\n txnGroups,\n indexesToSign,\n returnGroup\n )\n }\n}\n\nexport default CustomWalletClient\n","import pera from './pera'\nimport daffi from './daffi'\nimport myalgo from './myalgo'\nimport defly from './defly'\nimport exodus from './exodus'\nimport algosigner from './algosigner'\nimport walletconnect from './walletconnect2'\nimport kmd from './kmd'\nimport mnemonic from './mnemonic'\nimport { CustomProvider } from './custom/types'\nimport custom from './custom'\n\nexport {\n pera,\n myalgo,\n defly,\n exodus,\n algosigner,\n walletconnect,\n kmd,\n mnemonic,\n custom,\n CustomProvider\n}\n\nexport default {\n [pera.metadata.id]: pera,\n [daffi.metadata.id]: daffi,\n [myalgo.metadata.id]: myalgo,\n [defly.metadata.id]: defly,\n [exodus.metadata.id]: exodus,\n [algosigner.metadata.id]: algosigner,\n [walletconnect.metadata.id]: walletconnect,\n [kmd.metadata.id]: kmd,\n [mnemonic.metadata.id]: mnemonic,\n [custom.metadata.id]: custom\n}\n","import type algosdk from 'algosdk'\nimport allClients from '../clients'\nimport {\n CommonInitParams,\n NodeConfig,\n ProviderConfig,\n ProviderConfigMapping,\n SupportedProviders\n} from '../types'\nimport {\n DEFAULT_NODE_BASEURL,\n DEFAULT_NODE_TOKEN,\n DEFAULT_NODE_PORT,\n DEFAULT_NETWORK\n} from '../constants'\nimport { debugLog, getProviderList } from './debugLog'\n\nexport const initializeProviders = async <T extends keyof ProviderConfigMapping>(\n providers: Array<T | ProviderConfig<T>>,\n nodeConfig?: NodeConfig,\n algosdkStatic?: typeof algosdk\n): Promise<SupportedProviders> => {\n if (typeof window === 'undefined') {\n debugLog('Window object is not available, skipping initialization')\n return {} as SupportedProviders\n }\n\n // Set all providers to null to preserve order\n const initializedProviders = providers.reduce((acc, provider) => {\n const providerId = typeof provider === 'string' ? provider : provider.id\n acc[providerId] = null\n return acc\n }, {} as SupportedProviders)\n\n const {\n network = DEFAULT_NETWORK,\n nodeServer = DEFAULT_NODE_BASEURL,\n nodePort = DEFAULT_NODE_PORT,\n nodeToken = DEFAULT_NODE_TOKEN\n } = nodeConfig || {}\n\n const initClient = async (provider: T | ProviderConfig<T>): Promise<void> => {\n const { id, ...providerConfig } = typeof provider === 'string' ? { id: provider } : provider\n\n const initParams: CommonInitParams = {\n network,\n algodOptions: [nodeToken, nodeServer, nodePort],\n algosdkStatic,\n ...providerConfig\n }\n\n const client = await allClients[id].init(initParams)\n initializedProviders[id] = client\n }\n\n debugLog('Initializing providers:', getProviderList(providers))\n\n const initPromises = providers.map((provider) => initClient(provider))\n await Promise.all(initPromises)\n\n return initializedProviders\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store/index'\n\nexport const clearAccounts = (id: PROVIDER_ID) => {\n const { clearActiveAccount, removeAccounts } = useWalletStore.getState()\n\n clearActiveAccount(id)\n removeAccounts(id)\n}\n","import { PROVIDER_ID } from '../constants'\nimport { useWalletStore } from '../store'\n\nexport const getActiveProviders = () => {\n const accounts = useWalletStore.getState().accounts\n return [...new Set(accounts.map((acct) => acct.providerId))]\n}\n\nexport const isActiveProvider = (id: PROVIDER_ID) => {\n const activeProviders = getActiveProviders()\n return activeProviders.includes(id)\n}\n","import { clearAccounts } from './clearAccounts'\nimport { isActiveProvider } from './providers'\nimport type { SupportedProviders } from '../types/providers'\n\nexport const reconnectProviders = async (providers: SupportedProviders) => {\n try {\n const clients = Object.values(providers)\n\n for (const client of clients) {\n const id = client?.metadata.id\n\n // Only reconnect to active providers\n if (id && isActiveProvider(id)) {\n await client.reconnect(() => clearAccounts(id))\n }\n }\n } catch (e) {\n console.error(e)\n }\n}\n","export type NFDTransactionsArray = ['u' | 's', string][]\n\nexport function encodeNFDTransactionsArray(transactionsArray: NFDTransactionsArray) {\n return transactionsArray.map(([_type, txn]) => {\n return new Uint8Array(Buffer.from(txn, 'base64'))\n })\n}\n","import React, { createContext, useContext } from 'react'\nimport type { SupportedProviders } from '../types/providers'\n\nconst WalletContext = createContext<SupportedProviders | null>(null)\n\nexport const useWalletContext = (): SupportedProviders | null => {\n const context = useContext(WalletContext)\n if (context === undefined) {\n throw new Error('useWallet must be used within the WalletProvider')\n }\n return context\n}\n\nexport interface WalletProviderProps {\n children: React.ReactNode\n value: SupportedProviders | null\n}\n\nexport const WalletProvider = ({ children, value }: WalletProviderProps) => {\n return <WalletContext.Provider value={value}>{children}</WalletContext.Provider>\n}\n","function shallow(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size)\n return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size)\n return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\nvar shallow$1 = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow(objA, objB);\n};\n\nexport { shallow$1 as default, shallow };\n","import { useState, useMemo, useEffect } from 'react'\nimport type algosdk from 'algosdk'\nimport { getAlgosdk } from '../algod'\nimport { useHydratedWalletStore, walletStoreSelector } from '../store/index'\nimport { TransactionsArray, WalletClient, Provider } from '../types'\nimport { PROVIDER_ID } from '../constants'\nimport { useWalletContext } from '../context/WalletContext'\nimport allClients from '../clients'\nimport { clearAccounts } from '../utils/clearAccounts'\nimport { shallow } from 'zustand/shallow'\n\nexport default function useWallet() {\n const [providers, setProviders] = useState<Provider[] | null>(null)\n const clients = useWalletContext()\n\n const {\n activeAccount,\n accounts: connectedAccounts,\n setActiveAccount: _setActiveAccount,\n addAccounts\n } = useHydratedWalletStore(walletStoreSelector, shallow)\n\n const getAccountsByProvider = (id: PROVIDER_ID) => {\n return connectedAccounts.filter((account) => account.providerId === id)\n }\n\n const connectedActiveAccounts = useMemo(\n () => connectedAccounts.filter((account) => account.providerId === activeAccount?.providerId),\n [connectedAccounts, activeAccount]\n )\n\n useEffect(() => {\n if (!clients) {\n setProviders(null)\n return\n }\n\n const supportedClients = Object.keys(clients) as PROVIDER_ID[]\n setProviders(\n supportedClients\n // Remove any clients that didn't initialise\n .filter((id) => !!clients?.[id])\n .map((id) => {\n return {\n ...allClients[id],\n // Override static details with any instance details\n ...clients[id],\n accounts: getAccountsByProvider(id),\n isActive: activeAccount?.providerId === id,\n isConnected: connectedAccounts.some((accounts) => accounts.providerId === id),\n connect: () => connect(id),\n disconnect: () => disconnect(id),\n reconnect: () => reconnect(id),\n setActiveProvider: () => setActive(id),\n setActiveAccount: (account: string) => selectActiveAccount(id, account)\n }\n })\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clients, connectedAccounts, connectedActiveAccounts, activeAccount])\n\n const getClient = (id?: PROVIDER_ID): WalletClient => {\n if (!id) throw new Error('Provider ID is missing.')\n\n const walletClient = clients?.[id]\n\n if (!walletClient) throw new Error(`Client not found for ID: ${id}`)\n\n return walletClient\n }\n\n const status = useMemo(() => {\n if (activeAccount === undefined) {\n return 'initializing'\n }\n\n if (activeAccount === null && connectedAccounts.length) {\n return 'connected'\n }\n\n if (activeAccount === null && !connectedAccounts.length) {\n return 'disconnected'\n }\n\n if (activeAccount && activeAccount.address) {\n return 'active'\n }\n\n return 'error'\n }, [activeAccount, connectedAccounts.length])\n\n const isActive = useMemo(() => {\n return status === 'active'\n }, [status])\n\n const isReady = useMemo(() => {\n return status !== 'initializing'\n }, [status])\n\n const selectActiveAccount = (providerId: PROVIDER_ID, address: string) => {\n try {\n const account = connectedActiveAccounts.find(\n (acct) => acct.address === address && acct.providerId === providerId\n )\n\n if (!account) {\n throw new Error(`No accounts with address ${address} found.`)\n }\n\n _setActiveAccount(account)\n } catch (e) {\n console.error(e)\n }\n }\n\n const connect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.connect(() => clearAccounts(id))\n\n if (!walletInfo || !walletInfo.accounts.length) {\n throw new Error('Failed to connect ' + id)\n }\n\n _setActiveAccount(walletInfo.accounts[0])\n addAccounts(walletInfo.accounts)\n } catch (e) {\n console.error(e)\n }\n }\n\n const reconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n const walletInfo = await walletClient?.reconnect(() => clearAccounts(id))\n\n if (walletInfo && walletInfo.accounts.length) {\n addAccounts(walletInfo.accounts)\n }\n } catch (e) {\n console.error(e)\n await disconnect(id)\n }\n }\n\n const disconnect = async (id: PROVIDER_ID) => {\n try {\n const walletClient = getClient(id)\n\n await walletClient?.disconnect()\n } catch (e) {\n console.error(e)\n } finally {\n clearAccounts(id)\n }\n }\n\n const setActive = (id: PROVIDER_ID) => {\n try {\n const accounts = getAccountsByProvider(id)\n _setActiveAccount(accounts[0])\n } catch (e) {\n console.error(e)\n }\n }\n\n const signTransactions = async (\n transactions: Uint8Array[] | Uint8Array[][],\n indexesToSign?: number[],\n returnGroup = true\n ) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n if (!walletClient || !activeAccount?.address) {\n throw new Error('No wallet found.')\n }\n\n const signedTransactions = await walletClient.signTransactions(\n connectedActiveAccounts.map((acct) => acct.address),\n transactions,\n indexesToSign,\n returnGroup\n )\n\n return signedTransactions\n }\n\n const sendTransactions = async (transactions: Uint8Array[], waitRoundsToConfirm?: number) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n const result = await walletClient?.sendRawTransactions(transactions, waitRoundsToConfirm)\n\n return result\n }\n\n const signer: algosdk.TransactionSigner = async (\n txnGroup: algosdk.Transaction[],\n indexesToSign: number[]\n ) => {\n const algosdk = await getAlgosdk()\n const txnBlobs: Array<Uint8Array> = txnGroup.map(algosdk.encodeUnsignedTransaction)\n\n return await Promise.resolve(signTransactions(txnBlobs, indexesToSign, false))\n }\n\n const getAccountInfo = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n const accountInfo = await walletClient?.getAccountInfo(activeAccount.address)\n\n return accountInfo\n }\n\n const getAddress = () => {\n return activeAccount?.address\n }\n\n const getAssets = async () => {\n if (!activeAccount) throw new Error('No selected account.')\n\n const walletClient = getClient(activeAccount.providerId)\n\n return await walletClient?.getAssets(activeAccount.address)\n }\n\n const groupTransactionsBySender = (transactions: TransactionsArray) => {\n const walletClient = getClient(activeAccount?.providerId)\n\n return walletClient?.groupTransactionsBySender(transactions)\n }\n\n return {\n clients,\n providers,\n connectedAccounts,\n connectedActiveAccounts,\n activeAccount,\n activeAddress: activeAccount?.address,\n status,\n isActive,\n isReady,\n signer,\n signTransactions,\n sendTransactions,\n getAddress,\n groupTransactionsBySender,\n getAccountInfo,\n getAssets\n }\n}\n","import { useState, useEffect } from 'react'\nimport { initializeProviders, reconnectProviders } from '../utils'\nimport { useDebugStore } from '../store'\nimport type algosdk from 'algosdk'\nimport type { NodeConfig, ProvidersArray, SupportedProviders } from '../types/providers'\n\ninterface InitializeProvidersOptions {\n providers: ProvidersArray\n nodeConfig?: NodeConfig\n algosdkStatic?: typeof algosdk\n debug?: boolean\n}\n\nexport default function useInitializeProviders({\n providers,\n nodeConfig,\n algosdkStatic,\n debug = false\n}: InitializeProvidersOptions) {\n // Enable debug mode\n const { setDebug } = useDebugStore()\n useEffect(() => setDebug(debug), [debug, setDebug])\n\n // Initialize providers\n const [walletProviders, setWalletProviders] = useState<SupportedProviders | null>(null)\n\n useEffect(() => {\n async function initializeAndConnect() {\n try {\n // Initialize with provided configuration\n const initializedProviders = await initializeProviders(providers, nodeConfig, algosdkStatic)\n\n setWalletProviders(initializedProviders)\n\n // Reconnect the session when the user returns to the app\n await reconnectProviders(initializedProviders)\n } catch (error) {\n console.error('Error initializing wallet providers:', error)\n }\n }\n\n void initializeAndConnect()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return walletProviders\n}\n"],"names":["PROVIDER_ID","produce","require$$0","require$$1","useDebugValue","useState","useEffect","ICON","pera","daffi","myalgo","defly","exodus","algosigner","walletconnect","kmd","mnemonic","custom","createContext","useContext","React","useMemo"],"mappings":"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AC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CA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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,47]}
|