@luno-kit/core 0.0.6 → 0.0.8
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/dist/{account-DElDu01m.d.cts → chain-xQJ0MDiz.d.cts} +29 -2
- package/dist/{account-DElDu01m.d.ts → chain-xQJ0MDiz.d.ts} +29 -2
- package/dist/chains/index.cjs +2 -1
- package/dist/chains/index.cjs.map +1 -1
- package/dist/chains/index.d.cts +15 -4
- package/dist/chains/index.d.ts +15 -4
- package/dist/chains/index.js +2 -1
- package/dist/chains/index.js.map +1 -1
- package/dist/chunk-5WHVXOMN.js +3 -0
- package/dist/chunk-5WHVXOMN.js.map +1 -0
- package/dist/chunk-AND4WL4I.js +2 -0
- package/dist/chunk-AND4WL4I.js.map +1 -0
- package/dist/chunk-UXRZAYEH.cjs +2 -0
- package/dist/chunk-UXRZAYEH.cjs.map +1 -0
- package/dist/chunk-VDC6UBTV.cjs +3 -0
- package/dist/chunk-VDC6UBTV.cjs.map +1 -0
- package/dist/connector-LTtOKOSm.d.ts +44 -0
- package/dist/connector-LleKwjLP.d.cts +44 -0
- package/dist/connectors/index.cjs +2 -1
- package/dist/connectors/index.cjs.map +1 -1
- package/dist/connectors/index.d.cts +168 -5
- package/dist/connectors/index.d.ts +168 -5
- package/dist/connectors/index.js +2 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -50
- package/dist/index.d.ts +17 -50
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/signer-BimV-6cq.d.cts +6 -0
- package/dist/signer-BimV-6cq.d.ts +6 -0
- package/dist/types/index.cjs +2 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +45 -0
- package/dist/types/index.d.ts +45 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.d.cts +16 -12
- package/dist/utils/index.d.ts +16 -12
- package/dist/utils/index.js +1 -1
- package/package.json +14 -8
- package/dist/chain-9vBVQoCB.d.cts +0 -28
- package/dist/chain-9vBVQoCB.d.ts +0 -28
- package/dist/chunk-GFMVMUPH.js +0 -3
- package/dist/chunk-GFMVMUPH.js.map +0 -1
- package/dist/chunk-JOIV5HSZ.cjs +0 -3
- package/dist/chunk-JOIV5HSZ.cjs.map +0 -1
- package/dist/chunk-LXQJABLC.js +0 -2
- package/dist/chunk-LXQJABLC.js.map +0 -1
- package/dist/chunk-MFLU4CFP.cjs +0 -3
- package/dist/chunk-MFLU4CFP.cjs.map +0 -1
- package/dist/chunk-MYEWIINX.cjs +0 -2
- package/dist/chunk-MYEWIINX.cjs.map +0 -1
- package/dist/chunk-SYUDETGE.js +0 -2
- package/dist/chunk-SYUDETGE.js.map +0 -1
- package/dist/chunk-VGX4US5T.js +0 -3
- package/dist/chunk-VGX4US5T.js.map +0 -1
- package/dist/chunk-WQPMFK4M.cjs +0 -2
- package/dist/chunk-WQPMFK4M.cjs.map +0 -1
- package/dist/index-Cxsn9zGL.d.ts +0 -202
- package/dist/index-PqPDUdlJ.d.cts +0 -202
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/logos/generated/kusamaSVG.ts","../src/config/logos/generated/novaSVG.ts","../src/config/logos/generated/paseoSVG.ts","../src/config/logos/generated/polkadotSVG.ts","../src/config/logos/generated/polkadotjsSVG.ts","../src/config/logos/generated/polkagateSVG.ts","../src/config/logos/generated/subwalletSVG.ts","../src/config/logos/generated/talismanSVG.ts","../src/config/logos/generated/walletconnectSVG.ts","../src/config/logos/generated/westendSVG.ts"],"names":["kusamaSVG","novaSVG","paseoSVG","polkadotSVG","polkadotjsSVG","polkagateSVG","subwalletSVG","talismanSVG","walletconnectSVG","westendSVG"],"mappings":"aAKO,IAAMA,CAAAA,CAAY,6tCCAlB,IAAMC,CAAAA,CAAU,qzECAhB,IAAMC,CAAAA,CAAW,q+JCAjB,IAAMC,CAAAA,CAAc,qjECApB,IAAMC,CAAAA,CAAgB,6tDCAtB,IAAMC,CAAAA,CAAe,6yECArB,IAAMC,CAAAA,CAAe,6/KCArB,IAAMC,CAAAA,CAAc,qlFCApB,IAAMC,CAAAA,CAAmB,6hDCAzB,IAAMC,CAAAA,CAAa","file":"chunk-MYEWIINX.cjs","sourcesContent":["// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const kusamaSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDEgNDQxIj48ZGVmcz48c3R5bGU+LmNscy0xe3N0cm9rZTojMDAwO3N0cm9rZS1taXRlcmxpbWl0OjEwO30uY2xzLTJ7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48dGl0bGU+a3VzYW1hLWtzbS1sb2dvPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSI0NDAiIGhlaWdodD0iNDQwIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzczLjYsMTI3LjRjLTUuMi00LjEtMTEuNC05LjctMjIuNy0xMS4xLTEwLjYtMS40LTIxLjQsNS43LTI4LjcsMTAuNHMtMjEuMSwxOC41LTI2LjgsMjIuNy0yMC4zLDguMS00My44LDIyLjItMTE1LjcsNzMuMy0xMTUuNyw3My4zbDI0LC4zLTEwNyw1NS4xSDYzLjZMNDguMiwzMTJzMTMuNiwzLjYsMjUtMy42djMuM3MxMjcuNC01MC4yLDE1Mi0zNy4ybC0xNSw0LjRjMS4zLDAsMjUuNSwxLjYsMjUuNSwxLjZhMzQuMzQsMzQuMzQsMCwwLDAsMTUuNCwyNC44YzE0LjYsOS42LDE0LjksMTQuOSwxNC45LDE0LjlzLTcuNiwzLjEtNy42LDdjMCwwLDExLjItMy40LDIxLjYtMy4xYTgyLjY0LDgyLjY0LDAsMCwxLDE5LjUsMy4xcy0uOC00LjItMTAuOS03LTIwLjEtMTMuOC0yNS0xOS44YTI4LDI4LDAsMCwxLTQuMS0yNy40YzMuNS05LjEsMTUuNy0xNC4xLDQwLjktMjcuMSwyOS43LTE1LjQsMzYuNS0yNi44LDQwLjctMzUuN3MxMC40LTI2LjYsMTMuOS0zNC45YzQuNC0xMC43LDkuOC0xNi40LDE0LjMtMTkuOHMyNC41LTEwLjksMjQuNS0xMC45UzM3OC41LDEzMS4zLDM3My42LDEyNy40WiIvPjwvZz48L2c+PC9zdmc+';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const novaSVG = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQ5NDFfMTEwODEpIj4KPG1hc2sgaWQ9Im1hc2swXzQ5NDFfMTEwODEiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+CjxwYXRoIGQ9Ik0wIDguMzJDMCAzLjcyNDk5IDMuNzI0OTkgMCA4LjMyIDBIMjMuNjhDMjguMjc1IDAgMzIgMy43MjQ5OSAzMiA4LjMyVjIzLjY4QzMyIDI4LjI3NSAyOC4yNzUgMzIgMjMuNjggMzJIOC4zMkMzLjcyNDk5IDMyIDAgMjguMjc1IDAgMjMuNjhWOC4zMloiIGZpbGw9IiNGRjAwMDAiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzQ5NDFfMTEwODEpIj4KPHJlY3Qgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBmaWxsPSJ1cmwoI3BhaW50MF9yYWRpYWxfNDk0MV8xMTA4MSkiLz4KPC9nPgo8cGF0aCBkPSJNMjcuMjAwMSAxNlYxNi4yOTU3QzI1LjM3MjIgMTYuNTg2OSAyMS40NDc3IDE3LjI2MzQgMTkuNTE2OCAxOC4wMDI2QzE4LjgyNjkgMTguMjY2OSAxOC4yODA0IDE4LjgwOSAxOC4wMTE2IDE5LjQ5NDRDMTcuMjcyNCAyMS40MTY0IDE2LjU4NjkgMjUuMzYzMyAxNi4yOTU3IDI3LjIwMDFIMTUuNzA0NEMxNS40MTMyIDI1LjM2MzMgMTQuNzI3NyAyMS40MTY0IDEzLjk4ODUgMTkuNDk0NEMxMy43MTk3IDE4LjgwOSAxMy4xNjg3IDE4LjI2MjUgMTIuNDgzMiAxOC4wMDI2QzEwLjU1MjQgMTcuMjYzNCA2LjYyNzg5IDE2LjU4NjkgNC44MDAwNSAxNi4yOTU3VjE1LjcwNDRDNi42Mjc4OSAxNS40MTMyIDEwLjU1MjQgMTQuNzM2NyAxMi40ODMyIDEzLjk5NzVDMTMuMTczMiAxMy43MzMyIDEzLjcxOTcgMTMuMTkxMSAxMy45ODg1IDEyLjUwNTdDMTQuNzI3NyAxMC41ODM3IDE1LjQxMzIgNi42MzY4NSAxNS43MDQ0IDQuODAwMDVIMTYuMjk1N0MxNi41ODY5IDYuNjM2ODUgMTcuMjcyNCAxMC41ODM3IDE4LjAxMTYgMTIuNTA1N0MxOC4yODA0IDEzLjE5MTEgMTguODMxNCAxMy43Mzc2IDE5LjUxNjggMTMuOTk3NUMyMS40NDc3IDE0LjczNjcgMjUuMzcyMiAxNS40MTMyIDI3LjIwMDEgMTUuNzA0NFYxNloiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQwX3JhZGlhbF80OTQxXzExMDgxIiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuODA0OTM3IDMwLjIyOTEpIHNjYWxlKDM2LjgwMzUpIj4KPHN0b3Agb2Zmc2V0PSIwLjA1MzMxOTEiIHN0b3AtY29sb3I9IiNEN0QzRTkiLz4KPHN0b3Agb2Zmc2V0PSIwLjE5MzMiIHN0b3AtY29sb3I9IiNBMTlDREUiLz4KPHN0b3Agb2Zmc2V0PSIwLjM4MzQiIHN0b3AtY29sb3I9IiM2OTZCRDkiLz4KPHN0b3Agb2Zmc2V0PSIwLjU0IiBzdG9wLWNvbG9yPSIjM0E1QUU3Ii8+CjxzdG9wIG9mZnNldD0iMC43NzM1IiBzdG9wLWNvbG9yPSIjMjI1RkU3Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA4ODNEMSIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQ5NDFfMTEwODEiPgo8cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const paseoSVG = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI3MHB4IiBoZWlnaHQ9IjcwcHgiIHZpZXdCb3g9IjAgMCA3MCA3MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNzAgNzAiIHhtbDpzcGFjZT0icHJlc2VydmUiPiAgPGltYWdlIGlkPSJpbWFnZTAiIHdpZHRoPSI3MCIgaGVpZ2h0PSI3MCIgeD0iMCIgeT0iMCIKICAgIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRVlBQUFCR0NBTUFBQUJHOEJLMkFBQUFJR05JVWswQUFIb21BQUNBaEFBQStnQUFBSURvCkFBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUlyVUV4VVJRQUFBRE01UURZelB6YzVQemM0UHpnNFB6YzVQemM1UGpjM1BUbzYKT2pjM1BqZzRQemc0UGpnNVBqYzRQalk0UHdBQUFEWTVQRGM1UHpnNVB6ZzRQemMzUGdBQUFEYzRQemM1UHpnNFBqZzRQamc0UGpZNQpQalUxUURnNFBqYzRQamMzUFRNek16ZzRQemM1UGpjM056ZzRQamM0UHpNek16azVPVGc0UGpFeFBUVTFQRGM0UHpnNFB6TTZPaXNyClFEZzVQeVFrSkRjNVBqYzVQamc0UGpVNVBUYzVQemM0UHpjM056WTVQUzR1TGpnNFB6YzNQVGM0UGpnNFBEYzNRRGc0UGprNU9UYzQKUGpjNFB6WTJOamM1UFRjNVBnQUFBRGc0UGpjNFB6VTFRRGc0UFRnNFBqYzRQemczUHpjNVB6YzRQemc1UHpnNVB6WTRQalk1UFRjMwpRRGM0UGpjNFBqTXpRRGc1UVRFN096YzVQamM0UGpjM1B6YzNQelkyUGpjNVBqWTVQemc1UHpnN1B6bzVQenBGUlVGeVhFZVdiVTI1CmZVN0VnMUxiamxiem1qazVQejVjVUVtaGNsRFFpVVdLWjFUbmxFTi9ZVlR6bWtpaWNrT0FZVDlvVmp4UlNreTZmVUp6V3pnNVBrL0UKZzFQbmxFZVdiRHBGUkZieG1sYnlta3FzZUVxc2VrV0xaamc1UFQ5blZVeTVmRS9QaVVxc2R6OW5Wa0JtVkRsRlJWYnptRkRQaVZYegptbFBvbEZYeW1WYjBtbGZ6bWxMY2owN0ZoRGc0UDFiem1WWHhta3V0ZDFUcWxWUG5renhRU2oxY1VGRFFpRUJ4V2xMY2pqdEZSVmJ6Cm0xYm5sRDltVlVGelcwTitZRXV4ZVZYem1VaWhjbFgybWxmeW1reS9mMHFvZFU3RmcwZWRiMVh4bVV5NWZVU0xaams1UFVPQllVN0YKaGpoRlJVaWpjanhUU3YvLy83RUhOa0FBQUFCaWRGSk9Vd0FvVlhtZXY5VG1WQlp6dHU3dXRYRURUSy83cmtvQzBNOVNXOVphR0ttbwpUd1dXbEE3QXZnOGIwaFVpNDlzakROTUh2WkJPUSsvbkYxQUw1RmpJUURpZ0V2WDBFM0N3QWUzc01HQ0F6T0RZNlBqZ2lHdzgyZG9VCjB4cmQvb3BGUW5SVjh2M2czd0FBQUFGaVMwZEV1RTIvSnZZQUFBQUhkRWxOUlFmcEJSOE1PUU9qa2cwM0FBQUYwa2xFUVZSWXc1VlkKaTE4VVJSeGZVaEV5ekZSQU0wWHlsV1pwbUpXbTVoTVVyS0MwU0N0cmp1VWV3OTJ4NSszdEhlMkdkQ0Q0Q0lNN2lFUXplcjhzZS85Nwp6VzhldTNOMyt6aStIejR3N014KzkvZWUzNHlpZUtQbW9TVkxsOVV1UjJoNTdiS2xTK3BxbE1Xai91RVZqNkF5Tkt4OHRINHhIS3NlClc3Mkd2UmtxWTFxenRuRlZsU1JOZGMzd1JoOVMrOE9SYUF3VHhLS1JjTDg2UUpuV3JXK3FodVR4RFhSMVBKSEVaVWdtNG5ScXd4T0IKUkJzM3dVSjFNSVpkRVJ0VVliNWxvei9MNWdZZ0NXdllFMW9ZaUJvMis1QzBQZ21mU21uNE10Y2lyV2NNZUdSazlMU3RvNVpDYUFCdAphZlZpMmJvTjNvankxZGtjbFI4TkNTK3B1U3lmK2dpNHQrOXdaM21xbGt6bW1ENm05VEY4a25uTWdXcVpNRHVzNWNnL08zZTVzVHk5Cm0wd2w4QlZLb2lJUGNDS2NJT05ubnExazJiT1hUSXd3ZFF6a0E0T3A5Z2taN3QxVHp2SmNHM2tjb1F2eUtBQjV1aXhDUm0zbEliMlAKMkpMS1lzYkY2cEFuVDV3cU5rSkcrMHBabmllUDB0VEhUS0VCZjNrTTZ2MDBHZTJYV2VwZklENmlMTnkyb3dGNnFaU0grT3ZGbHlTYQpGdklCOExUcGExeW1KdnVDQVhwcFpIbUx3M0tBUEtkUkYwZFZJdzdybzJSd1FMQWNmQmtoWGZaUmZJeENpTlpYOWxmeWw0N1E3b09jCjVoRFJGVlRLRWxsVGlhaWNsMUJuaElpcHErUGpFOWNjLzBIOGFNU1doempOWVlRc01NeDFyL0lRRFkraEcrTmtjQlBqaVJ2Q1ROUTgKRmtLSEdjdVJJU2JNcDlnSGs3ZkVhS0pQWkt2RnhYbUYwaHhsZW40MmhmRTBXMWtvVWhUY0dhL1pYamVaUFk4Q3k3SGphQWFVbWFWcgppbFpHY3JxYTBTM0c5cmxETTJkUGd6Z3hoRTZjSkRTblF1QzhtNWdJVTlCZE05dlE1MlRCeHAydjhDQTVSV2phV1JvTVk5TXZKeVdhCkx6SWx6aUlwMGE0b0hhY1JTcGJtcEJ0dVM5YkdFYUUzSkZBU29UTWRTaWVYYmNxL1BzelpMTU9UVU5jbHJZZ2hPcFV1eGptTC9kTnAKM2hhSHVZSlhnaVJMMEM3bExEUDRiRkErM2VFOGQ3OWs1dFowZUpwbUVYZ1draHNNTllWMThjS01oenh6aE9pZTlSV0pNcWNjNTFrQQp0Q2hrdnk2UzhRSUVRTFZRaTVpWHZ3eUVHa0t2S3E4aEZLUFNCTmRnQjMxNXptTXdWNzJ1ZE5zeG9TMmkydGpsR0g0ajFLMzBNQnA0CityVzZDQjVXam5YWXB4SHFFVFE2cEdYU1dBUVBUVXlOU2RNamxBck5TWHJOZnpQUDF6cEZxbkt2WUhweHBkNUFDQUxCNEhFNmlOQzMKWVBMWWQ4SHk1S2xuY0FGTTNEeEFIWjRSOFI3OW5uL2pxajhIUkZlQnhBbDNlRHNMUHdpK05Oam5CenQ1Zmd3RmlhUGpuMFQ0dmNtUwpJVTBmbXpJTm5nK1NKbzUvRnNuUVphYzc5ZUtrVkZoU3BVWXVOenBaVG9yR0Frdk5UaWZkQWI4SWptbjZHZi9kM0pxeUMwWEhHVHZkCkFTbEptbDhEVEJPblVaTkVRNmM3N0NLYVpWUHpFczFzTE9HWEg0TnNYMlJGVkRuSDkyT3UxWDJwV0VMOGpLVHMwSmIxVTFNeEZqVlEKcDg0Um1wTW5XQUJhYlA3TzdSSWFHdHZSY0dwTXlqZGpMQnkxQ3lFSnZ1UEh4SFkzelBZL3luT1BMcm4xV3hhWFFvdFNPQnYwMU8vWQoyZTZVOHp6TkxQRzExSVA3RC80Z1c3V3FDNllGN0lhN1VCblVVWFMrcEJYUTNQSTdZeFh0MTZabGptVCt1b2JsVm9BMkppQk9wSlRoClR4Rnc4WnlWTFVvTVpqR3RHNnh2TmFYR1JIbkxhWk5HNFdlb1Vxb2hPRGhRaUJpZ2RmUXZoTjR1YWRyK1pzNExhRUdsMk1Nc3VaMm0KamJXUXBwZDVYQUVkNTRKWjJrSXF2ZDFsRFcwUS9rbGVaZ25VM1NzM3h2dERVbnM5NC9NK2IyZHBQZitYakk1VU5QdklMc2REQWJLdwpuSVIycWF6WlY1UTJJa1ZXbEdNL1NVaE9Zc0hTVm5rUWVrZkk0N1F2THVoRFJzUm1xVHdJS2NxRmk0amJoeDlMWFZuRWNSYUs3c1VMCmJzZTdYVHVKMURuVGowaVFtRkRrYW5zVlYrellEazRRWVIvcEwyTlMreU44cWdoYWI5dXFlS0IxQ3l6WHhXNklrNGxCZG5ENGIyelEKdVNRd1lUTjY5ejNQQTdRaWp2T1dUVlFKZHB4dGVGL3h4Y1lXS24vZW8wTXY1S21tbXdJdUZ3Z3UxYklRUzFkZWRhUlpkdGRlQ2lRaAphRnEvanRzVTZnd1ZxMURNV3Z5U0FEWFhWWFB4UXRHNDFpdjhWamRXeTBGUi84SEtCaEczQWcwckZuY3B4VkZUSjErUmZlaDNSZlkvCktlY2ZTdEhQWDVRQUFBQWxkRVZZZEdSaGRHVTZZM0psWVhSbEFESXdNalV0TURVdE16RlVNVEk2TlRjNk1ETXJNREE2TUREYlhTOEcKQUFBQUpYUkZXSFJrWVhSbE9tMXZaR2xtZVFBeU1ESTFMVEExTFRNeFZERXlPalUzT2pBekt6QXdPakF3cWdDWHVnQUFBQ2gwUlZoMApaR0YwWlRwMGFXMWxjM1JoYlhBQU1qQXlOUzB3TlMwek1WUXhNam8xTnpvd015c3dNRG93TVAwVnRtVUFBQUFBU1VWT1JLNUNZSUk9IiAvPgo8L3N2Zz4K';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const polkadotSVG = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjgwMCIgdmlld0JveD0iMCAwIDgwMCA4MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI4MDAiIGhlaWdodD0iODAwIiByeD0iNDAwIiBmaWxsPSIjRTYwMDdBIi8+CjxwYXRoIGQ9Ik00MDAuMDcyIDI0Ni4wMzhDNDUyLjY2NiAyNDYuMDM4IDQ5NS4zMDIgMjIxLjE4MSA0OTUuMzAyIDE5MC41MTlDNDk1LjMwMiAxNTkuODU3IDQ1Mi42NjYgMTM1IDQwMC4wNzIgMTM1QzM0Ny40NzggMTM1IDMwNC44NDMgMTU5Ljg1NyAzMDQuODQzIDE5MC41MTlDMzA0Ljg0MyAyMjEuMTgxIDM0Ny40NzggMjQ2LjAzOCA0MDAuMDcyIDI0Ni4wMzhaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNDAwLjA3MiA2NjQuMzY0QzQ1Mi42NjYgNjY0LjM2NCA0OTUuMzAyIDYzOS41MDcgNDk1LjMwMiA2MDguODQ1QzQ5NS4zMDIgNTc4LjE4MyA0NTIuNjY2IDU1My4zMjYgNDAwLjA3MiA1NTMuMzI2QzM0Ny40NzggNTUzLjMyNiAzMDQuODQzIDU3OC4xODMgMzA0Ljg0MyA2MDguODQ1QzMwNC44NDMgNjM5LjUwNyAzNDcuNDc4IDY2NC4zNjQgNDAwLjA3MiA2NjQuMzY0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTI2Ny4zNjMgMzIyLjg5QzI5My42NiAyNzcuMjMzIDI5My40ODkgMjI3Ljc4NSAyNjYuOTgyIDIxMi40NDNDMjQwLjQ3NSAxOTcuMTAyIDE5Ny42NjggMjIxLjY3NyAxNzEuMzcxIDI2Ny4zMzNDMTQ1LjA3NCAzMTIuOTg5IDE0NS4yNDUgMzYyLjQzOCAxNzEuNzUzIDM3Ny43NzlDMTk4LjI2IDM5My4xMjEgMjQxLjA2NiAzNjguNTQ2IDI2Ny4zNjMgMzIyLjg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTYyOC43MzEgNTMyLjAyN0M2NTUuMDI4IDQ4Ni4zNzEgNjU0Ljg3MiA0MzYuOTMxIDYyOC4zODIgNDIxLjZDNjAxLjg5MyA0MDYuMjY5IDU1OS4xMDEgNDMwLjg1MiA1MzIuODA0IDQ3Ni41MDhDNTA2LjUwNyA1MjIuMTY1IDUwNi42NjMgNTcxLjYwNSA1MzMuMTUzIDU4Ni45MzZDNTU5LjY0MyA2MDIuMjY3IDYwMi40MzQgNTc3LjY4NCA2MjguNzMxIDUzMi4wMjdaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjY2Ljk5NiA1ODYuOTIzQzI5My41MDMgNTcxLjU4MiAyOTMuNjc0IDUyMi4xMzMgMjY3LjM3NyA0NzYuNDc3QzI0MS4wOCA0MzAuODIxIDE5OC4yNzQgNDA2LjI0NiAxNzEuNzY2IDQyMS41ODdDMTQ1LjI1OSA0MzYuOTI5IDE0NS4wODggNDg2LjM3NyAxNzEuMzg1IDUzMi4wMzRDMTk3LjY4MiA1NzcuNjkgMjQwLjQ4OCA2MDIuMjY1IDI2Ni45OTYgNTg2LjkyM1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik02MjguNDA1IDM3Ny43OTJDNjU0Ljg5NCAzNjIuNDYxIDY1NS4wNTEgMzEzLjAyIDYyOC43NTQgMjY3LjM2NEM2MDIuNDU3IDIyMS43MDggNTU5LjY2NSAxOTcuMTI0IDUzMy4xNzUgMjEyLjQ1NUM1MDYuNjg2IDIyNy43ODcgNTA2LjUzIDI3Ny4yMjcgNTMyLjgyNyAzMjIuODgzQzU1OS4xMjQgMzY4LjUzOSA2MDEuOTE1IDM5My4xMjMgNjI4LjQwNSAzNzcuNzkyWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const polkadotjsSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiCiAgICAgeT0iMHB4IiB2aWV3Qm94PSIxNSAxNSAxNDAgMTQwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxNzAgMTcwO3pvb206IDE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c2NyaXB0IHhtbG5zPSIiLz4KICAgIDxzY3JpcHQgeG1sbnM9IiIgaWQ9ImFyZ2VudC14LWV4dGVuc2lvbiIgZGF0YS1leHRlbnNpb24taWQ9ImRsY29icGppaWdwaWtvb2JvaG1hYmVoaG1oZm9vZGJiIi8+CiAgICA8U0NSSVBUIHhtbG5zPSIiIGlkPSJhbGxvdy1jb3B5X3NjcmlwdCIvPgogICAgPHNjcmlwdCB4bWxucz0iIi8+CiAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogIC5iZzB7ZmlsbDojRkY4QzAwfQogICAgICAgIC5zdDB7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KICAgIDxnPjxjaXJjbGUgY2xhc3M9ImJnMCIgY3g9Ijg1IiBjeT0iODUiIHI9IjcwIi8+CiAgICAgICAgPGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTTg1LDM0LjdjLTIwLjgsMC0zNy44LDE2LjktMzcuOCwzNy44YzAsNC4yLDAuNyw4LjMsMiwxMi4zYzAuOSwyLjcsMy45LDQuMiw2LjcsMy4zYzIuNy0wLjksNC4yLTMuOSwzLjMtNi43IGMtMS4xLTMuMS0xLjYtNi40LTEuNS05LjdDNTguMSw1Ny42LDY5LjUsNDYsODMuNiw0NS4zYzE1LjctMC44LDI4LjcsMTEuNywyOC43LDI3LjJjMCwxNC41LTExLjQsMjYuNC0yNS43LDI3LjIgYzAsMC01LjMsMC4zLTcuOSwwLjdjLTEuMywwLjItMi4zLDAuNC0zLDAuNWMtMC4zLDAuMS0wLjYtMC4yLTAuNS0wLjVsMC45LTQuNEw4MSw3My40YzAuNi0yLjgtMS4yLTUuNi00LTYuMiBjLTIuOC0wLjYtNS42LDEuMi02LjIsNGMwLDAtMTEuOCw1NS0xMS45LDU1LjZjLTAuNiwyLjgsMS4yLDUuNiw0LDYuMmMyLjgsMC42LDUuNi0xLjIsNi4yLTRjMC4xLTAuNiwxLjctNy45LDEuNy03LjkgYzEuMi01LjYsNS44LTkuNywxMS4yLTEwLjRjMS4yLTAuMiw1LjktMC41LDUuOS0wLjVjMTkuNS0xLjUsMzQuOS0xNy44LDM0LjktMzcuN0MxMjIuOCw1MS42LDEwNS44LDM0LjcsODUsMzQuN3ogTTg3LjcsMTIxLjcgYy0zLjQtMC43LTYuOCwxLjQtNy41LDQuOWMtMC43LDMuNCwxLjQsNi44LDQuOSw3LjVjMy40LDAuNyw2LjgtMS40LDcuNS00LjlDOTMuMywxMjUuNyw5MS4yLDEyMi40LDg3LjcsMTIxLjd6Ii8+PC9nPjwvZz4KICAgIDxzY3JpcHQgeG1sbnM9IiIvPjwvc3ZnPgo=';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const polkagateSVG = 'data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjggMTI4Ij4KICAgIDxkZWZzPgogICAgICAgIDxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO30uY2xzLTJ7ZmlsbDojZTMwYjdiO308L3N0eWxlPgogICAgPC9kZWZzPgogICAgPGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSI2NCIgY3k9IjY0IiByPSI2NCIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIgogICAgICAgICAgZD0iTTEwNi4zNCwyOC42N2EyNy40NCwyNy40NCwwLDAsMC04LjItNC43OCw0Niw0NiwwLDAsMC0xNS42MS0yLjgyLDc2LDc2LDAsMCwwLTIyLjQ4LDMuMSw1NSw1NSwwLDAsMC05LjgsMy41bC0uMTYuMDdBNjIuNSw2Mi41LDAsMCwxLDYzLjU2LDI2LjUsMzkuNTksMzkuNTksMCwwLDEsNzcsMjguOTNhMjMuNjcsMjMuNjcsMCwwLDEsNy4wNyw0LjEyLDE3LjA1LDE3LjA1LDAsMCwxLDYuMTcsMTMuNDNBMjYuNDMsMjYuNDMsMCwwLDEsODYuODMsNTksNTEuMDgsNTEuMDgsMCwwLDEsNzUuMDcsNzMuNDJhNzguODksNzguODksMCwwLDEtMjIuOTEsMTRBNzMuMTEsNzMuMTEsMCwwLDEsMjcuNjMsOTIuOWE0NC42Myw0NC42MywwLDAsMS0xMy4xNC0xLjI1LDI5LjQxLDI5LjQxLDAsMCwwLDguODIsNC40LDUwLjU5LDUwLjU5LDAsMCwwLDE3LjUxLDIuMSw4NC43NSw4NC43NSwwLDAsMCwyOC40Ny02LjRBOTEuNzIsOTEuNzIsMCwwLDAsOTUuODgsNzUuNTRhNTkuMjYsNTkuMjYsMCwwLDAsMTMuNjYtMTYuNzYsMzAuODEsMzAuODEsMCwwLDAsNC0xNC41MkExOS43OSwxOS43OSwwLDAsMCwxMDYuMzQsMjguNjdaIgogICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwKSIvPgogICAgPHBhdGggZD0iTTY1LjU2LDgwLjU0YzEtLjY2LDItMS4zNCwzLTItMS42OS0uNC0zLjQ0LS44Ni01LTEuMzMtNC43Ni0xLjQ3LTMuMTctNy44Mi0yLTkuMzhhNjguNzIsNjguNzIsMCwwLDAsNy4xNC0xMy40YzEuNDktNC4xLjE5LTkuMjItLjQ5LTExLjM2LS4xMi0uMzMtLjI0LS42Ny0uMzQtMWwtMS44NC01LjU2YTE5LjU2LDE5LjU2LDAsMCwwLTIuNTMtNC42Nyw3LjU4LDcuNTgsMCwwLDAtNi0zLjE0LDE2LjIyLDE2LjIyLDAsMCwwLTMuNzQuMzNjLTIsLjMyLTQsLjY4LTYsMWExLDEsMCwwLDEtLjIxLDBjLjQ4LjYxLjksMS4xNCwxLjMsMS42Ny41OS44LDEuMTcsMS42MiwxLjc3LDIuNDJBOC42Myw4LjYzLDAsMCwxLDUyLjM0LDM5YTE3LjQ5LDE3LjQ5LDAsMCwxLS4yNCwzLjMyLDcwLjMxLDcwLjMxLDAsMCwwLTUuNDUsOC44OUwzMS43NCw4MC42MmExLjM0LDEuMzQsMCwwLDAtLjA3LjE4bC4wNi4wNiw1LTMsLjA2LjA3UTI4Ljc2LDkwLjgsMjAuNzEsMTAzLjY3bC4wNSwwTDIzLDEwMi40Yy0uNjMsMS41NC0xLjIyLDMtMS44NCw0LjU0QTkuNDksOS40OSwwLDAsMCwyNCwxMDUuNGE3LjgyLDcuODIsMCwwLDAsMi4xLTIuNDlsLjQyLjcxLjI5LS4zNWMzLjczLTQuNzMsNy41OS05LjM2LDExLjYzLTEzLjg0YTEwNy4yNSwxMDcuMjUsMCwwLDEsOS43Ny05Ljc3QTIzLjM2LDIzLjM2LDAsMCwxLDUzLDc2LjM1YTUuNCw1LjQsMCwwLDEsMi0uNTlsLTIuNTksMi43OSwwLDBjMS44OC0xLDIuMTUtLjMxLDQtMS4yN2wuMjEuMjJjMS42MiwxLjkyLDUuMjcsMi42LDcuNzcsMi44MkE3LjUzLDcuNTMsMCwwLDEsNjUuNTYsODAuNTRaIgogICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwKSIvPgo8L3N2Zz4K';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const subwalletSVG = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzA0IiBoZWlnaHQ9IjcwNCIgdmlld0JveD0iMCAwIDcwNCA3MDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMzYyXzgwMTcpIj4KICAgICAgICA8bWFzayBpZD0ibWFzazBfMzYyXzgwMTciIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSI3MDQiCiAgICAgICAgICAgICAgaGVpZ2h0PSI3MDQiPgogICAgICAgICAgICA8cmVjdCB3aWR0aD0iNzA0IiBoZWlnaHQ9IjcwNCIgcng9IjQ4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzYyXzgwMTcpIi8+CiAgICAgICAgPC9tYXNrPgogICAgICAgIDxnIG1hc2s9InVybCgjbWFzazBfMzYyXzgwMTcpIj4KICAgICAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzM2Ml84MDE3KSI+CiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD0iMTg0Ny4wOSIgaGVpZ2h0PSIxMjYwLjc5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTI5IDE3Ni45MzcpIHJvdGF0ZSgtMjMuMjgpIgogICAgICAgICAgICAgICAgICAgICAgZmlsbD0iIzBDMEMwQyIvPgogICAgICAgICAgICAgICAgPGcgb3BhY2l0eT0iMC41IiBmaWx0ZXI9InVybCgjZmlsdGVyMF9mXzM2Ml84MDE3KSI+CiAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgY3g9IjI5MC40NjQiIGN5PSIyMjQuNzUxIiByeD0iMjkwLjQ2NCIgcnk9IjIyNC43NTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC41NzEyMzggMC44MjA3ODUgMC43MjIxOTEgLTAuNjkxNjk0IC03MS45NDk3IDY1MS4wMjEpIiBmaWxsPSIjNzMxMTQwIi8+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8ZyBvcGFjaXR5PSIwLjciIGZpbHRlcj0idXJsKCNmaWx0ZXIxX2ZfMzYyXzgwMTcpIj4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBjeD0iMzIxLjY2NSIgY3k9IjMwNi44MjEiIHJ4PSIzMjEuNjY1IiByeT0iMzA2LjgyMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjgwMjIyOCAtMC41OTcwMTggLTAuNTEwNDgzIC0wLjg1OTg4OCAtMjQ2LjQ3MiAxMzQ2LjM5KSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjMDA0QkZGIi8+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICA8ZyBvcGFjaXR5PSIwLjciIGZpbHRlcj0idXJsKCNmaWx0ZXIyX2ZfMzYyXzgwMTcpIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOTk5LjU1NiAtMTkzLjU4MkM4NTUuMTkgLTE2NS4yNzkgNzgyLjM5MyAtMjg5LjM2NSA2NjYuMTMyIC0xOTYuNzNDMzk2Ljk4IDE3LjcyNTUgODA2LjAxNiA1NzAuMjU0IDExNTAuMzEgNjE0LjgyNEMxMzU3LjQ3IDY0MS42NDEgMTM4OC40NyA2ODcuNDQ0IDE1MTYuMTQgNTE4LjUyNUMxNjQwLjcxIDM1My43MjEgMTY3MC4yNCAyNTAuNDU5IDE2NzcuMzYgMjkuMzkwNUMxNjc5Ljk1IC01MC45ODcgMTY2MS42NyAtMTg5LjkyNSAxNjAwLjcyIC0yNjQuODM5QzE1MzEuMjEgLTM1MC4yNzkgMTQ0My40NyAtMzYxLjQ0MiAxMzQ3LjE4IC0zMzYuNzkyQzEyNDguMDUgLTMxMS40MTYgMTE3OC43MiAtMjI4LjcwOCA5OTkuNTU2IC0xOTMuNTgyWiIKICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjMUU5Qjc2Ii8+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAyXzM2Ml84MDE3KSI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik01MTIgMzAxLjU5OVYyMzQuOTlMMjQ1LjI4NiAxMjhMMTkyIDE1NS4wNkwxOTIuMjgxIDM2Mi4zOEwzOTEuODI0IDQ0Mi43MjdMMjg1LjI1MSA0ODguMTA0VjQ1My4wMTNMMjM2LjMyNCA0MzMuMTUyTDE5Mi4yODEgNDUzLjk2N0wxOTIuMjgxIDU4MC45NEwyNDUuMzMzIDYwOEw1MTIgNDg3LjY4OFY0MDIuMzQ1TDI3MiAzMDYuMjgzVjI0OEw0NjIuNDE3IDMyNC4wOEw1MTIgMzAxLjU5OVoiCiAgICAgICAgICAgICAgICAgIGZpbGw9IndoaXRlIi8+CiAgICAgICAgPC9nPgogICAgPC9nPgogICAgPGRlZnM+CiAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyMF9mXzM2Ml84MDE3IiB4PSItMjc1LjgyNSIgeT0iMTQ5LjMyMiIgd2lkdGg9IjEwNjQuMjMiIGhlaWdodD0iMTE2OS4zIgogICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgogICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgogICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJzaGFwZSIvPgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIxNTAiIHJlc3VsdD0iZWZmZWN0MV9mb3JlZ3JvdW5kQmx1cl8zNjJfODAxNyIvPgogICAgICAgIDwvZmlsdGVyPgogICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcjFfZl8zNjJfODAxNyIgeD0iLTc0Ni45NTciIHk9IjI2NC4xNjciIHdpZHRoPSIxMjAzLjgxIiBoZWlnaHQ9IjEyNTIuNjkiCiAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjE1MCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzM2Ml84MDE3Ii8+CiAgICAgICAgPC9maWx0ZXI+CiAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyMl9mXzM2Ml84MDE3IiB4PSItMjEuMDExNyIgeT0iLTk0OC4yNzEiIHdpZHRoPSIyMjk4LjYxIiBoZWlnaHQ9IjIxODkuNjQiCiAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CiAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+CiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMwMCIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzM2Ml84MDE3Ii8+CiAgICAgICAgPC9maWx0ZXI+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzM2Ml84MDE3IiB4MT0iMzUyIiB5MT0iMCIgeDI9IjM1MiIgeTI9IjcwNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA0QkZGIi8+CiAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzRDRUFBQyIvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8zNjJfODAxNyI+CiAgICAgICAgICAgIDxyZWN0IHdpZHRoPSI3MDQiIGhlaWdodD0iNzA0IiByeD0iMTYiIGZpbGw9IndoaXRlIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgICAgICA8Y2xpcFBhdGggaWQ9ImNsaXAxXzM2Ml84MDE3Ij4KICAgICAgICAgICAgPHJlY3Qgd2lkdGg9IjE4NDcuMDkiIGhlaWdodD0iMTI2MC43OSIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01MjkgMTc2LjkzNykgcm90YXRlKC0yMy4yOCkiLz4KICAgICAgICA8L2NsaXBQYXRoPgogICAgICAgIDxjbGlwUGF0aCBpZD0iY2xpcDJfMzYyXzgwMTciPgogICAgICAgICAgICA8cmVjdCB3aWR0aD0iMzIwIiBoZWlnaHQ9IjQ4MCIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE5MiAxMjgpIi8+CiAgICAgICAgPC9jbGlwUGF0aD4KICAgIDwvZGVmcz4KPC9zdmc+Cg==';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const talismanSVG = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgICA8cGF0aCBmaWxsPSIjZGRmZTc2IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDcwLjI1YzAgMjEuMjU1IDAgMzEuODgzIDQuNDYzIDM5Ljg1MmEzNSAzNSAwIDAgMCAxMy40MzUgMTMuNDM1QzI1Ljg2NyAxMjggMzYuNDk1IDEyOCA1Ny43NSAxMjhoMTIuNWMyMS4yNTUgMCAzMS44ODMgMCAzOS44NTItNC40NjNhMzUgMzUgMCAwIDAgMTMuNDM1LTEzLjQzNUMxMjggMTAyLjEzMyAxMjggOTEuNTA1IDEyOCA3MC4yNXYtMTIuNWMwLTIxLjI1NSAwLTMxLjg4My00LjQ2My0zOS44NTJhMzUgMzUgMCAwIDAtMTMuNDM1LTEzLjQzNUMxMDIuMTMzIDAgOTEuNTA1IDAgNzAuMjUgMGgtMTIuNUMzNi40OTUgMCAyNS44NjcgMCAxNy44OTggNC40NjNBMzUgMzUgMCAwIDAgNC40NjMgMTcuODk4QzAgMjUuODY3IDAgMzYuNDk1IDAgNTcuNzVaIi8+CiAgICA8cGF0aCBmaWxsPSIjZWE1NzUwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMy44NzkgMzUuMTE3LS41IDE5LjE2NWM4LjEwNyA0LjE2OCAxNS43NSA0LjA3NSAyNC43NCAyLjA2MyAzLjU2LTEuMzk3IDYuMDU2LTEuNzAyIDkuNTExIDAgOS4wNjcgMi44MTYgMTYuOTY5IDEuOTUgMjUuMTg1LTIuMjQzbC0uNDg1LTE5LjE4N2MwLTEwLjgwNS03LjAwNC0xNC45NjItMTQuNjMyLTEyLjczOS0uNzc5LjIzMi0xLjk0NCAxLjI3NC0xLjk0NCAyLjIwN2wtLjE4MSAxOC43MzNhMS43NyAxLjc3IDAgMSAxLTMuNTM4LS4wMTVWMjAuMDY3YTguODM4IDguODM4IDAgMCAwLTE3LjY3NSAwVjQzLjFhMS43NyAxLjc3IDAgMSAxLTMuNTM4LjAxNWwtLjE3Ni0xOC43NDNjMC0uOTIzLTEuMTA5LTEuOTYtMS44ODItMi4xOTItOC44LTIuNjEtMTQuODggMi41MzgtMTQuODggMTIuOTM2Wm0yLjQ3NSAyMy44NDNhNDguNDMgNDguNDMgMCAwIDEtNS4yMDktMi4yNTRjLTQuNzMtMi4yNjktMTIuMDk1LTEuNTYyLTE3LjA3MiA0LjExMS0yLjI3NCAyLjYtLjUxNSA2LjM2IDIuNzcgNy40NDggMS41ODMuNTI2IDMuMDE3IDEuNDEzIDQuMzUzIDIuNDA4bC40NjQuMzM2YzQuMTMyIDIuOTY1IDYuNzkzIDcuNDA2IDcuMDU2IDEyLjQ4NmwuMjUzIDQuODEyYTMxLjYxNiAzMS42MTYgMCAwIDAgMTkuNDI4IDI1Ljk1OSAzOC41OSAzOC41OSAwIDAgMCAyOS4zMjcgMCAzMS42MTYgMzEuNjE2IDAgMCAwIDE5LjQyOS0yNS45NTljLjA0Ni0uODI1LjA2MS0xLjY1LjA1MS0yLjQ2NWwuMTI0LTIuMzQ3Yy4yNjMtNS4wOCAyLjkyNC05LjUyIDcuMDU2LTEyLjQ4NmwuNDY0LS4zMzZjMS4zNC0uOTk1IDIuNzctMS44ODIgNC4zNTMtMi40MDggMy4yODUtMS4wODkgNS4wNS00Ljg0OSAyLjc3LTcuNDQ4LTQuOTc4LTUuNjczLTEyLjM0My02LjM3NS0xNy4wNzItNC4xMS0xLjcxOC44MjUtMy40MzUgMS42NS01LjIxIDIuMjUzbC0zLjYyIDEuMjM4LS4wMS4wNDFjLTYuNjU0IDEuODQyLTEyLjEyIDEuODQ3LTE4LjM5OC0uNzQyLTMuMTc3LTEuMzEtNi4zOC0xLjU1OC05LjQ4IDAtNS45NjcgMS44NTYtMTIuMDQ4IDIuNjQtMTguMjA2LjcwMWwtMy42MjYtMS4yMzhabTI2LjY2NSA0NC43MzJjMTMuMzkgMCAyNC4yNDEtMTUuNTk2IDI0LjI0MS0xNS41OTZTNzYuNDEgNzIuNDk5IDYzLjAyIDcyLjQ5OWMtMTMuMzg1IDAtMjQuMjM2IDE1LjU5Ny0yNC4yMzYgMTUuNTk3czEwLjg1MSAxNS41OTYgMjQuMjQgMTUuNTk2Wm0xMC44ODMtMTUuNTk2YzAgNi4wMS00Ljg3MiAxMC44ODItMTAuODgzIDEwLjg4Mi02LjAxIDAtMTAuODgyLTQuODcyLTEwLjg4Mi0xMC44ODJzNC44NzItMTAuODgzIDEwLjg4Mi0xMC44ODMgMTAuODgzIDQuODcyIDEwLjg4MyAxMC44ODNabS0xMC44ODMgNC45MzZhNC45MzYgNC45MzYgMCAxIDAgMC05Ljg3MiA0LjkzNiA0LjkzNiAwIDAgMCAwIDkuODcyWiIvPgo8L3N2Zz4K';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const walletconnectSVG = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8Y2xpcFBhdGggaWQ9ImEiPgogICAgICAgIDxwYXRoIGQ9Im0wIDBoNDAwdjQwMGgtNDAweiIvPgogICAgPC9jbGlwUGF0aD4KICAgIDxnIGNsaXAtcGF0aD0idXJsKCNhKSI+CiAgICAgICAgPGNpcmNsZSBjeD0iMjAwIiBjeT0iMjAwIiBmaWxsPSIjMzM5NmZmIiByPSIxOTkuNSIgc3Ryb2tlPSIjNjZiMWZmIi8+CiAgICAgICAgPHBhdGggZD0ibTEyMi41MTkgMTQ4Ljk2NWM0Mi43OTEtNDEuNzI5IDExMi4xNzEtNDEuNzI5IDE1NC45NjIgMGw1LjE1IDUuMDIyYzIuMTQgMi4wODYgMi4xNCA1LjQ2OSAwIDcuNTU1bC0xNy42MTcgMTcuMThjLTEuMDcgMS4wNDMtMi44MDQgMS4wNDMtMy44NzQgMGwtNy4wODctNi45MTFjLTI5Ljg1My0yOS4xMTEtNzguMjUzLTI5LjExMS0xMDguMTA2IDBsLTcuNTkgNy40MDFjLTEuMDcgMS4wNDMtMi44MDQgMS4wNDMtMy44NzQgMGwtMTcuNjE3LTE3LjE4Yy0yLjE0LTIuMDg2LTIuMTQtNS40NjkgMC03LjU1NXptMTkxLjM5NyAzNS41MjkgMTUuNjc5IDE1LjI5YzIuMTQgMi4wODYgMi4xNCA1LjQ2OSAwIDcuNTU1bC03MC43IDY4Ljk0NGMtMi4xMzkgMi4wODctNS42MDggMi4wODctNy43NDggMGwtNTAuMTc4LTQ4LjkzMWMtLjUzNS0uNTIyLTEuNDAyLS41MjItMS45MzcgMGwtNTAuMTc4IDQ4LjkzMWMtMi4xMzkgMi4wODctNS42MDggMi4wODctNy43NDggMGwtNzAuNzAxNS02OC45NDVjLTIuMTM5Ni0yLjA4Ni0yLjEzOTYtNS40NjkgMC03LjU1NWwxNS42Nzk1LTE1LjI5YzIuMTM5Ni0yLjA4NiA1LjYwODUtMi4wODYgNy43NDgxIDBsNTAuMTc4OSA0OC45MzJjLjUzNS41MjIgMS40MDIuNTIyIDEuOTM3IDBsNTAuMTc3LTQ4LjkzMmMyLjEzOS0yLjA4NyA1LjYwOC0yLjA4NyA3Ljc0OCAwbDUwLjE3OSA0OC45MzJjLjUzNS41MjIgMS40MDIuNTIyIDEuOTM3IDBsNTAuMTc5LTQ4LjkzMWMyLjEzOS0yLjA4NyA1LjYwOC0yLjA4NyA3Ljc0OCAweiIKICAgICAgICAgICAgICBmaWxsPSIjZmZmIi8+CiAgICA8L2c+Cjwvc3ZnPgo=';\n","// Copyright 2025 Luno contributors\n// SPDX-License-Identifier: MIT\n\n// Do not edit. Auto-generated via node scripts/convertLogos.mjs\n\nexport const westendSVG = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTY3MiIgaGVpZ2h0PSIxNjcyIiB2aWV3Qm94PSIwIDAgMTY3MiAxNjcyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8Y2lyY2xlIGN4PSI4MzYuMjc0IiBjeT0iODM2LjIxOSIgcj0iODM1LjQzNiIgZmlsbD0iI0U2MDA3QSIvPgo8bWFzayBpZD0ibWFzazAiIG1hc2stdHlwZT0iYWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNjcyIiBoZWlnaHQ9IjE2NzIiPgo8Y2lyY2xlIGN4PSI4MzYuMjc0IiBjeT0iODM2LjIxOSIgcj0iODM1LjQzNiIgZmlsbD0iI0M0QzRDNCIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazApIj4KPHJlY3QgeD0iLTI5OS45MTkiIHk9Ii02Ni4wNTE4IiB3aWR0aD0iMjg0MC40OCIgaGVpZ2h0PSIxODcxLjM4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXIpIi8+CjxwYXRoIGQ9Ik0tMzAuNjA2MiAtMjcwNC43OEM0LjYxMjU1IC0yMjgzLjY2IDE3Ny4xNDEgLTE4NzkuMSA0NTUuNzcyIC0xNTYyLjI2Qzc0MS41MzUgLTEyMzcuMzUgMTEzNy40MSAtMTAxOC41MSAxNTYxLjgyIC05NDAuNjQ1QzE3NzAuOTEgLTkwMi4xNTggMTk4OS4zNiAtODk0Ljk5OCAyMTk5LjMzIC05MzEuMjQ3QzIzOTkuMDUgLTk2NS43MDYgMjYwMC41NiAtMTA1Mi45NyAyNzEzLjM1IC0xMjMwLjY0QzI3NjMuNzMgLTEzMDkuNCAyNzk0LjQ5IC0xNDAyLjk0IDI3OTMuMTUgLTE0OTYuOTJDMjc5MS44MSAtMTU5Ny4xNiAyNzQ5LjQ2IC0xNjg3LjU2IDI2ODcuNDkgLTE3NjQuNTRDMjYxOC44NCAtMTg1MC4wMSAyNTMxLjAxIC0xOTIyLjUxIDI0NDQuMDggLTE5ODkuMTlDMjM1OC4wNCAtMjA1NC45OCAyMjY1LjMxIC0yMTEzLjE2IDIxNjQuMTEgLTIxNTIuOTlDMTkzOS40MiAtMjI0MC43IDE3MTYuMDcgLTIxOTEuOTIgMTUwMC43NSAtMjEwMS4wN0MxMjcyLjQ5IC0yMDA0Ljg2IDEwNTEuODIgLTE4OTEuMTkgODMwLjY5NyAtMTc4MC42NUMzNzguMjAxIC0xNTU0LjY1IC04NC4xMDMzIC0xMzMxLjMzIC01ODYuNTMgLTEyNDQuNTFDLTcxMi42OTQgLTEyMjIuNTkgLTg0MS4wODcgLTEyMTAuMDUgLTk2OS4wMzUgLTEyMDguNzFDLTEwODMuNjEgLTEyMDcuMzcgLTEyMDcuOTkgLTEyMDguMjYgLTEzMTguOTkgLTEyMzkuNTlDLTEzNjguMDMgLTEyNTMuNDYgLTE0MTguNDEgLTEyNzYuNzQgLTE0NDYuOTQgLTEzMjEuMDRDLTE0ODMuOTQgLTEzNzguMzIgLTE0NzEuMDIgLTE0NDkuOTMgLTE0NTQuOTcgLTE1MTEuNjlDLTE0MjcuNzcgLTE2MTQuNjIgLTEzNzYuNSAtMTcxMC4zOSAtMTMxMC4wOCAtMTc5My4xOEMtMTE3Mi43NyAtMTk2NC41OCAtOTc3Ljk1MSAtMjA3OC4yNSAtNzY4Ljg2NiAtMjEzNy43N0MtNjQ5LjM4OSAtMjE3MS43OCAtNTI1LjQ1NCAtMjE4OS4yNCAtNDAxLjUxOSAtMjE5NS45NUMtMjgyLjA0MiAtMjIwMi4yMSAtMTU0Ljk4NyAtMjIwNi42OSAtMzYuNDAxOSAtMjE4N0M3OS41MDg1IC0yMTY4LjIgMTU5Ljc1NCAtMjA5NS43IDE5OS40MzEgLTE5ODUuNjFDMjM5LjU1NCAtMTg3NS4wNyAyMzIuNDIxIC0xNzU3LjgyIDIyOC40MDkgLTE2NDIuMzZDMjIyLjYxNCAtMTQ2OS4xNyAyMzYuODc5IC0xMjIxLjY5IDQzMS4yNTIgLTExNTAuOThDNTMyLjAwNSAtMTExNC4yOCA2NTIuMzc0IC0xMTUyLjc3IDc1MC44OTcgLTExODEuNDFDODUzLjQzNCAtMTIxMS40IDk1My4yOTUgLTEyNTAuNzggMTA0OC43IC0xMjk4LjY2QzExNDcuMjIgLTEzNDguMzQgMTI0MC44NCAtMTQwNi45NiAxMzI4LjIyIC0xNDc0LjU0QzE0MDMuMTIgLTE1MzEuODIgMTQ5MC4wNSAtMTU5Ni4yNyAxNTQwLjQzIC0xNjc3LjcyQzE1NzYuMDkgLTE3MzUuNDUgMTU5Ni42IC0xODE0LjY2IDE1MzMuMjkgLTE4NjAuMzFDMTUyOS43MyAtMTg2Mi45OSAxNTIzLjQ4IC0xODYyLjU0IDE1MTkuOTIgLTE4NjAuMzFDMTMzNi42OSAtMTc0Ny45OCAxMjM1LjA1IC0xNTQ2LjE0IDExOTYuNzEgLTEzMzkuMzlDMTE2MS4wNCAtMTE0Ni41MSAxMTYxLjkzIC05MDguODcxIDEyOTAuNzcgLTc0OC4yMUMxMzk0LjIgLTYxOS4zMjMgMTU5Ny4wNCAtNTg0Ljg2NCAxNzI0Ljk5IC03MDEuMjJDMTc4Ni4wNyAtNzU2LjcxMyAxODA1LjI0IC04NDIuMTkgMTc3Ny4xNSAtOTE5LjYxMUMxNzQzLjcxIC0xMDExLjM1IDE2NTguMTIgLTEwNzYuMjQgMTU2NC45NCAtMTA5OC42MkMxNDQyLjM1IC0xMTI4LjE2IDEzMTMuMDYgLTEwOTUuMDQgMTE5Ny4xNSAtMTA1NC43NkMxMDg5LjcxIC0xMDE3LjE3IDk4Ni43MyAtOTY3Ljk0NCA4ODguMjA3IC05MTEuMTA5QzY4Mi42ODkgLTc5Mi41MTUgNDk2LjM0IC02NDQuMzg1IDMwNi40MjYgLTUwMi41MTlDMTEyLjQ5OSAtMzU3Ljk2OSAtODYuNzc4MyAtMjE3Ljg5NCAtMzEwLjU3NCAtMTIzLjQ2N0MtNTYxLjU2NSAtMTYuOTU2MSAtODM0Ljg0NiAzNi43NDY4IC0xMTA3LjY4IDMzLjE2NjdDLTEyMzAuNzIgMzEuMzc2NSAtMTM3MS4xNSAyOS4xMzg5IC0xNDgzLjk0IC0yNS45MDY1Qy0xNjA1LjIgLTg1LjQyNzIgLTE2NDIuNjUgLTIxMS42MjkgLTE2MTEuODkgLTMzNi45MzZDLTE1ODIuNDcgLTQ1Ni44NzIgLTE1MDkuMzYgLTU1OC40NiAtMTQyNy4zMyAtNjQ3LjUxN0MtMTM0NS43NCAtNzM2LjEyNyAtMTI1Mi41NyAtODEzLjk5NiAtMTE1Mi43MSAtODgxLjEyNEMtOTUzLjQzMSAtMTAxNC40OSAtNzI5LjYzNSAtMTEwNi4yMyAtNTAwLjQ4OSAtMTE3My44MUMtNDQyLjk4IC0xMTkwLjgxIC0zODUuMDI1IC0xMjA2LjAzIC0zMjcuMDY5IC0xMjE5LjlDLTI2NC42NTYgLTEyMzUuMTIgLTE5NS41NTYgLTEyNTcuNDkgLTEzMC45MTMgLTEyNTMuNDZDMTQuODY2MiAtMTI0NC4wNyAzNy4xNTcgLTEwNjguNjQgNjIuMTIyMyAtOTU1LjQxM0MxNzMuNTc0IC00NTUuNTI5IDIxNi44MTggNjcuMTc4NSA0MjguNTc3IDUzOC44NjhDNDU0Ljg4IDU5Ny45NDIgNDgzLjg1OCA2NTUuNjcyIDUxNS45NTYgNzExLjYxM0M1MzcuODAxIDc1MC4xIDU2NC41NDkgNzkxLjcxOSA2MTEuODA1IDc5OS4zMjdDNzE1LjIzMyA4MTQuOTkxIDc3OC4wOTIgNjgzLjQxOSA4MDguODUzIDYwNi40NDVDODQ5LjQyMSA1MDQuNDA5IDg4My43NDkgMzY4LjM2MiA4NTMuNDM0IDI1OS4xNjZDODI2LjY4NSAxNjMuODQ0IDczNy41MjMgMTI4LjQ4OSA2NDYuMTMyIDEzNi45OTJDNTMyLjAwNSAxNDcuNzMzIDQyNC4xMTkgMjA0LjEyMSAzMjAuNjkyIDI0OS4zMjFDMTkxLjQwNyAzMDUuNzA4IDYzLjQ1OTUgMzY2LjEyNCAtNjMuMTUwNCA0MjguMzNDLTMxNC41ODcgNTUxLjg0NyAtNTYyLjQ1NyA2ODIuNTI0IC04MTQuMzM5IDgwNi4wNEMtMTMxNi43NyAxMDU0LjQyIC0xODQ2LjM5IDEyNzYuODQgLTI0MDkgMTMzNi4zNkMtMjU0NC4wOCAxMzUwLjY4IC0yNjc5LjYgMTM1NS4xNSAtMjgxNS4xMyAxMzQ4LjQ0Qy0yODEwLjY3IDEzNTIuOTEgLTI4MDYuMjEgMTM1Ny4zOSAtMjgwMS43NiAxMzYxLjg2Qy0yNzk4LjE5IDExODcuMzMgLTI2NjUuMzQgMTA0NS4wMiAtMjUwNy41MiA5ODcuMjg3Qy0yMzMyLjMyIDkyMy4yOTIgLTIxMzkuNzMgOTcxLjYyNCAtMTk4My4yNSAxMDYyLjQ3Qy0xODE0LjI5IDExNjAuOTMgLTE2ODQuMTEgMTMwOS4wNiAtMTU2My43NCAxNDYxLjIxQy0xNDQ2LjUgMTYwOS43OSAtMTMzMi44MSAxNzYwLjYxIC0xMjAyLjE5IDE4OTguNDVDLTcyMC4yNzMgMjQwNS40OSAtODguMTE1NyAyNzY3LjU0IDU5My4wODEgMjkyMi4zOEM3NTAuMDA2IDI5NTguMTggOTI4LjMyOSAyOTkxLjc1IDEwNjUuNjQgMjg4NC4zNEMxMTY1LjUgMjgwNi4wMiAxMjEwLjUzIDI2NzkuMzggMTIyNy4wMiAyNTU3LjJDMTI0Ni4xOSAyNDEwLjg2IDEyMzAuMTQgMjI1NS41NyAxMTg1LjEyIDIxMTUuMDVDMTEzNS4xOCAxOTU5LjMxIDEwMjcuNzQgMTg0OS42NyA4NjAuMTIxIDE4MzcuMTRDNjc5LjEyMiAxODIzLjcxIDQ5Mi43NzQgMTg5NS4zMSAzMjAuNjkyIDE5NDAuOTZDMTA2LjI1NyAxOTk3LjggLTEwNy43MzEgMjA1NC42MyAtMzIyLjE2NSAyMTExLjQ3Qy01MzMuOTI1IDIxNjcuNDEgLTc0NS4yMzkgMjIyMy44IC05NTYuOTk4IDIyNzkuNzRDLTEwNjEuMzIgMjMwNy40OCAtMTE2Ni4wOCAyMzM1LjIzIC0xMjcwLjQgMjM2Mi45OEMtMTM3NC4yOCAyMzkwLjcyIC0xNDc4LjU5IDI0MjUuMTggLTE1ODQuMjUgMjQ0NC40M0MtMTY4NS45IDI0NjIuNzcgLTE3NjcuOTIgMjQxNS4zNCAtMTc3MS45NCAyMzA3LjkzQy0xNzc1LjA2IDIyMzAuNTEgLTE3NDcuNDIgMjE1My45OCAtMTcxMy45OCAyMDg1LjUxQy0xNjMzLjI5IDE5MjAuMzcgLTE1NDIuMzUgMTc2MC42MSAtMTQ0Mi4wNCAxNjA2LjY2Qy0xMjM2LjA3IDEyODkuODEgLTk5MC44NzkgOTk4LjQ3NiAtNzEzLjU4NiA3NDIuMDQ0Qy02NDYuMjY5IDY3OS44MzkgLTU3Ny4xNjggNjE5LjQyMyAtNTA2LjI4NCA1NjEuMjQ1Qy01MTIuNTI2IDU2MS4yNDUgLTUxOC43NjcgNTYxLjI0NSAtNTI1LjAwOSA1NjEuMjQ1Qy0zMDguNzkxIDcyOS41MTQgLTI4Ni45NDYgMTAzMC4yNSAtMjQzLjI1NyAxMjgwLjQyQy0yMTUuMTcxIDE0NDEuNTIgLTE3OS45NTIgMTYwMS43NCAtMTM4LjkzOCAxNzYwLjE2Qy0xMTcuOTg1IDE4NDAuNzIgLTk1LjI0ODUgMTkyMC44MiAtNzAuNzI5MiAyMDAwLjQ4Qy01MC42Njc3IDIwNjYuMjcgLTMzLjI4MSAyMTM2LjUzIC0yLjA3NDQ2IDIxOTcuODRDMTguODc4NyAyMjM4LjU2IDUwLjk3NzEgMjI3OS43NCA5OS4xMjQzIDIyODYuNDVDMTQ1LjkzNCAyMjkzLjE2IDE4NC43MTkgMjI2NC41MiAyMTIuMzYgMjIyOS4xN0MyNTIuOTI4IDIxNzYuMzYgMjc4LjM0IDIxMTAuNTcgMzA2LjQyNiAyMDUwLjZDMzM5Ljg2MSAxOTc5LjQ1IDM3MS45NTkgMTkwNy40IDQwMi4yNzUgMTgzNC45QzUyMS4zMDYgMTU1MC43MiA2MTYuNzA5IDEyNTYuMjUgNjg3LjE0NiA5NTYuNDA4Qzc2Ni41IDYxNi43MzggODEzLjc1NiAyNjkuNDU5IDgyOC40NjggLTc5LjYwOTRDODI4LjkxNCAtOTMuMDM1MiA4MTAuMTkgLTk3LjUxMDMgODAzLjUwMyAtODYuMzIyM0M2NDYuMTMyIDE4NC40MyA1NzMuMDIgNTAxLjI3NyA1OTkuMzIyIDgxMy42NDhDNjIxLjE2NyAxMDc1LjQ1IDcyNS4wNCAxMzUzLjgxIDk5NC43NTUgMTQ0Mi40MkMxMTI5LjM5IDE0ODYuNzIgMTI3Ni41MSAxNDgwLjkxIDE0MTQuNzEgMTQ1Ny42M0MxNTU4LjcgMTQzMy40NyAxNzAwLjAyIDEzOTAuOTUgMTgzMi44OCAxMzMwLjU0QzIwOTUuNDYgMTIxMS4wNSAyMzIyLjM4IDEwMTIuMzUgMjQ0Mi4zIDc0NS42MjVDMjQ5OC45MiA2MTkuODcgMjUzMS40NiA0ODIuNDggMjUyOS42OCAzNDQuMTk2QzI1MjguMzQgMjI0LjcwNyAyNTA2Ljk0IDgwLjYwNDIgMjQxMi40MyAtMy4wODI3NkMyMzA0LjEgLTk5LjMwMDMgMjE2MC41NSAtNDIuNDY0OCAyMDU5LjM1IDM0LjUwOTNDMTk1Mi4zNSAxMTUuOTU4IDE4NjIuNzUgMjE5Ljc4NCAxNzkyLjc1IDMzNC4zNUMxNDU3Ljk1IDg4MS4yMjQgMTU4MS40NCAxNTg2LjA3IDE3NjQuMjIgMjE2My44M0MxOTQ2LjU2IDI3MzkuMzQgMjI0Ny40OCAzMjc2LjgyIDI2NDMuOCAzNzMxLjVDMjY5Mi40IDM3ODcuNDQgMjc0Mi43NyAzODQyLjA0IDI3OTQuNDkgMzg5NS4zQzI4MDYuOTcgMzkwNy44MyAyODIzLjkxIDM4ODkuNDggMjgxMy4yMSAzODc2LjVDMjI3OS4xMyAzMTk2LjcxIDE3MDkuODMgMjU0NC42NyAxMTA3LjEgMTkyNC44NUM1MDguMzc3IDEzMDkuNSAtMTIyLjg4OSA3MjQuNTkxIC03ODIuNjg2IDE3NS4wMzJDLTEwOTkuNjYgLTg5LjAwNzMgLTE0MzAuODkgLTMzNi4wNDEgLTE3NDMuNDEgLTYwNS4wMDJDLTE4OTEuNDEgLTczMi41NDcgLTIwMzQuMDcgLTg2Ni44MDQgLTIxNjMuMzYgLTEwMTMuNTlDLTIyMzAuMjMgLTEwODkuNjcgLTIyOTMuNTMgLTExNjkuMzMgLTIzNTEuNDkgLTEyNTIuNTdDLTIzNzcuMzUgLTEyOTAuMTYgLTI0MDIuNzYgLTEzMjguMiAtMjQyNi4zOCAtMTM2Ny4xNEMtMjQzOC40MiAtMTM4Ni44MyAtMjQ1MC4wMSAtMTQwNi41MiAtMjQ2MS4xNiAtMTQyNi4yMUMtMjQ3OC4xIC0xNDU1Ljc0IC0yNDc3LjY1IC0xNDY5LjE3IC0yNDYyLjk0IC0xNDk5LjE1Qy0yMzgxLjggLTE2NjIuMDUgLTIxNTUuNzggLTE2OTIuNDkgLTE5OTUuNzMgLTE3MDguNkMtMTc4My41MyAtMTcyOS42MyAtMTU2OS41NCAtMTcxOC40NCAtMTM1OS41NiAtMTY4MS4zQy05MzYuMDQ1IC0xNjA2LjU2IC01MzUuMjYyIC0xNDM0LjcxIC0xNTcuNjYyIC0xMjMyLjg4QzU3OC44MTUgLTgzOS45NTIgMTI0Ni42NCAtMzEwLjk3OSAyMDQyLjQxIC0zNi4xOTk1QzIyMzEuNDMgMjkuMTM4OSAyNDI1LjggNzguODE0IDI2MjQuMTkgMTA1LjIxOEMyNzIzLjE2IDExOC42NDQgMjgyMi41NyAxMjYuMjUxIDI5MjIuNDMgMTI3LjU5NEMyOTYzLjg5IDEyOC4wNDIgMjk4NC40IDEzNi45OTIgMzAwNC45MSA5OS40MDAxQzMwMjQuOTcgNjIuNzAzMSAzMDM2LjEyIDIxLjUzMSAzMDM5LjI0IC0yMC41MzYxQzMwNTIuNjEgLTE4Ny4wMTUgMjk1Mi4zIC0zNDQuOTkxIDI4MjguODEgLTQ0Ny45MjFDMjcwNi42NiAtNTQ5LjUwOSAyNTUzLjc1IC02MDcuMjQgMjM5OC4xNiAtNjMwLjUxMUMyMDE4LjMzIC02ODYuODk5IDE2NjMuMDIgLTUzMi41MDMgMTMzNC4wMiAtMzU3Ljk2OUMxMjQyLjE4IC0zMDkuMTg5IDExNTEuMjMgLTI1OS4wNjYgMTA1OS40IC0yMTAuNzM0Qzk3Mi45MSAtMTY1LjA4NiA4MzguMjc2IC02Ni42MzExIDc0MC4xOTggLTEyNy45NDJDNjY3LjA4NSAtMTczLjU4OSA2NTAuMTQ0IC0yNzcuNDE1IDY0MC4zMzcgLTM1Ni4xNzlDNjI2LjA3MSAtNDcyLjA4OCA2MTcuMTU1IC01ODguODkxIDYwOS41NzYgLTcwNS4yNDhDNTc5LjcwNyAtMTE2OC44OCA1OTMuNTI3IC0xNjM1LjIgNjUxLjAzNiAtMjA5Ni4xNUM2NjUuNzQ4IC0yMjE2LjA5IDY4NC4wMjYgLTIzMzYuMDIgNzA0Ljk3OSAtMjQ1NS4wN0M3MjEuOTIgLTI1NTEuMjggNzMzLjUxMSAtMjY1NS4xMSA3NzMuNjM0IC0yNzQ1LjUxQzgxNC4yMDIgLTI4MzUuOTEgODk0Ljg5NCAtMjg5NC41MyA5OTYuMDkzIC0yODU4LjI4QzEwOTMuMjggLTI4MjMuMzggMTE2Ni4zOSAtMjczNC4zMiAxMjM0LjYgLTI2NjAuNDhDMTcyMS40MiAtMjEzMS45NSAyMDUwLjg4IC0xNDUzLjk1IDI2MzQuNDQgLTEwMTguMDdDMjc4Ny4zNSAtOTAzLjk0OCAyOTYzLjg5IC03OTAuNzI1IDMxNTYuMDQgLTc2NS4yMTZDMzMxMi45NiAtNzQ0LjE4MiAzNDkzLjk2IC03OTcuODg1IDM1NzcuNzcgLTk0Mi40MzVDMzYyNS45MiAtMTAyNS42NyAzNjI3LjcgLTExMjMuNjggMzYxNy40NSAtMTIxNi43N0MzNjA2LjMxIC0xMzE4LjggMzU4NS44IC0xNDIwLjM5IDM1NjMuMDYgLTE1MjAuNjRDMzUxNy4xNCAtMTcyMi4wMiAzNDUzLjM5IC0xOTE4LjkzIDMzNzMuMTUgLTIxMDguNjhDMzI5Mi4wMSAtMjI5OS43NyAzMTkzLjkzIC0yNDgzLjI2IDMwODAuMjUgLTI2NTYuOUMzMDc3LjEzIC0yNjYxLjgyIDMwNzAuODkgLTI2NjQuOTUgMzA2NS4wOSAtMjY2My4xNkMyNjg5LjcyIC0yNTMwLjI1IDI1NTYuODcgLTIxMTkuNDIgMjM2OC43NCAtMTgwNy41QzIyNjMuMDggLTE2MzIuMDcgMjEyMS4zMSAtMTQ1NC44NSAxOTI5LjYyIC0xMzcwLjcyQzE3MjcuNjcgLTEyODEuNjYgMTUxMSAtMTM0My44NiAxMzYxLjY2IC0xNTAwLjVDMTE2OS45NiAtMTcwMS44OCAxMTI3LjYxIC0xOTg3Ljg1IDEwOTAuMTYgLTIyNTEuNDRDMTA4My40NyAtMjI0Ni41MiAxMDc3LjIzIC0yMjQxLjE1IDEwNzAuNTQgLTIyMzYuMjNDMTQwOC4wMiAtMjA4OC4xIDE1NDguNDUgLTE3MTYuNjUgMTY4Ny4xIC0xNDAxLjU5QzE3MjMuNjUgLTEzMTguMzYgMTc2MS4xIC0xMjM1LjU2IDE4MDMuMDEgLTExNTUuMDFDMTg1NS42MSAtMTA1My44NyAxOTE1LjggLTk1Ny4yMDMgMTk2OS4yOSAtODU2LjA2M0MyMDY4LjI2IC02NjguNTUxIDIxNDUuODMgLTQ1MC4xNTkgMjA4MS42NCAtMjM3LjU4NUMyMDIwLjU2IC0zNS43NTIgMTgzNi40NCA0My4wMTIyIDE2NjIuMTMgMTI2LjY5OUMxNTgzLjIyIDE2NC43MzkgMTUwNC4zMSAyMDYuMzU4IDE0NDAuMTIgMjY2Ljc3NEMxMzY5LjY4IDMzMy4wMDggMTMyMi40MiA0MTguOTMyIDEyODQuMDggNTA2LjY0N0MxMjA1LjE4IDY4Ny44OTQgMTE1MS42OCA5MDEuODEgOTc0LjI0OCAxMDE0LjE0Qzg3My45NDEgMTA3Ny42OSA3NjguMjg0IDEwNjkuNjMgNjYzLjA3MyAxMDIxLjc1QzU3My45MTEgOTgxLjQ3IDQ5MS40MzYgOTM0LjkyNyAzOTUuMTQyIDkxMi41NTFDNDIuOTUyMSA4MzEuNTQ5IC0zNzQuMzI1IDk5Ny41OCAtNTI0LjU2MyAxMzQwLjM4Qy02MTEuNDk2IDE1MzkuMDggLTU2Mi45MDMgMTc1OS4yNyAtNDcxLjA2NiAxOTQ3LjIzQy0zODcuMjU0IDIxMTguNjMgLTI2NC42NTYgMjI2OS44OSAtMTIwLjIxNCAyMzkzLjg1QzIwMC4zMjMgMjY2OC42MyA2MTQuNDggMjc5Ny41MiAxMDMxLjc2IDI4MTEuODRDMTI1NC4yMiAyODE5LjQ1IDE0ODEuNTggMjc5OC40MiAxNjk4LjY5IDI3NDkuMTlDMTg3MS42NiAyNzA5LjgxIDIwNDUuMDggMjY0Ni4yNiAyMTg2LjQgMjUzNS43MkMyMzI2LjM5IDI0MjYuNTIgMjQxOC4yMiAyMjcwLjc5IDI0MjguOTIgMjA5MS4zM0MyNDQyLjMgMTg3Mi45NCAyMzQ5LjEyIDE2NjEuNzEgMjI0OC4zNyAxNDczLjc1QzIxNDEuODIgMTI3NS4wNSAyMDE2LjU1IDEwNzUuNDUgMTk4NC40NSA4NDguMTA3QzE5NTUuMDMgNjQxLjM1MSAyMDIxLjAxIDQ0My4wOTkgMjExOC42NCAyNjMuMTk0QzIyMTMuNiA4Ny43NjQ2IDIzMzMuNTIgLTcyLjAwMTUgMjQzNC4yNyAtMjQzLjg1MUMyNTQ1LjI4IC00MzMuMTUzIDI2MTIuNiAtNjM2LjMyOSAyNjY4Ljc3IC04NDguMDA4QzI3NjkuMDggLTEyMjcuOTYgMjg4NS40MyAtMTcxMS43MyAzMjkxLjEyIC0xODc2LjQyQzM1MTkuODIgLTE5NjkuNSAzNzcwLjgxIC0xOTA3LjMgMzk5NC42MSAtMTgzMS4yMkM0MTkyLjEgLTE3NjQuMDkgNDM5MC45MyAtMTY5MS41OSA0NTc3LjcyIC0xNTk3LjYxQzQ3NTQuMjYgLTE1MDkgNDkyMS44OSAtMTM5NS43OCA1MDQ2LjI3IC0xMjQwLjA0QzUwNjIuNzYgLTEyMTkuNDUgNTA4OC4xOCAtMTE5OC44NyA1MDc3LjQ4IC0xMTczLjM2QzUwNjkuOSAtMTE1NS40NiA1MDU1LjYzIC0xMTM4LjQ1IDUwNDQuNDkgLTExMjIuNzlDNTAxNS4wNiAtMTA4MS42MSA0OTgxLjYzIC0xMDQzLjU4IDQ5NDQuNjIgLTEwMDguNjdDNDg3NS41MiAtOTQyLjg4MyA0Nzk1LjcyIC04ODkuNjI3IDQ3MTEuNDcgLTg0Ni42NjVDNDUzNi43MSAtNzU3LjE2IDQzNDEuODkgLTcwOS43MjMgNDE0Ny45NiAtNjg3LjM0N0MzOTI1LjA2IC02NjEuMzkgMzY5OS40OCAtNjYyLjczMyAzNDc2LjEzIC02ODYuODk5QzMwMTguNzMgLTczNi41NzQgMjU3NC43IC04ODIuOTE1IDIxNjAuNTUgLTEwODAuNzJDMTk1NS4wMyAtMTE3OC43MyAxNzU2LjIgLTEyOTAuNjEgMTU2My42MSAtMTQxMS44OUMxMzc3LjI2IC0xNTI5LjU5IDExOTYuMjYgLTE2NTUuMzQgMTAwNi4zNSAtMTc2Ny4yMkM4MjIuMjI3IC0xODc1LjUyIDYyOC4zIC0xOTcxLjI5IDQyMC45OTkgLTIwMjcuMjNDMjQ3LjU3OSAtMjA3NC4yMiAtMC43MzcwNjEgLTIxMDguMjMgLTk3LjQ3NzggLTE5MTIuMjJDLTEyOS4xMyAtMTg0OC4yMiAtMTI2LjQ1NSAtMTc3Mi4xNCAtODQuNTQ5MSAtMTcxMy41MkMtNDkuNzc2MSAtMTY2NC43NCA1LjUwNDE1IC0xNjM3LjQ0IDYwLjc4NDcgLTE2MTcuNzVDMTk2LjMxMSAtMTU2OS40MiAzODEuMzIyIC0xNTYwLjQ3IDQ1Ny4xMDkgLTE0MTcuNzFDNTM5LjU4NCAtMTI2Mi40MSA0NzAuNDgzIC0xMDcwLjQzIDU0NC45MzQgLTkxMi4wMDRDNTU5LjE5OSAtODgxLjU3MiA1NzMuMDIgLTg1Mi4wMzUgNjA3LjM0NyAtODQ1Ljc3QzY0My45MDMgLTgzOS4wNTcgNjgxLjc5NyAtODQzLjA4NSA3MTcuOTA3IC04NTAuNjkzQzc5Ni4zNyAtODY2LjgwNCA4ODIuNDExIC05MTMuNzk0IDk2My45OTQgLTg5OS40NzNDMTA3NC4xMSAtODgwLjIyOSAxMDY1LjY0IC03NTMuNTggMTA5My43MiAtNjcxLjY4M0MxMTE2LjAyIC02MDcuMjQgMTE3OS4zMiAtNTM2Ljk3OSAxMjUyLjg4IC01NjUuNjJDMTI2NC4wMiAtNTcwLjA5NSAxMjY2LjcgLTU4OC40NDQgMTI1Mi44OCAtNTkxLjU3NkM5MTcuNjMgLTY2Ny42NTYgNTY4LjExNSAtNjQ5LjMwNyAyMjYuNjI2IC02NDcuMDdDLTEzNC4wMzQgLTY0NC4zODQgLTQ5NC4yNDggLTY0MC44MDQgLTg1NC45MDcgLTYzNS44ODFDLTEyMTUuNTcgLTYzMC45NTkgLTE1NzUuNzggLTYyNS4xNDEgLTE5MzYuNDQgLTYxOC40MjhDLTIwNjYuNjIgLTYxNS43NDMgLTIyMDMuNDggLTYyMy4zNTEgLTIzMjguNzUgLTU4MC44MzZDLTIzNzYuMDEgLTU2NS4xNzMgLTI0MjIuMzcgLTU0MS45MDEgLTI0NTcuMTUgLTUwNS4yMDRDLTI0NzguNTQgLTQ4Mi44MjggLTI1MTkuNTYgLTQyNy4zMzUgLTI1MDguNDEgLTM5NC4yMTlDLTI1MDAuODQgLTM3MS44NDIgLTI0NjIuNSAtMzQ0Ljk5MSAtMjQ0NS41NSAtMzI4LjQzM0MtMjQxOC44MSAtMzAyLjQ3NiAtMjM5MS4xNyAtMjc3Ljg2MiAtMjM2Mi42MyAtMjUzLjY5NkMtMjMxMS44MSAtMjExLjE4MSAtMjI1Ny44NyAtMTcxLjM1MiAtMjIwMi4xNCAtMTM1LjEwMkMtMjA4NS4zNCAtNTguNTc1NyAtMTk2MC4wNyAzLjYzMDEzIC0xODMwLjc4IDU1LjU0MjdDLTE1NTUuNzIgMTY2LjA4MSAtMTI2NC4xNiAyMjguMjg3IC05NzIuNjAxIDI3My45MzRDLTI4Mi4wNDMgMzgyLjIzNSA0MjAuMTA3IDM5Mi41MjggMTExNi45MSAzNTQuOTM2QzE0NjkuOTkgMzM1LjY5MyAxODIyLjYyIDMwNC4zNjYgMjE3NC4zNyAyNjcuMjIxQzIzMTAuNzggMjUyLjkwMSAyNDQ3LjIgMjMzLjIxIDI1ODQuNTEgMjM4LjU4QzI3MDAuODcgMjQzLjA1NSAyODI1LjY5IDI2Mi43NDYgMjkyMi40MyAzMzEuNjY1QzI5NzAuMTQgMzY1LjY3NyAzMDA1LjggNDEwLjg3NyAzMDI5Ljg3IDQ2My42ODVDMzAzMC43NyA0NTguMzE0IDMwMzEuMjEgNDUyLjk0NCAzMDMyLjEgNDQ3LjU3M0MyODkxLjIzIDU2MC43OTcgMjcyMi4yNyA2MjYuNTgzIDI1NDguODUgNjcwLjg4OEMyMzY1LjE3IDcxNy44NzggMjE3Ni4xNSA3NDcuNDE1IDE5ODguMDIgNzcxLjU4MUMxNTk2LjE1IDgyMS43MDQgMTE5OS4zOCA4MzMuNzg3IDgwNS4yODYgODA4LjcyNUM2MDguNjg0IDc5Ni4xOTUgNDE0Ljc1NyA3NjkuMzQzIDIxOS40OTMgNzQzLjM4N0MxNTMuOTU5IDczNC44ODQgODEuNzM3OCA3MzUuMzMxIDMzLjE0NDUgNzg3LjY5MkMtMi45NjU4MiA4MjYuMTc5IC05LjIwNzI4IDg4MC4zMjkgLTQuNzQ5MjcgOTMwLjg5OUMxLjQ5MjE5IDk5OS4zNyAyMi44OTA5IDEwNjUuMTYgMzguOTQwMiAxMTMxLjM5QzU5LjAwMTUgMTIxNS41MiA3NS40OTYzIDEzMTcuNTYgLTI3LjkzMTQgMTM0OC40NEMtMTA1Ljk0OCAxMzcyLjE2IC0xOTcuNzg1IDEzNTcuMzkgLTI3Ny41ODQgMTM1NC43Qy0zODAuMTIxIDEzNTEuNTcgLTQ4Mi4yMTEgMTM0OC40NCAtNTg0Ljc0NyAxMzQ1LjMxQy0xMDQxLjI2IDEzMzAuOTkgLTE0OTguMjEgMTMxNy4xMSAtMTk1NC43MiAxMzAyLjc5Qy0xOTY3LjY1IDEzMDIuMzQgLTE5NzMuNDQgMTMyMS41OSAtMTk2MS40MSAxMzI3Ljg1Qy0xNTIyLjI4IDE1NTguNzggLTEwODMuMTYgMTc4OS4yNSAtNjQ0LjA0IDIwMjAuMTdDLTQ0Mi41MzQgMjEyNi4yNCAtMjQyLjgxMiAyMjQyLjE0IC0yOS43MTQ2IDIzMjMuNTlDMTY0LjIxMiAyMzk3LjQ0IDM3OS4wOTMgMjQzNi44MiA1ODAuNTk4IDIzNjkuMjRDNzY1LjE2MyAyMzA3LjQ4IDkxNC41MDkgMjE3Mi43OCAxMDQ2LjAyIDIwMzMuMTVDMTE4My43OCAxODg3LjI2IDEzMDcuNzEgMTcyNy45NCAxNDE2LjQ5IDE1NTguNzhDMTYzNS4zOCAxMjE3Ljc2IDE3OTEuODYgODM1LjEyOSAxODcxLjY2IDQzNy4yODFDMTk2My41IC0xOS4xOTM2IDE5NTcuMjYgLTQ4Ni44NTYgMTk2Ny4wNiAtOTUwLjQ5MUMxOTcxLjk3IC0xMTg0LjEgMTk4MS4zMyAtMTQxOC42IDIwMDkuODYgLTE2NTAuODdDMjAyNC41NyAtMTc3Mi4xNCAyMDQ0LjY0IC0xODkyLjk4IDIwNzIuMjggLTIwMTIuMDJDMjA5NS4wMSAtMjExMC4wMiAyMTI0Ljg4IC0yMjA4LjkzIDIxNzkuMjcgLTIyOTQuNEMyMjM0LjEgLTIzNzkuODggMjMxNC4zNSAtMjQ0NS4yMiAyNDE1LjEgLTI0NjUuMzZDMjUwOC43MiAtMjQ4NC4xNSAyNjAzLjY4IC0yNDU3Ljc1IDI2NjIuNTMgLTIzNzkuODhDMjc0Ni4zNCAtMjI2OC40NSAyNzQ5LjkxIC0yMTAwLjYzIDI4NjIuNyAtMjAxMC4yM0MzMDAwLjkgLTE4OTkuMjQgMzE5NC4zOCAtMjAwOS4zMyAzMzExLjYzIC0yMDk4Ljg0QzM0NDcuNiAtMjIwMi42NiAzNTgwIC0yMzU5Ljc0IDM3NTUuMjEgLTIzOTMuNzVDMzc5Ny41NiAtMjQwMS44MSAzODQzLjkyIC0yNDAyLjI2IDM4ODQuMDQgLTIzODUuN0MzOTQyLjQ1IC0yMzYxLjUzIDM5NjEuNjIgLTIzMDcuODMgMzk2Mi41MSAtMjI0OC4zMUMzOTYzLjg0IC0yMTMwLjYxIDM5NDkuMTMgLTIwMTAuNjcgMzkzNy45OSAtMTg5My40MkMzOTI3LjI5IC0xNzgzLjc4IDM5MjUuOTUgLTE2NTguMDMgMzg2OS4zMyAtMTU2MC40N0MzODEyLjcyIC0xNDYyLjQ2IDM3MDEuMjYgLTE0MjQuNDIgMzYwMS44NSAtMTM4NS40OEMzNDkwLjQgLTEzNDEuNjMgMzM3OC41IC0xMjk3Ljc3IDMyNjcuMDQgLTEyNTMuOTFDMzE2My4xNyAtMTIxMy4xOSAzMDU3LjUxIC0xMTYzLjUxIDI5NDYuMDYgLTExNDYuOTVDMjgyNC4zNiAtMTEyOC42MSAyNzA4Ljg5IC0xMTY3LjU0IDI2MDAuNTYgLTEyMjAuMzVDMjUwNC43MSAtMTI2Ny4zNCAyNDEyLjQzIC0xMzIxLjk0IDIzMjMuMjcgLTEzODAuMTFDMTk2Mi42MSAtMTYxNS45NiAxNjUzLjY2IC0xOTIwLjcyIDEzMDQuMTUgLTIxNzEuNzhDOTY4LjQ1MiAtMjQxMi41NSA1NzMuNDY1IC0yNjE2LjE3IDE1MS43MyAtMjYxOS43NUMtMjUuMjU2NiAtMjYyMS4xIC0yMzEuMjIgLTI1OTkuMTcgLTMzOS41NTIgLTI0NDAuNzRDLTQzMS4zODkgLTIzMDYuNDkgLTQzNi43MzkgLTIxMjkuNzIgLTQ0OS42NjcgLTE5NzMuMDhDLTQ2Ny45NDUgLTE3NTQuMjQgLTUzMS42OTYgLTE1NDcuOTMgLTU3Mi43MSAtMTMzMy4xMkMtNjA3LjQ4MyAtMTE0OC43NCAtNjEwLjE1OCAtOTY0LjgxMSAtNTQ2Ljg1MyAtNzg2LjI1Qy00MzYuMjkzIC00NzMuODc4IC0xNjcuMDI0IC0yMTguMzQyIDE1Mi42MjEgLTEzMS45N0MzMjkuMTYyIC04NC4wODQ3IDUwNi4xNDggLTEwNS4xMTggNjg0LjQ3MiAtMTMwLjYyN0M4NzQuMzg2IC0xNTcuOTI2IDEwOTEuOTQgLTE5Ni40MTMgMTI2OC45MyAtOTcuOTU3OEMxNDUyLjYgNC41MjUxNSAxNTIxLjcgMjIzLjM2NCAxNTA5LjIyIDQyMy40MDdDMTUwMS42NCA1NDIuNDQ5IDE0NjkuMSA2NTguMzU3IDE0MjkuODYgNzcwLjIzOEMxNDAwIDg1Ni4xNjMgMTMzMS4zNCA5NjUuMzU5IDEzODIuNjEgMTA1NS4zMUMxNDAyLjIyIDEwODkuMzIgMTQzMi4wOSAxMTE3LjA3IDE0NTguODQgMTE0NC44MkMxNDk2LjI5IDExODMuNzUgMTUzMy43NCAxMjIyLjI0IDE1NzIuOTcgMTI1OS4zOEMxNjQxLjYyIDEzMjMuODMgMTcxNS4xOCAxMzg0LjI0IDE3OTcuNjYgMTQzMC4zNEMxOTc2Ljg3IDE1MzAuMTMgMjE2Ny4yMyAxNTI2LjU1IDIzNTYuNyAxNDU4LjUzQzI0NTYuNTYgMTQyMi43MyAyNTUxLjk3IDEzNzYuMTkgMjY0OS4xNSAxMzM0LjEyQzI3NTIuNTggMTI4OS4zNyAyODU3LjM1IDEyNDguNjQgMjk2My44OSAxMjExLjk0QzMxNjkuNDEgMTE0MC43OSAzMzgwLjI4IDEwODQuODUgMzU5My4zOCAxMDQzLjY4QzQwMjQuMDMgOTYwLjg4MyA0NDY2LjcyIDkzOC45NTUgNDkwMy4xNiA5ODAuMTI3QzUxMTguNDkgMTAwMC4yNyA1MzMyLjAzIDEwMzYuMDcgNTU0Mi40NiAxMDg2LjY0QzU1NTkuNCAxMDkwLjY3IDU1NjYuNTMgMTA2NC43MSA1NTQ5LjU5IDEwNjAuNjhDNDcwNS42NyA4NTcuNTA1IDM4MDcuMzcgODk4LjIzIDI5ODQuODUgMTE3Ni4xNEMyODgxLjg3IDEyMTEuMDUgMjc4MC4yMiAxMjQ5LjU0IDI2NzkuOTEgMTI5MS42QzI1NzguNzEgMTMzNC4xMiAyNDgwLjE5IDEzODIuOSAyMzc4LjEgMTQyMS44M0MyMjc0LjIzIDE0NjEuMjEgMjE2My42NyAxNDkwLjc1IDIwNTEuNzcgMTQ4Mi43QzE5NDkuMjMgMTQ3NS4wOSAxODUyLjQ5IDE0MzUuMjYgMTc2Ni45IDEzNzkuNzdDMTY4MS4zIDEzMjQuNzIgMTYwNS45NiAxMjU1LjM1IDE1MzQuMTggMTE4My43NUMxNTAyLjk4IDExNTIuNDIgMTQ3MS43NyAxMTIwLjY1IDE0NDEuOSAxMDg3Ljk4QzE0MjMuNjIgMTA2Ny44NCAxNDA1LjM1IDEwNDcuMjYgMTM5Ni40MyAxMDIwLjg1QzEzODIuNjEgOTgwLjU3NCAxMzk1LjU0IDk0MC4yOTcgMTQwOS4zNiA5MDIuMjU4QzE0ODIuMDIgNzAyLjY2MiAxNTYwLjA0IDQ5Ni4zNTQgMTUzMS4wNiAyNzkuNzUyQzE1MDcuNDQgMTAzLjg3NSAxNDE0LjI2IC02Mi4xNTU4IDEyNDguODcgLTEzNy4zNEMxMDgyLjU4IC0yMTIuOTcxIDg5Mi4yMTkgLTE4Ni41NjcgNzE3LjkwNyAtMTYxLjk1NEM1MjYuNjU1IC0xMzUuMTAyIDMzOC4wNzggLTEwNi45MDggMTQ4LjYwOSAtMTYwLjYxMUMtMjEuMjQ0NCAtMjA4Ljk0NCAtMTc1Ljk0IC0zMDYuNTA0IC0yOTguMDkyIC00MzQuMDQ4Qy00MjAuMjQ0IC01NjEuNTkzIC01MTAuNzQzIC03MjAuNDYzIC01NTAuNDIgLTg5My4yMDhDLTU5OS4wMTMgLTExMDMuNTQgLTU1My4wOTUgLTEzMTMuODggLTUwMy4xNjQgLTE1MTkuMjlDLTQ3Ny4zMDcgLTE2MjQuOTEgLTQ1MS4wMDQgLTE3MzAuMDggLTQzNi43MzkgLTE4MzcuOTNDLTQyNC43MDIgLTE5MjUuNjQgLTQyMC42ODkgLTIwMTQuMjUgLTQxMS43NzMgLTIxMDEuOTdDLTM5Mi42MDQgLTIyODIuMzIgLTM0NC45MDIgLTI0NzkuMjMgLTE1Ni43NyAtMjU0OS45NEMtNTYuMDE3MyAtMjU4Ny41MyA1OC41NTU0IC0yNTkzLjggMTY1LjU1IC0yNTkyLjAxQzI3Mi45OSAtMjU4OS43NyAzNzkuOTg0IC0yNTc0LjExIDQ4NC4zMDMgLTI1NDguMTVDNjk0LjI4IC0yNDk1LjM0IDg5Mi4yMTkgLTI0MDEuODEgMTA3Ni43OCAtMjI4OS40OEMxNDQzLjY5IC0yMDY2LjYxIDE3NTMuNTIgLTE3NjQuNTQgMjA5NS40NiAtMTUwNy4yMUMyMjY0Ljg3IC0xMzc5LjY3IDI0NDQuOTcgLTEyNTYuMTUgMjY0MC4yNCAtMTE3MS41N0MyNzMzLjQxIC0xMTMxLjI5IDI4MzEuOTMgLTExMDUuNzggMjkzNC4wMiAtMTExNy44NkMzMDQxLjQ2IC0xMTMwLjg0IDMxNDIuNjYgLTExNzYuMDQgMzI0Mi41MyAtMTIxNS40MkMzMzUzLjk4IC0xMjU5LjI4IDM0NjUuODggLTEzMDMuMTQgMzU3Ny4zMyAtMTM0N0MzNjYzLjgxIC0xMzgxLjAxIDM3NTguMzMgLTE0MTAuOTkgMzgyOS42NiAtMTQ3Mi43NUMzOTA0LjU1IC0xNTM3LjE5IDM5MzEuMyAtMTYzMS42MiAzOTQ0LjY3IC0xNzI2LjA1QzM5NjAuNzIgLTE4MzguODMgMzk2OS42NCAtMTk1Mi45NCAzOTc3LjY2IC0yMDY2LjE3QzM5ODEuNjggLTIxMjIuMTEgMzk4Ni41OCAtMjE3OC4wNSAzOTg3LjQ3IC0yMjMzLjk5QzM5ODguMzYgLTIyNzcuODUgMzk4My45MSAtMjMyMi42IDM5NTguMDUgLTIzNTkuM0MzOTE3LjkzIC0yNDE2LjU4IDM4NDIuNTggLTI0MzAuOSAzNzc3LjA1IC0yNDI0LjE5QzM2MDguOTggLTI0MDcuMTggMzQ3NC4zNSAtMjI2OCAzMzUwLjQxIC0yMTY1LjUyQzMyMjYuNDggLTIwNjMuMDMgMjk4Ni42MyAtMTg5MS42MyAyODQ3LjA5IC0yMDYwLjhDMjc1NC44MSAtMjE3Mi42OCAyNzU1LjcgLTIzNDAuNSAyNjQyLjAyIC0yNDM4Ljk1QzI1MjEuNjUgLTI1NDIuNzggMjMzMy41MiAtMjQ5OS44MiAyMjI2LjUzIC0yMzk3LjMzQzIwODMuODcgLTIyNjAuODQgMjA0NC42NCAtMjA0NS4xMyAyMDExLjY1IC0xODU4Ljk2QzE5MzAuNTEgLTE0MDAuNyAxOTQxLjIxIC05MzMuOTMyIDE5MjguNzMgLTQ3MC4yOThDMTkxNi42OSAtMTguMjk4NiAxODc1LjY3IDQzMS40NjMgMTcyNC45OSA4NjAuMTlDMTU4Ny4yNCAxMjUzLjEyIDEzNzMuNjkgMTYxOS4xOSAxMDk5LjUyIDE5MzEuNTZDOTY2LjIyMyAyMDgyLjgzIDgxNy4zMjMgMjIzNy4yMiA2MzAuNTI5IDIzMjAuMDFDNDE3LjQzMiAyNDEzLjk5IDE4NS42MTEgMjM3Ny43NCAtMjUuMjU2NiAyMjk3LjE5Qy0yNDYuMzc4IDIyMTMuMDYgLTQ1My42NzkgMjA5MC44OCAtNjYyLjc2NCAxOTgwLjc5Qy04NzkuODczIDE4NjYuNjcgLTEwOTYuOTggMTc1Mi41NSAtMTMxNC4wOSAxNjM4LjQzQy0xNTI2LjMgMTUyNyAtMTczOC41IDE0MTUuNTcgLTE5NTAuNzEgMTMwNC4xM0MtMTk1Mi45NCAxMzEyLjY0IC0xOTU1LjE2IDEzMjAuNjkgLTE5NTcuMzkgMTMyOS4yQy0xNTQyLjM1IDEzNDIuMTcgLTExMjYuODUgMTM1NC43IC03MTEuODAzIDEzNjcuNjhDLTUxMy40MTggMTM3My45NSAtMzEyLjgwMyAxMzg5LjE2IC0xMTQuNDE4IDEzODUuNThDLTU3LjgwMDUgMTM4NC42OSA3LjczMzQgMTM3Ni42MyA0Ny44NTYyIDEzMzEuODhDOTIuNDM3MyAxMjgyLjY1IDgxLjI5MTcgMTIxMS41IDY4LjM2MzMgMTE1MS45OEM0My44NDQgMTAzNS42MiAtNjAuOTIxMSA3ODEuNDI3IDE0MC4xMzkgNzY1Ljc2M0MxODMuMzgyIDc2Mi4xODMgMjI3LjUxNyA3NzEuNTgxIDI2OS44NjkgNzc4LjI5NEMzMTguOTA4IDc4NS45MDIgMzY3Ljk0NyA3OTIuNjE1IDQxNi45ODYgNzk4Ljg4QzUxOC4xODUgODExLjg1OCA2MTkuODMgODIyLjE1MSA3MjEuOTIgODI5Ljc1OUMxMTE4LjY5IDg2MC4xOTEgMTUxOC4xMyA4NTIuNTgzIDE5MTMuMTIgODA2LjkzNUMyMTIzLjEgNzgyLjc2OSAyMzMzLjk3IDc1MS40NDIgMjUzOS40OCA2OTkuOTc3QzI3MjIuMjcgNjU0LjMzIDI5MDAuMTQgNTg1LjQxMSAzMDQ4LjE1IDQ2Ni4zN0MzMDUzLjA2IDQ2Mi4zNDIgMzA1Mi42MSA0NTUuMTgyIDMwNTAuMzggNDUwLjI1OUMyOTU1LjQyIDI0My4wNTUgMjcwNi4yMiAyMDcuMjUzIDI1MDMuMzcgMjExLjI4MUMyMzU5LjgyIDIxNC40MTQgMjIxNi43MiAyMzUuODk1IDIwNzQuNTEgMjUwLjY2M0MxOTAxLjA5IDI2OC41NjQgMTcyNy42NyAyODQuNjc1IDE1NTQuMjUgMjk4LjU0OEM4NjcuMjUzIDM1My41OTQgMTc0LjkxMiAzNzEuOTQyIC01MTEuNjM0IDMwNS43MDlDLTgyNy4yNjcgMjc1LjI3NyAtMTE0NC4yNCAyMzAuNTI1IC0xNDUxLjQgMTUxLjMxM0MtMTcyNS41NyA4MC42MDQyIC0xOTk1LjI5IC0yMS40MzE0IC0yMjI5LjM0IC0xODMuNDM1Qy0yMjg5LjUyIC0yMjUuMDU1IC0yMzQ2LjU5IC0yNzAuMjU1IC0yNDAwLjUzIC0zMTkuOTNDLTI0MjQuNiAtMzQyLjMwNiAtMjQ0OS4xMiAtMzY0LjY4MiAtMjQ3MC45NyAtMzg5LjI5NkMtMjQ4My44OSAtNDAzLjYxNyAtMjQ4NC43OSAtNDA2LjMwMiAtMjQ3OC41NCAtNDI0LjY1Qy0yNDcyLjc1IC00NDAuNzYxIC0yNDY0LjcyIC00NTUuOTc3IC0yNDU0LjQ3IC00NjkuODVDLTIzODQuOTIgLTU2Mi45MzUgLTIyNDQuMDUgLTU4MS43MzEgLTIxMzYuNjEgLTU4Ny4xMDFDLTE5NjUuODYgLTU5NS42MDQgLTE3OTMuNzggLTU5NC4yNjIgLTE2MjMuMDQgLTU5Ny4zOTVDLTE0NDguMjggLTYwMC41MjcgLTEyNzMuNTIgLTYwMy4yMTIgLTEwOTguNzcgLTYwNS44OTdDLTc0Ni41NzYgLTYxMC44MiAtMzk0LjM4NiAtNjE1LjI5NSAtNDIuMTk3MyAtNjE3Ljk4QzEzMi41NiAtNjE5LjMyMyAzMDYuODcxIC02MjAuNjY2IDQ4MS42MjkgLTYyMS41NjFDNjQ4LjM2MSAtNjIyLjQ1NiA4MTUuMDk0IC02MjIuOTAzIDk4MS4zODEgLTYwNy4yNEMxMDY5LjY1IC01OTguNzM3IDExNTcuMDMgLTU4NS4zMTEgMTI0My41MiAtNTY1LjYyQzEyNDMuNTIgLTU3NC4xMjMgMTI0My41MiAtNTgzLjA3MyAxMjQzLjUyIC01OTEuNTc2QzExNjEuOTMgLTU2MC4yNSAxMTE4LjI0IC02NjQuNTIzIDExMDUuMzIgLTcyNi43MjlDMTA5My43MiAtNzgxLjc3NCAxMDg1LjcgLTg0Mi42MzcgMTA0NC42OSAtODg0LjcwNUM5NzMuMzU2IC05NTguNTQ2IDg2Ni44MDggLTkyMS40MDEgNzgyLjU1IC04OTYuNzg4QzczMS4yODIgLTg4MS41NzIgNjY1Ljc0OCAtODU3Ljg1MyA2MTEuODA1IC04NzIuMTc0QzU2MC41MzcgLTg4Ni4wNDcgNTQzLjU5NiAtOTgzLjE2IDUzNi40NjMgLTEwMjguMzZDNTE4LjYzMSAtMTE0Mi45MyA1MzQuNjggLTEyNjIuNDEgNTAwLjc5OCAtMTM3NC4zQzQzNy45MzkgLTE1ODEuMDUgMjE3LjI2NCAtMTU4NC4xOCA0OC4zMDIgLTE2NTAuODdDLTU2LjkwODkgLTE2OTIuNDggLTEzNC4wMzQgLTE3ODkuMTUgLTc0LjI5NTcgLTE5MDQuNjFDNS41MDQzOSAtMjA1OC41NiAxOTcuMjAyIC0yMDUxLjQgMzQyLjA5IC0yMDE5LjE4QzYyNi45NjIgLTE5NTYuMDggODg1Ljk3OCAtMTgxMy4zMiAxMTMwLjczIC0xNjU4LjkyQzEzNzkuNDkgLTE1MDIuMjkgMTYyMS4xMiAtMTMzNS4zNiAxODc5LjI0IC0xMTkzLjk0QzIzOTUuOTMgLTkxMS41NTYgMjk2My40NSAtNzAyLjU2MiAzNTUyLjgxIC02NTIuODg3QzM4MjcuODcgLTYyOS42MTYgNDExMi4zIC02MzguMTE5IDQzODEuNTcgLTcwMS42NjdDNDYxNC4yOCAtNzU2LjcxMyA0ODQ4LjMzIC04NTkuMTk2IDUwMDkuNzEgLTEwNDEuMzRDNTA0Ny42MSAtMTA4NC4zIDUwODEuMDQgLTExMzEuMjkgNTEwOS4xMyAtMTE4MC45N0M1MTExLjM2IC0xMTg0Ljk5IDUxMTEuOCAtMTE5MC44MSA1MTA5LjEzIC0xMTk0LjM5QzQ5NjMuNzkgLTE0MDYuNTIgNDc0Ny4xMyAtMTU0OC4zOCA0NTE3LjU0IC0xNjU0LjQ1QzQ0MDAuMjkgLTE3MDkuMDQgNDI3OS40OCAtMTc1NS4xNCA0MTU4LjIyIC0xNzk5LjQ0QzQwMTEuOTkgLTE4NTMuMTUgMzg2NC40MyAtMTkwNy43NCAzNzEwLjYyIC0xOTM0LjE1QzM1NjYuNjMgLTE5NTguNzYgMzQxNy4yOCAtMTk1Ni45NyAzMjc5Ljk3IC0xOTAxLjkzQzMxNzIuNTMgLTE4NTguNTIgMzA3OC45MSAtMTc4Ni45MSAzMDAyLjIzIC0xNzAwLjU0QzI4MjIuMTMgLTE0OTcuODEgMjczOS4yMSAtMTIzNi45MSAyNjcxLjQ0IC05NzkuMTMyQzI2MzIuMjEgLTgzMS4wMDIgMjU5Ni4xIC02ODEuNTI5IDI1NDIuMTYgLTUzNy40MjZDMjQ5Mi42NyAtNDA0LjUxMiAyNDI0LjQ3IC0yODEuODkgMjM0OS4xMiAtMTYyLjQwMUMyMjEzLjE1IDUyLjg1NzcgMjA1MS43NyAyNjIuNzQ2IDE5NzkuOTkgNTExLjEyMkMxOTQ0Ljc3IDYzMi44NDggMTkzNi4zIDc1OS40OTggMTk1OC41OSA4ODQuMzU3QzE5ODQuMDEgMTAyNi42NyAyMDQ1LjUzIDExNjAuMDMgMjExMS45NSAxMjg3LjEzQzIyNTAuMTUgMTU1MS42MSAyNDQyLjMgMTgzOC4wMyAyMzkxLjAzIDIxNTIuMTlDMjM0Ny43OSAyNDE0Ljg5IDIxMjIuMjEgMjU3OC4yMyAxODg4LjE2IDI2NjQuNjFDMTYxOS43OCAyNzYzLjk2IDEzMTguODYgMjc5NC44NCAxMDM0Ljg4IDI3ODUuODlDNDcxLjgyMSAyNzY4LjQzIC0xMDcuMjg1IDI1MjUuODcgLTQwNC42NCAyMDIzLjMxQy00NzkuOTgyIDE4OTUuNzYgLTUzOS43MiAxNzUxLjY2IC01NDguMTkxIDE2MDEuNzRDLTU1Ny41NTMgMTQ0MC42MyAtNDk1LjEzOSAxMjkyLjk1IC0zODguMTQ1IDExNzQuOEMtMjE1LjYxNyA5ODUuNDk3IDUxLjQyMjYgODk0LjY1IDMwMy4zMDUgOTI1LjA4MkMzNjUuNzE4IDkzMi42ODkgNDI3LjY4NiA5NDcuOTA1IDQ4Ni41MzIgOTcxLjE3N0M1NTIuNTEyIDk5Ny4xMzMgNjEzLjU4OCAxMDM0LjI4IDY3OS41NjggMTA2MC42OEM3OTUuMDMyIDExMDYuNzggOTEyLjI4MSAxMDkyLjkgMTAxMS43IDEwMTcuMjdDMTIyNS42OCA4NTQuMzczIDEyNDAuNCA1NjguNDA1IDEzODguODUgMzYwLjc1NEMxNTM4LjY0IDE1MS4zMTMgMTgyMS4yOSAxMzMuODYgMTk5NS4xNSAtNDUuMTQ5OUMyMTc0LjM3IC0yMjkuOTc3IDIxNDQuNSAtNTE2Ljg0IDIwNTEuNzcgLTczNS42NzlDMTk5Mi40OCAtODc0Ljg1OSAxOTEwLjg5IC0xMDAyLjQgMTgzOS4xMiAtMTEzNC44N0MxNzgwLjcyIC0xMjQzLjE3IDE3MzEuMjMgLTEzNTUuOTUgMTY4MS43NSAtMTQ2OC43MkMxNTg5LjQ2IC0xNjc5LjA2IDE0OTYuNzQgLTE4OTkuNjkgMTMzOS4zNyAtMjA3MC42NEMxMjY1LjgxIC0yMTUwLjMgMTE3OC44NyAtMjIxNS4xOSAxMDc5LjQ2IC0yMjU4LjZDMTA2OC4zMSAtMjI2My41MyAxMDU4LjA2IC0yMjU1LjQ3IDEwNTkuODQgLTIyNDMuMzlDMTA5NC4xNyAtMjAwNC40MSAxMTMxLjE3IC0xNzUwLjIyIDEyNzguNzQgLTE1NTEuNTJDMTM5Ny43NyAtMTM5MC44NSAxNTgyLjc4IC0xMjc4LjA4IDE3ODcuNCAtMTMwNC4wM0MxOTg0LjAxIC0xMzI4LjY1IDIxNDQuOTQgLTE0NjcuMzggMjI2NC40MiAtMTYxNi44NUMyMzk1LjQ5IC0xNzgwLjY1IDI0NzkuMyAtMTk3Mi4xOSAyNTgyLjI4IC0yMTUzLjg4QzI2OTYuNDEgLTIzNTUuMjcgMjg0MC44NSAtMjU1Ni42NSAzMDY3LjMyIC0yNjM2Ljc2QzMwNjIuNDIgLTI2MzkgMzA1Ny4wNyAtMjY0MC43OSAzMDUyLjE2IC0yNjQzLjAzQzMyODcuMTEgLTIyODQuMTEgMzQ1NC43MyAtMTg4Mi42OCAzNTQzLjg5IC0xNDYyLjQ2QzM1ODUuOCAtMTI2NC4yIDM2NTYuMjQgLTk5Ni4xMzggMzQ1OS4xOSAtODU4LjMwMUMzMjc3LjMgLTczMS4yMDQgMzA0OS4wNCAtNzk1LjY0NyAyODcwLjcyIC04OTMuNjU1QzIyMjAuMjggLTEyNTAuMzMgMTg2MC45NiAtMTk0Ni4yMyAxNDAzLjU2IC0yNTAxLjE2QzEzNDUuNjEgLTI1NzEuODcgMTI4NS40MiAtMjY0MC43OSAxMjIzLjAxIC0yNzA3LjAyQzExNjEuNDkgLTI3NzIuMzYgMTA5Ni44NSAtMjg0My4wNyAxMDEyLjU5IC0yODc4LjQyQzk0My40ODcgLTI5MDcuMDYgODY1LjkxNiAtMjkwMC44IDgwOC44NTMgLTI4NDkuMzNDNzU1LjM1NSAtMjgwMC41NSA3MjkuNDk5IC0yNzI2LjcxIDcxMi41NTggLTI2NTcuNzlDNjU5Ljk1MiAtMjQ0Mi45OCA2MzIuNzU4IC0yMjE4LjMzIDYwOC42ODQgLTE5OTguNTlDNTgyLjgyNyAtMTc2Ni4zMyA1NjguMTE1IC0xNTMzLjE3IDU2NC41NDkgLTEyOTkuNTZDNTYwLjk4MiAtMTA2NS45NSA1NjguMTE1IC04MzIuMzQ0IDU4Ni4zOTQgLTU5OS4xODRDNTk0LjQxOCAtNDk3LjE0OSA1OTkuNzY4IC0zOTIuNDI4IDYxOS4zODQgLTI5MS43MzZDNjMyLjMxMiAtMjI1LjUwMiA2NTYuODMyIC0xNTEuMjEzIDcxNC4zNDEgLTExMC4wNDFDNzgzLjg4NyAtNjAuMzY1NyA4NjYuODA4IC04Ni43Njk4IDkzNy4yNDYgLTExOS44ODZDMTAzNS4zMiAtMTY2LjQyOSAxMTMwLjI4IC0yMTkuNjg0IDEyMjUuNjggLTI3MS4xNDlDMTQxNC43MSAtMzczLjE4NSAxNjA1LjUxIC00NzYuMTE1IDE4MTAuNTkgLTU0My42OTJDMjEzMy44IC02NTAuMjAyIDI1MzYuMzYgLTY1Ni45MTUgMjgxMC41NCAtNDI0LjY1QzI5NDYuMDYgLTMwOS42MzYgMzA3Mi4yMyAtOTcuNTEwNSAyOTgwLjgzIDgwLjYwNEMyOTY3LjAxIDEwNy45MDMgMjk0Ni41MSAxMDEuNjM4IDI5MTguNDIgMTAxLjE5QzI4OTQuMzUgMTAwLjc0MyAyODcwLjcyIDEwMC4yOTUgMjg0Ni42NSA5OS40MDAxQzI3OTQuNDkgOTcuMTYyNiAyNzQyLjMzIDkzLjEzNSAyNjkwLjYxIDg3Ljc2NDZDMjU4OC41MiA3Ny4wMjM5IDI0ODYuODggNTkuNTcwNiAyMzg3LjAyIDM2Ljc0NjhDMTU2MS4zOCAtMTQ5Ljg3MSA4NjguNTkxIC02NjguMTAzIDE0OS45NDcgLTEwODguMzNDLTIxOC43MzggLTEzMDQuMDMgLTYwMy40NzEgLTE1MDEuMzkgLTEwMTMuNjIgLTE2MjQuNDZDLTEyMTEuMTEgLTE2ODMuNTMgLTE0MTMuOTUgLTE3MjQuNzEgLTE2MTkuOTIgLTE3MzkuNDhDLTE4MTEuNjEgLTE3NTIuOSAtMjAxNS43OSAtMTc1MC4yMiAtMjIwMy4wMyAtMTcwMi4zM0MtMjI3NS4yNiAtMTY4My45OCAtMjM0Ny40OCAtMTY1NS43OSAtMjQwNi43NyAtMTYwOS42OUMtMjQzMi42MyAtMTU4OS41NSAtMjQ1NS44MSAtMTU2Ni4yOCAtMjQ3NC4wOSAtMTUzOC45OEMtMjQ4Ny40NiAtMTUxOC44NSAtMjUxMy43NiAtMTQ3Ni43OCAtMjUwOS43NSAtMTQ1MS4yN0MtMjUwNi4xOCAtMTQzMS4xMyAtMjQ4NC43OSAtMTQwNS42MiAtMjQ3NC41MyAtMTM4OC4xN0MtMjQ2Mi45NCAtMTM2OC40OCAtMjQ1MC45IC0xMzQ4Ljc5IC0yNDM4Ljg3IC0xMzI5LjU0Qy0yNDEyLjEyIC0xMjg3LjAzIC0yMzg0LjAzIC0xMjQ1LjQxIC0yMzU0LjYxIC0xMjA0LjY4Qy0yMzAwLjY3IC0xMTI5Ljk1IC0yMjQyLjcxIC0xMDU3LjkgLTIxODEuNjQgLTk4OC41M0MtMTkxOC4xNiAtNjkwLjQ3OSAtMTYwMi41MyAtNDQ1LjY4NCAtMTI5Mi4yNSAtMTk5Ljk5M0MtNjEyLjgzMyAzMzQuMzUgMzUuMzczNSA5MDMuNiA2NTEuOTI4IDE1MDYuODZDMTI2NS44MSAyMTA3Ljg5IDE4NDguOTMgMjc0MC42OSAyMzk2LjgyIDM0MDMuMDJDMjUzMS40NiAzNTY1LjQ3IDI2NjMuODYgMzczMC4xNiAyNzk0LjQ5IDM4OTYuMTlDMjgwMC43MyAzODg5LjkzIDI4MDYuOTcgMzg4My42NiAyODEzLjIxIDM4NzcuNEMyNDIxLjc5IDM0NzEuNDkgMjExMC42MiAyOTg5Ljk2IDE5MDAuNjQgMjQ2NS45MUMxNzk2LjMyIDIyMDUuNDUgMTcxNi41MiAxOTM0LjcgMTY2NC4zNiAxNjU4LjU3QzE2MDUuMDcgMTM0My45NiAxNTgyLjc4IDEwMTMuMjQgMTY2Ni41OSA3MDEuMzJDMTczNS4yNCA0NDUuNzgzIDE4NzguNzkgMTg5LjggMjEwMS43IDM4LjUzNzFDMjE2Ni4zNCAtNS4zMjAzMSAyMjQ2LjE0IC00MS4xMjIzIDIzMjUuMDUgLTIwLjA4ODlDMjM5MS40OCAtMi4xODc3NCAyNDM2LjA2IDU2LjQzOCAyNDYxLjkxIDExNi44NTRDMjUxNC45NiAyNDAuMzcgMjUxMi4yOSAzOTAuNzM4IDI0ODYuODggNTIwLjUyQzI0MzIuOTQgNzk3Ljk4NSAyMjU3LjI5IDEwMzYuMDcgMjAyNS45MSAxMTkzLjE1QzE4MDAuMzMgMTM0Ni4yIDE1MTUuMDEgMTQ0Mi44NyAxMjQyLjE4IDE0NDkuMTNDMTEwMy4wOSAxNDUyLjI2IDk1Ny4zMDcgMTQyNC45NyA4NDcuNjM4IDEzMzMuNjdDNzQ0LjY1NiAxMjQ4LjE5IDY4NS44MDkgMTEyMS45OSA2NTQuMTU3IDk5My41NTJDNTg1LjA1NiA3MTIuMDYgNjIwLjcyMSA0MDEuNDc5IDcyNS45MzIgMTMzLjg2Qzc1NC4wMTggNjIuNzAzMSA3ODcuODk5IC01Ljc2NzgyIDgyNi4yMzkgLTcyLjAwMTVDODE3Ljc2OSAtNzQuMjM5IDgwOS43NDQgLTc2LjQ3NjYgODAxLjI3NCAtNzguNzE0NEM3NzYuMzA5IDUxMy44MDcgNjU1Ljk0IDExMDEuNDEgNDQ1LjUxOCAxNjU1Ljg5QzM5MS4xMjkgMTc5OS41NCAzMzAuMDUzIDE5NDAuOTYgMjYzLjYyOCAyMDc5LjI1QzIzNy4zMjUgMjEzNC4yOSAyMTAuNTc3IDIyMTMuNSAxNTYuMTg4IDIyNDcuOTZDODUuNzUgMjI5Mi43MSAzNC4wMzYxIDIyMTkuMzIgOS45NjI0IDIxNjEuMTRDLTQ3LjU0NjkgMjAyMS41MiAtODQuMTAzMyAxODY4LjQ2IC0xMjEuNTUxIDE3MjIuNTdDLTE2MC4zMzcgMTU3MS43NSAtMTkyLjg4MSAxNDE5LjE1IC0yMTkuMTg0IDEyNjYuMDlDLTI2Mi44NzMgMTAxMy42OSAtMjg4LjI4NCA3MTIuNTA4IC01MDYuMjg0IDU0Mi44OTZDLTUxMi41MjYgNTM3Ljk3NCAtNTE5LjIxMyA1MzcuOTc0IC01MjUuMDA5IDU0Mi44OTZDLTgxMy40NDcgNzc5LjYzNiAtMTA3Mi4wMiAxMDUwLjg0IC0xMjk1LjM3IDEzNTAuMjNDLTE0MDguMTYgMTUwMS4wNCAtMTUxMS4xNCAxNjU5LjAyIC0xNjA0Ljc2IDE4MjIuODFDLTE2NTEuNTcgMTkwNC43MSAtMTY5NS43IDE5ODcuOTUgLTE3MzYuNzIgMjA3Mi41M0MtMTc2Ni41OSAyMTMzLjg0IC0xNzkwLjIyIDIxOTguNzMgLTE3OTYuOSAyMjY3LjIxQy0xODAyLjI1IDIzMjQuMDQgLTE3OTQuMjMgMjM4Ny4xNCAtMTc1My42NiAyNDMwLjFDLTE2OTkuNzIgMjQ4Ny4zOSAtMTYxOC4xMyAyNDgxLjU3IC0xNTQ4LjE0IDI0NjUuMDFDLTEzMzQuMTUgMjQxNC40NCAtMTEyMS45NSAyMzUyLjIzIC05MDkuMjk2IDIyOTUuODVDLTQ4My41NDggMjE4Mi42MiAtNTcuODAwNSAyMDY5Ljg1IDM2Ny45NDcgMTk1Ni42MkM1NDQuMDQyIDE5MTAuMDggNzUzLjEyNiAxODI1LjUgOTM2LjM1NCAxODc3LjQxQzExMjEuODEgMTkzMC4yMiAxMTc3LjA5IDIxMzUuNjMgMTE5OC45NCAyMzA1LjY5QzEyMTcuMjEgMjQ0OC45IDEyMTIuMzEgMjYwOC4yMiAxMTQ2Ljc4IDI3MzkuNzlDMTExNS41NyAyODAyLjQ0IDEwNjkuNjUgMjg1Ni41OSAxMDA4LjEzIDI4OTAuNjFDOTE2LjczOCAyOTQxLjE4IDgxMC4xOSAyOTM2LjcgNzEwLjMyOSAyOTE5LjdDMzU1LjQ2NSAyODU4LjM4IDcuMjg3NiAyNzI0LjU4IC0zMDcuODk5IDI1NTIuMjhDLTYyNC40MjQgMjM3OS41MyAtOTE0LjY0NiAyMTU4LjkgLTExNjUuMTkgMTg5OS4zNEMtMTI5Ni4yNiAxNzYzLjI5IC0xNDEwLjgzIDE2MTUuMTYgLTE1MjYuNzQgMTQ2Ni41OUMtMTY0Mi4yMSAxMzE4LjkgLTE3NjUuMjUgMTE3My40NiAtMTkyMy4wNyAxMDY5LjE4Qy0yMDY1LjI4IDk3NS4yMDQgLTIyMzguMjUgOTEyLjk5OCAtMjQxMC4zNCA5MzYuMjdDLTI1NTIuOTkgOTU1LjUxMyAtMjY4OS44NiAxMDM4Ljc1IC0yNzY3LjQzIDExNjAuOTNDLTI4MDYuMjEgMTIyMS4zNCAtMjgyNy4xNyAxMjkwLjI2IC0yODI4LjUgMTM2Mi4zMUMtMjgyOC41IDEzNjkuOTIgLTI4MjIuMjYgMTM3NS4yOSAtMjgxNS4xMyAxMzc1Ljc0Qy0xNzc5LjUyIDE0MjQuMDcgLTg2OS4xNzMgODQ4LjEwNyAyOC42ODY1IDQxNC45MDRDMTQxLjkyMiAzNjAuMzA2IDI1NS42MDMgMzA3LjQ5OSAzNzEuMDY4IDI1Ny44MjRDNDcxLjM3NSAyMTQuODYxIDU4NC42MTEgMTU0Ljg5MyA2OTcuNCAxNjMuODQ0Qzg1MS42NSAxNzYuMzc0IDg0Ni43NDYgMzQ0LjE5NiA4MjQuNDU2IDQ2MC41NTJDODEzLjc1NyA1MTYuNDkyIDc5Ni44MTYgNTcxLjUzOCA3NzMuNjM0IDYyMy40NTFDNzQ4LjY2OCA2NzkuODM5IDcxMS42NjYgNzU0LjEyNyA2NDYuNTc4IDc3MS41ODFDNTc2LjE0IDc5MC4zNzcgNTQxLjgxMyA3MDQuMDA1IDUxNS41MSA2NTQuNzc3QzQ4Ni41MzIgNjAwLjE3OSA0NTkuNzg0IDU0My43OTIgNDM1LjI2NCA0ODYuOTU2QzM4OC45IDM3OC4yMDggMzUxLjQ1MiAyNjYuMzI3IDMxOS4zNTQgMTUyLjY1NkMyNTUuMTU3IC03NS4xMzQgMjEzLjY5NyAtMzA4LjI5NCAxNzEuMzQ1IC01NDEuMDA2QzE0OS41MDEgLTY2MC4wNDggMTI3LjY1NiAtNzc5LjUzNyAxMDIuNjkxIC04OTguMTNDODIuNjI5NCAtOTkzLjkwMSA2OS4yNTQ5IC0xMTA0LjQ0IDE3LjA5NTIgLTExODkuNDdDLTM4LjYzMDkgLTEyODEuMjEgLTEzMS44MDUgLTEyODguMzcgLTIyOC45OTEgLTEyNjguNjhDLTMzMy4zMTEgLTEyNDcuNjUgLTQzNy4xODQgLTEyMTkuOSAtNTM4LjgyOSAtMTE4OS4wMkMtNzQ2LjEzIC0xMTI1LjkyIC05NDkuNDE5IC0xMDQxLjc5IC0xMTMyLjY1IC05MjQuNTM0Qy0xMzAxLjYxIC04MTYuNjgxIC0xNDcwLjU3IC02NzQuODE2IC0xNTcyLjIxIC00OTguOTM5Qy0xNjYyLjI3IC0zNDMuNjQ4IC0xNjk3LjkzIC0xMjAuMzM0IC0xNTE4LjcyIC0xMy4zNzZDLTE0MzMuNTcgMzcuNjQxOCAtMTMyOS42OSA0Ny45MzQ4IC0xMjMyLjk1IDU1LjU0MjdDLTExMDkuOTEgNjQuOTQwOSAtOTg1LjUzIDYyLjcwMzEgLTg2Mi45MzIgNDkuMjc3M0MtNjI5LjMyOCAyMy4zMjEgLTQwMS4wNzQgLTQyLjkxMjQgLTE5MC4yMDYgLTE0OC4wODFDMy43MjA5NSAtMjQ0Ljc0NiAxNzkuMzcgLTM3Mi4yOSAzNTIuMzQ0IC01MDIuMDcyQzUyNC40MjYgLTYzMS40MDYgNjk0LjI4IC03NjQuMzIxIDg3OS43MzYgLTg3My45NjRDOTc1LjU4NSAtOTMwLjggMTA3NS40NSAtOTgwLjkyMiAxMTgwLjIxIC0xMDE5LjQxQzEyOTQuMzQgLTEwNjEuNDggMTQyMS44NCAtMTA5OS4wNyAxNTQzLjk5IC0xMDc1LjM1QzE2NTQuMTEgLTEwNTMuODcgMTc2Ny43OSAtOTYzLjkxNiAxNzY0LjIyIC04NDEuMjk1QzE3NjEuNTUgLTc1NC4wMjggMTY5Mi44OSAtNjkyLjcxNyAxNjEzLjk4IC02NjkuNDQ2QzE1MjkuNzMgLTY0NC4zODQgMTQzMy40MyAtNjU2LjQ2OCAxMzY0LjMzIC03MTIuNDA4QzEyODQuNTMgLTc3Ni40MDQgMTI0MS4yOSAtODczLjUxNiAxMjIxLjIzIC05NzEuNTI0QzExNzguODcgLTExNzYuNDkgMTIxNC45OCAtMTQxMi43OCAxMzEzLjUxIC0xNTk2LjcyQzEzMzUuOCAtMTYzOC4zMyAxMzYxLjY2IC0xNjc4LjE2IDEzOTEuOTcgLTE3MTMuOTdDMTQyMi4yOSAtMTc1MC4yMiAxNDY4LjY1IC0xODA2LjE2IDE1MTMuNjggLTE4MjMuNjFDMTUzMC4xNyAtMTgyOS44NyAxNTMxLjA2IC0xODMxLjY2IDE1NDIuMjEgLTE4MTMuNzZDMTU0OC45IC0xODAzLjAyIDE1NDkuNzkgLTE3ODcuODEgMTU0OS4zNCAtMTc3NS4yOEMxNTQ4IC0xNzQ4Ljg3IDE1MzYuODYgLTE3MjIuOTIgMTUyNC4zOCAtMTcwMC41NEMxNDk2LjI5IC0xNjUwLjQyIDE0NTEuMjYgLTE2MTEuOTMgMTQwOC45MSAtMTU3NC4zNEMxMjM1LjQ5IC0xNDE5Ljk0IDEwMzAuNDIgLTEzMDEuMzUgODExLjA4MiAtMTIyNy41MUM3NjEuMTUxIC0xMjEwLjk1IDcxMC4zMjkgLTExOTYuMTggNjU4LjYxNSAtMTE4NC4xQzU5MS4yOTggLTExNjguNDMgNTE4LjE4NSAtMTE1MS40MyA0NTAuNDIyIC0xMTcyLjkxQzM0NS42NTcgLTEyMDYuMDMgMjg4LjE0NyAtMTMxNi4xMiAyNjYuNzQ5IC0xNDE3LjI2QzIyMS4yNzYgLTE2MzYuMSAzMTUuNzg3IC0xODgwIDE4My4zODIgLTIwODAuMDRDMTMwLjc3NyAtMjE2MC4xNSA1MS40MjI2IC0yMjAxLjc3IC00Mi4xOTczIC0yMjE1LjE5Qy0xNTkuNDQ1IC0yMjMxLjc1IC0yODIuNDg5IC0yMjI5LjUxIC00MDAuNjI4IC0yMjIyLjhDLTgxNy40NiAtMjIwMC40MiAtMTI3My4wOCAtMjAyOC41OCAtMTQ0Ni45NCAtMTYxNS4wNkMtMTQ4Mi42MSAtMTUzMC40OCAtMTUyMS4zOSAtMTQxNS45MiAtMTQ3OS45MyAtMTMyNi40MUMtMTQ0NC4yNyAtMTI0OS40NCAtMTM1OC4yMyAtMTIxNy4yMSAtMTI4MC4yMSAtMTIwMi44OUMtMTA0Ni42MSAtMTE1OS4wNCAtNzk1LjYxNSAtMTE3OS4xOCAtNTYyLjkwMiAtMTIyMC44Qy01My43ODgzIC0xMzEyLjA5IDQxNC4zMTEgLTE1NDEuNjcgODczLjA0OSAtMTc3MS4yNUMxMTA1LjMyIC0xODg3LjE2IDEzMzcuMTQgLTIwMTEuMTIgMTU4MC4xIC0yMTAzLjc2QzE2OTcuMzUgLTIxNDguNTEgMTgyMC44NCAtMjE4MS42MyAxOTQ3LjQ1IC0yMTc0LjQ3QzIwNzAuMDUgLTIxNjcuNzYgMjE4Ni44NSAtMjEyMi41NiAyMjkyLjA2IC0yMDYwLjhDMjM5MS45MiAtMjAwMi4xNyAyNDgzLjMxIC0xOTI4Ljc4IDI1NjguOTEgLTE4NTAuNDZDMjY1Ni43MyAtMTc3MC4zNSAyNzQwLjU0IC0xNjc1LjQ4IDI3NjIuMzkgLTE1NTQuMkMyODAzLjg1IC0xMzIwLjU5IDI2MjcuMzEgLTExMTQuMjggMjQyNy41OSAtMTAyNS4yM0MyMjE4LjA2IC05MzEuMjQ3IDE5NjkuMjkgLTkyMS44NDkgMTc0My43MSAtOTQyLjQzNUMxNTEzLjIzIC05NjMuMDIxIDEyODUuODcgLTEwMjYuMTIgMTA3Ny4yMyAtMTEyNi4zN0M2NzEuMDk3IC0xMzIxLjQ5IDM0Ny44ODYgLTE2NTguMDMgMTYyLjQyOSAtMjA2OS4zQzcxLjkyOTkgLTIyNjkuNzkgMTYuMjAzOSAtMjQ4NS4wNSAtMi4wNzQ0NiAtMjcwNC4zNEMtNS4xOTUwNyAtMjcyMS43OSAtMzEuOTQzOCAtMjcyMS43OSAtMzAuNjA2MiAtMjcwNC43OFoiIGZpbGw9IiNFNjAwN0EiLz4KPC9nPgo8cGF0aCBkPSJNNTc5LjY2MSAxMTUxSDc1MC44MjdMODA1LjM5OCA5NTMuMTE4QzgxMi45MjMgOTI1LjgzMyA4NTEuMjkgOTI1Ljg1IDg1OC43OTEgOTUzLjE0MUw5MTMuMTczIDExNTFIMTA4NC4wMUwxMjE1IDY0NUgxMDU0LjYxTDEwMTMuNjUgODQ1LjgxMUMxMDA3LjcgODc0Ljk3MiA5NjYuNjgxIDg3NS43NzggOTU5LjYxIDg0Ni44NzJMOTEwLjIzMyA2NDVINzUzLjc2N0w3MDUuNjY1IDg0OC4xMjZDNjk4Ljc5NyA4NzcuMTI4IDY1Ny42OSA4NzYuNTY2IDY1MS42MDMgODQ3LjM4N0w2MzcuMTU4IDc3OC4xMzhDNjIwLjk3MyA3MDAuNTQ3IDU1My4xMDIgNjQ1IDQ3NC40OCA2NDVINDQ5TDU3OS42NjEgMTE1MVoiIGZpbGw9IndoaXRlIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXIiIHgxPSItMjMyLjQyOSIgeTE9IjgxNi4xNjkiIHgyPSIyNzEzLjY5IiB5Mj0iODEzLjU5MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRjc5NDIwIiBzdG9wLW9wYWNpdHk9IjAuOTIiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQzRDNEM0IiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K';\n"]}
|
package/dist/chunk-SYUDETGE.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {decodeAddress,encodeAddress,u8aEq,u8aToHex}from'dedot/utils';export{formatBalance as c}from'dedot/utils';function g(t,e=0,r=4){if(t==null||t==="")return "0";let n=typeof t=="bigint"?t:BigInt(t);if(e===0)return n.toString();let c=BigInt(10)**BigInt(e),o=n/c,s=n%c;if(s===0n)return o.toString();let a=s.toString().padStart(e,"0").substring(0,r).replace(/0+$/,"");return a?`${o.toString()}.${a}`:o.toString()}function m(t,e=4,r=4){if(!t)return "";if(t.length<=e+r)return t;let n=t.slice(0,e),c=r>0?t.slice(-r):"";return `${n}...${c}`}function x(t){try{let e=decodeAddress(t);return encodeAddress(e),!0}catch{return false}}function A(t,e){try{let r=decodeAddress(t);return encodeAddress(r,e)}catch(r){throw new Error(`Failed to convert address: ${r.message}`)}}function $(t,e){try{let r=decodeAddress(t),n=decodeAddress(e);return u8aEq(r,n)}catch{return false}}function S(t){try{let e=decodeAddress(t);if(e.length!==32)throw new Error(`Invalid public key length: expected 32 bytes, got ${e.length}`);return e}catch(e){throw new Error(`Failed to get public key: ${e.message}`)}}function k(t,e){if(!t)return [];try{return t.map(r=>{let n;try{let o=decodeAddress(r.address);n=u8aToHex(o);}catch(o){console.error(`Failed to decode address "${r.address}" to extract public key:`,o);}return {address:r.address,name:r.name,publicKey:n,meta:{source:e,genesisHash:r.genesisHash},type:r.type}})}catch(r){throw new Error(`Failed to map injected accounts: ${r.message}`)}}function I(t){return t}function K(t){return t.nativeCurrency.symbol}function B(t="",e="",r="transaction"){if(!t)return "";switch(r){case "transaction":return `${t}/extrinsic/${e}`;case "address":return `${t}/account/${e}`;case "block":return `${t}/block/${e}`;default:return t}}var E=()=>typeof window<"u"&&window.navigator&&window.navigator.userAgent?/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(window.navigator.userAgent.toLowerCase()):false;export{g as a,m as b,x as d,A as e,$ as f,S as g,k as h,I as i,K as j,B as k,E as l};//# sourceMappingURL=chunk-SYUDETGE.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-SYUDETGE.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/format.ts","../src/utils/address.ts","../src/utils/chain.ts","../src/utils/device.ts"],"names":["formatBalance","value","decimals","fixedDecimals","bn","base","whole","fraction","truncatedFraction","formatAddress","address","prefixLength","suffixLength","prefix","suffix","isValidAddress","decoded","decodeAddress","encodeAddress","convertAddress","ss58Format","publicKey","error","isSameAddress","address1","address2","publicKey1","publicKey2","u8aEq","getPublicKey","mapInjectedAccounts","injectedAccounts","sourceId","acc","publicKeyHex","publicKeyBytes","u8aToHex","e","defineChain","chain","getChainToken","getExplorerUrl","explorerUrl","data","type","isMobileDevice"],"mappings":"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","file":"chunk-SYUDETGE.js","sourcesContent":["/**\n * format balance\n */\nexport function formatBalance(\n value: string | number | bigint | undefined,\n decimals: number = 0,\n fixedDecimals: number = 4\n): string {\n if (value === undefined || value === null || value === '') {\n return '0';\n }\n\n const bn = typeof value === 'bigint' ? value : BigInt(value);\n\n if (decimals === 0) {\n return bn.toString();\n }\n\n const base = BigInt(10) ** BigInt(decimals);\n const whole = bn / base;\n const fraction = bn % base;\n\n if (fraction === 0n) {\n return whole.toString();\n }\n\n const paddedFraction = fraction.toString().padStart(decimals, '0');\n const truncatedFraction = paddedFraction\n .substring(0, fixedDecimals)\n .replace(/0+$/, '');\n\n return truncatedFraction ? `${whole.toString()}.${truncatedFraction}` : whole.toString();\n}\n\n/**\n * format address display\n */\nexport function formatAddress(\n address?: string,\n prefixLength = 4,\n suffixLength = 4\n): string {\n if (!address) return '';\n if (address.length <= prefixLength + suffixLength) return address;\n\n const prefix = address.slice(0, prefixLength);\n const suffix = suffixLength > 0 ? address.slice(-suffixLength) : '';\n\n return `${prefix}...${suffix}`;\n}\n\nexport { formatBalance as formatBalanceWithUnit } from 'dedot/utils';\n","import { decodeAddress, encodeAddress } from 'dedot/utils';\nimport type { Account } from '../types';\nimport { u8aEq, u8aToHex } from 'dedot/utils'\nimport type { InjectedAccount } from 'dedot/types'\nimport type { HexString } from 'dedot/utils'\n\n/**\n * check if address is valid\n */\nexport function isValidAddress(address: string): boolean {\n try {\n const decoded = decodeAddress(address);\n encodeAddress(decoded);\n return true;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * convert address to specified SS58 format\n */\nexport function convertAddress(address: string, ss58Format: number): string {\n try {\n const publicKey = decodeAddress(address);\n return encodeAddress(publicKey, ss58Format);\n } catch (error: any) {\n throw new Error(`Failed to convert address: ${error.message}`);\n }\n}\n\n/**\n * check if two addresses are the same (ignore SS58 format)\n */\nexport function isSameAddress(address1: string, address2: string): boolean {\n try {\n const publicKey1 = decodeAddress(address1);\n const publicKey2 = decodeAddress(address2);\n\n return u8aEq(publicKey1, publicKey2)\n } catch (error: any) {\n return false;\n }\n}\n\n/**\n * get address public key (Currently, Ethereum addresses are not supported.)\n */\nexport function getPublicKey(address: string): Uint8Array {\n try {\n const publicKey = decodeAddress(address);\n if (publicKey.length !== 32) {\n throw new Error(`Invalid public key length: expected 32 bytes, got ${publicKey.length}`);\n }\n return publicKey;\n } catch (error: any) {\n throw new Error(`Failed to get public key: ${error.message}`);\n }\n}\n\n/**\n * map injected accounts to internal Account type\n * mainly extract address, name, source, and try to decode public key\n */\nexport function mapInjectedAccounts(injectedAccounts: InjectedAccount[], sourceId: string): Account[] {\n if (!injectedAccounts) return []\n\n try {\n return injectedAccounts.map((acc: InjectedAccount) => {\n let publicKeyHex: HexString | undefined;\n try {\n const publicKeyBytes = decodeAddress(acc.address);\n publicKeyHex = u8aToHex(publicKeyBytes);\n } catch (error) {\n console.error(`Failed to decode address \"${acc.address}\" to extract public key:`, error);\n }\n\n const mappedAccount: Account = {\n address: acc.address,\n name: acc.name,\n publicKey: publicKeyHex,\n meta: {\n source: sourceId,\n genesisHash: acc.genesisHash,\n },\n type: acc.type\n };\n\n return mappedAccount;\n });\n } catch (e: any) {\n throw new Error(`Failed to map injected accounts: ${e.message}`);\n }\n}\n","import type { Chain } from '../types'\n\nexport function defineChain(chain: Chain): Chain {\n return chain;\n}\n\nexport function getChainToken(chain: Chain): string {\n return chain.nativeCurrency.symbol;\n}\n\nexport function getExplorerUrl(explorerUrl = '', data = '', type: 'transaction' | 'address' | 'block' = 'transaction'): string {\n if (!explorerUrl) return '';\n\n switch (type) {\n case 'transaction':\n return `${explorerUrl}/extrinsic/${data}`;\n case 'address':\n return `${explorerUrl}/account/${data}`;\n case 'block':\n return `${explorerUrl}/block/${data}`;\n default:\n return explorerUrl;\n }\n}\n","export const isMobileDevice = () => {\n if (typeof window !== 'undefined' && window.navigator && window.navigator.userAgent) {\n return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(\n window.navigator.userAgent.toLowerCase()\n );\n }\n return false\n};\n"]}
|
package/dist/chunk-VGX4US5T.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import {e,f as f$1,g,h as h$1,i,b as b$1}from'./chunk-LXQJABLC.js';import {h,l}from'./chunk-SYUDETGE.js';import {EventEmitter}from'eventemitter3';import {stringToHex}from'dedot/utils';var a=class extends EventEmitter{constructor(){super();this.links={};this.accounts=[];this.signer=void 0;this.connectionUri=void 0;}async getAccounts(){return [...this.accounts]}async getSigner(){return this.signer||console.warn(`Connector ${this.id}: Signer not available. Connection might be incomplete or failed.`),this.signer}hasConnectionUri(){return false}async getConnectionUri(){return this.connectionUri}async updateAccountsForChain(t){return [...this.accounts]}};var o=class extends a{constructor(t){super();this.unsubscribe=null;this.specificInjector=void 0;this.id=t.id,this.name=t.name,this.icon=t.icon,this.links=t.links,this.injectorId=t.injectorId||t.id;}isInstalled(){if(typeof window>"u")return false;let t=window.injectedWeb3;return typeof t=="object"&&typeof t[this.injectorId]<"u"}async isAvailable(){return this.isInstalled()}async connect(t){if(console.log(`Connector ${this.id}: Attempting to connect...`),this.signer)return console.log(`Connector ${this.id}: Already connected.`),[...this.accounts];if(!await this.isAvailable())throw new Error(`${this.name} extension not found or not enabled.`);try{if(this.specificInjector=await window.injectedWeb3[this.injectorId].enable(t),!this.specificInjector)throw new Error(`Failed to enable the '${this.id}' extension.`);if(this.signer=this.specificInjector.signer,!this.signer)throw new Error(`Could not get signer from ${this.name}.`);let n=await this.specificInjector.accounts.get();if(n.length===0)throw new Error(`No accounts found in ${this.name}. Make sure accounts are visible and access is granted.`);return this.accounts=h(n,this.id),console.log(`Connector ${this.id}: Initial accounts loaded`,this.accounts),await this.startSubscription(),this.emit("connect",[...this.accounts]),[...this.accounts]}catch(n){throw console.error(`Connector ${this.id}: Connection failed:`,n),await this.cleanup(),n}}async disconnect(){console.log(`Connector ${this.id}: Disconnecting...`),await this.cleanup(),this.emit("disconnect");}async signMessage(t,n){if(!n||!t)return;let s=await this.getSigner();if(!s||!s?.signRaw)throw new Error("Signer is not available or does not support signRaw.");if(!(await this.getAccounts()).some(e=>e.address.toLowerCase()===n.toLowerCase()))throw new Error(`Address ${n} is not managed by ${this.name}.`);try{let e=stringToHex(t);return (await s.signRaw({address:n,data:e,type:"bytes"})).signature}catch(e){throw new Error(`Connector ${this.id}: Failed to sign message: ${e.message}`)}}async startSubscription(){if(await this.cleanupSubscription(),!this.specificInjector)throw new Error(`Connector ${this.id}: Cannot subscribe, specificInjector not available.`);try{this.unsubscribe=this.specificInjector.accounts.subscribe(t=>{let n=h(t,this.id);JSON.stringify(this.accounts)!==JSON.stringify(n)&&(this.accounts=n,this.emit("accountsChanged",[...this.accounts]));}),console.log(`Connector ${this.id}: Subscribed to account changes.`);}catch(t){console.error(`Connector ${this.id}: Failed to subscribe to accounts:`,t),this.unsubscribe=null;}}async cleanupSubscription(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,console.log(`Connector ${this.id}: Unsubscribed from account changes.`));}async cleanup(){await this.cleanupSubscription(),this.accounts=[],this.signer=void 0,this.specificInjector=void 0;}};var P=()=>new o({id:"polkadot-js",name:"Polkadot{.js}",icon:e,links:{browserExtension:"https://polkadot.js.org/extension"}});var x=()=>new o({id:"polkagate",name:"Polkagate",icon:f$1,links:{browserExtension:"https://chromewebstore.google.com/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp"}});var $=()=>new o({id:"subwallet-js",name:"SubWallet",icon:g,links:{browserExtension:"https://chromewebstore.google.com/detail/subwallet-polkadot-wallet/onhogfjeacnfoofkfgppdlbmlmnplgbn",deepLink:"https://mobile.subwallet.app/browser"}});var E=()=>new o({id:"talisman",name:"Talisman",icon:h$1,links:{browserExtension:"https://chromewebstore.google.com/detail/talisman-wallet/fijngjgcjhjmmpcmkeiomlglpeiijkld"}});var u=class extends a{constructor(t){super();this.unsubscribe=null;this.id=t.id||"walletconnect",this.name=t.name||"WalletConnect",this.links=t.links||{},this.icon=t.icon||i,this.projectId=t.projectId,this.relayUrl=t.relayUrl||"wss://relay.walletconnect.com",this.metadata=t.metadata;}isInstalled(){return false}async isAvailable(){return true}convertChainIdToCaipId(t){return t.map(n=>`polkadot:${n.genesisHash.replace("0x","").slice(0,32)}`)}async connect(t,n,s){if(!this.projectId)throw new Error(`${this.name} requires a projectId. Please visit https://cloud.walletconnect.com to get one.`);if(!n||n.length===0)throw new Error(`${this.name} requires chains configuration.`);this.connectedChains=n;let{UniversalProvider:c}=await import('@walletconnect/universal-provider');try{this.provider=await c.init({projectId:this.projectId,relayUrl:this.relayUrl,metadata:this.metadata||{name:t,description:"LunoKit DApp",url:typeof window<"u"?window.location.origin:"",icons:[this.icon]}});let e=s||n[0].genesisHash;if(this.provider.session){this.session=this.provider.session;let j=this.getAccountsFromSession(n,e);return this.accounts=j,await this.startSubscription(),this.emit("connect",[...this.accounts]),[...this.accounts]}if(!this.provider?.client)throw new Error("Provider not initialized or not connected");let{uri:p,approval:i}=await this.provider.client.connect({requiredNamespaces:{polkadot:{methods:["polkadot_signMessage","polkadot_sendTransaction","polkadot_signTransaction","polkadot_requestAccounts"],chains:this.convertChainIdToCaipId(n),events:["accountsChanged","chainChanged","connect"]}},optionalNamespaces:{polkadot:{methods:["polkadot_signMessage","polkadot_sendTransaction","polkadot_signTransaction","polkadot_requestAccounts"],chains:this.convertChainIdToCaipId(n),events:["accountsChanged","chainChanged","connect"]}}});this.emit("get_uri",p);let l=await i();this.session=l,this.provider.session=l,this.connectionUri=void 0;let I=this.getAccountsFromSession(n,e);return this.accounts=I,await this.startSubscription(),this.emit("connect",[...this.accounts]),[...this.accounts]}catch(e){throw this.connectionUri=void 0,e}}getAccountsFromSession(t,n){let s=t.filter(i=>i.genesisHash.toLowerCase()===n.toLowerCase()),c=this.convertChainIdToCaipId(s)[0],e=this.session?.namespaces.polkadot.accounts.flat().filter(i=>i.includes(c)).map(i=>i.replace(`${c}:`,""));if(e&&e.length===0){console.error("No accounts found for the specified chain, please connect to the correct chain");let i=this.convertChainIdToCaipId(t)[0];e=this.session?.namespaces.polkadot.accounts.flat().filter(l=>l.includes(i)).map(l=>l.replace(`${i}:`,""));}let p=e.map(i=>({address:i,name:`${this.name} Account`,meta:{source:this.id},publicKey:void 0}));return this.emit("accountsChanged",[...p]),p}async disconnect(){this.provider&&(console.log("this.provider",this.provider),console.log("this.sessionsession",this.session),await this.provider.disconnect()),await this.cleanup(),this.emit("disconnect");}async signMessage(t,n,s){if(!this.provider?.client||!this.session?.topic)throw new Error("Provider not initialized or not connected");let c=s?`polkadot:${s.replace("0x","").slice(0,32)}`:this.convertChainIdToCaipId(this.connectedChains)[0];try{return (await this.provider.client.request({topic:this.session.topic,chainId:c,request:{method:"polkadot_signMessage",params:{address:n,message:t,type:"bytes"}}}))?.signature}catch(e){throw console.error("Sign message error:",e),e}}hasConnectionUri(){return true}async getConnectionUri(){return this.connectionUri?this.connectionUri:new Promise(t=>{this.once("get_uri",n=>{this.connectionUri=n,t(n);});})}async updateAccountsForChain(t){if(!this.connectedChains)throw new Error("WalletConnect not connected");let n=this.getAccountsFromSession(this.connectedChains,t);return this.accounts=n,n}async getSigner(){if(!(!this.provider?.client||!this.session))return {signPayload:async t=>{try{return await this.provider?.client?.request({topic:this.session.topic,chainId:`polkadot:${t.genesisHash.replace("0x","").slice(0,32)}`,request:{method:"polkadot_signTransaction",params:{address:t.address,transactionPayload:t}}})}catch(n){throw new Error(`Transaction signing failed: ${JSON.stringify(n)}`)}}}}async startSubscription(){if(await this.cleanupSubscription(),!this.provider?.client||!this.session)throw new Error(`Connector ${this.id}: Cannot subscribe, provider or session not available.`);try{let t=async()=>{console.log(`Connector ${this.id}: Session deleted, disconnecting...`),await this.cleanup(),this.emit("disconnect");};this.provider.client.on("session_delete",t),this.unsubscribe=()=>{this.provider?.client?.off("session_delete",t);};}catch{this.unsubscribe=null;}}async cleanupSubscription(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,console.log(`Connector ${this.id}: Unsubscribed from events.`));}async cleanup(){await this.cleanupSubscription(),this.accounts=[],this.signer=void 0,this.provider=void 0,this.session=void 0;}},U=r=>new u(r);var b=class extends o{constructor(){super({id:"nova-mobile",name:"Nova Wallet",icon:b$1,injectorId:"polkadot-js",links:{deepLink:"https://app.novawallet.io/open/dapp"}});}isInstalled(){if(typeof window>"u")return false;let d=window.injectedWeb3;return typeof d=="object"&&typeof d["polkadot-js"]<"u"&&window.walletExtension?.isNovaWallet===true}async isAvailable(){return this.isInstalled()}},f=()=>new b;var W=r=>{if(r.mobileOnly&&!l())throw new Error("Nova Wallet mobile connector cannot be used on desktop devices");if(r.mobileOnly)throw new Error("Nova Wallet is not installed. Please install Nova Wallet to continue.");return l()?f():new u({id:"nova",name:"Nova Wallet",icon:b$1,links:{browserExtension:"https://novawallet.io"},...r})};
|
|
2
|
-
export{a,o as b,P as c,x as d,$ as e,E as f,U as g,f as h,W as i};//# sourceMappingURL=chunk-VGX4US5T.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-VGX4US5T.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connectors/base.ts","../src/connectors/common.ts","../src/connectors/polkadot-js.ts","../src/connectors/polkagate.ts","../src/connectors/subwallet.ts","../src/connectors/talisman.ts","../src/connectors/walletconnect.ts","../src/connectors/novaMobile.ts","../src/connectors/nova.ts"],"names":["BaseConnector","EventEmitter","chainId","CommonConnector","options","injectedWeb3","appName","rawAccounts","mapInjectedAccounts","error","message","address","signer","acc","dataHex","stringToHex","updatedRawAccounts","newAccounts","polkadotjsConnector","polkadotjsSVG","polkagateConnector","polkagateSVG","subwalletConnector","subwalletSVG","talismanConnector","talismanSVG","WalletConnectConnector","walletconnectSVG","chains","chain","targetChainId","UniversalProvider","chainIdToUse","accounts","uri","approval","session","targetChain","caipId","result","resolve","payload","sessionDeleteHandler","walletConnectConnector","NovaMobileConnector","novaSVG","novaMobileConnector","novaConnector","config","isMobileDevice"],"mappings":"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","file":"chunk-VGX4US5T.js","sourcesContent":["import type {Account, Chain, Signer} from '../types';\nimport { EventEmitter } from 'eventemitter3';\nimport { ConnectorLinks } from '../types'\n\n/**\n * base connector abstract class\n * defines the basic properties and methods that all wallet connectors should have.\n */\nexport abstract class BaseConnector extends EventEmitter {\n /**\n * the unique identifier of the connector (e.g., 'polkadot-js', 'subwallet-js')\n * subclasses must implement.\n */\n abstract readonly id: string;\n\n /**\n * user-friendly connector name (e.g., 'Polkadot{.js}', 'SubWallet')\n * subclasses must implement.\n */\n abstract readonly name: string;\n\n /**\n * connector icon URL (optional)\n * subclasses can implement.\n */\n abstract readonly icon?: string;\n\n readonly links: ConnectorLinks = {};\n /**\n * store the current connected accounts.\n * subclasses are responsible for maintaining this list when connecting and updating accounts.\n */\n protected accounts: Account[] = [];\n /**\n * store the signer.\n * subclasses are responsible for getting and storing it when connecting.\n */\n protected signer: Signer | undefined = undefined;\n\n protected connectionUri: string | undefined = undefined;\n\n constructor() {\n super();\n }\n\n public abstract isAvailable(): Promise<boolean>;\n\n public abstract isInstalled(): boolean;\n\n /**\n * connect to the wallet, get the initial accounts and signer, and set the necessary event listeners.\n * subclasses must implement:\n * 1. get the signer and assign it to this.signer.\n * 2. get the initial accounts list and assign it to this.accounts.\n * 3. set the account update mechanism of itself (e.g., use web3AccountsSubscribe or WalletConnect events).\n * 4. update this.accounts when the account list changes and trigger the 'accountsChanged' event.\n * 5. (optional) trigger the 'connect' event.\n * @returns the initial available accounts list\n */\n abstract connect(appName: string, chains?: Chain[], targetChainId?: string): Promise<Array<Account>>;\n /**\n * disconnect from the wallet.\n * subclasses must implement this method to perform specific cleanup logic\n * (e.g., unsubscribe, close session).\n * implementers should clear this.accounts and this.signer after cleanup and trigger the 'disconnect' event.\n */\n abstract disconnect(): Promise<void>;\n\n /**\n * get the current connected accounts list.\n * @returns the current available accounts list\n */\n public async getAccounts(): Promise<Array<Account>> {\n return [...this.accounts];\n }\n\n /**\n * get the cached signer object.\n * @returns the signer object, or undefined if the connection is not successful or cannot be obtained.\n */\n public async getSigner(): Promise<Signer | undefined> {\n if (!this.signer) {\n console.warn(`Connector ${this.id}: Signer not available. Connection might be incomplete or failed.`);\n }\n return this.signer;\n }\n\n /**\n * sign a message with the specified account.\n */\n abstract signMessage(message: string, address: string, chainId?: string): Promise<string | undefined>;\n\n public hasConnectionUri(): boolean {\n return false\n }\n\n public async getConnectionUri(): Promise<string | undefined >{\n return this.connectionUri;\n }\n\n public async updateAccountsForChain(chainId: string): Promise<Account[]> {\n return [...this.accounts];\n }\n}\n","import { BaseConnector } from './base';\nimport type { Account, Signer } from '../types';\nimport { mapInjectedAccounts } from '../utils'\nimport { Injected, InjectedAccount } from 'dedot/types'\nimport { stringToHex } from 'dedot/utils'\nimport { ConnectorLinks } from '../types'\n\nexport interface CommonConnectorOptions {\n id: string;\n name: string;\n icon: string;\n links: ConnectorLinks;\n injectorId?: string;\n}\n\nexport class CommonConnector extends BaseConnector {\n readonly id: string;\n readonly name: string;\n readonly icon: string;\n readonly links: ConnectorLinks;\n protected readonly injectorId: string;\n\n private unsubscribe: (() => void) | null = null;\n\n private specificInjector?: Injected = undefined\n\n constructor(options: CommonConnectorOptions) {\n super();\n this.id = options.id;\n this.name = options.name;\n this.icon = options.icon;\n this.links = options.links;\n this.injectorId = options.injectorId || options.id;\n }\n\n public isInstalled(): boolean {\n if (typeof window === 'undefined') return false;\n const injectedWeb3 = window.injectedWeb3;\n return typeof injectedWeb3 === 'object' && typeof injectedWeb3[this.injectorId] !== 'undefined';\n }\n\n public async isAvailable(): Promise<boolean> {\n return this.isInstalled();\n }\n\n public async connect(appName: string): Promise<Array<Account>> {\n console.log(`Connector ${this.id}: Attempting to connect...`);\n if (this.signer) {\n console.log(`Connector ${this.id}: Already connected.`);\n return [...this.accounts];\n }\n if (!(await this.isAvailable())) {\n throw new Error(`${this.name} extension not found or not enabled.`);\n }\n\n try {\n this.specificInjector = await window.injectedWeb3![this.injectorId]!.enable(appName);\n\n if (!this.specificInjector) {\n throw new Error(`Failed to enable the '${this.id}' extension.`);\n }\n\n this.signer = this.specificInjector.signer as Signer;\n\n if (!this.signer) {\n throw new Error(`Could not get signer from ${this.name}.`);\n }\n\n const rawAccounts = await this.specificInjector.accounts.get();\n if (rawAccounts.length === 0) {\n throw new Error(`No accounts found in ${this.name}. Make sure accounts are visible and access is granted.`);\n }\n this.accounts = mapInjectedAccounts(rawAccounts, this.id);\n console.log(`Connector ${this.id}: Initial accounts loaded`, this.accounts);\n\n await this.startSubscription();\n\n this.emit('connect', [...this.accounts]);\n\n return [...this.accounts];\n\n } catch (error) {\n console.error(`Connector ${this.id}: Connection failed:`, error);\n await this.cleanup();\n throw error;\n }\n }\n\n public async disconnect(): Promise<void> {\n console.log(`Connector ${this.id}: Disconnecting...`);\n await this.cleanup();\n this.emit('disconnect');\n }\n\n public async signMessage(message: string, address: string): Promise<string | undefined> {\n if (!address || !message) return undefined;\n const signer = await this.getSigner();\n if (!signer || !signer?.signRaw) {\n throw new Error('Signer is not available or does not support signRaw.');\n }\n const accounts = await this.getAccounts();\n if (!accounts.some(acc => acc.address.toLowerCase() === address.toLowerCase())) {\n throw new Error(`Address ${address} is not managed by ${this.name}.`);\n }\n\n try {\n const dataHex = stringToHex(message);\n const result = await signer.signRaw({ address, data: dataHex, type: 'bytes' });\n return result.signature;\n } catch (error: any) {\n throw new Error(`Connector ${this.id}: Failed to sign message: ${error.message}`);\n }\n }\n\n\n private async startSubscription(): Promise<void> {\n await this.cleanupSubscription();\n if (!this.specificInjector) {\n throw new Error(`Connector ${this.id}: Cannot subscribe, specificInjector not available.`);\n }\n\n try {\n this.unsubscribe = this.specificInjector.accounts.subscribe(\n (updatedRawAccounts: InjectedAccount[]) => {\n const newAccounts = mapInjectedAccounts(updatedRawAccounts, this.id);\n if (JSON.stringify(this.accounts) !== JSON.stringify(newAccounts)) {\n this.accounts = newAccounts;\n this.emit('accountsChanged', [...this.accounts]);\n }\n }\n );\n console.log(`Connector ${this.id}: Subscribed to account changes.`);\n } catch (error) {\n console.error(`Connector ${this.id}: Failed to subscribe to accounts:`, error);\n this.unsubscribe = null;\n }\n }\n\n private async cleanupSubscription(): Promise<void> {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n console.log(`Connector ${this.id}: Unsubscribed from account changes.`);\n }\n }\n\n\n private async cleanup(): Promise<void> {\n await this.cleanupSubscription();\n this.accounts = [];\n this.signer = undefined;\n this.specificInjector = undefined\n }\n}\n","import { CommonConnector } from './common'\nimport { polkadotjsSVG } from '../config/logos/generated'\n\nexport const polkadotjsConnector = () => {\n return new CommonConnector({\n id: 'polkadot-js',\n name: 'Polkadot{.js}',\n icon: polkadotjsSVG,\n links: {\n browserExtension: 'https://polkadot.js.org/extension'\n }\n });\n}\n","import { polkagateSVG } from '../config/logos/generated'\nimport { CommonConnector } from './common'\n\nexport const polkagateConnector = () => {\n return new CommonConnector({\n id: 'polkagate',\n name: 'Polkagate',\n icon: polkagateSVG,\n links: {\n browserExtension: 'https://chromewebstore.google.com/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp'\n }\n });\n}\n","import { subwalletSVG } from '../config/logos/generated'\nimport { CommonConnector } from './common'\n\nexport const subwalletConnector = () => {\n return new CommonConnector({\n id: 'subwallet-js',\n name: 'SubWallet',\n icon: subwalletSVG,\n links: {\n browserExtension: 'https://chromewebstore.google.com/detail/subwallet-polkadot-wallet/onhogfjeacnfoofkfgppdlbmlmnplgbn',\n deepLink: 'https://mobile.subwallet.app/browser',\n }\n })\n};\n","import { talismanSVG } from '../config/logos/generated'\nimport { CommonConnector } from './common'\n\nexport const talismanConnector = () => {\n return new CommonConnector({\n id: 'talisman',\n name: 'Talisman',\n icon: talismanSVG,\n links: {\n browserExtension: 'https://chromewebstore.google.com/detail/talisman-wallet/fijngjgcjhjmmpcmkeiomlglpeiijkld'\n }\n });\n}\n","import { BaseConnector } from './base';\nimport type { IUniversalProvider, Metadata } from '@walletconnect/universal-provider';\nimport { SessionTypes, SignClientTypes } from '@walletconnect/types'\nimport type { Account, Chain, Signer, WalletConnectConnectorOptions } from '../types';\nimport { walletconnectSVG } from '../config/logos/generated';\nimport { SignerResult, SignerPayloadJSON } from 'dedot/types'\nimport { ConnectorLinks } from '../types'\n\nexport class WalletConnectConnector extends BaseConnector {\n readonly id: string;\n readonly name: string;\n readonly icon: string;\n readonly links: ConnectorLinks;\n\n private provider?: IUniversalProvider;\n private projectId: string;\n private relayUrl: string;\n private metadata?: Metadata;\n\n private session?: SessionTypes.Struct;\n private connectedChains?: Chain[];\n\n private unsubscribe: (() => void) | null = null;\n\n constructor(options: WalletConnectConnectorOptions) {\n super();\n this.id = options.id || 'walletconnect';\n this.name = options.name || 'WalletConnect';\n this.links = options.links || {};\n\n this.icon = options.icon || walletconnectSVG;\n\n this.projectId = options.projectId;\n this.relayUrl = options.relayUrl || 'wss://relay.walletconnect.com';\n this.metadata = options.metadata;\n }\n\n public isInstalled(): boolean {\n return false;\n }\n\n public async isAvailable(): Promise<boolean> {\n return true;\n }\n\n private convertChainIdToCaipId(chains: Chain[]): string[] {\n return chains.map(chain => `polkadot:${chain.genesisHash.replace('0x', '').slice(0, 32)}`);\n }\n\n public async connect(appName: string, chains?: Chain[], targetChainId?: string): Promise<Array<Account>> {\n if (!this.projectId) {\n throw new Error(`${this.name} requires a projectId. Please visit https://cloud.walletconnect.com to get one.`);\n }\n\n if (!chains || chains.length === 0) {\n throw new Error(`${this.name} requires chains configuration.`);\n }\n\n this.connectedChains = chains;\n\n const { UniversalProvider } = await import(\"@walletconnect/universal-provider\");\n\n try {\n this.provider = await UniversalProvider.init({\n projectId: this.projectId,\n relayUrl: this.relayUrl,\n metadata: this.metadata || {\n name: appName,\n description: 'LunoKit DApp',\n url: typeof window !== 'undefined' ? window.location.origin : '',\n icons: [this.icon],\n },\n });\n\n const chainIdToUse = targetChainId || chains[0].genesisHash;\n\n if (this.provider.session) {\n this.session = this.provider.session;\n const accounts = this.getAccountsFromSession(chains, chainIdToUse);\n this.accounts = accounts;\n\n await this.startSubscription();\n\n this.emit('connect', [...this.accounts]);\n return [...this.accounts];\n }\n\n if (!this.provider?.client) {\n throw new Error(\"Provider not initialized or not connected\");\n }\n\n const { uri, approval } = await this.provider.client.connect({\n requiredNamespaces: {\n polkadot: {\n methods: ['polkadot_signMessage', 'polkadot_sendTransaction', 'polkadot_signTransaction', 'polkadot_requestAccounts'],\n chains: this.convertChainIdToCaipId(chains),\n events: ['accountsChanged', 'chainChanged', 'connect'],\n },\n },\n optionalNamespaces: {\n polkadot: {\n methods: ['polkadot_signMessage', 'polkadot_sendTransaction', 'polkadot_signTransaction', 'polkadot_requestAccounts'],\n chains: this.convertChainIdToCaipId(chains),\n events: ['accountsChanged', 'chainChanged', 'connect'],\n },\n },\n });\n\n this.emit('get_uri', uri);\n\n const session = await approval();\n this.session = session;\n this.provider.session = session;\n\n this.connectionUri = undefined;\n\n const accounts = this.getAccountsFromSession(chains, chainIdToUse);\n this.accounts = accounts;\n\n // 启动订阅\n await this.startSubscription();\n\n this.emit('connect', [...this.accounts]);\n return [...this.accounts];\n\n } catch (error) {\n this.connectionUri = undefined;\n throw error;\n }\n }\n\n private getAccountsFromSession(chains: Chain[], chainId: string): Account[] {\n const targetChain = chains.filter(chain => chain.genesisHash.toLowerCase() === chainId.toLowerCase())\n const caipId = this.convertChainIdToCaipId(targetChain)[0];\n\n let rawAccounts = this.session?.namespaces.polkadot.accounts\n .flat()\n .filter((address: string) => address.includes(caipId))\n .map((address: string) => address.replace(`${caipId}:`, \"\"))\n\n if (rawAccounts && rawAccounts.length === 0) {\n console.error(`No accounts found for the specified chain, please connect to the correct chain`);\n\n const caipId = this.convertChainIdToCaipId(chains)[0];\n\n rawAccounts = this.session?.namespaces.polkadot.accounts\n .flat()\n .filter((address: string) => address.includes(caipId))\n .map((address: string) => address.replace(`${caipId}:`, \"\"))\n }\n\n const result = rawAccounts!\n .map((address: string) => ({\n address,\n name: `${this.name} Account`,\n meta: {\n source: this.id,\n },\n publicKey: undefined,\n }));\n\n this.emit('accountsChanged', [...result]);\n\n return result!\n }\n\n public async disconnect(): Promise<void> {\n if (this.provider) {\n console.log('this.provider', this.provider)\n console.log('this.sessionsession', this.session)\n // await Promise.race([\n await this.provider.disconnect()\n // new Promise((_, reject) =>\n // setTimeout(() => reject(new Error('Disconnect timeout')), 5000)\n // )\n // ]);\n }\n await this.cleanup()\n this.emit('disconnect');\n }\n\n public async signMessage(message: string, address: string, chainId?: string): Promise<string | undefined> {\n if (!this.provider?.client || !this.session?.topic) {\n throw new Error(\"Provider not initialized or not connected\");\n }\n\n const targetChainId = chainId\n ? `polkadot:${chainId.replace('0x', '').slice(0, 32)}`\n : this.convertChainIdToCaipId(this.connectedChains!)[0]\n\n try {\n const result = await this.provider.client.request({\n topic: this.session.topic,\n chainId: targetChainId,\n request: {\n method: 'polkadot_signMessage',\n params: {\n address,\n message,\n type: 'bytes'\n },\n },\n });\n\n return (result as any)?.signature;\n } catch (error) {\n console.error('Sign message error:', error);\n throw error;\n }\n }\n\n public hasConnectionUri(): boolean {\n return true\n }\n\n public async getConnectionUri(): Promise<string> {\n if (this.connectionUri) {\n return this.connectionUri;\n }\n\n return new Promise<string>((resolve) => {\n this.once('get_uri', (uri: string) => {\n this.connectionUri = uri;\n resolve(uri);\n });\n });\n }\n\n public async updateAccountsForChain(chainId: string) {\n if (!this.connectedChains) {\n throw new Error('WalletConnect not connected');\n }\n\n const newAccounts = this.getAccountsFromSession(this.connectedChains, chainId);\n this.accounts = newAccounts;\n\n return newAccounts;\n }\n\n\n public async getSigner(): Promise<Signer | undefined> {\n if (!this.provider?.client || !this.session) return undefined;\n\n return {\n signPayload: async (payload: SignerPayloadJSON): Promise<SignerResult> => {\n try {\n const result = await this.provider?.client?.request<{ signature: string }>({\n topic: this.session!.topic,\n chainId: `polkadot:${payload.genesisHash.replace('0x', '').slice(0, 32)}`,\n request: {\n method: 'polkadot_signTransaction',\n params: {\n address: payload.address,\n transactionPayload: payload,\n },\n },\n });\n return result as SignerResult;\n } catch (error) {\n throw new Error(`Transaction signing failed: ${JSON.stringify(error)}`);\n }\n }\n };\n }\n\n private async startSubscription(): Promise<void> {\n await this.cleanupSubscription();\n\n if (!this.provider?.client || !this.session) {\n throw new Error(`Connector ${this.id}: Cannot subscribe, provider or session not available.`);\n }\n\n try {\n const sessionDeleteHandler = async () => {\n console.log(`Connector ${this.id}: Session deleted, disconnecting...`);\n await this.cleanup()\n this.emit('disconnect');\n }\n this.provider.client.on('session_delete', sessionDeleteHandler);\n\n this.unsubscribe = () => {\n this.provider?.client?.off('session_delete', sessionDeleteHandler)\n }\n\n } catch (error) {\n this.unsubscribe = null;\n }\n }\n\n private async cleanupSubscription(): Promise<void> {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n console.log(`Connector ${this.id}: Unsubscribed from events.`);\n }\n }\n\n private async cleanup(): Promise<void> {\n await this.cleanupSubscription();\n this.accounts = [];\n this.signer = undefined;\n this.provider = undefined;\n this.session = undefined;\n }\n}\n\nexport const walletConnectConnector = (options: WalletConnectConnectorOptions) =>\n new WalletConnectConnector(options);\n","import { novaSVG } from '../config/logos/generated'\nimport { CommonConnector } from './common'\n\nexport class NovaMobileConnector extends CommonConnector {\n constructor() {\n super({\n id: 'nova-mobile',\n name: 'Nova Wallet',\n icon: novaSVG,\n injectorId: 'polkadot-js',\n links: {\n deepLink: 'https://app.novawallet.io/open/dapp'\n }\n });\n }\n\n public isInstalled(): boolean {\n if (typeof window === 'undefined') return false;\n const injectedWeb3 = window.injectedWeb3;\n return (\n typeof injectedWeb3 === 'object' &&\n typeof injectedWeb3['polkadot-js'] !== 'undefined' &&\n window.walletExtension?.isNovaWallet === true\n );\n }\n\n public async isAvailable(): Promise<boolean> {\n return this.isInstalled();\n }\n}\n\nexport const novaMobileConnector = () => new NovaMobileConnector()\n","import { novaSVG } from '../config/logos/generated'\nimport { WalletConnectConnector } from './walletconnect'\nimport type { Metadata } from '@walletconnect/universal-provider'\nimport { novaMobileConnector } from './novaMobile'\nimport { isMobileDevice } from '../utils'\n\ntype WalletConnectConfig = {\n projectId: string;\n relayUrl?: string;\n metadata?: Metadata;\n}\n\ntype MobileOnlyConfig = {\n mobileOnly: true;\n}\n\ntype NovaConnectorConfig = WalletConnectConfig | MobileOnlyConfig;\n\nexport const novaConnector = (config: NovaConnectorConfig) => {\n if ((config as MobileOnlyConfig).mobileOnly && !isMobileDevice()) {\n throw new Error('Nova Wallet mobile connector cannot be used on desktop devices');\n }\n\n if ((config as MobileOnlyConfig).mobileOnly) {\n throw new Error('Nova Wallet is not installed. Please install Nova Wallet to continue.');\n }\n\n if (isMobileDevice()) {\n return novaMobileConnector();\n }\n\n return new WalletConnectConnector({\n id: 'nova',\n name: 'Nova Wallet',\n icon: novaSVG,\n links: {\n browserExtension: 'https://novawallet.io',\n },\n ...config as WalletConnectConfig,\n });\n};\n"]}
|
package/dist/chunk-WQPMFK4M.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var utils=require('dedot/utils');function g(t,e=0,r=4){if(t==null||t==="")return "0";let n=typeof t=="bigint"?t:BigInt(t);if(e===0)return n.toString();let c=BigInt(10)**BigInt(e),o=n/c,s=n%c;if(s===0n)return o.toString();let a=s.toString().padStart(e,"0").substring(0,r).replace(/0+$/,"");return a?`${o.toString()}.${a}`:o.toString()}function m(t,e=4,r=4){if(!t)return "";if(t.length<=e+r)return t;let n=t.slice(0,e),c=r>0?t.slice(-r):"";return `${n}...${c}`}function x(t){try{let e=utils.decodeAddress(t);return utils.encodeAddress(e),!0}catch{return false}}function A(t,e){try{let r=utils.decodeAddress(t);return utils.encodeAddress(r,e)}catch(r){throw new Error(`Failed to convert address: ${r.message}`)}}function $(t,e){try{let r=utils.decodeAddress(t),n=utils.decodeAddress(e);return utils.u8aEq(r,n)}catch{return false}}function S(t){try{let e=utils.decodeAddress(t);if(e.length!==32)throw new Error(`Invalid public key length: expected 32 bytes, got ${e.length}`);return e}catch(e){throw new Error(`Failed to get public key: ${e.message}`)}}function k(t,e){if(!t)return [];try{return t.map(r=>{let n;try{let o=utils.decodeAddress(r.address);n=utils.u8aToHex(o);}catch(o){console.error(`Failed to decode address "${r.address}" to extract public key:`,o);}return {address:r.address,name:r.name,publicKey:n,meta:{source:e,genesisHash:r.genesisHash},type:r.type}})}catch(r){throw new Error(`Failed to map injected accounts: ${r.message}`)}}function I(t){return t}function K(t){return t.nativeCurrency.symbol}function B(t="",e="",r="transaction"){if(!t)return "";switch(r){case "transaction":return `${t}/extrinsic/${e}`;case "address":return `${t}/account/${e}`;case "block":return `${t}/block/${e}`;default:return t}}var E=()=>typeof window<"u"&&window.navigator&&window.navigator.userAgent?/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(window.navigator.userAgent.toLowerCase()):false;Object.defineProperty(exports,"c",{enumerable:true,get:function(){return utils.formatBalance}});exports.a=g;exports.b=m;exports.d=x;exports.e=A;exports.f=$;exports.g=S;exports.h=k;exports.i=I;exports.j=K;exports.k=B;exports.l=E;//# sourceMappingURL=chunk-WQPMFK4M.cjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-WQPMFK4M.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/format.ts","../src/utils/address.ts","../src/utils/chain.ts","../src/utils/device.ts"],"names":["formatBalance","value","decimals","fixedDecimals","bn","base","whole","fraction","truncatedFraction","formatAddress","address","prefixLength","suffixLength","prefix","suffix","isValidAddress","decoded","decodeAddress","encodeAddress","convertAddress","ss58Format","publicKey","error","isSameAddress","address1","address2","publicKey1","publicKey2","u8aEq","getPublicKey","mapInjectedAccounts","injectedAccounts","sourceId","acc","publicKeyHex","publicKeyBytes","u8aToHex","e","defineChain","chain","getChainToken","getExplorerUrl","explorerUrl","data","type","isMobileDevice"],"mappings":"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","file":"chunk-WQPMFK4M.cjs","sourcesContent":["/**\n * format balance\n */\nexport function formatBalance(\n value: string | number | bigint | undefined,\n decimals: number = 0,\n fixedDecimals: number = 4\n): string {\n if (value === undefined || value === null || value === '') {\n return '0';\n }\n\n const bn = typeof value === 'bigint' ? value : BigInt(value);\n\n if (decimals === 0) {\n return bn.toString();\n }\n\n const base = BigInt(10) ** BigInt(decimals);\n const whole = bn / base;\n const fraction = bn % base;\n\n if (fraction === 0n) {\n return whole.toString();\n }\n\n const paddedFraction = fraction.toString().padStart(decimals, '0');\n const truncatedFraction = paddedFraction\n .substring(0, fixedDecimals)\n .replace(/0+$/, '');\n\n return truncatedFraction ? `${whole.toString()}.${truncatedFraction}` : whole.toString();\n}\n\n/**\n * format address display\n */\nexport function formatAddress(\n address?: string,\n prefixLength = 4,\n suffixLength = 4\n): string {\n if (!address) return '';\n if (address.length <= prefixLength + suffixLength) return address;\n\n const prefix = address.slice(0, prefixLength);\n const suffix = suffixLength > 0 ? address.slice(-suffixLength) : '';\n\n return `${prefix}...${suffix}`;\n}\n\nexport { formatBalance as formatBalanceWithUnit } from 'dedot/utils';\n","import { decodeAddress, encodeAddress } from 'dedot/utils';\nimport type { Account } from '../types';\nimport { u8aEq, u8aToHex } from 'dedot/utils'\nimport type { InjectedAccount } from 'dedot/types'\nimport type { HexString } from 'dedot/utils'\n\n/**\n * check if address is valid\n */\nexport function isValidAddress(address: string): boolean {\n try {\n const decoded = decodeAddress(address);\n encodeAddress(decoded);\n return true;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * convert address to specified SS58 format\n */\nexport function convertAddress(address: string, ss58Format: number): string {\n try {\n const publicKey = decodeAddress(address);\n return encodeAddress(publicKey, ss58Format);\n } catch (error: any) {\n throw new Error(`Failed to convert address: ${error.message}`);\n }\n}\n\n/**\n * check if two addresses are the same (ignore SS58 format)\n */\nexport function isSameAddress(address1: string, address2: string): boolean {\n try {\n const publicKey1 = decodeAddress(address1);\n const publicKey2 = decodeAddress(address2);\n\n return u8aEq(publicKey1, publicKey2)\n } catch (error: any) {\n return false;\n }\n}\n\n/**\n * get address public key (Currently, Ethereum addresses are not supported.)\n */\nexport function getPublicKey(address: string): Uint8Array {\n try {\n const publicKey = decodeAddress(address);\n if (publicKey.length !== 32) {\n throw new Error(`Invalid public key length: expected 32 bytes, got ${publicKey.length}`);\n }\n return publicKey;\n } catch (error: any) {\n throw new Error(`Failed to get public key: ${error.message}`);\n }\n}\n\n/**\n * map injected accounts to internal Account type\n * mainly extract address, name, source, and try to decode public key\n */\nexport function mapInjectedAccounts(injectedAccounts: InjectedAccount[], sourceId: string): Account[] {\n if (!injectedAccounts) return []\n\n try {\n return injectedAccounts.map((acc: InjectedAccount) => {\n let publicKeyHex: HexString | undefined;\n try {\n const publicKeyBytes = decodeAddress(acc.address);\n publicKeyHex = u8aToHex(publicKeyBytes);\n } catch (error) {\n console.error(`Failed to decode address \"${acc.address}\" to extract public key:`, error);\n }\n\n const mappedAccount: Account = {\n address: acc.address,\n name: acc.name,\n publicKey: publicKeyHex,\n meta: {\n source: sourceId,\n genesisHash: acc.genesisHash,\n },\n type: acc.type\n };\n\n return mappedAccount;\n });\n } catch (e: any) {\n throw new Error(`Failed to map injected accounts: ${e.message}`);\n }\n}\n","import type { Chain } from '../types'\n\nexport function defineChain(chain: Chain): Chain {\n return chain;\n}\n\nexport function getChainToken(chain: Chain): string {\n return chain.nativeCurrency.symbol;\n}\n\nexport function getExplorerUrl(explorerUrl = '', data = '', type: 'transaction' | 'address' | 'block' = 'transaction'): string {\n if (!explorerUrl) return '';\n\n switch (type) {\n case 'transaction':\n return `${explorerUrl}/extrinsic/${data}`;\n case 'address':\n return `${explorerUrl}/account/${data}`;\n case 'block':\n return `${explorerUrl}/block/${data}`;\n default:\n return explorerUrl;\n }\n}\n","export const isMobileDevice = () => {\n if (typeof window !== 'undefined' && window.navigator && window.navigator.userAgent) {\n return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(\n window.navigator.userAgent.toLowerCase()\n );\n }\n return false\n};\n"]}
|
package/dist/index-Cxsn9zGL.d.ts
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { C as Chain } from './chain-9vBVQoCB.js';
|
|
2
|
-
import { A as Account } from './account-DElDu01m.js';
|
|
3
|
-
import { EventEmitter } from 'eventemitter3';
|
|
4
|
-
import { InjectedSigner } from 'dedot/types';
|
|
5
|
-
import { Metadata } from '@walletconnect/universal-provider';
|
|
6
|
-
|
|
7
|
-
interface Signer extends InjectedSigner {
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
interface ConnectorLinks {
|
|
11
|
-
browserExtension?: string;
|
|
12
|
-
deepLink?: string;
|
|
13
|
-
}
|
|
14
|
-
interface Connector extends EventEmitter {
|
|
15
|
-
readonly id: string;
|
|
16
|
-
readonly name: string;
|
|
17
|
-
readonly icon: string;
|
|
18
|
-
readonly links: ConnectorLinks;
|
|
19
|
-
isAvailable(): Promise<boolean>;
|
|
20
|
-
isInstalled: () => boolean;
|
|
21
|
-
connect(appName: string, chains?: Chain[], targetChainId?: string): Promise<Array<Account>>;
|
|
22
|
-
disconnect(): Promise<void>;
|
|
23
|
-
getAccounts(): Promise<Array<Account>>;
|
|
24
|
-
getSigner(): Promise<Signer | undefined>;
|
|
25
|
-
signMessage(message: string, address: string, chainId?: string): Promise<string | undefined>;
|
|
26
|
-
hasConnectionUri(): boolean;
|
|
27
|
-
getConnectionUri(): Promise<string | undefined>;
|
|
28
|
-
updateAccountsForChain(chainId: string): Promise<Account[]>;
|
|
29
|
-
on(event: 'connect', listener: (accounts: Account[]) => void): this;
|
|
30
|
-
on(event: 'disconnect', listener: () => void): this;
|
|
31
|
-
on(event: 'accountsChanged', listener: (accounts: Account[]) => void): this;
|
|
32
|
-
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
33
|
-
off(event: 'connect', listener: (accounts: Account[]) => void): this;
|
|
34
|
-
off(event: 'disconnect', listener: () => void): this;
|
|
35
|
-
off(event: 'accountsChanged', listener: (accounts: Account[]) => void): this;
|
|
36
|
-
off(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
37
|
-
}
|
|
38
|
-
interface WalletConnectConnectorOptions {
|
|
39
|
-
id?: string;
|
|
40
|
-
name?: string;
|
|
41
|
-
icon?: string;
|
|
42
|
-
projectId: string;
|
|
43
|
-
relayUrl?: string;
|
|
44
|
-
metadata?: Metadata;
|
|
45
|
-
links?: ConnectorLinks;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* base connector abstract class
|
|
50
|
-
* defines the basic properties and methods that all wallet connectors should have.
|
|
51
|
-
*/
|
|
52
|
-
declare abstract class BaseConnector extends EventEmitter {
|
|
53
|
-
/**
|
|
54
|
-
* the unique identifier of the connector (e.g., 'polkadot-js', 'subwallet-js')
|
|
55
|
-
* subclasses must implement.
|
|
56
|
-
*/
|
|
57
|
-
abstract readonly id: string;
|
|
58
|
-
/**
|
|
59
|
-
* user-friendly connector name (e.g., 'Polkadot{.js}', 'SubWallet')
|
|
60
|
-
* subclasses must implement.
|
|
61
|
-
*/
|
|
62
|
-
abstract readonly name: string;
|
|
63
|
-
/**
|
|
64
|
-
* connector icon URL (optional)
|
|
65
|
-
* subclasses can implement.
|
|
66
|
-
*/
|
|
67
|
-
abstract readonly icon?: string;
|
|
68
|
-
readonly links: ConnectorLinks;
|
|
69
|
-
/**
|
|
70
|
-
* store the current connected accounts.
|
|
71
|
-
* subclasses are responsible for maintaining this list when connecting and updating accounts.
|
|
72
|
-
*/
|
|
73
|
-
protected accounts: Account[];
|
|
74
|
-
/**
|
|
75
|
-
* store the signer.
|
|
76
|
-
* subclasses are responsible for getting and storing it when connecting.
|
|
77
|
-
*/
|
|
78
|
-
protected signer: Signer | undefined;
|
|
79
|
-
protected connectionUri: string | undefined;
|
|
80
|
-
constructor();
|
|
81
|
-
abstract isAvailable(): Promise<boolean>;
|
|
82
|
-
abstract isInstalled(): boolean;
|
|
83
|
-
/**
|
|
84
|
-
* connect to the wallet, get the initial accounts and signer, and set the necessary event listeners.
|
|
85
|
-
* subclasses must implement:
|
|
86
|
-
* 1. get the signer and assign it to this.signer.
|
|
87
|
-
* 2. get the initial accounts list and assign it to this.accounts.
|
|
88
|
-
* 3. set the account update mechanism of itself (e.g., use web3AccountsSubscribe or WalletConnect events).
|
|
89
|
-
* 4. update this.accounts when the account list changes and trigger the 'accountsChanged' event.
|
|
90
|
-
* 5. (optional) trigger the 'connect' event.
|
|
91
|
-
* @returns the initial available accounts list
|
|
92
|
-
*/
|
|
93
|
-
abstract connect(appName: string, chains?: Chain[], targetChainId?: string): Promise<Array<Account>>;
|
|
94
|
-
/**
|
|
95
|
-
* disconnect from the wallet.
|
|
96
|
-
* subclasses must implement this method to perform specific cleanup logic
|
|
97
|
-
* (e.g., unsubscribe, close session).
|
|
98
|
-
* implementers should clear this.accounts and this.signer after cleanup and trigger the 'disconnect' event.
|
|
99
|
-
*/
|
|
100
|
-
abstract disconnect(): Promise<void>;
|
|
101
|
-
/**
|
|
102
|
-
* get the current connected accounts list.
|
|
103
|
-
* @returns the current available accounts list
|
|
104
|
-
*/
|
|
105
|
-
getAccounts(): Promise<Array<Account>>;
|
|
106
|
-
/**
|
|
107
|
-
* get the cached signer object.
|
|
108
|
-
* @returns the signer object, or undefined if the connection is not successful or cannot be obtained.
|
|
109
|
-
*/
|
|
110
|
-
getSigner(): Promise<Signer | undefined>;
|
|
111
|
-
/**
|
|
112
|
-
* sign a message with the specified account.
|
|
113
|
-
*/
|
|
114
|
-
abstract signMessage(message: string, address: string, chainId?: string): Promise<string | undefined>;
|
|
115
|
-
hasConnectionUri(): boolean;
|
|
116
|
-
getConnectionUri(): Promise<string | undefined>;
|
|
117
|
-
updateAccountsForChain(chainId: string): Promise<Account[]>;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
interface CommonConnectorOptions {
|
|
121
|
-
id: string;
|
|
122
|
-
name: string;
|
|
123
|
-
icon: string;
|
|
124
|
-
links: ConnectorLinks;
|
|
125
|
-
injectorId?: string;
|
|
126
|
-
}
|
|
127
|
-
declare class CommonConnector extends BaseConnector {
|
|
128
|
-
readonly id: string;
|
|
129
|
-
readonly name: string;
|
|
130
|
-
readonly icon: string;
|
|
131
|
-
readonly links: ConnectorLinks;
|
|
132
|
-
protected readonly injectorId: string;
|
|
133
|
-
private unsubscribe;
|
|
134
|
-
private specificInjector?;
|
|
135
|
-
constructor(options: CommonConnectorOptions);
|
|
136
|
-
isInstalled(): boolean;
|
|
137
|
-
isAvailable(): Promise<boolean>;
|
|
138
|
-
connect(appName: string): Promise<Array<Account>>;
|
|
139
|
-
disconnect(): Promise<void>;
|
|
140
|
-
signMessage(message: string, address: string): Promise<string | undefined>;
|
|
141
|
-
private startSubscription;
|
|
142
|
-
private cleanupSubscription;
|
|
143
|
-
private cleanup;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
declare const polkadotjsConnector: () => CommonConnector;
|
|
147
|
-
|
|
148
|
-
declare const polkagateConnector: () => CommonConnector;
|
|
149
|
-
|
|
150
|
-
declare const subwalletConnector: () => CommonConnector;
|
|
151
|
-
|
|
152
|
-
declare const talismanConnector: () => CommonConnector;
|
|
153
|
-
|
|
154
|
-
declare class WalletConnectConnector extends BaseConnector {
|
|
155
|
-
readonly id: string;
|
|
156
|
-
readonly name: string;
|
|
157
|
-
readonly icon: string;
|
|
158
|
-
readonly links: ConnectorLinks;
|
|
159
|
-
private provider?;
|
|
160
|
-
private projectId;
|
|
161
|
-
private relayUrl;
|
|
162
|
-
private metadata?;
|
|
163
|
-
private session?;
|
|
164
|
-
private connectedChains?;
|
|
165
|
-
private unsubscribe;
|
|
166
|
-
constructor(options: WalletConnectConnectorOptions);
|
|
167
|
-
isInstalled(): boolean;
|
|
168
|
-
isAvailable(): Promise<boolean>;
|
|
169
|
-
private convertChainIdToCaipId;
|
|
170
|
-
connect(appName: string, chains?: Chain[], targetChainId?: string): Promise<Array<Account>>;
|
|
171
|
-
private getAccountsFromSession;
|
|
172
|
-
disconnect(): Promise<void>;
|
|
173
|
-
signMessage(message: string, address: string, chainId?: string): Promise<string | undefined>;
|
|
174
|
-
hasConnectionUri(): boolean;
|
|
175
|
-
getConnectionUri(): Promise<string>;
|
|
176
|
-
updateAccountsForChain(chainId: string): Promise<Account[]>;
|
|
177
|
-
getSigner(): Promise<Signer | undefined>;
|
|
178
|
-
private startSubscription;
|
|
179
|
-
private cleanupSubscription;
|
|
180
|
-
private cleanup;
|
|
181
|
-
}
|
|
182
|
-
declare const walletConnectConnector: (options: WalletConnectConnectorOptions) => WalletConnectConnector;
|
|
183
|
-
|
|
184
|
-
declare class NovaMobileConnector extends CommonConnector {
|
|
185
|
-
constructor();
|
|
186
|
-
isInstalled(): boolean;
|
|
187
|
-
isAvailable(): Promise<boolean>;
|
|
188
|
-
}
|
|
189
|
-
declare const novaMobileConnector: () => NovaMobileConnector;
|
|
190
|
-
|
|
191
|
-
type WalletConnectConfig = {
|
|
192
|
-
projectId: string;
|
|
193
|
-
relayUrl?: string;
|
|
194
|
-
metadata?: Metadata;
|
|
195
|
-
};
|
|
196
|
-
type MobileOnlyConfig = {
|
|
197
|
-
mobileOnly: true;
|
|
198
|
-
};
|
|
199
|
-
type NovaConnectorConfig = WalletConnectConfig | MobileOnlyConfig;
|
|
200
|
-
declare const novaConnector: (config: NovaConnectorConfig) => WalletConnectConnector | NovaMobileConnector;
|
|
201
|
-
|
|
202
|
-
export { BaseConnector as B, type Connector as C, type Signer as S, type WalletConnectConnectorOptions as W, type ConnectorLinks as a, CommonConnector as b, polkagateConnector as c, novaMobileConnector as d, novaConnector as n, polkadotjsConnector as p, subwalletConnector as s, talismanConnector as t, walletConnectConnector as w };
|