From a3299b63c4fc7f68b4709b2c1fce4b1d0043babb Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 31 Jul 2023 11:35:50 +0300 Subject: [PATCH] Extract market place (#78) * chore: remove marketplace components * feat: add static marketplace * feat: add entry point for static marketplace * doc: add comment * chore: include nostr-bundle.js --- .../components/chat-dialog/chat-dialog.html | 95 - static/components/chat-dialog/chat-dialog.js | 224 - .../customer-market/customer-market.html | 17 - .../customer-market/customer-market.js | 66 - .../customer-orders/customer-orders.html | 145 - .../customer-orders/customer-orders.js | 94 - .../customer-stall-list.html | 60 - .../customer-stall-list.js | 27 - .../customer-stall/customer-stall.html | 18 - .../customer-stall/customer-stall.js | 37 - .../market-config/market-config.html | 191 - .../components/market-config/market-config.js | 111 - .../components/product-card/product-card.html | 67 - .../components/product-card/product-card.js | 14 - .../product-detail/product-detail.html | 83 - .../product-detail/product-detail.js | 17 - .../shopping-cart-checkout.html | 153 - .../shopping-cart-checkout.js | 127 - .../shopping-cart-list.html | 98 - .../shopping-cart-list/shopping-cart-list.js | 37 - .../shopping-cart/shopping-cart.html | 61 - .../components/shopping-cart/shopping-cart.js | 61 - .../components/stall-details/stall-details.js | 2 - static/components/user-chat/user-chat.html | 8 - static/components/user-chat/user-chat.js | 19 - .../components/user-config/user-config.html | 47 - static/components/user-config/user-config.js | 30 - static/js/market.js | 977 -- static/js/nostr.bundle.js | 8705 +++++++++++++++++ .../market/assets/ErrorNotFound.db627eb7.js | 1 + .../KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff | Bin 0 -> 20436 bytes .../KFOlCnqEu92Fr1MmEU9fBBc-.9ce7f3ac.woff | Bin 0 -> 20544 bytes .../KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff | Bin 0 -> 20416 bytes .../KFOlCnqEu92Fr1MmWUlfBBc-.e0fd57c0.woff | Bin 0 -> 20408 bytes .../KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff | Bin 0 -> 20424 bytes .../assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff | Bin 0 -> 20344 bytes static/market/assets/MainLayout.421c5479.js | 1 + static/market/assets/MarketPage.2aa781b5.js | 18 + .../market/assets/QResizeObserver.bcb70109.js | 1 + ...flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff | Bin 0 -> 164912 bytes ...tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 | Bin 0 -> 128616 bytes static/market/assets/index.5f2eed21.css | 1 + static/market/assets/index.725caa24.js | 5 + static/market/favicon.ico | Bin 0 -> 251247 bytes static/market/icons/favicon-128x128.png | Bin 0 -> 48306 bytes static/market/icons/favicon-16x16.png | Bin 0 -> 967 bytes static/market/icons/favicon-32x32.png | Bin 0 -> 3431 bytes static/market/icons/favicon-64x64.png | Bin 0 -> 12895 bytes static/market/icons/favicon-96x96.png | Bin 0 -> 27988 bytes static/market/images/bitcoin-shop.png | Bin 0 -> 6034 bytes static/market/images/blank-avatar.webp | Bin 0 -> 11090 bytes static/market/images/nostr-avatar.png | Bin 0 -> 803130 bytes static/market/images/nostr-cover.png | Bin 0 -> 1142979 bytes static/market/images/placeholder.png | Bin 0 -> 2840 bytes static/market/index.html | 27 + static/market/js/bolt11-decoder.js | 347 + static/market/js/nostr.bundle.js | 8705 +++++++++++++++++ static/market/js/utils.js | 167 + templates/nostrmarket/index.html | 5 +- templates/nostrmarket/market.html | 336 +- 60 files changed, 18008 insertions(+), 3197 deletions(-) delete mode 100644 static/components/chat-dialog/chat-dialog.html delete mode 100644 static/components/chat-dialog/chat-dialog.js delete mode 100644 static/components/customer-market/customer-market.html delete mode 100644 static/components/customer-market/customer-market.js delete mode 100644 static/components/customer-orders/customer-orders.html delete mode 100644 static/components/customer-orders/customer-orders.js delete mode 100644 static/components/customer-stall-list/customer-stall-list.html delete mode 100644 static/components/customer-stall-list/customer-stall-list.js delete mode 100644 static/components/customer-stall/customer-stall.html delete mode 100644 static/components/customer-stall/customer-stall.js delete mode 100644 static/components/market-config/market-config.html delete mode 100644 static/components/market-config/market-config.js delete mode 100644 static/components/product-card/product-card.html delete mode 100644 static/components/product-card/product-card.js delete mode 100644 static/components/product-detail/product-detail.html delete mode 100644 static/components/product-detail/product-detail.js delete mode 100644 static/components/shopping-cart-checkout/shopping-cart-checkout.html delete mode 100644 static/components/shopping-cart-checkout/shopping-cart-checkout.js delete mode 100644 static/components/shopping-cart-list/shopping-cart-list.html delete mode 100644 static/components/shopping-cart-list/shopping-cart-list.js delete mode 100644 static/components/shopping-cart/shopping-cart.html delete mode 100644 static/components/shopping-cart/shopping-cart.js delete mode 100644 static/components/user-chat/user-chat.html delete mode 100644 static/components/user-chat/user-chat.js delete mode 100644 static/components/user-config/user-config.html delete mode 100644 static/components/user-config/user-config.js delete mode 100644 static/js/market.js create mode 100644 static/js/nostr.bundle.js create mode 100644 static/market/assets/ErrorNotFound.db627eb7.js create mode 100644 static/market/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff create mode 100644 static/market/assets/KFOlCnqEu92Fr1MmEU9fBBc-.9ce7f3ac.woff create mode 100644 static/market/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff create mode 100644 static/market/assets/KFOlCnqEu92Fr1MmWUlfBBc-.e0fd57c0.woff create mode 100644 static/market/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff create mode 100644 static/market/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff create mode 100644 static/market/assets/MainLayout.421c5479.js create mode 100644 static/market/assets/MarketPage.2aa781b5.js create mode 100644 static/market/assets/QResizeObserver.bcb70109.js create mode 100644 static/market/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff create mode 100644 static/market/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 create mode 100644 static/market/assets/index.5f2eed21.css create mode 100644 static/market/assets/index.725caa24.js create mode 100644 static/market/favicon.ico create mode 100644 static/market/icons/favicon-128x128.png create mode 100644 static/market/icons/favicon-16x16.png create mode 100644 static/market/icons/favicon-32x32.png create mode 100644 static/market/icons/favicon-64x64.png create mode 100644 static/market/icons/favicon-96x96.png create mode 100644 static/market/images/bitcoin-shop.png create mode 100644 static/market/images/blank-avatar.webp create mode 100644 static/market/images/nostr-avatar.png create mode 100644 static/market/images/nostr-cover.png create mode 100644 static/market/images/placeholder.png create mode 100644 static/market/index.html create mode 100644 static/market/js/bolt11-decoder.js create mode 100644 static/market/js/nostr.bundle.js create mode 100644 static/market/js/utils.js diff --git a/static/components/chat-dialog/chat-dialog.html b/static/components/chat-dialog/chat-dialog.html deleted file mode 100644 index 5f15ec0..0000000 --- a/static/components/chat-dialog/chat-dialog.html +++ /dev/null @@ -1,95 +0,0 @@ -
- - - - - - - - - - - Close - - -
- - - - - - - - - - -
-
- - - -
- - - -
-
-
diff --git a/static/components/chat-dialog/chat-dialog.js b/static/components/chat-dialog/chat-dialog.js deleted file mode 100644 index 9d304c8..0000000 --- a/static/components/chat-dialog/chat-dialog.js +++ /dev/null @@ -1,224 +0,0 @@ -async function chatDialog(path) { - const template = await loadTemplateAsync(path) - - Vue.component('chat-dialog', { - name: 'chat-dialog', - template, - - props: ['account', 'merchant', 'relays', 'pool'], - data: function () { - return { - dialog: false, - isChat: true, - loading: false, - messagesMap: new Map(), - nostrMessages: [], - newMessage: '', - ordersTable: { - columns: [ - { - name: 'id', - align: 'left', - label: 'ID', - field: 'id' - }, - { - name: 'created_at', - align: 'left', - label: 'Created/Updated', - field: 'created_at', - sortable: true - }, - { - name: 'paid', - align: 'left', - label: 'Paid', - field: 'paid', - sortable: true - }, - { - name: 'shipped', - align: 'left', - label: 'Shipped', - field: 'shipped', - sortable: true - }, - { - name: 'invoice', - align: 'left', - label: 'Invoice', - field: row => - row.payment_options && - row.payment_options.find(p => p.type == 'ln')?.link - } - ], - pagination: { - rowsPerPage: 10 - } - } - } - }, - computed: { - sortedMessages() { - return this.nostrMessages.sort((a, b) => b.created_at - a.created_at) - }, - ordersList() { - let orders = this.nostrMessages - .filter(o => o.json) - .sort((a, b) => b.created_at - a.created_at) - .reduce((acc, cur) => { - const obj = cur.json - const key = obj.id - const curGroup = acc[key] ?? {created_at: cur.timestamp} - return {...acc, [key]: {...curGroup, ...obj}} - }, {}) - - return Object.values(orders) - } - }, - methods: { - async startDialog() { - this.dialog = true - await this.startPool() - }, - async closeDialog() { - this.dialog = false - await this.sub.unsub() - }, - async startPool() { - this.loading = true - let relays = Array.from(this.relays) - let filters = [ - { - kinds: [4], - authors: [this.account.pubkey] - }, - { - kinds: [4], - '#p': [this.account.pubkey] - } - ] - let events = await this.pool.list(relays, filters) - - for (const event of events) { - await this.processMessage(event) - } - - this.nostrMessages = Array.from(this.messagesMap.values()) - this.loading = false - - let sub = this.pool.sub( - relays, - filters.map(f => ({...f, since: Date.now() / 1000})) - ) - sub.on('event', async event => { - await this.processMessage(event) - this.nostrMessages = Array.from(this.messagesMap.values()) - }) - this.sub = sub - }, - async processMessage(event) { - let mine = event.pubkey == this.account.pubkey - let sender = mine ? this.merchant : event.pubkey - - try { - let plaintext - if (this.account.privkey) { - plaintext = await NostrTools.nip04.decrypt( - this.account.privkey, - sender, - event.content - ) - } else if (this.account.useExtension && this.hasNip07) { - plaintext = await window.nostr.nip04.decrypt(sender, event.content) - } - if (plaintext) { - let {text, json} = this.filterJsonMsg(plaintext) - this.messagesMap.set(event.id, { - created_at: event.created_at, - msg: text, - timestamp: timeFromNow(event.created_at * 1000), - sender: `${mine ? 'Me' : 'Merchant'}`, - json - }) - } - return null - } catch { - console.debug('Unable to decrypt message! Not for us...') - return null - } - }, - filterJsonMsg(text) { - let json = null - - if (!isJson(text)) return {text, json} - - json = JSON.parse(text) - if (json.message) { - text = json.message - } else if (json.items) { - text = `Order placed!
OrderID: ${json.id}` - } else if (json.payment_options) { - text = `Invoice for order: ${json.id}
LN ⚡︎` - } - - return {text, json} - }, - async sendMessage() { - if (this.newMessage && this.newMessage.length < 1) return - let event = { - ...(await NostrTools.getBlankEvent()), - kind: 4, - created_at: Math.floor(Date.now() / 1000), - tags: [['p', this.merchant]], - pubkey: this.account.pubkey, - content: await this.encryptMsg() - } - event.id = NostrTools.getEventHash(event) - event.sig = this.signEvent(event) - - let pub = this.pool.publish(Array.from(this.relays), event) - pub.on('ok', () => console.debug(`Event was sent`)) - pub.on('failed', error => console.error(error)) - this.newMessage = '' - }, - async encryptMsg() { - try { - let cypher - if (this.account.privkey) { - cypher = await NostrTools.nip04.encrypt( - this.account.privkey, - this.merchant, - this.newMessage - ) - } else if (this.account.useExtension && this.hasNip07) { - cypher = await window.nostr.nip04.encrypt( - this.merchant, - this.newMessage - ) - } - return cypher - } catch (e) { - console.error(e) - } - }, - async signEvent(event) { - if (this.account.privkey) { - event.sig = await NostrTools.signEvent(event, this.account.privkey) - } else if (this.account.useExtension && this.hasNip07) { - event = await window.nostr.signEvent(event) - } - return event - } - }, - created() { - setTimeout(() => { - if (window.nostr) { - this.hasNip07 = true - } - }, 1000) - } - }) -} diff --git a/static/components/customer-market/customer-market.html b/static/components/customer-market/customer-market.html deleted file mode 100644 index d862ac8..0000000 --- a/static/components/customer-market/customer-market.html +++ /dev/null @@ -1,17 +0,0 @@ -
- - - -
-
- -
-
- -
-
- \ No newline at end of file diff --git a/static/components/customer-market/customer-market.js b/static/components/customer-market/customer-market.js deleted file mode 100644 index 9540597..0000000 --- a/static/components/customer-market/customer-market.js +++ /dev/null @@ -1,66 +0,0 @@ -async function customerMarket(path) { - const template = await loadTemplateAsync(path) - Vue.component('customer-market', { - name: 'customer-market', - template, - - props: ['filtered-products', 'search-text', 'filter-categories'], - data: function () { - return { - search: null, - partialProducts: [], - productsPerPage: 12, - startIndex: 0, - lastProductIndex: 0, - showProducts: true, - } - }, - watch: { - searchText: function () { - this.refreshProducts() - }, - filteredProducts: function () { - this.refreshProducts() - }, - filterCategories: function () { - this.refreshProducts() - } - }, - methods: { - refreshProducts: function () { - this.showProducts = false - this.partialProducts = [] - - this.startIndex = 0 - this.lastProductIndex = Math.min(this.filteredProducts.length, this.productsPerPage) - this.partialProducts.push(...this.filteredProducts.slice(0, this.lastProductIndex)) - - setTimeout(() => { this.showProducts = true }, 0) - }, - - addToCart(item) { - this.$emit('add-to-cart', item) - }, - changePageM(page, opts) { - this.$emit('change-page', page, opts) - }, - - onLoad(_, done) { - setTimeout(() => { - if (this.startIndex >= this.filteredProducts.length) { - done() - return - } - this.startIndex = this.lastProductIndex - this.lastProductIndex = Math.min(this.filteredProducts.length, this.lastProductIndex + this.productsPerPage) - this.partialProducts.push(...this.filteredProducts.slice(this.startIndex, this.lastProductIndex)) - done() - }, 100) - } - }, - created() { - this.lastProductIndex = Math.min(this.filteredProducts.length, 24) - this.partialProducts.push(...this.filteredProducts.slice(0, this.lastProductIndex)) - } - }) -} diff --git a/static/components/customer-orders/customer-orders.html b/static/components/customer-orders/customer-orders.html deleted file mode 100644 index b28af48..0000000 --- a/static/components/customer-orders/customer-orders.html +++ /dev/null @@ -1,145 +0,0 @@ -
- - - No orders! - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - Order ID: - - - - - - - - - - Products - - - - - - - - - - - - - {{ product.orderedQuantity}} x {{ product.name}} - -
-

{{ product.description }}

-
-
-
-
- -
- - - - Shipping Zone: - - - - - Message: - - - - - Invoice: - - - - - - - -
- - -
- -
-
-
- - - -
- -
- -
\ No newline at end of file diff --git a/static/components/customer-orders/customer-orders.js b/static/components/customer-orders/customer-orders.js deleted file mode 100644 index 0aa943a..0000000 --- a/static/components/customer-orders/customer-orders.js +++ /dev/null @@ -1,94 +0,0 @@ -async function customerOrders(path) { - const template = await loadTemplateAsync(path) - - Vue.component('customer-orders', { - name: 'orders', - template, - - props: ['orders', 'products', 'stalls', 'merchants'], - data: function () { - return {} - }, - computed: { - merchantOrders: function () { - return Object.keys(this.orders) - .map(pubkey => ({ - pubkey, - profile: this.merchantProfile(pubkey), - orders: this.orders[pubkey].map(this.enrichOrder) - } - )) - } - }, - methods: { - enrichOrder: function (order) { - const stall = this.stallForOrder(order) - return { - ...order, - stallName: stall?.name || 'Stall', - shippingZone: stall?.shipping?.find(s => s.id === order.shipping_id) || { id: order.shipping_id, name: order.shipping_id }, - invoice: this.invoiceForOrder(order), - products: this.getProductsForOrder(order) - } - }, - stallForOrder: function (order) { - try { - const productId = order.items && order.items[0]?.product_id - if (!productId) return - const product = this.products.find(p => p.id === productId) - if (!product) return - const stall = this.stalls.find(s => s.id === product.stall_id) - if (!stall) return - return stall - } catch (error) { - console.log(error) - } - - }, - invoiceForOrder: function (order) { - try { - const lnPaymentOption = order?.payment_options?.find(p => p.type === 'ln') - if (!lnPaymentOption?.link) return - return decode(lnPaymentOption.link) - } catch (error) { - console.warn(error) - } - }, - - merchantProfile: function (pubkey) { - const merchant = this.merchants.find(m => m.publicKey === pubkey) - return merchant?.profile - }, - - getProductsForOrder: function (order) { - if (!order?.items?.length) return [] - - return order.items.map(i => { - const product = this.products.find(p => p.id === i.product_id) || { id: i.product_id, name: i.product_id } - return { - ...product, - orderedQuantity: i.quantity - } - }) - }, - - showInvoice: function (order) { - if (order.paid) return - const invoice = order?.payment_options?.find(p => p.type === 'ln').link - if (!invoice) return - this.$emit('show-invoice', invoice) - }, - - formatCurrency: function (value, unit) { - return formatCurrency(value, unit) - }, - - fromNow: function (date) { - if (!date) return '' - return moment(date * 1000).fromNow() - } - }, - created() { - } - }) -} diff --git a/static/components/customer-stall-list/customer-stall-list.html b/static/components/customer-stall-list/customer-stall-list.html deleted file mode 100644 index 2ecc7cb..0000000 --- a/static/components/customer-stall-list/customer-stall-list.html +++ /dev/null @@ -1,60 +0,0 @@ -
-
- - -
- - - -
-
- - -
-
{{ stall.name }}
-
- -
- - - -
- - products - -
-
- - -
- - - -
-
-   -
- -
-

{{ stall.description || '' }}

-
- - -
- - - - -
- - Visit Stall - -
-
-
-
-
\ No newline at end of file diff --git a/static/components/customer-stall-list/customer-stall-list.js b/static/components/customer-stall-list/customer-stall-list.js deleted file mode 100644 index 386c838..0000000 --- a/static/components/customer-stall-list/customer-stall-list.js +++ /dev/null @@ -1,27 +0,0 @@ -async function customerStallList(path) { - const template = await loadTemplateAsync(path) - - Vue.component('customer-stall-list', { - name: 'customer-stall-list', - template, - - props: ['stalls'], - data: function () { - return { - showStalls: true - } - }, - watch: { - stalls() { - this.showProducts = false - setTimeout(() => { this.showProducts = true }, 0) - } - }, - computed: {}, - methods: { - - }, - created() { - } - }) -} diff --git a/static/components/customer-stall/customer-stall.html b/static/components/customer-stall/customer-stall.html deleted file mode 100644 index a57c40a..0000000 --- a/static/components/customer-stall/customer-stall.html +++ /dev/null @@ -1,18 +0,0 @@ -
-
-
-
- -
- -
- -
-
-
-
- -
-
- -
\ No newline at end of file diff --git a/static/components/customer-stall/customer-stall.js b/static/components/customer-stall/customer-stall.js deleted file mode 100644 index 0a9cd3a..0000000 --- a/static/components/customer-stall/customer-stall.js +++ /dev/null @@ -1,37 +0,0 @@ -async function customerStall(path) { - const template = await loadTemplateAsync(path) - - Vue.component('customer-stall', { - name: 'customer-stall', - template, - - props: [ - 'stall', - 'products', - 'product-detail', - ], - data: function () { - return { - } - }, - computed: { - product() { - if (this.productDetail) { - return this.products.find(p => p.id == this.productDetail) - } - }, - }, - methods: { - changePageS(page, opts) { - if (page === 'stall' && opts?.product) { - document.getElementById('product-focus-area')?.scrollIntoView() - } - this.$emit('change-page', page, opts) - }, - addToCart(item) { - this.$emit('add-to-cart', item) - }, - - } - }) -} diff --git a/static/components/market-config/market-config.html b/static/components/market-config/market-config.html deleted file mode 100644 index 59b6082..0000000 --- a/static/components/market-config/market-config.html +++ /dev/null @@ -1,191 +0,0 @@ - - -
-
- - - - - - -
-
-
- - -
-
- - - - - - - - - - - - Note - -
-
    -
  • - Here all the mercants of the marketplace are listed. - -
  • -
  • - - You can easily add a new merchant by - entering its public key in the input below. - -
  • -
  • - - When a merchant is added all its products and stalls will be available in the Market page. - -
  • -
-
-
-
- - - -
-
-
- - - - - - - - - - - - - - {{ profile?.name}} - -
-

{{ publicKey }}

-
-
- {{ publicKey }} -
- - - - -
-
-
-
- -
-
- - - - - - - - - - - - - {{ relay}} - - - - - - - -
-
-
- - - - - - - - - - Note - -
-
    -
  • - Here one can customize the look and feel of the Market. - -
  • -
  • - - When the Market Profile is shared (via naddr ) these customisations will be - available to the - customers. - -
  • -
-
-
-
- - - -
-
-
Information
- - - - -
- UI Configurations -
- - - - - - - - - -
- -
- -
-
-
- - -
- - -
-
- -
\ No newline at end of file diff --git a/static/components/market-config/market-config.js b/static/components/market-config/market-config.js deleted file mode 100644 index f271571..0000000 --- a/static/components/market-config/market-config.js +++ /dev/null @@ -1,111 +0,0 @@ -async function marketConfig(path) { - const template = await loadTemplateAsync(path) - Vue.component('market-config', { - name: 'market-config', - props: ['merchants', 'relays', 'config-ui', 'read-notes'], - template, - - data: function () { - return { - tab: 'merchants', - merchantPubkey: null, - relayUrl: null, - configData: { - identifier: null, - name: null, - about: null, - ui: { - picture: null, - banner: null, - theme: null, - darkMode: false - } - }, - themeOptions: [ - 'classic', - 'bitcoin', - 'flamingo', - 'cyber', - 'freedom', - 'mint', - 'autumn', - 'monochrome', - 'salvador' - ] - } - }, - methods: { - addMerchant: async function () { - if (!isValidKey(this.merchantPubkey, 'npub')) { - this.$q.notify({ - message: 'Invalid Public Key!', - type: 'warning' - }) - return - } - const publicKey = isValidKeyHex(this.merchantPubkey) ? this.merchantPubkey : NostrTools.nip19.decode(this.merchantPubkey).data - this.$emit('add-merchant', publicKey) - this.merchantPubkey = null - }, - removeMerchant: async function (publicKey) { - this.$emit('remove-merchant', publicKey) - }, - addRelay: async function () { - const relayUrl = (this.relayUrl || '').trim() - if (!relayUrl.startsWith('wss://') && !relayUrl.startsWith('ws://')) { - this.relayUrl = null - this.$q.notify({ - timeout: 5000, - type: 'warning', - message: `Invalid relay URL.`, - caption: "Should start with 'wss://'' or 'ws://'" - }) - return - } - try { - new URL(relayUrl); - this.$emit('add-relay', relayUrl) - } catch (error) { - this.$q.notify({ - timeout: 5000, - type: 'warning', - message: `Invalid relay URL.`, - caption: `Error: ${error}` - }) - } - - - this.relayUrl = null - }, - removeRelay: async function (relay) { - this.$emit('remove-relay', relay) - }, - updateUiConfig: function () { - const { name, about, ui } = this.configData - console.log('### this.info', { name, about, ui }) - this.$emit('ui-config-update', { name, about, ui }) - }, - publishNaddr() { - this.$emit('publish-naddr') - }, - clearAllData() { - this.$emit('clear-all-data') - }, - markNoteAsRead(noteId) { - this.$emit('note-read', noteId) - } - }, - created: async function () { - if (this.configUi) { - this.configData = { - ...this.configData, - ...this.configUi, - ui: { - ...this.configData.ui, ...(this.configUi.ui || {}) - } - } - } - - } - }) -} diff --git a/static/components/product-card/product-card.html b/static/components/product-card/product-card.html deleted file mode 100644 index df7c1df..0000000 --- a/static/components/product-card/product-card.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - Add to cart -
-
{{ product.name }}
-
- -
- - -
- - {{ product.price }} sats BTC {{ (product.price / - 1e8).toFixed(8) }} - - - {{ product.formatedPrice }} - - {{ product.quantity }} left -
-
- - - -
-
-   -
- -
-

{{ product.description }}

-
- - -
- - -
{{ product.stallName }}
-
- - - - -
- - Visit Stall - - - View details - - -
-
-
\ No newline at end of file diff --git a/static/components/product-card/product-card.js b/static/components/product-card/product-card.js deleted file mode 100644 index 5e049df..0000000 --- a/static/components/product-card/product-card.js +++ /dev/null @@ -1,14 +0,0 @@ -async function productCard(path) { - const template = await loadTemplateAsync(path) - Vue.component('product-card', { - name: 'product-card', - template, - - props: ['product', 'change-page', 'add-to-cart', 'is-stall'], - data: function () { - return {} - }, - methods: {}, - created() {} - }) -} diff --git a/static/components/product-detail/product-detail.html b/static/components/product-detail/product-detail.html deleted file mode 100644 index e852e9c..0000000 --- a/static/components/product-detail/product-detail.html +++ /dev/null @@ -1,83 +0,0 @@ -
-
-
- - - - -
-
- -
-
-
- - -
-
-
{{ product.name }}
-
- {{cat}} -
-
{{ product.description }}
-
- - {{ product.price }} satsBTC {{ (product.price / 1e8).toFixed(8) }} - - - {{ product.formatedPrice }} - - {{ product.quantity > 0 ? `In stock. ${product.quantity} left.` : 'Out of stock.' }} -
-
- - -
-
- -
-
-
-
-
diff --git a/static/components/product-detail/product-detail.js b/static/components/product-detail/product-detail.js deleted file mode 100644 index d55b653..0000000 --- a/static/components/product-detail/product-detail.js +++ /dev/null @@ -1,17 +0,0 @@ -async function productDetail(path) { - const template = await loadTemplateAsync(path) - Vue.component('product-detail', { - name: 'product-detail', - template, - - props: ['product', 'add-to-cart'], - data: function () { - return { - slide: 1 - } - }, - computed: {}, - methods: {}, - created() {} - }) -} diff --git a/static/components/shopping-cart-checkout/shopping-cart-checkout.html b/static/components/shopping-cart-checkout/shopping-cart-checkout.html deleted file mode 100644 index ee7ae91..0000000 --- a/static/components/shopping-cart-checkout/shopping-cart-checkout.html +++ /dev/null @@ -1,153 +0,0 @@ -
- - - - - - - - - - - - - - - - - By - - - - - - - - - -
-
- Message: -
-
- -
-
- -
-
- Address: -
-
- - -
-
- -
-
- Email: -
-
- -
-
- -
-
- Npub: -
-
- -
-
- - -
- - - -
-
- Subtotal: -
-
- {{formatCurrency(cartTotal, stall.currency)}} -
-
- -
-
-
-
- Shipping: -
-
- {{formatCurrency(shippingZone.cost, stall.currency)}} -
-
- - - - - - - - -
- -
- -
-
- Total: -
-
- {{formatCurrency(cartTotalWithShipping, stall.currency)}} -
-
- -
-
- - -
- - - - - Payment Method - - -
- - - -
- - Back - - - Place Order - -
-
- - Back - - - Confirm - -
- -
-
- - -
\ No newline at end of file diff --git a/static/components/shopping-cart-checkout/shopping-cart-checkout.js b/static/components/shopping-cart-checkout/shopping-cart-checkout.js deleted file mode 100644 index fa30f8f..0000000 --- a/static/components/shopping-cart-checkout/shopping-cart-checkout.js +++ /dev/null @@ -1,127 +0,0 @@ -async function shoppingCartCheckout(path) { - const template = await loadTemplateAsync(path) - - Vue.component('shopping-cart-checkout', { - name: 'shopping-cart-checkout', - template, - - props: ['cart', 'stall', 'customer-pubkey'], - data: function () { - return { - orderConfirmed: false, - paymentMethod: 'ln', - shippingZone: null, - contactData: { - email: null, - npub: null, - address: null, - message: null - }, - paymentOptions: [ - { - label: 'Lightning Network', - value: 'ln' - }, - { - label: 'BTC Onchain', - value: 'btc' - }, - { - label: 'Cashu', - value: 'cashu' - } - ] - } - }, - computed: { - cartTotal() { - if (!this.cart.products?.length) return 0 - return this.cart.products.reduce((t, p) => p.price + t, 0) - }, - cartTotalWithShipping() { - if (!this.shippingZone) return this.cartTotal - return this.cartTotal + this.shippingZone.cost - }, - shippingZoneLabel() { - if (!this.shippingZone) { - return 'Shipping Zone' - } - const zoneName = this.shippingZone.name.substring(0, 10) - if (this.shippingZone?.name.length < 10) { - return zoneName - } - return zoneName + '...' - } - }, - methods: { - formatCurrency: function (value, unit) { - return formatCurrency(value, unit) - }, - selectShippingZone: function (zone) { - this.shippingZone = zone - }, - - confirmOrder: function () { - if (!this.shippingZone) { - this.$q.notify({ - timeout: 5000, - type: 'warning', - message: 'Please select a shipping zone!', - }) - return - } - this.orderConfirmed = true - }, - async placeOrder() { - if (!this.shippingZone) { - this.$q.notify({ - timeout: 5000, - type: 'warning', - message: 'Please select a shipping zone!', - }) - return - } - if (!this.customerPubkey) { - this.$emit('login-required') - return - } - const order = { - address: this.contactData.address, - message: this.contactData.message, - contact: { - nostr: this.contactData.npub, - email: this.contactData.email - }, - items: Array.from(this.cart.products, p => { - return { product_id: p.id, quantity: p.orderedQuantity } - }), - shipping_id: this.shippingZone.id, - type: 0 - } - const created_at = Math.floor(Date.now() / 1000) - order.id = await hash( - [this.customerPubkey, created_at, JSON.stringify(order)].join(':') - ) - - const event = { - ...(await NostrTools.getBlankEvent()), - kind: 4, - created_at, - tags: [['p', this.stall.pubkey]], - pubkey: this.customerPubkey - } - - this.$emit('place-order', { event, order, cartId: this.cart.id }) - - }, - goToShoppingCart: function () { - this.$emit('change-page', 'shopping-cart-list') - } - }, - created() { - if (this.stall.shipping?.length === 1) { - this.shippingZone = this.stall.shipping[0] - } - } - }) -} diff --git a/static/components/shopping-cart-list/shopping-cart-list.html b/static/components/shopping-cart-list/shopping-cart-list.html deleted file mode 100644 index 8a5cfe3..0000000 --- a/static/components/shopping-cart-list/shopping-cart-list.html +++ /dev/null @@ -1,98 +0,0 @@ -
- - - No products in cart! - - -
- - - - - - - - - - - - - - - - - - By - - - -
- - Clear Cart - -
-
-
- - - - - - - - - - - - - - - - - {{ product.name}} - -
-

{{ product.description }}

-
-
-
- - {{ formatCurrency(product.price, product.currency)}} - - - - - - - - - {{ formatCurrency(product.price * product.orderedQuantity, product.currency)}} - - - -
- -
-
- -
- -
-
-
- - - - - - Total: {{cartTotalFormatted(cart)}} - - Proceed to Checkout - - -
- -
- -
\ No newline at end of file diff --git a/static/components/shopping-cart-list/shopping-cart-list.js b/static/components/shopping-cart-list/shopping-cart-list.js deleted file mode 100644 index 570bd05..0000000 --- a/static/components/shopping-cart-list/shopping-cart-list.js +++ /dev/null @@ -1,37 +0,0 @@ -async function shoppingCartList(path) { - const template = await loadTemplateAsync(path) - - Vue.component('shopping-cart-list', { - name: 'shopping-cart-list', - template, - - props: ['carts'], - data: function () { - return {} - }, - computed: {}, - methods: { - formatCurrency: function (value, unit) { - return formatCurrency(value, unit) - }, - cartTotalFormatted(cart) { - if (!cart.products?.length) return "" - const total = cart.products.reduce((t, p) => p.price + t, 0) - return formatCurrency(total, cart.products[0].currency) - }, - removeProduct: function (stallId, productId) { - this.$emit('remove-from-cart', { stallId, productId }) - }, - removeCart: function (stallId) { - this.$emit('remove-cart', stallId) - }, - quantityChanged: function (product) { - this.$emit('add-to-cart', product) - }, - proceedToCheckout: function(cart){ - this.$emit('checkout-cart', cart) - } - }, - created() { } - }) -} diff --git a/static/components/shopping-cart/shopping-cart.html b/static/components/shopping-cart/shopping-cart.html deleted file mode 100644 index b23c69c..0000000 --- a/static/components/shopping-cart/shopping-cart.html +++ /dev/null @@ -1,61 +0,0 @@ - - - {{ cart.size }} - - - - - - - - - - - - - - - - - - {{ p.name }} - - - - - {{p.currency != 'sat' ? p.formatedPrice : p.price + 'sats'}} - - - - - - -
- -
diff --git a/static/components/shopping-cart/shopping-cart.js b/static/components/shopping-cart/shopping-cart.js deleted file mode 100644 index 19ca32b..0000000 --- a/static/components/shopping-cart/shopping-cart.js +++ /dev/null @@ -1,61 +0,0 @@ -async function shoppingCart(path) { - const template = await loadTemplateAsync(path) - - Vue.component('shopping-cart', { - name: 'shopping-cart', - template, - - props: [ - 'cart', - 'cart-menu', - 'add-to-cart', - 'remove-from-cart', - 'update-qty', - 'reset-cart', - 'products' - ], - data: function () { - return {} - }, - computed: {}, - methods: { - add(id) { - this.$emit( - 'add-to-cart', - this.products.find(p => p.id == id) - ) - }, - remove(id) { - this.$emit( - 'remove-from-cart', - this.products.find(p => p.id == id) - ) - }, - removeProduct(id) { - this.$emit( - 'remove-from-cart', - this.products.find(p => p.id == id), - true - ) - }, - addQty(id, qty) { - if (qty == 0) { - return this.removeProduct(id) - } - let product = this.products.find(p => p.id == id) - if (product.quantity < qty) { - this.$q.notify({ - type: 'warning', - message: `${product.name} only has ${product.quantity} units!`, - icon: 'production_quantity_limits' - }) - let objIdx = this.cartMenu.findIndex(pr => pr.id == id) - this.cartMenu[objIdx].quantity = this.cart.products.get(id).quantity - return - } - this.$emit('update-qty', id, qty) - } - }, - created() {} - }) -} diff --git a/static/components/stall-details/stall-details.js b/static/components/stall-details/stall-details.js index 6a41a43..b77ef5e 100644 --- a/static/components/stall-details/stall-details.js +++ b/static/components/stall-details/stall-details.js @@ -1,8 +1,6 @@ async function stallDetails(path) { const template = await loadTemplateAsync(path) - const pica = window.pica() - Vue.component('stall-details', { name: 'stall-details', template, diff --git a/static/components/user-chat/user-chat.html b/static/components/user-chat/user-chat.html deleted file mode 100644 index d8844d2..0000000 --- a/static/components/user-chat/user-chat.html +++ /dev/null @@ -1,8 +0,0 @@ - -
-
- User Chat -
-
- -
\ No newline at end of file diff --git a/static/components/user-chat/user-chat.js b/static/components/user-chat/user-chat.js deleted file mode 100644 index 250ca0b..0000000 --- a/static/components/user-chat/user-chat.js +++ /dev/null @@ -1,19 +0,0 @@ -async function userChat(path) { - const template = await loadTemplateAsync(path) - Vue.component('user-chat', { - name: 'user-chat', - props: ['user',], - template, - - data: function () { - return { - } - }, - methods: { - - }, - created: async function () { - - } - }) -} diff --git a/static/components/user-config/user-config.html b/static/components/user-config/user-config.html deleted file mode 100644 index 54cc5f1..0000000 --- a/static/components/user-config/user-config.html +++ /dev/null @@ -1,47 +0,0 @@ - - -
-
- - - -
- -
- -
-
- -
-
- - - -
- -
- -
-
-
- - -
- -
-
- No Account -
-
- - -
\ No newline at end of file diff --git a/static/components/user-config/user-config.js b/static/components/user-config/user-config.js deleted file mode 100644 index 9ca33f8..0000000 --- a/static/components/user-config/user-config.js +++ /dev/null @@ -1,30 +0,0 @@ -async function userConfig(path) { - const template = await loadTemplateAsync(path) - Vue.component('user-config', { - name: 'user-config', - props: ['account'], - template, - - data: function () { - return { - } - }, - methods: { - logout: async function () { - LNbits.utils - .confirmDialog( - 'Please make sure you save your private key! You will not be able to recover it later!' - ) - .onOk(async () => { - this.$emit('logout') - }) - }, - copyText(text) { - this.$emit('copy-text', text) - } - }, - created: async function () { - - } - }) -} diff --git a/static/js/market.js b/static/js/market.js deleted file mode 100644 index 2f8bb29..0000000 --- a/static/js/market.js +++ /dev/null @@ -1,977 +0,0 @@ -const market = async () => { - Vue.component(VueQrcode.name, VueQrcode) - - const NostrTools = window.NostrTools - - const defaultRelays = [ - 'wss://relay.damus.io', - 'wss://relay.snort.social', - 'wss://nostr-pub.wellorder.net', - 'wss://nostr.zebedee.cloud', - 'wss://nostr.walletofsatoshi.com' - ] - const eventToObj = event => { - try { - event.content = JSON.parse(event.content) || null - } catch { - event.content = null - } - - - return { - ...event, - ...Object.values(event.tags).reduce((acc, tag) => { - let [key, value] = tag - if (key == 't') { - return { ...acc, [key]: [...(acc[key] || []), value] } - } else { - return { ...acc, [key]: value } - } - }, {}) - } - } - await Promise.all([ - productCard('static/components/product-card/product-card.html'), - customerMarket('static/components/customer-market/customer-market.html'), - customerStall('static/components/customer-stall/customer-stall.html'), - customerStallList('static/components/customer-stall-list/customer-stall-list.html'), - productDetail('static/components/product-detail/product-detail.html'), - shoppingCart('static/components/shopping-cart/shopping-cart.html'), - shoppingCartList('static/components/shopping-cart-list/shopping-cart-list.html'), - shoppingCartCheckout('static/components/shopping-cart-checkout/shopping-cart-checkout.html'), - customerOrders('static/components/customer-orders/customer-orders.html'), - chatDialog('static/components/chat-dialog/chat-dialog.html'), - marketConfig('static/components/market-config/market-config.html'), - userConfig('static/components/user-config/user-config.html'), - userChat('static/components/user-chat/user-chat.html') - ]) - - new Vue({ - el: '#vue', - mixins: [windowMixin], - data: function () { - return { - account: null, - accountMetadata: null, - accountDialog: { - show: false, - data: { - watchOnly: false, - key: null - } - }, - - merchants: [], - shoppingCarts: [], - checkoutCart: null, - checkoutStall: null, - - activePage: 'market', - activeOrderId: null, - dmSubscriptions: {}, - - qrCodeDialog: { - data: { - payment_request: null, - message: null, - }, - dismissMsg: null, - show: false - }, - - - filterCategories: [], - groupByStall: false, - - relays: new Set(), - events: [], - stalls: [], - products: [], - orders: {}, - - bannerImage: null, - logoImage: null, - isLoading: false, - - - profiles: new Map(), - searchText: null, - inputPubkey: null, - inputRelay: null, - activePage: 'market', - activeStall: null, - activeProduct: null, - pool: null, - config: { - opts: null - }, - - - defaultBanner: '/nostrmarket/static/images/nostr-cover.png', - defaultLogo: '/nostrmarket/static/images/nostr-avatar.png', - readNotes: { - merchants: false, - marketUi: false - } - } - }, - watch: { - config(n, o) { - if (!n?.opts?.ui?.banner) { - this.bannerImage = this.defaultBanner - } else { - this.bannerImage = null - setTimeout(() => { - this.bannerImage = this.sanitizeImageSrc(n?.opts?.ui?.banner, this.defaultBanner), 1 - }) - } - if (!n?.opts?.ui?.picture) { - this.logoImage = this.defaultLogo - } else { - this.logoImage = null - setTimeout(() => { - this.logoImage = this.sanitizeImageSrc(n?.opts?.ui?.picture, this.defaultLogo), 1 - }) - } - - }, - searchText(n, o) { - if (!n) return - if (n.toLowerCase().startsWith('naddr')) { - try { - const { type, data } = NostrTools.nip19.decode(n) - if (type !== 'naddr' || data.kind !== 30019) return - LNbits.utils - .confirmDialog('Do you want to import this market profile?') - .onOk(async () => { - await this.checkMarketNaddr(n) - this.searchText = '' - }) - } catch { } - - } - } - }, - computed: { - - filterProducts() { - let products = this.products.filter(p => this.hasCategory(p.categories)) - if (this.activeStall) { - products = products.filter(p => p.stall_id == this.activeStall) - } - if (!this.searchText || this.searchText.length < 2) return products - const searchText = this.searchText.toLowerCase() - return products.filter(p => ( - p.name.toLowerCase().includes(searchText) || - (p.description && - p.description.toLowerCase().includes(searchText)) || - (p.categories && - p.categories.toString().toLowerCase().includes(searchText)) - ) - ) - }, - filterStalls() { - const stalls = this.stalls - .map(s => ( - { - ...s, - categories: this.allStallCatgories(s.id), - images: this.allStallImages(s.id).slice(0, 8), - productCount: this.products.filter(p => p.stall_id === s.id).length - })) - .filter(p => this.hasCategory(p.categories)) - - if (!this.searchText || this.searchText.length < 2) return stalls - - const searchText = this.searchText.toLowerCase() - return this.stalls.filter(s => ( - s.name.toLowerCase().includes(searchText) || - (s.description && - s.description.toLowerCase().includes(searchText)) || - (s.categories && - s.categories.toString().toLowerCase().includes(searchText)) - )) - }, - stallName() { - return this.stalls.find(s => s.id == this.activeStall)?.name || 'Stall' - }, - productName() { - return ( - this.products.find(p => p.id == this.activeProduct)?.name || 'Product' - ) - }, - hasExtension() { - return window.nostr - }, - isValidAccountKey() { - return isValidKey(this.accountDialog.data.key) - }, - - - allCartsItemCount() { - return this.shoppingCarts.map(s => s.products).flat().reduce((t, p) => t + p.orderedQuantity, 0) - }, - - allCategories() { - const categories = this.products.map(p => p.categories).flat().filter(c => !!c) - const countedCategories = categories.reduce((all, c) => { - all[c] = (all[c] || 0) + 1 - return all - }, {}) - const x = Object.keys(countedCategories) - .map(category => ({ - category, - count: countedCategories[category], - selected: this.filterCategories.indexOf(category) !== -1 - })) - .sort((a, b) => b.count - a.count) - return x - } - }, - - async created() { - this.bannerImage = this.defaultBanner - this.logoImage = this.defaultLogo - - this.restoreFromStorage() - - const params = new URLSearchParams(window.location.search) - - await this.checkMarketNaddr(params.get('naddr')) - await this.handleQueryParams(params) - - - // Get notes from Nostr - await this.initNostr() - - - - await this.listenForIncommingDms(this.merchants.map(m => ({ publicKey: m.publicKey, since: this.lastDmForPubkey(m.publicKey) }))) - this.isLoading = false - }, - methods: { - async handleQueryParams(params) { - const merchantPubkey = params.get('merchant') - const stallId = params.get('stall') - const productId = params.get('product') - - // What component to render on start - if (stallId) { - this.setActivePage('customer-stall') - if (productId) { - this.activeProduct = productId - } - this.activeStall = stallId - } - if (merchantPubkey && !(this.merchants.find(m => m.publicKey === merchantPubkey))) { - await LNbits.utils - .confirmDialog( - `We found a merchant pubkey in your request. Do you want to add it to the merchants list?` - ) - .onOk(async () => { - await this.merchants.push({ publicKey: merchantPubkey, profile: null }) - }) - } - - }, - restoreFromStorage() { - this.merchants = this.$q.localStorage.getItem('nostrmarket.merchants') || [] - this.shoppingCarts = this.$q.localStorage.getItem('nostrmarket.shoppingCarts') || [] - - this.account = this.$q.localStorage.getItem('nostrmarket.account') || null - - const uiConfig = this.$q.localStorage.getItem('nostrmarket.marketplaceConfig') || { ui: { darkMode: false } } - - // trigger the `watch` logic - this.config = { ...this.config, opts: { ...this.config.opts, ...uiConfig } } - this.applyUiConfigs(this.config) - - - const prefix = 'nostrmarket.orders.' - const orderKeys = this.$q.localStorage.getAllKeys().filter(k => k.startsWith(prefix)) - orderKeys.forEach(k => { - const pubkey = k.substring(prefix.length) - this.orders[pubkey] = this.$q.localStorage.getItem(k) - }) - - const relays = this.$q.localStorage.getItem('nostrmarket.relays') - this.relays = new Set(relays?.length ? relays : defaultRelays) - - const readNotes = this.$q.localStorage.getItem('nostrmarket.readNotes') || {} - this.readNotes = { ...this.readNotes, ...readNotes } - }, - applyUiConfigs(config = {}) { - const { name, about, ui } = config?.opts || {} - this.$q.localStorage.set('nostrmarket.marketplaceConfig', { name, about, ui }) - if (config.opts?.ui?.theme) { - document.body.setAttribute('data-theme', this.config.opts.ui.theme) - this.$q.localStorage.set('lnbits.theme', this.config.opts.ui.theme) - } - const newDarkMode = config.opts?.ui?.darkMode - if (newDarkMode !== undefined) { - const oldDarkMode = this.$q.localStorage.getItem('lnbits.darkMode') - if (newDarkMode !== oldDarkMode) { - this.$q.dark.toggle() - this.$q.localStorage.set('lnbits.darkMode', newDarkMode) - } - - } - }, - - async createAccount(useExtension = false) { - let nip07 - if (useExtension) { - await this.getFromExtension() - nip07 = true - } - if (isValidKey(this.accountDialog.data.key, 'nsec')) { - let { key, watchOnly } = this.accountDialog.data - if (key.startsWith('n')) { - let { type, data } = NostrTools.nip19.decode(key) - key = data - } - const privkey = watchOnly ? null : key - const pubkey = watchOnly ? key : NostrTools.getPublicKey(key) - this.$q.localStorage.set('nostrmarket.account', { - privkey, - pubkey, - nsec: NostrTools.nip19.nsecEncode(key), - npub: NostrTools.nip19.npubEncode(pubkey), - - useExtension: nip07 ?? false - }) - this.accountDialog.data = { - watchOnly: false, - key: null - } - this.accountDialog.show = false - this.account = this.$q.localStorage.getItem('nostrmarket.account') - } - this.accountDialog.show = false - }, - generateKeyPair() { - this.accountDialog.data.key = NostrTools.generatePrivateKey() - this.accountDialog.data.watchOnly = false - }, - async getFromExtension() { - this.accountDialog.data.key = await window.nostr.getPublicKey() - this.accountDialog.data.watchOnly = true - return - }, - openAccountDialog() { - this.accountDialog.show = true - }, - - - async updateUiConfig(data) { - const { name, about, ui } = data - this.config = { ...this.config, opts: { ...this.config.opts, name, about, ui } } - this.applyUiConfigs(this.config) - }, - - async updateData(events) { - console.log('### updateData', events) - if (events.length < 1) { - this.$q.notify({ - message: 'No matches were found!' - }) - return - } - let products = new Map() - let stalls = new Map() - const deleteEventsIds = events - .filter(e => e.kind === 5) - .map(e => (e.tags || []).filter(t => t[0] === 'e')) - .flat() - .map(t => t[1]) - .filter(t => !!t) - - - this.stalls.forEach(s => stalls.set(s.id, s)) - this.products.forEach(p => products.set(p.id, p)) - - events.map(eventToObj).map(e => { - if (e.kind == 0) { - this.profiles.set(e.pubkey, e.content) - if (e.pubkey == this.account?.pubkey) { - this.accountMetadata = this.profiles.get(this.account.pubkey) - } - this.merchants.filter(m => m.publicKey === e.pubkey).forEach(m => m.profile = e.content) - return - } else if (e.kind == 5) { - console.log('### delete event', e) - } else if (e.kind == 30018) { - //it's a product `d` is the prod. id - products.set(e.d, { ...e.content, pubkey: e.pubkey, id: e.d, categories: e.t, eventId: e.id }) - } else if (e.kind == 30017) { - // it's a stall `d` is the stall id - stalls.set(e.d, { ...e.content, pubkey: e.pubkey, id: e.d, pubkey: e.pubkey }) - } - }) - - this.stalls = await Array.from(stalls.values()) - - this.products = Array.from(products.values()) - .map(obj => { - const stall = this.stalls.find(s => s.id == obj.stall_id) - if (!stall) return - obj.stallName = stall.name - obj.images = obj.images || [obj.image] - if (obj.currency != 'sat') { - obj.formatedPrice = this.getAmountFormated( - obj.price, - obj.currency - ) - } - return obj - }) - .filter(p => p && (deleteEventsIds.indexOf(p.eventId)) === -1) - console.log('### this.products', this.products) - }, - - async initNostr() { - this.isLoading = true - this.pool = new NostrTools.SimplePool() - - const relays = Array.from(this.relays) - - const authors = this.merchants.map(m => m.publicKey) - const events = await this.pool.list(relays, [{ kinds: [0, 30017, 30018], authors }]) - if (!events || events.length == 0) return - await this.updateData(events) - - const lastEvent = events.sort((a, b) => b.created_at - a.created_at)[0] - this.poolSubscribe(lastEvent.created_at) - this.isLoading = false - }, - async poolSubscribe(since) { - const authors = this.merchants.map(m => m.publicKey) - this.pool - .sub(Array.from(this.relays), [{ kinds: [0, 5, 30017, 30018], authors, since }]) - .on( - 'event', - event => { - this.updateData([event]) - }, - { id: 'masterSub' } //pass ID to cancel previous sub - ) - }, - - async checkMarketNaddr(naddr) { - if (!naddr) return - - try { - const { type, data } = NostrTools.nip19.decode(naddr) - if (type !== 'naddr' || data.kind !== 30019) return // just double check - this.config = { - d: data.identifier, - pubkey: data.pubkey, - relays: data.relays - } - } catch (err) { - console.error(err) - return - } - - - try { - // add relays to the set - const pool = new NostrTools.SimplePool() - this.config.relays.forEach(r => this.relays.add(r)) - const event = await pool.get(this.config.relays, { - kinds: [30019], - limit: 1, - authors: [this.config.pubkey], - '#d': [this.config.d] - }) - - if (!event) return - - this.config = { ... this.config, opts: JSON.parse(event.content) } - - this.addMerchants(this.config.opts?.merchants) - this.applyUiConfigs(this.config) - - } catch (error) { - console.warn(error) - } - }, - - - navigateTo(page, opts = { stall: null, product: null, pubkey: null }) { - console.log("### navigateTo", page, opts) - - const { stall, product, pubkey } = opts - const url = new URL(window.location) - - const merchantPubkey = pubkey || this.stalls.find(s => s.id == stall)?.pubkey - url.searchParams.set('merchant', merchantPubkey) - - if (page === 'stall' || page === 'product') { - if (stall) { - this.activeStall = stall - this.setActivePage('customer-stall') - url.searchParams.set('stall', stall) - - this.activeProduct = product - if (product) { - url.searchParams.set('product', product) - } else { - url.searchParams.delete('product') - } - } - } else { - this.activeStall = null - this.activeProduct = null - - url.searchParams.delete('merchant') - url.searchParams.delete('stall') - url.searchParams.delete('product') - - this.setActivePage('market') - } - - window.history.pushState({}, '', url) - // this.activePage = page - }, - copyUrl: function () { - this.copyText(window.location) - }, - copyText: function (text) { - var notify = this.$q.notify - Quasar.utils.copyToClipboard(text).then(function () { - notify({ - message: 'Copied to clipboard!', - position: 'bottom' - }) - }) - }, - getAmountFormated(amount, unit = 'USD') { - return LNbits.utils.formatCurrency(amount, unit) - }, - - setActivePage(page = 'market') { - this.activePage = page - }, - async addRelay(relayUrl) { - let relay = String(relayUrl).trim() - - this.relays.add(relay) - this.$q.localStorage.set(`nostrmarket.relays`, Array.from(this.relays)) - this.initNostr() // todo: improve - }, - removeRelay(relayUrl) { - this.relays.delete(relayUrl) - this.relays = new Set(Array.from(this.relays)) - this.$q.localStorage.set(`nostrmarket.relays`, Array.from(this.relays)) - this.initNostr() // todo: improve - }, - - - - addMerchant(publicKey) { - this.merchants.unshift({ - publicKey, - profile: null - }) - this.$q.localStorage.set('nostrmarket.merchants', this.merchants) - this.initNostr() // todo: improve - }, - addMerchants(publicKeys = []) { - const merchantsPubkeys = this.merchants.map(m => m.publicKey) - - const newMerchants = publicKeys - .filter(p => merchantsPubkeys.indexOf(p) === -1) - .map(p => ({ publicKey: p, profile: null })) - this.merchants.unshift(...newMerchants) - this.$q.localStorage.set('nostrmarket.merchants', this.merchants) - this.initNostr() // todo: improve - }, - removeMerchant(publicKey) { - this.merchants = this.merchants.filter(m => m.publicKey !== publicKey) - this.$q.localStorage.set('nostrmarket.merchants', this.merchants) - this.products = this.products.filter(p => p.pubkey !== publicKey) - this.stalls = this.stalls.filter(p => p.pubkey !== publicKey) - this.initNostr() // todo: improve - }, - - addProductToCart(item) { - let stallCart = this.shoppingCarts.find(s => s.id === item.stall_id) - if (!stallCart) { - stallCart = { - id: item.stall_id, - products: [] - } - this.shoppingCarts.push(stallCart) - } - stallCart.merchant = this.merchants.find(m => m.publicKey === item.pubkey) - - let product = stallCart.products.find(p => p.id === item.id) - if (!product) { - product = { ...item, orderedQuantity: 0 } - stallCart.products.push(product) - - } - product.orderedQuantity = Math.min(product.quantity, item.orderedQuantity || (product.orderedQuantity + 1)) - - this.$q.localStorage.set('nostrmarket.shoppingCarts', this.shoppingCarts) - - this.$q.notify({ - type: 'positive', - message: 'Product added to cart!' - }) - }, - - removeProductFromCart(item) { - const stallCart = this.shoppingCarts.find(c => c.id === item.stallId) - if (stallCart) { - stallCart.products = stallCart.products.filter(p => p.id !== item.productId) - if (!stallCart.products.length) { - this.shoppingCarts = this.shoppingCarts.filter(s => s.id !== item.stallId) - } - this.$q.localStorage.set('nostrmarket.shoppingCarts', this.shoppingCarts) - } - }, - removeCart(cartId) { - this.shoppingCarts = this.shoppingCarts.filter(s => s.id !== cartId) - this.$q.localStorage.set('nostrmarket.shoppingCarts', this.shoppingCarts) - }, - - checkoutStallCart(cart) { - this.checkoutCart = cart - this.checkoutStall = this.stalls.find(s => s.id === cart.id) - this.setActivePage('shopping-cart-checkout') - }, - - async placeOrder({ event, order, cartId }) { - if (!this.account?.privkey) { - this.openAccountDialog() - return - } - try { - this.activeOrderId = order.id - event.content = await NostrTools.nip04.encrypt( - this.account.privkey, - this.checkoutStall.pubkey, - JSON.stringify(order) - ) - - event.id = NostrTools.getEventHash(event) - event.sig = await NostrTools.signEvent(event, this.account.privkey) - - this.sendOrderEvent(event) - this.persistOrderUpdate(this.checkoutStall.pubkey, event.created_at, order) - this.removeCart(cartId) - this.setActivePage('shopping-cart-list') - } catch (error) { - console.warn(error) - this.$q.notify({ - type: 'warning', - message: 'Failed to place order!' - }) - } - }, - - sendOrderEvent(event) { - const pub = this.pool.publish(Array.from(this.relays), event) - this.$q.notify({ - type: 'positive', - message: 'The order has been placed!' - }) - this.qrCodeDialog = { - data: { - payment_request: null, - message: null, - }, - dismissMsg: null, - show: true - } - pub.on('ok', () => { - this.qrCodeDialog.show = true - }) - pub.on('failed', (error) => { - // do not show to user. It is possible that only one relay has failed - console.error(error) - }) - }, - - async listenForIncommingDms(from) { - if (!this.account?.privkey) { - return - } - - try { - const filters = [{ - kinds: [4], - '#p': [this.account.pubkey], - }, { - kinds: [4], - authors: [this.account.pubkey], - }] - - const subs = this.pool.sub(Array.from(this.relays), filters) - subs.on('event', async event => { - const receiverPubkey = event.tags.find(([k, v]) => k === 'p' && v && v !== '')[1] - const isSentByMe = event.pubkey === this.account.pubkey - if (receiverPubkey !== this.account.pubkey && !isSentByMe) { - console.warn('Unexpected DM. Dropped!') - return - } - this.persistDMEvent(event) - const peerPubkey = isSentByMe ? receiverPubkey : event.pubkey - await this.handleIncommingDm(event, peerPubkey) - }) - return subs - } catch (err) { - console.error(`Error: ${err}`) - } - }, - async handleIncommingDm(event, peerPubkey) { - try { - - const plainText = await NostrTools.nip04.decrypt( - this.account.privkey, - peerPubkey, - event.content - ) - console.log('### plainText', plainText) - if (!isJson(plainText)) return - - const jsonData = JSON.parse(plainText) - if ([0, 1, 2].indexOf(jsonData.type) !== -1) { - this.persistOrderUpdate(peerPubkey, event.created_at, jsonData) - } - if (jsonData.type === 1) { - this.handlePaymentRequest(jsonData) - - } else if (jsonData.type === 2) { - this.handleOrderStatusUpdate(jsonData) - } - } catch (e) { - console.warn('Unable to handle incomming DM', e) - } - }, - - handlePaymentRequest(json) { - if (json.id && (json.id !== this.activeOrderId)) { - // not for active order, store somewehre else - return - } - if (!json.payment_options?.length) { - this.qrCodeDialog.data.message = json.message || 'Unexpected error' - return - } - - const paymentRequest = json.payment_options.find(o => o.type == 'ln') - .link - if (!paymentRequest) return - this.qrCodeDialog.data.payment_request = paymentRequest - this.qrCodeDialog.dismissMsg = this.$q.notify({ - timeout: 10000, - message: 'Waiting for payment...' - }) - - }, - - handleOrderStatusUpdate(jsonData) { - if (jsonData.id && (jsonData.id !== this.activeOrderId)) { - // not for active order, store somewehre else - return - } - if (this.qrCodeDialog.dismissMsg) { - this.qrCodeDialog.dismissMsg() - } - this.qrCodeDialog.show = false - const message = jsonData.shipped ? 'Order shipped' : jsonData.paid ? 'Order paid' : 'Order notification' - this.$q.notify({ - type: 'positive', - message: message, - caption: jsonData.message || '' - }) - }, - - persistDMEvent(event) { - const dms = this.$q.localStorage.getItem(`nostrmarket.dm.${event.pubkey}`) || { events: [], lastCreatedAt: 0 } - const existingEvent = dms.events.find(e => e.id === event.id) - if (existingEvent) return - - dms.events.push(event) - dms.events.sort((a, b) => a - b) - dms.lastCreatedAt = dms.events[dms.events.length - 1].created_at - this.$q.localStorage.set(`nostrmarket.dm.${event.pubkey}`, dms) - }, - - lastDmForPubkey(pubkey) { - const dms = this.$q.localStorage.getItem(`nostrmarket.dm.${pubkey}`) - if (!dms) return 0 - return dms.lastCreatedAt - }, - - persistOrderUpdate(pubkey, eventCreatedAt, orderUpdate) { - let orders = this.$q.localStorage.getItem(`nostrmarket.orders.${pubkey}`) || [] - const orderIndex = orders.findIndex(o => o.id === orderUpdate.id) - - if (orderIndex === -1) { - orders.unshift({ - ...orderUpdate, - eventCreatedAt, - createdAt: eventCreatedAt - }) - this.orders[pubkey] = orders - this.orders = { ...this.orders } - this.$q.localStorage.set(`nostrmarket.orders.${pubkey}`, orders) - return - } - - let order = orders[orderIndex] - - if (orderUpdate.type === 0) { - order.createdAt = eventCreatedAt - order = { ...order, ...orderUpdate, message: order.message || orderUpdate.message } - } else { - order = order.eventCreatedAt < eventCreatedAt ? { ...order, ...orderUpdate } : { ...orderUpdate, ...order } - } - - orders.splice(orderIndex, 1, order) - this.orders[pubkey] = orders - this.orders = { ...this.orders } - this.$q.localStorage.set(`nostrmarket.orders.${pubkey}`, orders) - }, - - showInvoiceQr(invoice) { - if (!invoice) return - this.qrCodeDialog = { - data: { - payment_request: invoice - }, - dismissMsg: null, - show: true - } - }, - - toggleCategoryFilter(category) { - const index = this.filterCategories.indexOf(category) - if (index === -1) { - this.filterCategories.push(category) - } else { - this.filterCategories.splice(index, 1) - } - }, - - hasCategory(categories = []) { - if (!this.filterCategories?.length) return true - for (const cat of categories) { - if (this.filterCategories.indexOf(cat) !== -1) return true - } - return false - }, - allStallCatgories(stallId) { - const categories = this.products.filter(p => p.stall_id === stallId).map(p => p.categories).flat().filter(c => !!c) - return Array.from(new Set(categories)) - }, - allStallImages(stallId) { - const images = this.products.filter(p => p.stall_id === stallId).map(p => p.images && p.images[0]).filter(i => !!i) - return Array.from(new Set(images)) - }, - - sanitizeImageSrc(src, defaultValue) { - try { - if (src) { - new URL(src) - return src - } - } catch { } - return defaultValue - }, - - async publishNaddr() { - if (!this.account?.privkey) { - this.openAccountDialog() - this.$q.notify({ - message: 'Login Required!', - icon: 'warning' - }) - return - } - - - const merchants = Array.from(this.merchants.map(m => m.publicKey)) - const { name, about, ui } = this.config?.opts || {} - const content = { merchants, name, about, ui } - const identifier = this.config.identifier ?? crypto.randomUUID() - const event = { - ...(await NostrTools.getBlankEvent()), - kind: 30019, - content: JSON.stringify(content), - created_at: Math.floor(Date.now() / 1000), - tags: [['d', identifier]], - pubkey: this.account.pubkey - } - event.id = NostrTools.getEventHash(event) - try { - event.sig = await NostrTools.signEvent(event, this.account.privkey) - - const pub = this.pool.publish(Array.from(this.relays), event) - pub.on('ok', () => { - console.debug(`Config event was sent`) - }) - pub.on('failed', error => { - console.error(error) - }) - } catch (err) { - console.error(err) - this.$q.notify({ - message: 'Cannot publish market profile', - caption: `Error: ${err}`, - color: 'negative' - }) - return - } - const naddr = NostrTools.nip19.naddrEncode({ - pubkey: event.pubkey, - kind: 30019, - identifier: identifier, - relays: Array.from(this.relays) - }) - this.copyText(naddr) - }, - - logout() { - window.localStorage.removeItem('nostrmarket.account') - window.location.href = window.location.origin + window.location.pathname; - this.account = null - this.accountMetadata = null - }, - - clearAllData() { - LNbits.utils - .confirmDialog( - 'This will remove all information about merchants, products, relays and others. ' + - 'You will NOT be logged out. Do you want to proceed?' - ) - .onOk(async () => { - this.$q.localStorage.getAllKeys() - .filter(key => key !== 'nostrmarket.account') - .forEach(key => window.localStorage.removeItem(key)) - - this.merchants = [] - this.relays = [] - this.orders = [] - this.config = { opts: null } - this.shoppingCarts = [] - this.checkoutCart = null - window.location.href = window.location.origin + window.location.pathname; - - }) - - }, - markNoteAsRead(noteId) { - this.readNotes[noteId] = true - this.$q.localStorage.set('nostrmarket.readNotes', this.readNotes) - } - - } - }) -} - -market() diff --git a/static/js/nostr.bundle.js b/static/js/nostr.bundle.js new file mode 100644 index 0000000..0d41aa7 --- /dev/null +++ b/static/js/nostr.bundle.js @@ -0,0 +1,8705 @@ +"use strict"; +var NostrTools = (() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; + }; + var __commonJS = (cb, mod2) => function __require() { + return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports; + }; + var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps( + isNodeMode || !mod2 || !mod2.__esModule ? __defProp(target, "default", { value: mod2, enumerable: true }) : target, + mod2 + )); + var __toCommonJS = (mod2) => __copyProps(__defProp({}, "__esModule", { value: true }), mod2); + + // + var init_define_process = __esm({ + ""() { + } + }); + + // node_modules/@scure/bip39/wordlists/english.js + var require_english = __commonJS({ + "node_modules/@scure/bip39/wordlists/english.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.wordlist = void 0; + exports.wordlist = `abandon +ability +able +about +above +absent +absorb +abstract +absurd +abuse +access +accident +account +accuse +achieve +acid +acoustic +acquire +across +act +action +actor +actress +actual +adapt +add +addict +address +adjust +admit +adult +advance +advice +aerobic +affair +afford +afraid +again +age +agent +agree +ahead +aim +air +airport +aisle +alarm +album +alcohol +alert +alien +all +alley +allow +almost +alone +alpha +already +also +alter +always +amateur +amazing +among +amount +amused +analyst +anchor +ancient +anger +angle +angry +animal +ankle +announce +annual +another +answer +antenna +antique +anxiety +any +apart +apology +appear +apple +approve +april +arch +arctic +area +arena +argue +arm +armed +armor +army +around +arrange +arrest +arrive +arrow +art +artefact +artist +artwork +ask +aspect +assault +asset +assist +assume +asthma +athlete +atom +attack +attend +attitude +attract +auction +audit +august +aunt +author +auto +autumn +average +avocado +avoid +awake +aware +away +awesome +awful +awkward +axis +baby +bachelor +bacon +badge +bag +balance +balcony +ball +bamboo +banana +banner +bar +barely +bargain +barrel +base +basic +basket +battle +beach +bean +beauty +because +become +beef +before +begin +behave +behind +believe +below +belt +bench +benefit +best +betray +better +between +beyond +bicycle +bid +bike +bind +biology +bird +birth +bitter +black +blade +blame +blanket +blast +bleak +bless +blind +blood +blossom +blouse +blue +blur +blush +board +boat +body +boil +bomb +bone +bonus +book +boost +border +boring +borrow +boss +bottom +bounce +box +boy +bracket +brain +brand +brass +brave +bread +breeze +brick +bridge +brief +bright +bring +brisk +broccoli +broken +bronze +broom +brother +brown +brush +bubble +buddy +budget +buffalo +build +bulb +bulk +bullet +bundle +bunker +burden +burger +burst +bus +business +busy +butter +buyer +buzz +cabbage +cabin +cable +cactus +cage +cake +call +calm +camera +camp +can +canal +cancel +candy +cannon +canoe +canvas +canyon +capable +capital +captain +car +carbon +card +cargo +carpet +carry +cart +case +cash +casino +castle +casual +cat +catalog +catch +category +cattle +caught +cause +caution +cave +ceiling +celery +cement +census +century +cereal +certain +chair +chalk +champion +change +chaos +chapter +charge +chase +chat +cheap +check +cheese +chef +cherry +chest +chicken +chief +child +chimney +choice +choose +chronic +chuckle +chunk +churn +cigar +cinnamon +circle +citizen +city +civil +claim +clap +clarify +claw +clay +clean +clerk +clever +click +client +cliff +climb +clinic +clip +clock +clog +close +cloth +cloud +clown +club +clump +cluster +clutch +coach +coast +coconut +code +coffee +coil +coin +collect +color +column +combine +come +comfort +comic +common +company +concert +conduct +confirm +congress +connect +consider +control +convince +cook +cool +copper +copy +coral +core +corn +correct +cost +cotton +couch +country +couple +course +cousin +cover +coyote +crack +cradle +craft +cram +crane +crash +crater +crawl +crazy +cream +credit +creek +crew +cricket +crime +crisp +critic +crop +cross +crouch +crowd +crucial +cruel +cruise +crumble +crunch +crush +cry +crystal +cube +culture +cup +cupboard +curious +current +curtain +curve +cushion +custom +cute +cycle +dad +damage +damp +dance +danger +daring +dash +daughter +dawn +day +deal +debate +debris +decade +december +decide +decline +decorate +decrease +deer +defense +define +defy +degree +delay +deliver +demand +demise +denial +dentist +deny +depart +depend +deposit +depth +deputy +derive +describe +desert +design +desk +despair +destroy +detail +detect +develop +device +devote +diagram +dial +diamond +diary +dice +diesel +diet +differ +digital +dignity +dilemma +dinner +dinosaur +direct +dirt +disagree +discover +disease +dish +dismiss +disorder +display +distance +divert +divide +divorce +dizzy +doctor +document +dog +doll +dolphin +domain +donate +donkey +donor +door +dose +double +dove +draft +dragon +drama +drastic +draw +dream +dress +drift +drill +drink +drip +drive +drop +drum +dry +duck +dumb +dune +during +dust +dutch +duty +dwarf +dynamic +eager +eagle +early +earn +earth +easily +east +easy +echo +ecology +economy +edge +edit +educate +effort +egg +eight +either +elbow +elder +electric +elegant +element +elephant +elevator +elite +else +embark +embody +embrace +emerge +emotion +employ +empower +empty +enable +enact +end +endless +endorse +enemy +energy +enforce +engage +engine +enhance +enjoy +enlist +enough +enrich +enroll +ensure +enter +entire +entry +envelope +episode +equal +equip +era +erase +erode +erosion +error +erupt +escape +essay +essence +estate +eternal +ethics +evidence +evil +evoke +evolve +exact +example +excess +exchange +excite +exclude +excuse +execute +exercise +exhaust +exhibit +exile +exist +exit +exotic +expand +expect +expire +explain +expose +express +extend +extra +eye +eyebrow +fabric +face +faculty +fade +faint +faith +fall +false +fame +family +famous +fan +fancy +fantasy +farm +fashion +fat +fatal +father +fatigue +fault +favorite +feature +february +federal +fee +feed +feel +female +fence +festival +fetch +fever +few +fiber +fiction +field +figure +file +film +filter +final +find +fine +finger +finish +fire +firm +first +fiscal +fish +fit +fitness +fix +flag +flame +flash +flat +flavor +flee +flight +flip +float +flock +floor +flower +fluid +flush +fly +foam +focus +fog +foil +fold +follow +food +foot +force +forest +forget +fork +fortune +forum +forward +fossil +foster +found +fox +fragile +frame +frequent +fresh +friend +fringe +frog +front +frost +frown +frozen +fruit +fuel +fun +funny +furnace +fury +future +gadget +gain +galaxy +gallery +game +gap +garage +garbage +garden +garlic +garment +gas +gasp +gate +gather +gauge +gaze +general +genius +genre +gentle +genuine +gesture +ghost +giant +gift +giggle +ginger +giraffe +girl +give +glad +glance +glare +glass +glide +glimpse +globe +gloom +glory +glove +glow +glue +goat +goddess +gold +good +goose +gorilla +gospel +gossip +govern +gown +grab +grace +grain +grant +grape +grass +gravity +great +green +grid +grief +grit +grocery +group +grow +grunt +guard +guess +guide +guilt +guitar +gun +gym +habit +hair +half +hammer +hamster +hand +happy +harbor +hard +harsh +harvest +hat +have +hawk +hazard +head +health +heart +heavy +hedgehog +height +hello +helmet +help +hen +hero +hidden +high +hill +hint +hip +hire +history +hobby +hockey +hold +hole +holiday +hollow +home +honey +hood +hope +horn +horror +horse +hospital +host +hotel +hour +hover +hub +huge +human +humble +humor +hundred +hungry +hunt +hurdle +hurry +hurt +husband +hybrid +ice +icon +idea +identify +idle +ignore +ill +illegal +illness +image +imitate +immense +immune +impact +impose +improve +impulse +inch +include +income +increase +index +indicate +indoor +industry +infant +inflict +inform +inhale +inherit +initial +inject +injury +inmate +inner +innocent +input +inquiry +insane +insect +inside +inspire +install +intact +interest +into +invest +invite +involve +iron +island +isolate +issue +item +ivory +jacket +jaguar +jar +jazz +jealous +jeans +jelly +jewel +job +join +joke +journey +joy +judge +juice +jump +jungle +junior +junk +just +kangaroo +keen +keep +ketchup +key +kick +kid +kidney +kind +kingdom +kiss +kit +kitchen +kite +kitten +kiwi +knee +knife +knock +know +lab +label +labor +ladder +lady +lake +lamp +language +laptop +large +later +latin +laugh +laundry +lava +law +lawn +lawsuit +layer +lazy +leader +leaf +learn +leave +lecture +left +leg +legal +legend +leisure +lemon +lend +length +lens +leopard +lesson +letter +level +liar +liberty +library +license +life +lift +light +like +limb +limit +link +lion +liquid +list +little +live +lizard +load +loan +lobster +local +lock +logic +lonely +long +loop +lottery +loud +lounge +love +loyal +lucky +luggage +lumber +lunar +lunch +luxury +lyrics +machine +mad +magic +magnet +maid +mail +main +major +make +mammal +man +manage +mandate +mango +mansion +manual +maple +marble +march +margin +marine +market +marriage +mask +mass +master +match +material +math +matrix +matter +maximum +maze +meadow +mean +measure +meat +mechanic +medal +media +melody +melt +member +memory +mention +menu +mercy +merge +merit +merry +mesh +message +metal +method +middle +midnight +milk +million +mimic +mind +minimum +minor +minute +miracle +mirror +misery +miss +mistake +mix +mixed +mixture +mobile +model +modify +mom +moment +monitor +monkey +monster +month +moon +moral +more +morning +mosquito +mother +motion +motor +mountain +mouse +move +movie +much +muffin +mule +multiply +muscle +museum +mushroom +music +must +mutual +myself +mystery +myth +naive +name +napkin +narrow +nasty +nation +nature +near +neck +need +negative +neglect +neither +nephew +nerve +nest +net +network +neutral +never +news +next +nice +night +noble +noise +nominee +noodle +normal +north +nose +notable +note +nothing +notice +novel +now +nuclear +number +nurse +nut +oak +obey +object +oblige +obscure +observe +obtain +obvious +occur +ocean +october +odor +off +offer +office +often +oil +okay +old +olive +olympic +omit +once +one +onion +online +only +open +opera +opinion +oppose +option +orange +orbit +orchard +order +ordinary +organ +orient +original +orphan +ostrich +other +outdoor +outer +output +outside +oval +oven +over +own +owner +oxygen +oyster +ozone +pact +paddle +page +pair +palace +palm +panda +panel +panic +panther +paper +parade +parent +park +parrot +party +pass +patch +path +patient +patrol +pattern +pause +pave +payment +peace +peanut +pear +peasant +pelican +pen +penalty +pencil +people +pepper +perfect +permit +person +pet +phone +photo +phrase +physical +piano +picnic +picture +piece +pig +pigeon +pill +pilot +pink +pioneer +pipe +pistol +pitch +pizza +place +planet +plastic +plate +play +please +pledge +pluck +plug +plunge +poem +poet +point +polar +pole +police +pond +pony +pool +popular +portion +position +possible +post +potato +pottery +poverty +powder +power +practice +praise +predict +prefer +prepare +present +pretty +prevent +price +pride +primary +print +priority +prison +private +prize +problem +process +produce +profit +program +project +promote +proof +property +prosper +protect +proud +provide +public +pudding +pull +pulp +pulse +pumpkin +punch +pupil +puppy +purchase +purity +purpose +purse +push +put +puzzle +pyramid +quality +quantum +quarter +question +quick +quit +quiz +quote +rabbit +raccoon +race +rack +radar +radio +rail +rain +raise +rally +ramp +ranch +random +range +rapid +rare +rate +rather +raven +raw +razor +ready +real +reason +rebel +rebuild +recall +receive +recipe +record +recycle +reduce +reflect +reform +refuse +region +regret +regular +reject +relax +release +relief +rely +remain +remember +remind +remove +render +renew +rent +reopen +repair +repeat +replace +report +require +rescue +resemble +resist +resource +response +result +retire +retreat +return +reunion +reveal +review +reward +rhythm +rib +ribbon +rice +rich +ride +ridge +rifle +right +rigid +ring +riot +ripple +risk +ritual +rival +river +road +roast +robot +robust +rocket +romance +roof +rookie +room +rose +rotate +rough +round +route +royal +rubber +rude +rug +rule +run +runway +rural +sad +saddle +sadness +safe +sail +salad +salmon +salon +salt +salute +same +sample +sand +satisfy +satoshi +sauce +sausage +save +say +scale +scan +scare +scatter +scene +scheme +school +science +scissors +scorpion +scout +scrap +screen +script +scrub +sea +search +season +seat +second +secret +section +security +seed +seek +segment +select +sell +seminar +senior +sense +sentence +series +service +session +settle +setup +seven +shadow +shaft +shallow +share +shed +shell +sheriff +shield +shift +shine +ship +shiver +shock +shoe +shoot +shop +short +shoulder +shove +shrimp +shrug +shuffle +shy +sibling +sick +side +siege +sight +sign +silent +silk +silly +silver +similar +simple +since +sing +siren +sister +situate +six +size +skate +sketch +ski +skill +skin +skirt +skull +slab +slam +sleep +slender +slice +slide +slight +slim +slogan +slot +slow +slush +small +smart +smile +smoke +smooth +snack +snake +snap +sniff +snow +soap +soccer +social +sock +soda +soft +solar +soldier +solid +solution +solve +someone +song +soon +sorry +sort +soul +sound +soup +source +south +space +spare +spatial +spawn +speak +special +speed +spell +spend +sphere +spice +spider +spike +spin +spirit +split +spoil +sponsor +spoon +sport +spot +spray +spread +spring +spy +square +squeeze +squirrel +stable +stadium +staff +stage +stairs +stamp +stand +start +state +stay +steak +steel +stem +step +stereo +stick +still +sting +stock +stomach +stone +stool +story +stove +strategy +street +strike +strong +struggle +student +stuff +stumble +style +subject +submit +subway +success +such +sudden +suffer +sugar +suggest +suit +summer +sun +sunny +sunset +super +supply +supreme +sure +surface +surge +surprise +surround +survey +suspect +sustain +swallow +swamp +swap +swarm +swear +sweet +swift +swim +swing +switch +sword +symbol +symptom +syrup +system +table +tackle +tag +tail +talent +talk +tank +tape +target +task +taste +tattoo +taxi +teach +team +tell +ten +tenant +tennis +tent +term +test +text +thank +that +theme +then +theory +there +they +thing +this +thought +three +thrive +throw +thumb +thunder +ticket +tide +tiger +tilt +timber +time +tiny +tip +tired +tissue +title +toast +tobacco +today +toddler +toe +together +toilet +token +tomato +tomorrow +tone +tongue +tonight +tool +tooth +top +topic +topple +torch +tornado +tortoise +toss +total +tourist +toward +tower +town +toy +track +trade +traffic +tragic +train +transfer +trap +trash +travel +tray +treat +tree +trend +trial +tribe +trick +trigger +trim +trip +trophy +trouble +truck +true +truly +trumpet +trust +truth +try +tube +tuition +tumble +tuna +tunnel +turkey +turn +turtle +twelve +twenty +twice +twin +twist +two +type +typical +ugly +umbrella +unable +unaware +uncle +uncover +under +undo +unfair +unfold +unhappy +uniform +unique +unit +universe +unknown +unlock +until +unusual +unveil +update +upgrade +uphold +upon +upper +upset +urban +urge +usage +use +used +useful +useless +usual +utility +vacant +vacuum +vague +valid +valley +valve +van +vanish +vapor +various +vast +vault +vehicle +velvet +vendor +venture +venue +verb +verify +version +very +vessel +veteran +viable +vibrant +vicious +victory +video +view +village +vintage +violin +virtual +virus +visa +visit +visual +vital +vivid +vocal +voice +void +volcano +volume +vote +voyage +wage +wagon +wait +walk +wall +walnut +want +warfare +warm +warrior +wash +wasp +waste +water +wave +way +wealth +weapon +wear +weasel +weather +web +wedding +weekend +weird +welcome +west +wet +whale +what +wheat +wheel +when +where +whip +whisper +wide +width +wife +wild +will +win +window +wine +wing +wink +winner +winter +wire +wisdom +wise +wish +witness +wolf +woman +wonder +wood +wool +word +work +world +worry +worth +wrap +wreck +wrestle +wrist +write +wrong +yard +year +yellow +you +young +youth +zebra +zero +zone +zoo`.split("\n"); + } + }); + + // node_modules/@noble/hashes/_assert.js + var require_assert = __commonJS({ + "node_modules/@noble/hashes/_assert.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.output = exports.exists = exports.hash = exports.bytes = exports.bool = exports.number = void 0; + function number2(n) { + if (!Number.isSafeInteger(n) || n < 0) + throw new Error(`Wrong positive integer: ${n}`); + } + exports.number = number2; + function bool2(b) { + if (typeof b !== "boolean") + throw new Error(`Expected boolean, not ${b}`); + } + exports.bool = bool2; + function bytes2(b, ...lengths) { + if (!(b instanceof Uint8Array)) + throw new TypeError("Expected Uint8Array"); + if (lengths.length > 0 && !lengths.includes(b.length)) + throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`); + } + exports.bytes = bytes2; + function hash2(hash3) { + if (typeof hash3 !== "function" || typeof hash3.create !== "function") + throw new Error("Hash should be wrapped by utils.wrapConstructor"); + number2(hash3.outputLen); + number2(hash3.blockLen); + } + exports.hash = hash2; + function exists2(instance, checkFinished = true) { + if (instance.destroyed) + throw new Error("Hash instance has been destroyed"); + if (checkFinished && instance.finished) + throw new Error("Hash#digest() has already been called"); + } + exports.exists = exists2; + function output2(out, instance) { + bytes2(out); + const min = instance.outputLen; + if (out.length < min) { + throw new Error(`digestInto() expects output buffer of length at least ${min}`); + } + } + exports.output = output2; + var assert2 = { + number: number2, + bool: bool2, + bytes: bytes2, + hash: hash2, + exists: exists2, + output: output2 + }; + exports.default = assert2; + } + }); + + // node_modules/@noble/hashes/crypto.js + var require_crypto = __commonJS({ + "node_modules/@noble/hashes/crypto.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.crypto = void 0; + exports.crypto = typeof globalThis === "object" && "crypto" in globalThis ? globalThis.crypto : void 0; + } + }); + + // node_modules/@noble/hashes/utils.js + var require_utils = __commonJS({ + "node_modules/@noble/hashes/utils.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.randomBytes = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.checkOpts = exports.Hash = exports.concatBytes = exports.toBytes = exports.utf8ToBytes = exports.asyncLoop = exports.nextTick = exports.hexToBytes = exports.bytesToHex = exports.isLE = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0; + var crypto_1 = require_crypto(); + var u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength); + exports.u8 = u8; + var u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); + exports.u32 = u32; + var createView2 = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength); + exports.createView = createView2; + var rotr2 = (word, shift) => word << 32 - shift | word >>> shift; + exports.rotr = rotr2; + exports.isLE = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68; + if (!exports.isLE) + throw new Error("Non little-endian hardware is not supported"); + var hexes3 = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, "0")); + function bytesToHex3(uint8a) { + if (!(uint8a instanceof Uint8Array)) + throw new Error("Uint8Array expected"); + let hex2 = ""; + for (let i = 0; i < uint8a.length; i++) { + hex2 += hexes3[uint8a[i]]; + } + return hex2; + } + exports.bytesToHex = bytesToHex3; + function hexToBytes3(hex2) { + if (typeof hex2 !== "string") { + throw new TypeError("hexToBytes: expected string, got " + typeof hex2); + } + if (hex2.length % 2) + throw new Error("hexToBytes: received invalid unpadded hex"); + const array = new Uint8Array(hex2.length / 2); + for (let i = 0; i < array.length; i++) { + const j = i * 2; + const hexByte = hex2.slice(j, j + 2); + const byte = Number.parseInt(hexByte, 16); + if (Number.isNaN(byte) || byte < 0) + throw new Error("Invalid byte sequence"); + array[i] = byte; + } + return array; + } + exports.hexToBytes = hexToBytes3; + var nextTick = async () => { + }; + exports.nextTick = nextTick; + async function asyncLoop(iters, tick, cb) { + let ts = Date.now(); + for (let i = 0; i < iters; i++) { + cb(i); + const diff = Date.now() - ts; + if (diff >= 0 && diff < tick) + continue; + await (0, exports.nextTick)(); + ts += diff; + } + } + exports.asyncLoop = asyncLoop; + function utf8ToBytes3(str) { + if (typeof str !== "string") { + throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`); + } + return new TextEncoder().encode(str); + } + exports.utf8ToBytes = utf8ToBytes3; + function toBytes2(data) { + if (typeof data === "string") + data = utf8ToBytes3(data); + if (!(data instanceof Uint8Array)) + throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`); + return data; + } + exports.toBytes = toBytes2; + function concatBytes3(...arrays) { + if (!arrays.every((a) => a instanceof Uint8Array)) + throw new Error("Uint8Array list expected"); + if (arrays.length === 1) + return arrays[0]; + const length = arrays.reduce((a, arr) => a + arr.length, 0); + const result = new Uint8Array(length); + for (let i = 0, pad = 0; i < arrays.length; i++) { + const arr = arrays[i]; + result.set(arr, pad); + pad += arr.length; + } + return result; + } + exports.concatBytes = concatBytes3; + var Hash2 = class { + clone() { + return this._cloneInto(); + } + }; + exports.Hash = Hash2; + var isPlainObject = (obj) => Object.prototype.toString.call(obj) === "[object Object]" && obj.constructor === Object; + function checkOpts(defaults, opts) { + if (opts !== void 0 && (typeof opts !== "object" || !isPlainObject(opts))) + throw new TypeError("Options should be object or undefined"); + const merged = Object.assign(defaults, opts); + return merged; + } + exports.checkOpts = checkOpts; + function wrapConstructor2(hashConstructor) { + const hashC = (message) => hashConstructor().update(toBytes2(message)).digest(); + const tmp = hashConstructor(); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = () => hashConstructor(); + return hashC; + } + exports.wrapConstructor = wrapConstructor2; + function wrapConstructorWithOpts(hashCons) { + const hashC = (msg, opts) => hashCons(opts).update(toBytes2(msg)).digest(); + const tmp = hashCons({}); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = (opts) => hashCons(opts); + return hashC; + } + exports.wrapConstructorWithOpts = wrapConstructorWithOpts; + function randomBytes2(bytesLength = 32) { + if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === "function") { + return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength)); + } + throw new Error("crypto.getRandomValues must be defined"); + } + exports.randomBytes = randomBytes2; + } + }); + + // node_modules/@noble/hashes/hmac.js + var require_hmac = __commonJS({ + "node_modules/@noble/hashes/hmac.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.hmac = void 0; + var _assert_js_1 = require_assert(); + var utils_js_1 = require_utils(); + var HMAC2 = class extends utils_js_1.Hash { + constructor(hash2, _key) { + super(); + this.finished = false; + this.destroyed = false; + _assert_js_1.default.hash(hash2); + const key = (0, utils_js_1.toBytes)(_key); + this.iHash = hash2.create(); + if (typeof this.iHash.update !== "function") + throw new TypeError("Expected instance of class which extends utils.Hash"); + this.blockLen = this.iHash.blockLen; + this.outputLen = this.iHash.outputLen; + const blockLen = this.blockLen; + const pad = new Uint8Array(blockLen); + pad.set(key.length > blockLen ? hash2.create().update(key).digest() : key); + for (let i = 0; i < pad.length; i++) + pad[i] ^= 54; + this.iHash.update(pad); + this.oHash = hash2.create(); + for (let i = 0; i < pad.length; i++) + pad[i] ^= 54 ^ 92; + this.oHash.update(pad); + pad.fill(0); + } + update(buf) { + _assert_js_1.default.exists(this); + this.iHash.update(buf); + return this; + } + digestInto(out) { + _assert_js_1.default.exists(this); + _assert_js_1.default.bytes(out, this.outputLen); + this.finished = true; + this.iHash.digestInto(out); + this.oHash.update(out); + this.oHash.digestInto(out); + this.destroy(); + } + digest() { + const out = new Uint8Array(this.oHash.outputLen); + this.digestInto(out); + return out; + } + _cloneInto(to) { + to || (to = Object.create(Object.getPrototypeOf(this), {})); + const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this; + to = to; + to.finished = finished; + to.destroyed = destroyed; + to.blockLen = blockLen; + to.outputLen = outputLen; + to.oHash = oHash._cloneInto(to.oHash); + to.iHash = iHash._cloneInto(to.iHash); + return to; + } + destroy() { + this.destroyed = true; + this.oHash.destroy(); + this.iHash.destroy(); + } + }; + var hmac2 = (hash2, key, message) => new HMAC2(hash2, key).update(message).digest(); + exports.hmac = hmac2; + exports.hmac.create = (hash2, key) => new HMAC2(hash2, key); + } + }); + + // node_modules/@noble/hashes/pbkdf2.js + var require_pbkdf2 = __commonJS({ + "node_modules/@noble/hashes/pbkdf2.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.pbkdf2Async = exports.pbkdf2 = void 0; + var _assert_js_1 = require_assert(); + var hmac_js_1 = require_hmac(); + var utils_js_1 = require_utils(); + function pbkdf2Init(hash2, _password, _salt, _opts) { + _assert_js_1.default.hash(hash2); + const opts = (0, utils_js_1.checkOpts)({ dkLen: 32, asyncTick: 10 }, _opts); + const { c, dkLen, asyncTick } = opts; + _assert_js_1.default.number(c); + _assert_js_1.default.number(dkLen); + _assert_js_1.default.number(asyncTick); + if (c < 1) + throw new Error("PBKDF2: iterations (c) should be >= 1"); + const password = (0, utils_js_1.toBytes)(_password); + const salt = (0, utils_js_1.toBytes)(_salt); + const DK = new Uint8Array(dkLen); + const PRF = hmac_js_1.hmac.create(hash2, password); + const PRFSalt = PRF._cloneInto().update(salt); + return { c, dkLen, asyncTick, DK, PRF, PRFSalt }; + } + function pbkdf2Output(PRF, PRFSalt, DK, prfW, u) { + PRF.destroy(); + PRFSalt.destroy(); + if (prfW) + prfW.destroy(); + u.fill(0); + return DK; + } + function pbkdf2(hash2, password, salt, opts) { + const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash2, password, salt, opts); + let prfW; + const arr = new Uint8Array(4); + const view = (0, utils_js_1.createView)(arr); + const u = new Uint8Array(PRF.outputLen); + for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { + const Ti = DK.subarray(pos, pos + PRF.outputLen); + view.setInt32(0, ti, false); + (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); + Ti.set(u.subarray(0, Ti.length)); + for (let ui = 1; ui < c; ui++) { + PRF._cloneInto(prfW).update(u).digestInto(u); + for (let i = 0; i < Ti.length; i++) + Ti[i] ^= u[i]; + } + } + return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); + } + exports.pbkdf2 = pbkdf2; + async function pbkdf2Async(hash2, password, salt, opts) { + const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash2, password, salt, opts); + let prfW; + const arr = new Uint8Array(4); + const view = (0, utils_js_1.createView)(arr); + const u = new Uint8Array(PRF.outputLen); + for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { + const Ti = DK.subarray(pos, pos + PRF.outputLen); + view.setInt32(0, ti, false); + (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); + Ti.set(u.subarray(0, Ti.length)); + await (0, utils_js_1.asyncLoop)(c - 1, asyncTick, (i) => { + PRF._cloneInto(prfW).update(u).digestInto(u); + for (let i2 = 0; i2 < Ti.length; i2++) + Ti[i2] ^= u[i2]; + }); + } + return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); + } + exports.pbkdf2Async = pbkdf2Async; + } + }); + + // node_modules/@noble/hashes/_sha2.js + var require_sha2 = __commonJS({ + "node_modules/@noble/hashes/_sha2.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.SHA2 = void 0; + var _assert_js_1 = require_assert(); + var utils_js_1 = require_utils(); + function setBigUint642(view, byteOffset, value, isLE2) { + if (typeof view.setBigUint64 === "function") + return view.setBigUint64(byteOffset, value, isLE2); + const _32n2 = BigInt(32); + const _u32_max = BigInt(4294967295); + const wh = Number(value >> _32n2 & _u32_max); + const wl = Number(value & _u32_max); + const h = isLE2 ? 4 : 0; + const l = isLE2 ? 0 : 4; + view.setUint32(byteOffset + h, wh, isLE2); + view.setUint32(byteOffset + l, wl, isLE2); + } + var SHA22 = class extends utils_js_1.Hash { + constructor(blockLen, outputLen, padOffset, isLE2) { + super(); + this.blockLen = blockLen; + this.outputLen = outputLen; + this.padOffset = padOffset; + this.isLE = isLE2; + this.finished = false; + this.length = 0; + this.pos = 0; + this.destroyed = false; + this.buffer = new Uint8Array(blockLen); + this.view = (0, utils_js_1.createView)(this.buffer); + } + update(data) { + _assert_js_1.default.exists(this); + const { view, buffer, blockLen } = this; + data = (0, utils_js_1.toBytes)(data); + const len = data.length; + for (let pos = 0; pos < len; ) { + const take = Math.min(blockLen - this.pos, len - pos); + if (take === blockLen) { + const dataView = (0, utils_js_1.createView)(data); + for (; blockLen <= len - pos; pos += blockLen) + this.process(dataView, pos); + continue; + } + buffer.set(data.subarray(pos, pos + take), this.pos); + this.pos += take; + pos += take; + if (this.pos === blockLen) { + this.process(view, 0); + this.pos = 0; + } + } + this.length += data.length; + this.roundClean(); + return this; + } + digestInto(out) { + _assert_js_1.default.exists(this); + _assert_js_1.default.output(out, this); + this.finished = true; + const { buffer, view, blockLen, isLE: isLE2 } = this; + let { pos } = this; + buffer[pos++] = 128; + this.buffer.subarray(pos).fill(0); + if (this.padOffset > blockLen - pos) { + this.process(view, 0); + pos = 0; + } + for (let i = pos; i < blockLen; i++) + buffer[i] = 0; + setBigUint642(view, blockLen - 8, BigInt(this.length * 8), isLE2); + this.process(view, 0); + const oview = (0, utils_js_1.createView)(out); + const len = this.outputLen; + if (len % 4) + throw new Error("_sha2: outputLen should be aligned to 32bit"); + const outLen = len / 4; + const state = this.get(); + if (outLen > state.length) + throw new Error("_sha2: outputLen bigger than state"); + for (let i = 0; i < outLen; i++) + oview.setUint32(4 * i, state[i], isLE2); + } + digest() { + const { buffer, outputLen } = this; + this.digestInto(buffer); + const res = buffer.slice(0, outputLen); + this.destroy(); + return res; + } + _cloneInto(to) { + to || (to = new this.constructor()); + to.set(...this.get()); + const { blockLen, buffer, length, finished, destroyed, pos } = this; + to.length = length; + to.pos = pos; + to.finished = finished; + to.destroyed = destroyed; + if (length % blockLen) + to.buffer.set(buffer); + return to; + } + }; + exports.SHA2 = SHA22; + } + }); + + // node_modules/@noble/hashes/sha256.js + var require_sha256 = __commonJS({ + "node_modules/@noble/hashes/sha256.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sha224 = exports.sha256 = void 0; + var _sha2_js_1 = require_sha2(); + var utils_js_1 = require_utils(); + var Chi2 = (a, b, c) => a & b ^ ~a & c; + var Maj2 = (a, b, c) => a & b ^ a & c ^ b & c; + var SHA256_K2 = new Uint32Array([ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]); + var IV2 = new Uint32Array([ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]); + var SHA256_W2 = new Uint32Array(64); + var SHA2562 = class extends _sha2_js_1.SHA2 { + constructor() { + super(64, 32, 8, false); + this.A = IV2[0] | 0; + this.B = IV2[1] | 0; + this.C = IV2[2] | 0; + this.D = IV2[3] | 0; + this.E = IV2[4] | 0; + this.F = IV2[5] | 0; + this.G = IV2[6] | 0; + this.H = IV2[7] | 0; + } + get() { + const { A, B, C, D, E, F, G, H } = this; + return [A, B, C, D, E, F, G, H]; + } + set(A, B, C, D, E, F, G, H) { + this.A = A | 0; + this.B = B | 0; + this.C = C | 0; + this.D = D | 0; + this.E = E | 0; + this.F = F | 0; + this.G = G | 0; + this.H = H | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) + SHA256_W2[i] = view.getUint32(offset, false); + for (let i = 16; i < 64; i++) { + const W15 = SHA256_W2[i - 15]; + const W2 = SHA256_W2[i - 2]; + const s0 = (0, utils_js_1.rotr)(W15, 7) ^ (0, utils_js_1.rotr)(W15, 18) ^ W15 >>> 3; + const s1 = (0, utils_js_1.rotr)(W2, 17) ^ (0, utils_js_1.rotr)(W2, 19) ^ W2 >>> 10; + SHA256_W2[i] = s1 + SHA256_W2[i - 7] + s0 + SHA256_W2[i - 16] | 0; + } + let { A, B, C, D, E, F, G, H } = this; + for (let i = 0; i < 64; i++) { + const sigma1 = (0, utils_js_1.rotr)(E, 6) ^ (0, utils_js_1.rotr)(E, 11) ^ (0, utils_js_1.rotr)(E, 25); + const T1 = H + sigma1 + Chi2(E, F, G) + SHA256_K2[i] + SHA256_W2[i] | 0; + const sigma0 = (0, utils_js_1.rotr)(A, 2) ^ (0, utils_js_1.rotr)(A, 13) ^ (0, utils_js_1.rotr)(A, 22); + const T2 = sigma0 + Maj2(A, B, C) | 0; + H = G; + G = F; + F = E; + E = D + T1 | 0; + D = C; + C = B; + B = A; + A = T1 + T2 | 0; + } + A = A + this.A | 0; + B = B + this.B | 0; + C = C + this.C | 0; + D = D + this.D | 0; + E = E + this.E | 0; + F = F + this.F | 0; + G = G + this.G | 0; + H = H + this.H | 0; + this.set(A, B, C, D, E, F, G, H); + } + roundClean() { + SHA256_W2.fill(0); + } + destroy() { + this.set(0, 0, 0, 0, 0, 0, 0, 0); + this.buffer.fill(0); + } + }; + var SHA2242 = class extends SHA2562 { + constructor() { + super(); + this.A = 3238371032 | 0; + this.B = 914150663 | 0; + this.C = 812702999 | 0; + this.D = 4144912697 | 0; + this.E = 4290775857 | 0; + this.F = 1750603025 | 0; + this.G = 1694076839 | 0; + this.H = 3204075428 | 0; + this.outputLen = 28; + } + }; + exports.sha256 = (0, utils_js_1.wrapConstructor)(() => new SHA2562()); + exports.sha224 = (0, utils_js_1.wrapConstructor)(() => new SHA2242()); + } + }); + + // node_modules/@noble/hashes/_u64.js + var require_u64 = __commonJS({ + "node_modules/@noble/hashes/_u64.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.add = exports.toBig = exports.split = exports.fromBig = void 0; + var U32_MASK642 = BigInt(2 ** 32 - 1); + var _32n2 = BigInt(32); + function fromBig2(n, le = false) { + if (le) + return { h: Number(n & U32_MASK642), l: Number(n >> _32n2 & U32_MASK642) }; + return { h: Number(n >> _32n2 & U32_MASK642) | 0, l: Number(n & U32_MASK642) | 0 }; + } + exports.fromBig = fromBig2; + function split2(lst, le = false) { + let Ah = new Uint32Array(lst.length); + let Al = new Uint32Array(lst.length); + for (let i = 0; i < lst.length; i++) { + const { h, l } = fromBig2(lst[i], le); + [Ah[i], Al[i]] = [h, l]; + } + return [Ah, Al]; + } + exports.split = split2; + var toBig2 = (h, l) => BigInt(h >>> 0) << _32n2 | BigInt(l >>> 0); + exports.toBig = toBig2; + var shrSH2 = (h, l, s) => h >>> s; + var shrSL2 = (h, l, s) => h << 32 - s | l >>> s; + var rotrSH2 = (h, l, s) => h >>> s | l << 32 - s; + var rotrSL2 = (h, l, s) => h << 32 - s | l >>> s; + var rotrBH2 = (h, l, s) => h << 64 - s | l >>> s - 32; + var rotrBL2 = (h, l, s) => h >>> s - 32 | l << 64 - s; + var rotr32H2 = (h, l) => l; + var rotr32L2 = (h, l) => h; + var rotlSH2 = (h, l, s) => h << s | l >>> 32 - s; + var rotlSL2 = (h, l, s) => l << s | h >>> 32 - s; + var rotlBH2 = (h, l, s) => l << s - 32 | h >>> 64 - s; + var rotlBL2 = (h, l, s) => h << s - 32 | l >>> 64 - s; + function add2(Ah, Al, Bh, Bl) { + const l = (Al >>> 0) + (Bl >>> 0); + return { h: Ah + Bh + (l / 2 ** 32 | 0) | 0, l: l | 0 }; + } + exports.add = add2; + var add3L2 = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0); + var add3H2 = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0; + var add4L2 = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0); + var add4H2 = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0; + var add5L2 = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0); + var add5H2 = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0; + var u642 = { + fromBig: fromBig2, + split: split2, + toBig: exports.toBig, + shrSH: shrSH2, + shrSL: shrSL2, + rotrSH: rotrSH2, + rotrSL: rotrSL2, + rotrBH: rotrBH2, + rotrBL: rotrBL2, + rotr32H: rotr32H2, + rotr32L: rotr32L2, + rotlSH: rotlSH2, + rotlSL: rotlSL2, + rotlBH: rotlBH2, + rotlBL: rotlBL2, + add: add2, + add3L: add3L2, + add3H: add3H2, + add4L: add4L2, + add4H: add4H2, + add5H: add5H2, + add5L: add5L2 + }; + exports.default = u642; + } + }); + + // node_modules/@noble/hashes/sha512.js + var require_sha512 = __commonJS({ + "node_modules/@noble/hashes/sha512.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.sha384 = exports.sha512_256 = exports.sha512_224 = exports.sha512 = exports.SHA512 = void 0; + var _sha2_js_1 = require_sha2(); + var _u64_js_1 = require_u64(); + var utils_js_1 = require_utils(); + var [SHA512_Kh2, SHA512_Kl2] = _u64_js_1.default.split([ + "0x428a2f98d728ae22", + "0x7137449123ef65cd", + "0xb5c0fbcfec4d3b2f", + "0xe9b5dba58189dbbc", + "0x3956c25bf348b538", + "0x59f111f1b605d019", + "0x923f82a4af194f9b", + "0xab1c5ed5da6d8118", + "0xd807aa98a3030242", + "0x12835b0145706fbe", + "0x243185be4ee4b28c", + "0x550c7dc3d5ffb4e2", + "0x72be5d74f27b896f", + "0x80deb1fe3b1696b1", + "0x9bdc06a725c71235", + "0xc19bf174cf692694", + "0xe49b69c19ef14ad2", + "0xefbe4786384f25e3", + "0x0fc19dc68b8cd5b5", + "0x240ca1cc77ac9c65", + "0x2de92c6f592b0275", + "0x4a7484aa6ea6e483", + "0x5cb0a9dcbd41fbd4", + "0x76f988da831153b5", + "0x983e5152ee66dfab", + "0xa831c66d2db43210", + "0xb00327c898fb213f", + "0xbf597fc7beef0ee4", + "0xc6e00bf33da88fc2", + "0xd5a79147930aa725", + "0x06ca6351e003826f", + "0x142929670a0e6e70", + "0x27b70a8546d22ffc", + "0x2e1b21385c26c926", + "0x4d2c6dfc5ac42aed", + "0x53380d139d95b3df", + "0x650a73548baf63de", + "0x766a0abb3c77b2a8", + "0x81c2c92e47edaee6", + "0x92722c851482353b", + "0xa2bfe8a14cf10364", + "0xa81a664bbc423001", + "0xc24b8b70d0f89791", + "0xc76c51a30654be30", + "0xd192e819d6ef5218", + "0xd69906245565a910", + "0xf40e35855771202a", + "0x106aa07032bbd1b8", + "0x19a4c116b8d2d0c8", + "0x1e376c085141ab53", + "0x2748774cdf8eeb99", + "0x34b0bcb5e19b48a8", + "0x391c0cb3c5c95a63", + "0x4ed8aa4ae3418acb", + "0x5b9cca4f7763e373", + "0x682e6ff3d6b2b8a3", + "0x748f82ee5defb2fc", + "0x78a5636f43172f60", + "0x84c87814a1f0ab72", + "0x8cc702081a6439ec", + "0x90befffa23631e28", + "0xa4506cebde82bde9", + "0xbef9a3f7b2c67915", + "0xc67178f2e372532b", + "0xca273eceea26619c", + "0xd186b8c721c0c207", + "0xeada7dd6cde0eb1e", + "0xf57d4f7fee6ed178", + "0x06f067aa72176fba", + "0x0a637dc5a2c898a6", + "0x113f9804bef90dae", + "0x1b710b35131c471b", + "0x28db77f523047d84", + "0x32caab7b40c72493", + "0x3c9ebe0a15c9bebc", + "0x431d67c49c100d4c", + "0x4cc5d4becb3e42b6", + "0x597f299cfc657e2a", + "0x5fcb6fab3ad6faec", + "0x6c44198c4a475817" + ].map((n) => BigInt(n))); + var SHA512_W_H2 = new Uint32Array(80); + var SHA512_W_L2 = new Uint32Array(80); + var SHA5122 = class extends _sha2_js_1.SHA2 { + constructor() { + super(128, 64, 16, false); + this.Ah = 1779033703 | 0; + this.Al = 4089235720 | 0; + this.Bh = 3144134277 | 0; + this.Bl = 2227873595 | 0; + this.Ch = 1013904242 | 0; + this.Cl = 4271175723 | 0; + this.Dh = 2773480762 | 0; + this.Dl = 1595750129 | 0; + this.Eh = 1359893119 | 0; + this.El = 2917565137 | 0; + this.Fh = 2600822924 | 0; + this.Fl = 725511199 | 0; + this.Gh = 528734635 | 0; + this.Gl = 4215389547 | 0; + this.Hh = 1541459225 | 0; + this.Hl = 327033209 | 0; + } + get() { + const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl]; + } + set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) { + this.Ah = Ah | 0; + this.Al = Al | 0; + this.Bh = Bh | 0; + this.Bl = Bl | 0; + this.Ch = Ch | 0; + this.Cl = Cl | 0; + this.Dh = Dh | 0; + this.Dl = Dl | 0; + this.Eh = Eh | 0; + this.El = El | 0; + this.Fh = Fh | 0; + this.Fl = Fl | 0; + this.Gh = Gh | 0; + this.Gl = Gl | 0; + this.Hh = Hh | 0; + this.Hl = Hl | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) { + SHA512_W_H2[i] = view.getUint32(offset); + SHA512_W_L2[i] = view.getUint32(offset += 4); + } + for (let i = 16; i < 80; i++) { + const W15h = SHA512_W_H2[i - 15] | 0; + const W15l = SHA512_W_L2[i - 15] | 0; + const s0h = _u64_js_1.default.rotrSH(W15h, W15l, 1) ^ _u64_js_1.default.rotrSH(W15h, W15l, 8) ^ _u64_js_1.default.shrSH(W15h, W15l, 7); + const s0l = _u64_js_1.default.rotrSL(W15h, W15l, 1) ^ _u64_js_1.default.rotrSL(W15h, W15l, 8) ^ _u64_js_1.default.shrSL(W15h, W15l, 7); + const W2h = SHA512_W_H2[i - 2] | 0; + const W2l = SHA512_W_L2[i - 2] | 0; + const s1h = _u64_js_1.default.rotrSH(W2h, W2l, 19) ^ _u64_js_1.default.rotrBH(W2h, W2l, 61) ^ _u64_js_1.default.shrSH(W2h, W2l, 6); + const s1l = _u64_js_1.default.rotrSL(W2h, W2l, 19) ^ _u64_js_1.default.rotrBL(W2h, W2l, 61) ^ _u64_js_1.default.shrSL(W2h, W2l, 6); + const SUMl = _u64_js_1.default.add4L(s0l, s1l, SHA512_W_L2[i - 7], SHA512_W_L2[i - 16]); + const SUMh = _u64_js_1.default.add4H(SUMl, s0h, s1h, SHA512_W_H2[i - 7], SHA512_W_H2[i - 16]); + SHA512_W_H2[i] = SUMh | 0; + SHA512_W_L2[i] = SUMl | 0; + } + let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + for (let i = 0; i < 80; i++) { + const sigma1h = _u64_js_1.default.rotrSH(Eh, El, 14) ^ _u64_js_1.default.rotrSH(Eh, El, 18) ^ _u64_js_1.default.rotrBH(Eh, El, 41); + const sigma1l = _u64_js_1.default.rotrSL(Eh, El, 14) ^ _u64_js_1.default.rotrSL(Eh, El, 18) ^ _u64_js_1.default.rotrBL(Eh, El, 41); + const CHIh = Eh & Fh ^ ~Eh & Gh; + const CHIl = El & Fl ^ ~El & Gl; + const T1ll = _u64_js_1.default.add5L(Hl, sigma1l, CHIl, SHA512_Kl2[i], SHA512_W_L2[i]); + const T1h = _u64_js_1.default.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh2[i], SHA512_W_H2[i]); + const T1l = T1ll | 0; + const sigma0h = _u64_js_1.default.rotrSH(Ah, Al, 28) ^ _u64_js_1.default.rotrBH(Ah, Al, 34) ^ _u64_js_1.default.rotrBH(Ah, Al, 39); + const sigma0l = _u64_js_1.default.rotrSL(Ah, Al, 28) ^ _u64_js_1.default.rotrBL(Ah, Al, 34) ^ _u64_js_1.default.rotrBL(Ah, Al, 39); + const MAJh = Ah & Bh ^ Ah & Ch ^ Bh & Ch; + const MAJl = Al & Bl ^ Al & Cl ^ Bl & Cl; + Hh = Gh | 0; + Hl = Gl | 0; + Gh = Fh | 0; + Gl = Fl | 0; + Fh = Eh | 0; + Fl = El | 0; + ({ h: Eh, l: El } = _u64_js_1.default.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0)); + Dh = Ch | 0; + Dl = Cl | 0; + Ch = Bh | 0; + Cl = Bl | 0; + Bh = Ah | 0; + Bl = Al | 0; + const All = _u64_js_1.default.add3L(T1l, sigma0l, MAJl); + Ah = _u64_js_1.default.add3H(All, T1h, sigma0h, MAJh); + Al = All | 0; + } + ({ h: Ah, l: Al } = _u64_js_1.default.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0)); + ({ h: Bh, l: Bl } = _u64_js_1.default.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0)); + ({ h: Ch, l: Cl } = _u64_js_1.default.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0)); + ({ h: Dh, l: Dl } = _u64_js_1.default.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0)); + ({ h: Eh, l: El } = _u64_js_1.default.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0)); + ({ h: Fh, l: Fl } = _u64_js_1.default.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0)); + ({ h: Gh, l: Gl } = _u64_js_1.default.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0)); + ({ h: Hh, l: Hl } = _u64_js_1.default.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0)); + this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl); + } + roundClean() { + SHA512_W_H2.fill(0); + SHA512_W_L2.fill(0); + } + destroy() { + this.buffer.fill(0); + this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + } + }; + exports.SHA512 = SHA5122; + var SHA512_2242 = class extends SHA5122 { + constructor() { + super(); + this.Ah = 2352822216 | 0; + this.Al = 424955298 | 0; + this.Bh = 1944164710 | 0; + this.Bl = 2312950998 | 0; + this.Ch = 502970286 | 0; + this.Cl = 855612546 | 0; + this.Dh = 1738396948 | 0; + this.Dl = 1479516111 | 0; + this.Eh = 258812777 | 0; + this.El = 2077511080 | 0; + this.Fh = 2011393907 | 0; + this.Fl = 79989058 | 0; + this.Gh = 1067287976 | 0; + this.Gl = 1780299464 | 0; + this.Hh = 286451373 | 0; + this.Hl = 2446758561 | 0; + this.outputLen = 28; + } + }; + var SHA512_2562 = class extends SHA5122 { + constructor() { + super(); + this.Ah = 573645204 | 0; + this.Al = 4230739756 | 0; + this.Bh = 2673172387 | 0; + this.Bl = 3360449730 | 0; + this.Ch = 596883563 | 0; + this.Cl = 1867755857 | 0; + this.Dh = 2520282905 | 0; + this.Dl = 1497426621 | 0; + this.Eh = 2519219938 | 0; + this.El = 2827943907 | 0; + this.Fh = 3193839141 | 0; + this.Fl = 1401305490 | 0; + this.Gh = 721525244 | 0; + this.Gl = 746961066 | 0; + this.Hh = 246885852 | 0; + this.Hl = 2177182882 | 0; + this.outputLen = 32; + } + }; + var SHA3842 = class extends SHA5122 { + constructor() { + super(); + this.Ah = 3418070365 | 0; + this.Al = 3238371032 | 0; + this.Bh = 1654270250 | 0; + this.Bl = 914150663 | 0; + this.Ch = 2438529370 | 0; + this.Cl = 812702999 | 0; + this.Dh = 355462360 | 0; + this.Dl = 4144912697 | 0; + this.Eh = 1731405415 | 0; + this.El = 4290775857 | 0; + this.Fh = 2394180231 | 0; + this.Fl = 1750603025 | 0; + this.Gh = 3675008525 | 0; + this.Gl = 1694076839 | 0; + this.Hh = 1203062813 | 0; + this.Hl = 3204075428 | 0; + this.outputLen = 48; + } + }; + exports.sha512 = (0, utils_js_1.wrapConstructor)(() => new SHA5122()); + exports.sha512_224 = (0, utils_js_1.wrapConstructor)(() => new SHA512_2242()); + exports.sha512_256 = (0, utils_js_1.wrapConstructor)(() => new SHA512_2562()); + exports.sha384 = (0, utils_js_1.wrapConstructor)(() => new SHA3842()); + } + }); + + // node_modules/@scure/base/lib/index.js + var require_lib = __commonJS({ + "node_modules/@scure/base/lib/index.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.bytes = exports.stringToBytes = exports.str = exports.bytesToString = exports.hex = exports.utf8 = exports.bech32m = exports.bech32 = exports.base58check = exports.base58xmr = exports.base58xrp = exports.base58flickr = exports.base58 = exports.base64url = exports.base64 = exports.base32crockford = exports.base32hex = exports.base32 = exports.base16 = exports.utils = exports.assertNumber = void 0; + function assertNumber2(n) { + if (!Number.isSafeInteger(n)) + throw new Error(`Wrong integer: ${n}`); + } + exports.assertNumber = assertNumber2; + function chain2(...args) { + const wrap = (a, b) => (c) => a(b(c)); + const encode = Array.from(args).reverse().reduce((acc, i) => acc ? wrap(acc, i.encode) : i.encode, void 0); + const decode2 = args.reduce((acc, i) => acc ? wrap(acc, i.decode) : i.decode, void 0); + return { encode, decode: decode2 }; + } + function alphabet2(alphabet3) { + return { + encode: (digits) => { + if (!Array.isArray(digits) || digits.length && typeof digits[0] !== "number") + throw new Error("alphabet.encode input should be an array of numbers"); + return digits.map((i) => { + assertNumber2(i); + if (i < 0 || i >= alphabet3.length) + throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet3.length})`); + return alphabet3[i]; + }); + }, + decode: (input) => { + if (!Array.isArray(input) || input.length && typeof input[0] !== "string") + throw new Error("alphabet.decode input should be array of strings"); + return input.map((letter) => { + if (typeof letter !== "string") + throw new Error(`alphabet.decode: not string element=${letter}`); + const index = alphabet3.indexOf(letter); + if (index === -1) + throw new Error(`Unknown letter: "${letter}". Allowed: ${alphabet3}`); + return index; + }); + } + }; + } + function join2(separator = "") { + if (typeof separator !== "string") + throw new Error("join separator should be string"); + return { + encode: (from) => { + if (!Array.isArray(from) || from.length && typeof from[0] !== "string") + throw new Error("join.encode input should be array of strings"); + for (let i of from) + if (typeof i !== "string") + throw new Error(`join.encode: non-string input=${i}`); + return from.join(separator); + }, + decode: (to) => { + if (typeof to !== "string") + throw new Error("join.decode input should be string"); + return to.split(separator); + } + }; + } + function padding2(bits, chr = "=") { + assertNumber2(bits); + if (typeof chr !== "string") + throw new Error("padding chr should be string"); + return { + encode(data) { + if (!Array.isArray(data) || data.length && typeof data[0] !== "string") + throw new Error("padding.encode input should be array of strings"); + for (let i of data) + if (typeof i !== "string") + throw new Error(`padding.encode: non-string input=${i}`); + while (data.length * bits % 8) + data.push(chr); + return data; + }, + decode(input) { + if (!Array.isArray(input) || input.length && typeof input[0] !== "string") + throw new Error("padding.encode input should be array of strings"); + for (let i of input) + if (typeof i !== "string") + throw new Error(`padding.decode: non-string input=${i}`); + let end = input.length; + if (end * bits % 8) + throw new Error("Invalid padding: string should have whole number of bytes"); + for (; end > 0 && input[end - 1] === chr; end--) { + if (!((end - 1) * bits % 8)) + throw new Error("Invalid padding: string has too much padding"); + } + return input.slice(0, end); + } + }; + } + function normalize2(fn) { + if (typeof fn !== "function") + throw new Error("normalize fn should be function"); + return { encode: (from) => from, decode: (to) => fn(to) }; + } + function convertRadix3(data, from, to) { + if (from < 2) + throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`); + if (to < 2) + throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`); + if (!Array.isArray(data)) + throw new Error("convertRadix: data should be array"); + if (!data.length) + return []; + let pos = 0; + const res = []; + const digits = Array.from(data); + digits.forEach((d) => { + assertNumber2(d); + if (d < 0 || d >= from) + throw new Error(`Wrong integer: ${d}`); + }); + while (true) { + let carry = 0; + let done = true; + for (let i = pos; i < digits.length; i++) { + const digit = digits[i]; + const digitBase = from * carry + digit; + if (!Number.isSafeInteger(digitBase) || from * carry / from !== carry || digitBase - digit !== from * carry) { + throw new Error("convertRadix: carry overflow"); + } + carry = digitBase % to; + digits[i] = Math.floor(digitBase / to); + if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase) + throw new Error("convertRadix: carry overflow"); + if (!done) + continue; + else if (!digits[i]) + pos = i; + else + done = false; + } + res.push(carry); + if (done) + break; + } + for (let i = 0; i < data.length - 1 && data[i] === 0; i++) + res.push(0); + return res.reverse(); + } + var gcd2 = (a, b) => !b ? a : gcd2(b, a % b); + var radix2carry2 = (from, to) => from + (to - gcd2(from, to)); + function convertRadix22(data, from, to, padding3) { + if (!Array.isArray(data)) + throw new Error("convertRadix2: data should be array"); + if (from <= 0 || from > 32) + throw new Error(`convertRadix2: wrong from=${from}`); + if (to <= 0 || to > 32) + throw new Error(`convertRadix2: wrong to=${to}`); + if (radix2carry2(from, to) > 32) { + throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry2(from, to)}`); + } + let carry = 0; + let pos = 0; + const mask = 2 ** to - 1; + const res = []; + for (const n of data) { + assertNumber2(n); + if (n >= 2 ** from) + throw new Error(`convertRadix2: invalid data word=${n} from=${from}`); + carry = carry << from | n; + if (pos + from > 32) + throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`); + pos += from; + for (; pos >= to; pos -= to) + res.push((carry >> pos - to & mask) >>> 0); + carry &= 2 ** pos - 1; + } + carry = carry << to - pos & mask; + if (!padding3 && pos >= from) + throw new Error("Excess padding"); + if (!padding3 && carry) + throw new Error(`Non-zero padding: ${carry}`); + if (padding3 && pos > 0) + res.push(carry >>> 0); + return res; + } + function radix3(num) { + assertNumber2(num); + return { + encode: (bytes2) => { + if (!(bytes2 instanceof Uint8Array)) + throw new Error("radix.encode input should be Uint8Array"); + return convertRadix3(Array.from(bytes2), 2 ** 8, num); + }, + decode: (digits) => { + if (!Array.isArray(digits) || digits.length && typeof digits[0] !== "number") + throw new Error("radix.decode input should be array of strings"); + return Uint8Array.from(convertRadix3(digits, num, 2 ** 8)); + } + }; + } + function radix22(bits, revPadding = false) { + assertNumber2(bits); + if (bits <= 0 || bits > 32) + throw new Error("radix2: bits should be in (0..32]"); + if (radix2carry2(8, bits) > 32 || radix2carry2(bits, 8) > 32) + throw new Error("radix2: carry overflow"); + return { + encode: (bytes2) => { + if (!(bytes2 instanceof Uint8Array)) + throw new Error("radix2.encode input should be Uint8Array"); + return convertRadix22(Array.from(bytes2), 8, bits, !revPadding); + }, + decode: (digits) => { + if (!Array.isArray(digits) || digits.length && typeof digits[0] !== "number") + throw new Error("radix2.decode input should be array of strings"); + return Uint8Array.from(convertRadix22(digits, bits, 8, revPadding)); + } + }; + } + function unsafeWrapper2(fn) { + if (typeof fn !== "function") + throw new Error("unsafeWrapper fn should be function"); + return function(...args) { + try { + return fn.apply(null, args); + } catch (e) { + } + }; + } + function checksum2(len, fn) { + assertNumber2(len); + if (typeof fn !== "function") + throw new Error("checksum fn should be function"); + return { + encode(data) { + if (!(data instanceof Uint8Array)) + throw new Error("checksum.encode: input should be Uint8Array"); + const checksum3 = fn(data).slice(0, len); + const res = new Uint8Array(data.length + len); + res.set(data); + res.set(checksum3, data.length); + return res; + }, + decode(data) { + if (!(data instanceof Uint8Array)) + throw new Error("checksum.decode: input should be Uint8Array"); + const payload = data.slice(0, -len); + const newChecksum = fn(payload).slice(0, len); + const oldChecksum = data.slice(-len); + for (let i = 0; i < len; i++) + if (newChecksum[i] !== oldChecksum[i]) + throw new Error("Invalid checksum"); + return payload; + } + }; + } + exports.utils = { alphabet: alphabet2, chain: chain2, checksum: checksum2, radix: radix3, radix2: radix22, join: join2, padding: padding2 }; + exports.base16 = chain2(radix22(4), alphabet2("0123456789ABCDEF"), join2("")); + exports.base32 = chain2(radix22(5), alphabet2("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"), padding2(5), join2("")); + exports.base32hex = chain2(radix22(5), alphabet2("0123456789ABCDEFGHIJKLMNOPQRSTUV"), padding2(5), join2("")); + exports.base32crockford = chain2(radix22(5), alphabet2("0123456789ABCDEFGHJKMNPQRSTVWXYZ"), join2(""), normalize2((s) => s.toUpperCase().replace(/O/g, "0").replace(/[IL]/g, "1"))); + exports.base64 = chain2(radix22(6), alphabet2("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), padding2(6), join2("")); + exports.base64url = chain2(radix22(6), alphabet2("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"), padding2(6), join2("")); + var genBase582 = (abc) => chain2(radix3(58), alphabet2(abc), join2("")); + exports.base58 = genBase582("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"); + exports.base58flickr = genBase582("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"); + exports.base58xrp = genBase582("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz"); + var XMR_BLOCK_LEN2 = [0, 2, 3, 5, 6, 7, 9, 10, 11]; + exports.base58xmr = { + encode(data) { + let res = ""; + for (let i = 0; i < data.length; i += 8) { + const block = data.subarray(i, i + 8); + res += exports.base58.encode(block).padStart(XMR_BLOCK_LEN2[block.length], "1"); + } + return res; + }, + decode(str) { + let res = []; + for (let i = 0; i < str.length; i += 11) { + const slice = str.slice(i, i + 11); + const blockLen = XMR_BLOCK_LEN2.indexOf(slice.length); + const block = exports.base58.decode(slice); + for (let j = 0; j < block.length - blockLen; j++) { + if (block[j] !== 0) + throw new Error("base58xmr: wrong padding"); + } + res = res.concat(Array.from(block.slice(block.length - blockLen))); + } + return Uint8Array.from(res); + } + }; + var base58check3 = (sha2562) => chain2(checksum2(4, (data) => sha2562(sha2562(data))), exports.base58); + exports.base58check = base58check3; + var BECH_ALPHABET2 = chain2(alphabet2("qpzry9x8gf2tvdw0s3jn54khce6mua7l"), join2("")); + var POLYMOD_GENERATORS2 = [996825010, 642813549, 513874426, 1027748829, 705979059]; + function bech32Polymod2(pre) { + const b = pre >> 25; + let chk = (pre & 33554431) << 5; + for (let i = 0; i < POLYMOD_GENERATORS2.length; i++) { + if ((b >> i & 1) === 1) + chk ^= POLYMOD_GENERATORS2[i]; + } + return chk; + } + function bechChecksum2(prefix, words, encodingConst = 1) { + const len = prefix.length; + let chk = 1; + for (let i = 0; i < len; i++) { + const c = prefix.charCodeAt(i); + if (c < 33 || c > 126) + throw new Error(`Invalid prefix (${prefix})`); + chk = bech32Polymod2(chk) ^ c >> 5; + } + chk = bech32Polymod2(chk); + for (let i = 0; i < len; i++) + chk = bech32Polymod2(chk) ^ prefix.charCodeAt(i) & 31; + for (let v of words) + chk = bech32Polymod2(chk) ^ v; + for (let i = 0; i < 6; i++) + chk = bech32Polymod2(chk); + chk ^= encodingConst; + return BECH_ALPHABET2.encode(convertRadix22([chk % 2 ** 30], 30, 5, false)); + } + function genBech322(encoding) { + const ENCODING_CONST = encoding === "bech32" ? 1 : 734539939; + const _words = radix22(5); + const fromWords = _words.decode; + const toWords = _words.encode; + const fromWordsUnsafe = unsafeWrapper2(fromWords); + function encode(prefix, words, limit = 90) { + if (typeof prefix !== "string") + throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`); + if (!Array.isArray(words) || words.length && typeof words[0] !== "number") + throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`); + const actualLength = prefix.length + 7 + words.length; + if (limit !== false && actualLength > limit) + throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`); + prefix = prefix.toLowerCase(); + return `${prefix}1${BECH_ALPHABET2.encode(words)}${bechChecksum2(prefix, words, ENCODING_CONST)}`; + } + function decode2(str, limit = 90) { + if (typeof str !== "string") + throw new Error(`bech32.decode input should be string, not ${typeof str}`); + if (str.length < 8 || limit !== false && str.length > limit) + throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`); + const lowered = str.toLowerCase(); + if (str !== lowered && str !== str.toUpperCase()) + throw new Error(`String must be lowercase or uppercase`); + str = lowered; + const sepIndex = str.lastIndexOf("1"); + if (sepIndex === 0 || sepIndex === -1) + throw new Error(`Letter "1" must be present between prefix and data only`); + const prefix = str.slice(0, sepIndex); + const _words2 = str.slice(sepIndex + 1); + if (_words2.length < 6) + throw new Error("Data must be at least 6 characters long"); + const words = BECH_ALPHABET2.decode(_words2).slice(0, -6); + const sum = bechChecksum2(prefix, words, ENCODING_CONST); + if (!_words2.endsWith(sum)) + throw new Error(`Invalid checksum in ${str}: expected "${sum}"`); + return { prefix, words }; + } + const decodeUnsafe = unsafeWrapper2(decode2); + function decodeToBytes(str) { + const { prefix, words } = decode2(str, false); + return { prefix, words, bytes: fromWords(words) }; + } + return { encode, decode: decode2, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords }; + } + exports.bech32 = genBech322("bech32"); + exports.bech32m = genBech322("bech32m"); + exports.utf8 = { + encode: (data) => new TextDecoder().decode(data), + decode: (str) => new TextEncoder().encode(str) + }; + exports.hex = chain2(radix22(4), alphabet2("0123456789abcdef"), join2(""), normalize2((s) => { + if (typeof s !== "string" || s.length % 2) + throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`); + return s.toLowerCase(); + })); + var CODERS2 = { + utf8: exports.utf8, + hex: exports.hex, + base16: exports.base16, + base32: exports.base32, + base64: exports.base64, + base64url: exports.base64url, + base58: exports.base58, + base58xmr: exports.base58xmr + }; + var coderTypeError2 = `Invalid encoding type. Available types: ${Object.keys(CODERS2).join(", ")}`; + var bytesToString = (type, bytes2) => { + if (typeof type !== "string" || !CODERS2.hasOwnProperty(type)) + throw new TypeError(coderTypeError2); + if (!(bytes2 instanceof Uint8Array)) + throw new TypeError("bytesToString() expects Uint8Array"); + return CODERS2[type].encode(bytes2); + }; + exports.bytesToString = bytesToString; + exports.str = exports.bytesToString; + var stringToBytes = (type, str) => { + if (!CODERS2.hasOwnProperty(type)) + throw new TypeError(coderTypeError2); + if (typeof str !== "string") + throw new TypeError("stringToBytes() expects string"); + return CODERS2[type].decode(str); + }; + exports.stringToBytes = stringToBytes; + exports.bytes = exports.stringToBytes; + } + }); + + // node_modules/@scure/bip39/index.js + var require_bip39 = __commonJS({ + "node_modules/@scure/bip39/index.js"(exports) { + "use strict"; + init_define_process(); + Object.defineProperty(exports, "__esModule", { value: true }); + exports.mnemonicToSeedSync = exports.mnemonicToSeed = exports.validateMnemonic = exports.entropyToMnemonic = exports.mnemonicToEntropy = exports.generateMnemonic = void 0; + var _assert_1 = require_assert(); + var pbkdf2_1 = require_pbkdf2(); + var sha256_1 = require_sha256(); + var sha512_1 = require_sha512(); + var utils_1 = require_utils(); + var base_1 = require_lib(); + var isJapanese = (wordlist2) => wordlist2[0] === "\u3042\u3044\u3053\u304F\u3057\u3093"; + function nfkd(str) { + if (typeof str !== "string") + throw new TypeError(`Invalid mnemonic type: ${typeof str}`); + return str.normalize("NFKD"); + } + function normalize2(str) { + const norm = nfkd(str); + const words = norm.split(" "); + if (![12, 15, 18, 21, 24].includes(words.length)) + throw new Error("Invalid mnemonic"); + return { nfkd: norm, words }; + } + function assertEntropy(entropy) { + _assert_1.default.bytes(entropy, 16, 20, 24, 28, 32); + } + function generateMnemonic2(wordlist2, strength = 128) { + _assert_1.default.number(strength); + if (strength % 32 !== 0 || strength > 256) + throw new TypeError("Invalid entropy"); + return entropyToMnemonic((0, utils_1.randomBytes)(strength / 8), wordlist2); + } + exports.generateMnemonic = generateMnemonic2; + var calcChecksum = (entropy) => { + const bitsLeft = 8 - entropy.length / 4; + return new Uint8Array([(0, sha256_1.sha256)(entropy)[0] >> bitsLeft << bitsLeft]); + }; + function getCoder(wordlist2) { + if (!Array.isArray(wordlist2) || wordlist2.length !== 2048 || typeof wordlist2[0] !== "string") + throw new Error("Worlist: expected array of 2048 strings"); + wordlist2.forEach((i) => { + if (typeof i !== "string") + throw new Error(`Wordlist: non-string element: ${i}`); + }); + return base_1.utils.chain(base_1.utils.checksum(1, calcChecksum), base_1.utils.radix2(11, true), base_1.utils.alphabet(wordlist2)); + } + function mnemonicToEntropy(mnemonic, wordlist2) { + const { words } = normalize2(mnemonic); + const entropy = getCoder(wordlist2).decode(words); + assertEntropy(entropy); + return entropy; + } + exports.mnemonicToEntropy = mnemonicToEntropy; + function entropyToMnemonic(entropy, wordlist2) { + assertEntropy(entropy); + const words = getCoder(wordlist2).encode(entropy); + return words.join(isJapanese(wordlist2) ? "\u3000" : " "); + } + exports.entropyToMnemonic = entropyToMnemonic; + function validateMnemonic2(mnemonic, wordlist2) { + try { + mnemonicToEntropy(mnemonic, wordlist2); + } catch (e) { + return false; + } + return true; + } + exports.validateMnemonic = validateMnemonic2; + var salt = (passphrase) => nfkd(`mnemonic${passphrase}`); + function mnemonicToSeed(mnemonic, passphrase = "") { + return (0, pbkdf2_1.pbkdf2Async)(sha512_1.sha512, normalize2(mnemonic).nfkd, salt(passphrase), { c: 2048, dkLen: 64 }); + } + exports.mnemonicToSeed = mnemonicToSeed; + function mnemonicToSeedSync2(mnemonic, passphrase = "") { + return (0, pbkdf2_1.pbkdf2)(sha512_1.sha512, normalize2(mnemonic).nfkd, salt(passphrase), { c: 2048, dkLen: 64 }); + } + exports.mnemonicToSeedSync = mnemonicToSeedSync2; + } + }); + + // index.ts + var nostr_tools_exports = {}; + __export(nostr_tools_exports, { + Kind: () => Kind, + SimplePool: () => SimplePool, + finishEvent: () => finishEvent, + fj: () => fakejson_exports, + generatePrivateKey: () => generatePrivateKey, + getBlankEvent: () => getBlankEvent, + getEventHash: () => getEventHash, + getPublicKey: () => getPublicKey, + getSignature: () => getSignature, + matchFilter: () => matchFilter, + matchFilters: () => matchFilters, + mergeFilters: () => mergeFilters, + nip04: () => nip04_exports, + nip05: () => nip05_exports, + nip06: () => nip06_exports, + nip10: () => nip10_exports, + nip13: () => nip13_exports, + nip18: () => nip18_exports, + nip19: () => nip19_exports, + nip21: () => nip21_exports, + nip25: () => nip25_exports, + nip26: () => nip26_exports, + nip27: () => nip27_exports, + nip39: () => nip39_exports, + nip42: () => nip42_exports, + nip57: () => nip57_exports, + nip98: () => nip98_exports, + parseReferences: () => parseReferences, + relayInit: () => relayInit, + serializeEvent: () => serializeEvent, + signEvent: () => signEvent, + utils: () => utils_exports2, + validateEvent: () => validateEvent, + verifySignature: () => verifySignature + }); + init_define_process(); + + // keys.ts + init_define_process(); + + // node_modules/@noble/curves/esm/secp256k1.js + init_define_process(); + + // node_modules/@noble/hashes/esm/sha256.js + init_define_process(); + + // node_modules/@noble/hashes/esm/_sha2.js + init_define_process(); + + // node_modules/@noble/hashes/esm/_assert.js + init_define_process(); + function number(n) { + if (!Number.isSafeInteger(n) || n < 0) + throw new Error(`Wrong positive integer: ${n}`); + } + function bool(b) { + if (typeof b !== "boolean") + throw new Error(`Expected boolean, not ${b}`); + } + function bytes(b, ...lengths) { + if (!(b instanceof Uint8Array)) + throw new TypeError("Expected Uint8Array"); + if (lengths.length > 0 && !lengths.includes(b.length)) + throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`); + } + function hash(hash2) { + if (typeof hash2 !== "function" || typeof hash2.create !== "function") + throw new Error("Hash should be wrapped by utils.wrapConstructor"); + number(hash2.outputLen); + number(hash2.blockLen); + } + function exists(instance, checkFinished = true) { + if (instance.destroyed) + throw new Error("Hash instance has been destroyed"); + if (checkFinished && instance.finished) + throw new Error("Hash#digest() has already been called"); + } + function output(out, instance) { + bytes(out); + const min = instance.outputLen; + if (out.length < min) { + throw new Error(`digestInto() expects output buffer of length at least ${min}`); + } + } + var assert = { + number, + bool, + bytes, + hash, + exists, + output + }; + var assert_default = assert; + + // node_modules/@noble/hashes/esm/utils.js + init_define_process(); + + // node_modules/@noble/hashes/esm/crypto.js + init_define_process(); + var crypto2 = typeof globalThis === "object" && "crypto" in globalThis ? globalThis.crypto : void 0; + + // node_modules/@noble/hashes/esm/utils.js + var createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength); + var rotr = (word, shift) => word << 32 - shift | word >>> shift; + var isLE = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68; + if (!isLE) + throw new Error("Non little-endian hardware is not supported"); + var hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, "0")); + function bytesToHex(uint8a) { + if (!(uint8a instanceof Uint8Array)) + throw new Error("Uint8Array expected"); + let hex2 = ""; + for (let i = 0; i < uint8a.length; i++) { + hex2 += hexes[uint8a[i]]; + } + return hex2; + } + function hexToBytes(hex2) { + if (typeof hex2 !== "string") { + throw new TypeError("hexToBytes: expected string, got " + typeof hex2); + } + if (hex2.length % 2) + throw new Error("hexToBytes: received invalid unpadded hex"); + const array = new Uint8Array(hex2.length / 2); + for (let i = 0; i < array.length; i++) { + const j = i * 2; + const hexByte = hex2.slice(j, j + 2); + const byte = Number.parseInt(hexByte, 16); + if (Number.isNaN(byte) || byte < 0) + throw new Error("Invalid byte sequence"); + array[i] = byte; + } + return array; + } + function utf8ToBytes(str) { + if (typeof str !== "string") { + throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`); + } + return new TextEncoder().encode(str); + } + function toBytes(data) { + if (typeof data === "string") + data = utf8ToBytes(data); + if (!(data instanceof Uint8Array)) + throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`); + return data; + } + function concatBytes(...arrays) { + if (!arrays.every((a) => a instanceof Uint8Array)) + throw new Error("Uint8Array list expected"); + if (arrays.length === 1) + return arrays[0]; + const length = arrays.reduce((a, arr) => a + arr.length, 0); + const result = new Uint8Array(length); + for (let i = 0, pad = 0; i < arrays.length; i++) { + const arr = arrays[i]; + result.set(arr, pad); + pad += arr.length; + } + return result; + } + var Hash = class { + clone() { + return this._cloneInto(); + } + }; + function wrapConstructor(hashConstructor) { + const hashC = (message) => hashConstructor().update(toBytes(message)).digest(); + const tmp = hashConstructor(); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = () => hashConstructor(); + return hashC; + } + function randomBytes(bytesLength = 32) { + if (crypto2 && typeof crypto2.getRandomValues === "function") { + return crypto2.getRandomValues(new Uint8Array(bytesLength)); + } + throw new Error("crypto.getRandomValues must be defined"); + } + + // node_modules/@noble/hashes/esm/_sha2.js + function setBigUint64(view, byteOffset, value, isLE2) { + if (typeof view.setBigUint64 === "function") + return view.setBigUint64(byteOffset, value, isLE2); + const _32n2 = BigInt(32); + const _u32_max = BigInt(4294967295); + const wh = Number(value >> _32n2 & _u32_max); + const wl = Number(value & _u32_max); + const h = isLE2 ? 4 : 0; + const l = isLE2 ? 0 : 4; + view.setUint32(byteOffset + h, wh, isLE2); + view.setUint32(byteOffset + l, wl, isLE2); + } + var SHA2 = class extends Hash { + constructor(blockLen, outputLen, padOffset, isLE2) { + super(); + this.blockLen = blockLen; + this.outputLen = outputLen; + this.padOffset = padOffset; + this.isLE = isLE2; + this.finished = false; + this.length = 0; + this.pos = 0; + this.destroyed = false; + this.buffer = new Uint8Array(blockLen); + this.view = createView(this.buffer); + } + update(data) { + assert_default.exists(this); + const { view, buffer, blockLen } = this; + data = toBytes(data); + const len = data.length; + for (let pos = 0; pos < len; ) { + const take = Math.min(blockLen - this.pos, len - pos); + if (take === blockLen) { + const dataView = createView(data); + for (; blockLen <= len - pos; pos += blockLen) + this.process(dataView, pos); + continue; + } + buffer.set(data.subarray(pos, pos + take), this.pos); + this.pos += take; + pos += take; + if (this.pos === blockLen) { + this.process(view, 0); + this.pos = 0; + } + } + this.length += data.length; + this.roundClean(); + return this; + } + digestInto(out) { + assert_default.exists(this); + assert_default.output(out, this); + this.finished = true; + const { buffer, view, blockLen, isLE: isLE2 } = this; + let { pos } = this; + buffer[pos++] = 128; + this.buffer.subarray(pos).fill(0); + if (this.padOffset > blockLen - pos) { + this.process(view, 0); + pos = 0; + } + for (let i = pos; i < blockLen; i++) + buffer[i] = 0; + setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE2); + this.process(view, 0); + const oview = createView(out); + const len = this.outputLen; + if (len % 4) + throw new Error("_sha2: outputLen should be aligned to 32bit"); + const outLen = len / 4; + const state = this.get(); + if (outLen > state.length) + throw new Error("_sha2: outputLen bigger than state"); + for (let i = 0; i < outLen; i++) + oview.setUint32(4 * i, state[i], isLE2); + } + digest() { + const { buffer, outputLen } = this; + this.digestInto(buffer); + const res = buffer.slice(0, outputLen); + this.destroy(); + return res; + } + _cloneInto(to) { + to || (to = new this.constructor()); + to.set(...this.get()); + const { blockLen, buffer, length, finished, destroyed, pos } = this; + to.length = length; + to.pos = pos; + to.finished = finished; + to.destroyed = destroyed; + if (length % blockLen) + to.buffer.set(buffer); + return to; + } + }; + + // node_modules/@noble/hashes/esm/sha256.js + var Chi = (a, b, c) => a & b ^ ~a & c; + var Maj = (a, b, c) => a & b ^ a & c ^ b & c; + var SHA256_K = new Uint32Array([ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]); + var IV = new Uint32Array([ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]); + var SHA256_W = new Uint32Array(64); + var SHA256 = class extends SHA2 { + constructor() { + super(64, 32, 8, false); + this.A = IV[0] | 0; + this.B = IV[1] | 0; + this.C = IV[2] | 0; + this.D = IV[3] | 0; + this.E = IV[4] | 0; + this.F = IV[5] | 0; + this.G = IV[6] | 0; + this.H = IV[7] | 0; + } + get() { + const { A, B, C, D, E, F, G, H } = this; + return [A, B, C, D, E, F, G, H]; + } + set(A, B, C, D, E, F, G, H) { + this.A = A | 0; + this.B = B | 0; + this.C = C | 0; + this.D = D | 0; + this.E = E | 0; + this.F = F | 0; + this.G = G | 0; + this.H = H | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) + SHA256_W[i] = view.getUint32(offset, false); + for (let i = 16; i < 64; i++) { + const W15 = SHA256_W[i - 15]; + const W2 = SHA256_W[i - 2]; + const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ W15 >>> 3; + const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ W2 >>> 10; + SHA256_W[i] = s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16] | 0; + } + let { A, B, C, D, E, F, G, H } = this; + for (let i = 0; i < 64; i++) { + const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25); + const T1 = H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i] | 0; + const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22); + const T2 = sigma0 + Maj(A, B, C) | 0; + H = G; + G = F; + F = E; + E = D + T1 | 0; + D = C; + C = B; + B = A; + A = T1 + T2 | 0; + } + A = A + this.A | 0; + B = B + this.B | 0; + C = C + this.C | 0; + D = D + this.D | 0; + E = E + this.E | 0; + F = F + this.F | 0; + G = G + this.G | 0; + H = H + this.H | 0; + this.set(A, B, C, D, E, F, G, H); + } + roundClean() { + SHA256_W.fill(0); + } + destroy() { + this.set(0, 0, 0, 0, 0, 0, 0, 0); + this.buffer.fill(0); + } + }; + var SHA224 = class extends SHA256 { + constructor() { + super(); + this.A = 3238371032 | 0; + this.B = 914150663 | 0; + this.C = 812702999 | 0; + this.D = 4144912697 | 0; + this.E = 4290775857 | 0; + this.F = 1750603025 | 0; + this.G = 1694076839 | 0; + this.H = 3204075428 | 0; + this.outputLen = 28; + } + }; + var sha256 = wrapConstructor(() => new SHA256()); + var sha224 = wrapConstructor(() => new SHA224()); + + // node_modules/@noble/curves/esm/abstract/modular.js + init_define_process(); + + // node_modules/@noble/curves/esm/abstract/utils.js + var utils_exports = {}; + __export(utils_exports, { + bitGet: () => bitGet, + bitLen: () => bitLen, + bitMask: () => bitMask, + bitSet: () => bitSet, + bytesToHex: () => bytesToHex2, + bytesToNumberBE: () => bytesToNumberBE, + bytesToNumberLE: () => bytesToNumberLE, + concatBytes: () => concatBytes2, + createHmacDrbg: () => createHmacDrbg, + ensureBytes: () => ensureBytes, + equalBytes: () => equalBytes, + hexToBytes: () => hexToBytes2, + hexToNumber: () => hexToNumber, + numberToBytesBE: () => numberToBytesBE, + numberToBytesLE: () => numberToBytesLE, + numberToHexUnpadded: () => numberToHexUnpadded, + numberToVarBytesBE: () => numberToVarBytesBE, + utf8ToBytes: () => utf8ToBytes2, + validateObject: () => validateObject + }); + init_define_process(); + var _0n = BigInt(0); + var _1n = BigInt(1); + var _2n = BigInt(2); + var u8a = (a) => a instanceof Uint8Array; + var hexes2 = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, "0")); + function bytesToHex2(bytes2) { + if (!u8a(bytes2)) + throw new Error("Uint8Array expected"); + let hex2 = ""; + for (let i = 0; i < bytes2.length; i++) { + hex2 += hexes2[bytes2[i]]; + } + return hex2; + } + function numberToHexUnpadded(num) { + const hex2 = num.toString(16); + return hex2.length & 1 ? `0${hex2}` : hex2; + } + function hexToNumber(hex2) { + if (typeof hex2 !== "string") + throw new Error("hex string expected, got " + typeof hex2); + return BigInt(hex2 === "" ? "0" : `0x${hex2}`); + } + function hexToBytes2(hex2) { + if (typeof hex2 !== "string") + throw new Error("hex string expected, got " + typeof hex2); + if (hex2.length % 2) + throw new Error("hex string is invalid: unpadded " + hex2.length); + const array = new Uint8Array(hex2.length / 2); + for (let i = 0; i < array.length; i++) { + const j = i * 2; + const hexByte = hex2.slice(j, j + 2); + const byte = Number.parseInt(hexByte, 16); + if (Number.isNaN(byte) || byte < 0) + throw new Error("invalid byte sequence"); + array[i] = byte; + } + return array; + } + function bytesToNumberBE(bytes2) { + return hexToNumber(bytesToHex2(bytes2)); + } + function bytesToNumberLE(bytes2) { + if (!u8a(bytes2)) + throw new Error("Uint8Array expected"); + return hexToNumber(bytesToHex2(Uint8Array.from(bytes2).reverse())); + } + var numberToBytesBE = (n, len) => hexToBytes2(n.toString(16).padStart(len * 2, "0")); + var numberToBytesLE = (n, len) => numberToBytesBE(n, len).reverse(); + var numberToVarBytesBE = (n) => hexToBytes2(numberToHexUnpadded(n)); + function ensureBytes(title, hex2, expectedLength) { + let res; + if (typeof hex2 === "string") { + try { + res = hexToBytes2(hex2); + } catch (e) { + throw new Error(`${title} must be valid hex string, got "${hex2}". Cause: ${e}`); + } + } else if (u8a(hex2)) { + res = Uint8Array.from(hex2); + } else { + throw new Error(`${title} must be hex string or Uint8Array`); + } + const len = res.length; + if (typeof expectedLength === "number" && len !== expectedLength) + throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`); + return res; + } + function concatBytes2(...arrs) { + const r = new Uint8Array(arrs.reduce((sum, a) => sum + a.length, 0)); + let pad = 0; + arrs.forEach((a) => { + if (!u8a(a)) + throw new Error("Uint8Array expected"); + r.set(a, pad); + pad += a.length; + }); + return r; + } + function equalBytes(b1, b2) { + if (b1.length !== b2.length) + return false; + for (let i = 0; i < b1.length; i++) + if (b1[i] !== b2[i]) + return false; + return true; + } + function utf8ToBytes2(str) { + if (typeof str !== "string") { + throw new Error(`utf8ToBytes expected string, got ${typeof str}`); + } + return new TextEncoder().encode(str); + } + function bitLen(n) { + let len; + for (len = 0; n > _0n; n >>= _1n, len += 1) + ; + return len; + } + var bitGet = (n, pos) => n >> BigInt(pos) & _1n; + var bitSet = (n, pos, value) => n | (value ? _1n : _0n) << BigInt(pos); + var bitMask = (n) => (_2n << BigInt(n - 1)) - _1n; + var u8n = (data) => new Uint8Array(data); + var u8fr = (arr) => Uint8Array.from(arr); + function createHmacDrbg(hashLen, qByteLen, hmacFn) { + if (typeof hashLen !== "number" || hashLen < 2) + throw new Error("hashLen must be a number"); + if (typeof qByteLen !== "number" || qByteLen < 2) + throw new Error("qByteLen must be a number"); + if (typeof hmacFn !== "function") + throw new Error("hmacFn must be a function"); + let v = u8n(hashLen); + let k = u8n(hashLen); + let i = 0; + const reset = () => { + v.fill(1); + k.fill(0); + i = 0; + }; + const h = (...b) => hmacFn(k, v, ...b); + const reseed = (seed = u8n()) => { + k = h(u8fr([0]), seed); + v = h(); + if (seed.length === 0) + return; + k = h(u8fr([1]), seed); + v = h(); + }; + const gen = () => { + if (i++ >= 1e3) + throw new Error("drbg: tried 1000 values"); + let len = 0; + const out = []; + while (len < qByteLen) { + v = h(); + const sl = v.slice(); + out.push(sl); + len += v.length; + } + return concatBytes2(...out); + }; + const genUntil = (seed, pred) => { + reset(); + reseed(seed); + let res = void 0; + while (!(res = pred(gen()))) + reseed(); + reset(); + return res; + }; + return genUntil; + } + var validatorFns = { + bigint: (val) => typeof val === "bigint", + function: (val) => typeof val === "function", + boolean: (val) => typeof val === "boolean", + string: (val) => typeof val === "string", + isSafeInteger: (val) => Number.isSafeInteger(val), + array: (val) => Array.isArray(val), + field: (val, object) => object.Fp.isValid(val), + hash: (val) => typeof val === "function" && Number.isSafeInteger(val.outputLen) + }; + function validateObject(object, validators, optValidators = {}) { + const checkField = (fieldName, type, isOptional) => { + const checkVal = validatorFns[type]; + if (typeof checkVal !== "function") + throw new Error(`Invalid validator "${type}", expected function`); + const val = object[fieldName]; + if (isOptional && val === void 0) + return; + if (!checkVal(val, object)) { + throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`); + } + }; + for (const [fieldName, type] of Object.entries(validators)) + checkField(fieldName, type, false); + for (const [fieldName, type] of Object.entries(optValidators)) + checkField(fieldName, type, true); + return object; + } + + // node_modules/@noble/curves/esm/abstract/modular.js + var _0n2 = BigInt(0); + var _1n2 = BigInt(1); + var _2n2 = BigInt(2); + var _3n = BigInt(3); + var _4n = BigInt(4); + var _5n = BigInt(5); + var _8n = BigInt(8); + var _9n = BigInt(9); + var _16n = BigInt(16); + function mod(a, b) { + const result = a % b; + return result >= _0n2 ? result : b + result; + } + function pow(num, power, modulo) { + if (modulo <= _0n2 || power < _0n2) + throw new Error("Expected power/modulo > 0"); + if (modulo === _1n2) + return _0n2; + let res = _1n2; + while (power > _0n2) { + if (power & _1n2) + res = res * num % modulo; + num = num * num % modulo; + power >>= _1n2; + } + return res; + } + function pow2(x, power, modulo) { + let res = x; + while (power-- > _0n2) { + res *= res; + res %= modulo; + } + return res; + } + function invert(number2, modulo) { + if (number2 === _0n2 || modulo <= _0n2) { + throw new Error(`invert: expected positive integers, got n=${number2} mod=${modulo}`); + } + let a = mod(number2, modulo); + let b = modulo; + let x = _0n2, y = _1n2, u = _1n2, v = _0n2; + while (a !== _0n2) { + const q = b / a; + const r = b % a; + const m = x - u * q; + const n = y - v * q; + b = a, a = r, x = u, y = v, u = m, v = n; + } + const gcd2 = b; + if (gcd2 !== _1n2) + throw new Error("invert: does not exist"); + return mod(x, modulo); + } + function tonelliShanks(P) { + const legendreC = (P - _1n2) / _2n2; + let Q, S, Z; + for (Q = P - _1n2, S = 0; Q % _2n2 === _0n2; Q /= _2n2, S++) + ; + for (Z = _2n2; Z < P && pow(Z, legendreC, P) !== P - _1n2; Z++) + ; + if (S === 1) { + const p1div4 = (P + _1n2) / _4n; + return function tonelliFast(Fp2, n) { + const root = Fp2.pow(n, p1div4); + if (!Fp2.eql(Fp2.sqr(root), n)) + throw new Error("Cannot find square root"); + return root; + }; + } + const Q1div2 = (Q + _1n2) / _2n2; + return function tonelliSlow(Fp2, n) { + if (Fp2.pow(n, legendreC) === Fp2.neg(Fp2.ONE)) + throw new Error("Cannot find square root"); + let r = S; + let g = Fp2.pow(Fp2.mul(Fp2.ONE, Z), Q); + let x = Fp2.pow(n, Q1div2); + let b = Fp2.pow(n, Q); + while (!Fp2.eql(b, Fp2.ONE)) { + if (Fp2.eql(b, Fp2.ZERO)) + return Fp2.ZERO; + let m = 1; + for (let t2 = Fp2.sqr(b); m < r; m++) { + if (Fp2.eql(t2, Fp2.ONE)) + break; + t2 = Fp2.sqr(t2); + } + const ge2 = Fp2.pow(g, _1n2 << BigInt(r - m - 1)); + g = Fp2.sqr(ge2); + x = Fp2.mul(x, ge2); + b = Fp2.mul(b, g); + r = m; + } + return x; + }; + } + function FpSqrt(P) { + if (P % _4n === _3n) { + const p1div4 = (P + _1n2) / _4n; + return function sqrt3mod4(Fp2, n) { + const root = Fp2.pow(n, p1div4); + if (!Fp2.eql(Fp2.sqr(root), n)) + throw new Error("Cannot find square root"); + return root; + }; + } + if (P % _8n === _5n) { + const c1 = (P - _5n) / _8n; + return function sqrt5mod8(Fp2, n) { + const n2 = Fp2.mul(n, _2n2); + const v = Fp2.pow(n2, c1); + const nv = Fp2.mul(n, v); + const i = Fp2.mul(Fp2.mul(nv, _2n2), v); + const root = Fp2.mul(nv, Fp2.sub(i, Fp2.ONE)); + if (!Fp2.eql(Fp2.sqr(root), n)) + throw new Error("Cannot find square root"); + return root; + }; + } + if (P % _16n === _9n) { + } + return tonelliShanks(P); + } + var FIELD_FIELDS = [ + "create", + "isValid", + "is0", + "neg", + "inv", + "sqrt", + "sqr", + "eql", + "add", + "sub", + "mul", + "pow", + "div", + "addN", + "subN", + "mulN", + "sqrN" + ]; + function validateField(field) { + const initial = { + ORDER: "bigint", + MASK: "bigint", + BYTES: "isSafeInteger", + BITS: "isSafeInteger" + }; + const opts = FIELD_FIELDS.reduce((map, val) => { + map[val] = "function"; + return map; + }, initial); + return validateObject(field, opts); + } + function FpPow(f2, num, power) { + if (power < _0n2) + throw new Error("Expected power > 0"); + if (power === _0n2) + return f2.ONE; + if (power === _1n2) + return num; + let p = f2.ONE; + let d = num; + while (power > _0n2) { + if (power & _1n2) + p = f2.mul(p, d); + d = f2.sqr(d); + power >>= _1n2; + } + return p; + } + function FpInvertBatch(f2, nums) { + const tmp = new Array(nums.length); + const lastMultiplied = nums.reduce((acc, num, i) => { + if (f2.is0(num)) + return acc; + tmp[i] = acc; + return f2.mul(acc, num); + }, f2.ONE); + const inverted = f2.inv(lastMultiplied); + nums.reduceRight((acc, num, i) => { + if (f2.is0(num)) + return acc; + tmp[i] = f2.mul(acc, tmp[i]); + return f2.mul(acc, num); + }, inverted); + return tmp; + } + function nLength(n, nBitLength) { + const _nBitLength = nBitLength !== void 0 ? nBitLength : n.toString(2).length; + const nByteLength = Math.ceil(_nBitLength / 8); + return { nBitLength: _nBitLength, nByteLength }; + } + function Field(ORDER, bitLen2, isLE2 = false, redef = {}) { + if (ORDER <= _0n2) + throw new Error(`Expected Fp ORDER > 0, got ${ORDER}`); + const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen2); + if (BYTES > 2048) + throw new Error("Field lengths over 2048 bytes are not supported"); + const sqrtP = FpSqrt(ORDER); + const f2 = Object.freeze({ + ORDER, + BITS, + BYTES, + MASK: bitMask(BITS), + ZERO: _0n2, + ONE: _1n2, + create: (num) => mod(num, ORDER), + isValid: (num) => { + if (typeof num !== "bigint") + throw new Error(`Invalid field element: expected bigint, got ${typeof num}`); + return _0n2 <= num && num < ORDER; + }, + is0: (num) => num === _0n2, + isOdd: (num) => (num & _1n2) === _1n2, + neg: (num) => mod(-num, ORDER), + eql: (lhs, rhs) => lhs === rhs, + sqr: (num) => mod(num * num, ORDER), + add: (lhs, rhs) => mod(lhs + rhs, ORDER), + sub: (lhs, rhs) => mod(lhs - rhs, ORDER), + mul: (lhs, rhs) => mod(lhs * rhs, ORDER), + pow: (num, power) => FpPow(f2, num, power), + div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER), + sqrN: (num) => num * num, + addN: (lhs, rhs) => lhs + rhs, + subN: (lhs, rhs) => lhs - rhs, + mulN: (lhs, rhs) => lhs * rhs, + inv: (num) => invert(num, ORDER), + sqrt: redef.sqrt || ((n) => sqrtP(f2, n)), + invertBatch: (lst) => FpInvertBatch(f2, lst), + cmov: (a, b, c) => c ? b : a, + toBytes: (num) => isLE2 ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES), + fromBytes: (bytes2) => { + if (bytes2.length !== BYTES) + throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes2.length}`); + return isLE2 ? bytesToNumberLE(bytes2) : bytesToNumberBE(bytes2); + } + }); + return Object.freeze(f2); + } + function hashToPrivateScalar(hash2, groupOrder, isLE2 = false) { + hash2 = ensureBytes("privateHash", hash2); + const hashLen = hash2.length; + const minLen = nLength(groupOrder).nByteLength + 8; + if (minLen < 24 || hashLen < minLen || hashLen > 1024) + throw new Error(`hashToPrivateScalar: expected ${minLen}-1024 bytes of input, got ${hashLen}`); + const num = isLE2 ? bytesToNumberLE(hash2) : bytesToNumberBE(hash2); + return mod(num, groupOrder - _1n2) + _1n2; + } + + // node_modules/@noble/curves/esm/abstract/weierstrass.js + init_define_process(); + + // node_modules/@noble/curves/esm/abstract/curve.js + init_define_process(); + var _0n3 = BigInt(0); + var _1n3 = BigInt(1); + function wNAF(c, bits) { + const constTimeNegate = (condition, item) => { + const neg = item.negate(); + return condition ? neg : item; + }; + const opts = (W) => { + const windows = Math.ceil(bits / W) + 1; + const windowSize = 2 ** (W - 1); + return { windows, windowSize }; + }; + return { + constTimeNegate, + unsafeLadder(elm, n) { + let p = c.ZERO; + let d = elm; + while (n > _0n3) { + if (n & _1n3) + p = p.add(d); + d = d.double(); + n >>= _1n3; + } + return p; + }, + precomputeWindow(elm, W) { + const { windows, windowSize } = opts(W); + const points = []; + let p = elm; + let base = p; + for (let window = 0; window < windows; window++) { + base = p; + points.push(base); + for (let i = 1; i < windowSize; i++) { + base = base.add(p); + points.push(base); + } + p = base.double(); + } + return points; + }, + wNAF(W, precomputes, n) { + const { windows, windowSize } = opts(W); + let p = c.ZERO; + let f2 = c.BASE; + const mask = BigInt(2 ** W - 1); + const maxNumber = 2 ** W; + const shiftBy = BigInt(W); + for (let window = 0; window < windows; window++) { + const offset = window * windowSize; + let wbits = Number(n & mask); + n >>= shiftBy; + if (wbits > windowSize) { + wbits -= maxNumber; + n += _1n3; + } + const offset1 = offset; + const offset2 = offset + Math.abs(wbits) - 1; + const cond1 = window % 2 !== 0; + const cond2 = wbits < 0; + if (wbits === 0) { + f2 = f2.add(constTimeNegate(cond1, precomputes[offset1])); + } else { + p = p.add(constTimeNegate(cond2, precomputes[offset2])); + } + } + return { p, f: f2 }; + }, + wNAFCached(P, precomputesMap, n, transform) { + const W = P._WINDOW_SIZE || 1; + let comp = precomputesMap.get(P); + if (!comp) { + comp = this.precomputeWindow(P, W); + if (W !== 1) { + precomputesMap.set(P, transform(comp)); + } + } + return this.wNAF(W, comp, n); + } + }; + } + function validateBasic(curve) { + validateField(curve.Fp); + validateObject(curve, { + n: "bigint", + h: "bigint", + Gx: "field", + Gy: "field" + }, { + nBitLength: "isSafeInteger", + nByteLength: "isSafeInteger" + }); + return Object.freeze({ + ...nLength(curve.n, curve.nBitLength), + ...curve, + ...{ p: curve.Fp.ORDER } + }); + } + + // node_modules/@noble/curves/esm/abstract/weierstrass.js + function validatePointOpts(curve) { + const opts = validateBasic(curve); + validateObject(opts, { + a: "field", + b: "field" + }, { + allowedPrivateKeyLengths: "array", + wrapPrivateKey: "boolean", + isTorsionFree: "function", + clearCofactor: "function", + allowInfinityPoint: "boolean", + fromBytes: "function", + toBytes: "function" + }); + const { endo, Fp: Fp2, a } = opts; + if (endo) { + if (!Fp2.eql(a, Fp2.ZERO)) { + throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0"); + } + if (typeof endo !== "object" || typeof endo.beta !== "bigint" || typeof endo.splitScalar !== "function") { + throw new Error("Expected endomorphism with beta: bigint and splitScalar: function"); + } + } + return Object.freeze({ ...opts }); + } + var { bytesToNumberBE: b2n, hexToBytes: h2b } = utils_exports; + var DER = { + Err: class DERErr extends Error { + constructor(m = "") { + super(m); + } + }, + _parseInt(data) { + const { Err: E } = DER; + if (data.length < 2 || data[0] !== 2) + throw new E("Invalid signature integer tag"); + const len = data[1]; + const res = data.subarray(2, len + 2); + if (!len || res.length !== len) + throw new E("Invalid signature integer: wrong length"); + if (res[0] & 128) + throw new E("Invalid signature integer: negative"); + if (res[0] === 0 && !(res[1] & 128)) + throw new E("Invalid signature integer: unnecessary leading zero"); + return { d: b2n(res), l: data.subarray(len + 2) }; + }, + toSig(hex2) { + const { Err: E } = DER; + const data = typeof hex2 === "string" ? h2b(hex2) : hex2; + if (!(data instanceof Uint8Array)) + throw new Error("ui8a expected"); + let l = data.length; + if (l < 2 || data[0] != 48) + throw new E("Invalid signature tag"); + if (data[1] !== l - 2) + throw new E("Invalid signature: incorrect length"); + const { d: r, l: sBytes } = DER._parseInt(data.subarray(2)); + const { d: s, l: rBytesLeft } = DER._parseInt(sBytes); + if (rBytesLeft.length) + throw new E("Invalid signature: left bytes after parsing"); + return { r, s }; + }, + hexFromSig(sig) { + const slice = (s2) => Number.parseInt(s2[0], 16) & 8 ? "00" + s2 : s2; + const h = (num) => { + const hex2 = num.toString(16); + return hex2.length & 1 ? `0${hex2}` : hex2; + }; + const s = slice(h(sig.s)); + const r = slice(h(sig.r)); + const shl = s.length / 2; + const rhl = r.length / 2; + const sl = h(shl); + const rl = h(rhl); + return `30${h(rhl + shl + 4)}02${rl}${r}02${sl}${s}`; + } + }; + var _0n4 = BigInt(0); + var _1n4 = BigInt(1); + var _2n3 = BigInt(2); + var _3n2 = BigInt(3); + var _4n2 = BigInt(4); + function weierstrassPoints(opts) { + const CURVE = validatePointOpts(opts); + const { Fp: Fp2 } = CURVE; + const toBytes2 = CURVE.toBytes || ((c, point, isCompressed) => { + const a = point.toAffine(); + return concatBytes2(Uint8Array.from([4]), Fp2.toBytes(a.x), Fp2.toBytes(a.y)); + }); + const fromBytes = CURVE.fromBytes || ((bytes2) => { + const tail = bytes2.subarray(1); + const x = Fp2.fromBytes(tail.subarray(0, Fp2.BYTES)); + const y = Fp2.fromBytes(tail.subarray(Fp2.BYTES, 2 * Fp2.BYTES)); + return { x, y }; + }); + function weierstrassEquation(x) { + const { a, b } = CURVE; + const x2 = Fp2.sqr(x); + const x3 = Fp2.mul(x2, x); + return Fp2.add(Fp2.add(x3, Fp2.mul(x, a)), b); + } + if (!Fp2.eql(Fp2.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx))) + throw new Error("bad generator point: equation left != right"); + function isWithinCurveOrder(num) { + return typeof num === "bigint" && _0n4 < num && num < CURVE.n; + } + function assertGE(num) { + if (!isWithinCurveOrder(num)) + throw new Error("Expected valid bigint: 0 < bigint < curve.n"); + } + function normPrivateKeyToScalar(key) { + const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n } = CURVE; + if (lengths && typeof key !== "bigint") { + if (key instanceof Uint8Array) + key = bytesToHex2(key); + if (typeof key !== "string" || !lengths.includes(key.length)) + throw new Error("Invalid key"); + key = key.padStart(nByteLength * 2, "0"); + } + let num; + try { + num = typeof key === "bigint" ? key : bytesToNumberBE(ensureBytes("private key", key, nByteLength)); + } catch (error) { + throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`); + } + if (wrapPrivateKey) + num = mod(num, n); + assertGE(num); + return num; + } + const pointPrecomputes = /* @__PURE__ */ new Map(); + function assertPrjPoint(other) { + if (!(other instanceof Point3)) + throw new Error("ProjectivePoint expected"); + } + class Point3 { + constructor(px, py, pz) { + this.px = px; + this.py = py; + this.pz = pz; + if (px == null || !Fp2.isValid(px)) + throw new Error("x required"); + if (py == null || !Fp2.isValid(py)) + throw new Error("y required"); + if (pz == null || !Fp2.isValid(pz)) + throw new Error("z required"); + } + static fromAffine(p) { + const { x, y } = p || {}; + if (!p || !Fp2.isValid(x) || !Fp2.isValid(y)) + throw new Error("invalid affine point"); + if (p instanceof Point3) + throw new Error("projective point not allowed"); + const is0 = (i) => Fp2.eql(i, Fp2.ZERO); + if (is0(x) && is0(y)) + return Point3.ZERO; + return new Point3(x, y, Fp2.ONE); + } + get x() { + return this.toAffine().x; + } + get y() { + return this.toAffine().y; + } + static normalizeZ(points) { + const toInv = Fp2.invertBatch(points.map((p) => p.pz)); + return points.map((p, i) => p.toAffine(toInv[i])).map(Point3.fromAffine); + } + static fromHex(hex2) { + const P = Point3.fromAffine(fromBytes(ensureBytes("pointHex", hex2))); + P.assertValidity(); + return P; + } + static fromPrivateKey(privateKey) { + return Point3.BASE.multiply(normPrivateKeyToScalar(privateKey)); + } + _setWindowSize(windowSize) { + this._WINDOW_SIZE = windowSize; + pointPrecomputes.delete(this); + } + assertValidity() { + if (this.is0()) { + if (CURVE.allowInfinityPoint) + return; + throw new Error("bad point: ZERO"); + } + const { x, y } = this.toAffine(); + if (!Fp2.isValid(x) || !Fp2.isValid(y)) + throw new Error("bad point: x or y not FE"); + const left = Fp2.sqr(y); + const right = weierstrassEquation(x); + if (!Fp2.eql(left, right)) + throw new Error("bad point: equation left != right"); + if (!this.isTorsionFree()) + throw new Error("bad point: not in prime-order subgroup"); + } + hasEvenY() { + const { y } = this.toAffine(); + if (Fp2.isOdd) + return !Fp2.isOdd(y); + throw new Error("Field doesn't support isOdd"); + } + equals(other) { + assertPrjPoint(other); + const { px: X1, py: Y1, pz: Z1 } = this; + const { px: X2, py: Y2, pz: Z2 } = other; + const U1 = Fp2.eql(Fp2.mul(X1, Z2), Fp2.mul(X2, Z1)); + const U2 = Fp2.eql(Fp2.mul(Y1, Z2), Fp2.mul(Y2, Z1)); + return U1 && U2; + } + negate() { + return new Point3(this.px, Fp2.neg(this.py), this.pz); + } + double() { + const { a, b } = CURVE; + const b3 = Fp2.mul(b, _3n2); + const { px: X1, py: Y1, pz: Z1 } = this; + let X3 = Fp2.ZERO, Y3 = Fp2.ZERO, Z3 = Fp2.ZERO; + let t0 = Fp2.mul(X1, X1); + let t1 = Fp2.mul(Y1, Y1); + let t2 = Fp2.mul(Z1, Z1); + let t3 = Fp2.mul(X1, Y1); + t3 = Fp2.add(t3, t3); + Z3 = Fp2.mul(X1, Z1); + Z3 = Fp2.add(Z3, Z3); + X3 = Fp2.mul(a, Z3); + Y3 = Fp2.mul(b3, t2); + Y3 = Fp2.add(X3, Y3); + X3 = Fp2.sub(t1, Y3); + Y3 = Fp2.add(t1, Y3); + Y3 = Fp2.mul(X3, Y3); + X3 = Fp2.mul(t3, X3); + Z3 = Fp2.mul(b3, Z3); + t2 = Fp2.mul(a, t2); + t3 = Fp2.sub(t0, t2); + t3 = Fp2.mul(a, t3); + t3 = Fp2.add(t3, Z3); + Z3 = Fp2.add(t0, t0); + t0 = Fp2.add(Z3, t0); + t0 = Fp2.add(t0, t2); + t0 = Fp2.mul(t0, t3); + Y3 = Fp2.add(Y3, t0); + t2 = Fp2.mul(Y1, Z1); + t2 = Fp2.add(t2, t2); + t0 = Fp2.mul(t2, t3); + X3 = Fp2.sub(X3, t0); + Z3 = Fp2.mul(t2, t1); + Z3 = Fp2.add(Z3, Z3); + Z3 = Fp2.add(Z3, Z3); + return new Point3(X3, Y3, Z3); + } + add(other) { + assertPrjPoint(other); + const { px: X1, py: Y1, pz: Z1 } = this; + const { px: X2, py: Y2, pz: Z2 } = other; + let X3 = Fp2.ZERO, Y3 = Fp2.ZERO, Z3 = Fp2.ZERO; + const a = CURVE.a; + const b3 = Fp2.mul(CURVE.b, _3n2); + let t0 = Fp2.mul(X1, X2); + let t1 = Fp2.mul(Y1, Y2); + let t2 = Fp2.mul(Z1, Z2); + let t3 = Fp2.add(X1, Y1); + let t4 = Fp2.add(X2, Y2); + t3 = Fp2.mul(t3, t4); + t4 = Fp2.add(t0, t1); + t3 = Fp2.sub(t3, t4); + t4 = Fp2.add(X1, Z1); + let t5 = Fp2.add(X2, Z2); + t4 = Fp2.mul(t4, t5); + t5 = Fp2.add(t0, t2); + t4 = Fp2.sub(t4, t5); + t5 = Fp2.add(Y1, Z1); + X3 = Fp2.add(Y2, Z2); + t5 = Fp2.mul(t5, X3); + X3 = Fp2.add(t1, t2); + t5 = Fp2.sub(t5, X3); + Z3 = Fp2.mul(a, t4); + X3 = Fp2.mul(b3, t2); + Z3 = Fp2.add(X3, Z3); + X3 = Fp2.sub(t1, Z3); + Z3 = Fp2.add(t1, Z3); + Y3 = Fp2.mul(X3, Z3); + t1 = Fp2.add(t0, t0); + t1 = Fp2.add(t1, t0); + t2 = Fp2.mul(a, t2); + t4 = Fp2.mul(b3, t4); + t1 = Fp2.add(t1, t2); + t2 = Fp2.sub(t0, t2); + t2 = Fp2.mul(a, t2); + t4 = Fp2.add(t4, t2); + t0 = Fp2.mul(t1, t4); + Y3 = Fp2.add(Y3, t0); + t0 = Fp2.mul(t5, t4); + X3 = Fp2.mul(t3, X3); + X3 = Fp2.sub(X3, t0); + t0 = Fp2.mul(t3, t1); + Z3 = Fp2.mul(t5, Z3); + Z3 = Fp2.add(Z3, t0); + return new Point3(X3, Y3, Z3); + } + subtract(other) { + return this.add(other.negate()); + } + is0() { + return this.equals(Point3.ZERO); + } + wNAF(n) { + return wnaf.wNAFCached(this, pointPrecomputes, n, (comp) => { + const toInv = Fp2.invertBatch(comp.map((p) => p.pz)); + return comp.map((p, i) => p.toAffine(toInv[i])).map(Point3.fromAffine); + }); + } + multiplyUnsafe(n) { + const I = Point3.ZERO; + if (n === _0n4) + return I; + assertGE(n); + if (n === _1n4) + return this; + const { endo } = CURVE; + if (!endo) + return wnaf.unsafeLadder(this, n); + let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n); + let k1p = I; + let k2p = I; + let d = this; + while (k1 > _0n4 || k2 > _0n4) { + if (k1 & _1n4) + k1p = k1p.add(d); + if (k2 & _1n4) + k2p = k2p.add(d); + d = d.double(); + k1 >>= _1n4; + k2 >>= _1n4; + } + if (k1neg) + k1p = k1p.negate(); + if (k2neg) + k2p = k2p.negate(); + k2p = new Point3(Fp2.mul(k2p.px, endo.beta), k2p.py, k2p.pz); + return k1p.add(k2p); + } + multiply(scalar) { + assertGE(scalar); + let n = scalar; + let point, fake; + const { endo } = CURVE; + if (endo) { + const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n); + let { p: k1p, f: f1p } = this.wNAF(k1); + let { p: k2p, f: f2p } = this.wNAF(k2); + k1p = wnaf.constTimeNegate(k1neg, k1p); + k2p = wnaf.constTimeNegate(k2neg, k2p); + k2p = new Point3(Fp2.mul(k2p.px, endo.beta), k2p.py, k2p.pz); + point = k1p.add(k2p); + fake = f1p.add(f2p); + } else { + const { p, f: f2 } = this.wNAF(n); + point = p; + fake = f2; + } + return Point3.normalizeZ([point, fake])[0]; + } + multiplyAndAddUnsafe(Q, a, b) { + const G = Point3.BASE; + const mul = (P, a2) => a2 === _0n4 || a2 === _1n4 || !P.equals(G) ? P.multiplyUnsafe(a2) : P.multiply(a2); + const sum = mul(this, a).add(mul(Q, b)); + return sum.is0() ? void 0 : sum; + } + toAffine(iz) { + const { px: x, py: y, pz: z } = this; + const is0 = this.is0(); + if (iz == null) + iz = is0 ? Fp2.ONE : Fp2.inv(z); + const ax = Fp2.mul(x, iz); + const ay = Fp2.mul(y, iz); + const zz = Fp2.mul(z, iz); + if (is0) + return { x: Fp2.ZERO, y: Fp2.ZERO }; + if (!Fp2.eql(zz, Fp2.ONE)) + throw new Error("invZ was invalid"); + return { x: ax, y: ay }; + } + isTorsionFree() { + const { h: cofactor, isTorsionFree } = CURVE; + if (cofactor === _1n4) + return true; + if (isTorsionFree) + return isTorsionFree(Point3, this); + throw new Error("isTorsionFree() has not been declared for the elliptic curve"); + } + clearCofactor() { + const { h: cofactor, clearCofactor } = CURVE; + if (cofactor === _1n4) + return this; + if (clearCofactor) + return clearCofactor(Point3, this); + return this.multiplyUnsafe(CURVE.h); + } + toRawBytes(isCompressed = true) { + this.assertValidity(); + return toBytes2(Point3, this, isCompressed); + } + toHex(isCompressed = true) { + return bytesToHex2(this.toRawBytes(isCompressed)); + } + } + Point3.BASE = new Point3(CURVE.Gx, CURVE.Gy, Fp2.ONE); + Point3.ZERO = new Point3(Fp2.ZERO, Fp2.ONE, Fp2.ZERO); + const _bits = CURVE.nBitLength; + const wnaf = wNAF(Point3, CURVE.endo ? Math.ceil(_bits / 2) : _bits); + return { + CURVE, + ProjectivePoint: Point3, + normPrivateKeyToScalar, + weierstrassEquation, + isWithinCurveOrder + }; + } + function validateOpts(curve) { + const opts = validateBasic(curve); + validateObject(opts, { + hash: "hash", + hmac: "function", + randomBytes: "function" + }, { + bits2int: "function", + bits2int_modN: "function", + lowS: "boolean" + }); + return Object.freeze({ lowS: true, ...opts }); + } + function weierstrass(curveDef) { + const CURVE = validateOpts(curveDef); + const { Fp: Fp2, n: CURVE_ORDER } = CURVE; + const compressedLen = Fp2.BYTES + 1; + const uncompressedLen = 2 * Fp2.BYTES + 1; + function isValidFieldElement(num) { + return _0n4 < num && num < Fp2.ORDER; + } + function modN2(a) { + return mod(a, CURVE_ORDER); + } + function invN(a) { + return invert(a, CURVE_ORDER); + } + const { ProjectivePoint: Point3, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder } = weierstrassPoints({ + ...CURVE, + toBytes(c, point, isCompressed) { + const a = point.toAffine(); + const x = Fp2.toBytes(a.x); + const cat = concatBytes2; + if (isCompressed) { + return cat(Uint8Array.from([point.hasEvenY() ? 2 : 3]), x); + } else { + return cat(Uint8Array.from([4]), x, Fp2.toBytes(a.y)); + } + }, + fromBytes(bytes2) { + const len = bytes2.length; + const head = bytes2[0]; + const tail = bytes2.subarray(1); + if (len === compressedLen && (head === 2 || head === 3)) { + const x = bytesToNumberBE(tail); + if (!isValidFieldElement(x)) + throw new Error("Point is not on curve"); + const y2 = weierstrassEquation(x); + let y = Fp2.sqrt(y2); + const isYOdd = (y & _1n4) === _1n4; + const isHeadOdd = (head & 1) === 1; + if (isHeadOdd !== isYOdd) + y = Fp2.neg(y); + return { x, y }; + } else if (len === uncompressedLen && head === 4) { + const x = Fp2.fromBytes(tail.subarray(0, Fp2.BYTES)); + const y = Fp2.fromBytes(tail.subarray(Fp2.BYTES, 2 * Fp2.BYTES)); + return { x, y }; + } else { + throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`); + } + } + }); + const numToNByteStr = (num) => bytesToHex2(numberToBytesBE(num, CURVE.nByteLength)); + function isBiggerThanHalfOrder(number2) { + const HALF = CURVE_ORDER >> _1n4; + return number2 > HALF; + } + function normalizeS(s) { + return isBiggerThanHalfOrder(s) ? modN2(-s) : s; + } + const slcNum = (b, from, to) => bytesToNumberBE(b.slice(from, to)); + class Signature { + constructor(r, s, recovery) { + this.r = r; + this.s = s; + this.recovery = recovery; + this.assertValidity(); + } + static fromCompact(hex2) { + const l = CURVE.nByteLength; + hex2 = ensureBytes("compactSignature", hex2, l * 2); + return new Signature(slcNum(hex2, 0, l), slcNum(hex2, l, 2 * l)); + } + static fromDER(hex2) { + const { r, s } = DER.toSig(ensureBytes("DER", hex2)); + return new Signature(r, s); + } + assertValidity() { + if (!isWithinCurveOrder(this.r)) + throw new Error("r must be 0 < r < CURVE.n"); + if (!isWithinCurveOrder(this.s)) + throw new Error("s must be 0 < s < CURVE.n"); + } + addRecoveryBit(recovery) { + return new Signature(this.r, this.s, recovery); + } + recoverPublicKey(msgHash) { + const { r, s, recovery: rec } = this; + const h = bits2int_modN(ensureBytes("msgHash", msgHash)); + if (rec == null || ![0, 1, 2, 3].includes(rec)) + throw new Error("recovery id invalid"); + const radj = rec === 2 || rec === 3 ? r + CURVE.n : r; + if (radj >= Fp2.ORDER) + throw new Error("recovery id 2 or 3 invalid"); + const prefix = (rec & 1) === 0 ? "02" : "03"; + const R = Point3.fromHex(prefix + numToNByteStr(radj)); + const ir = invN(radj); + const u1 = modN2(-h * ir); + const u2 = modN2(s * ir); + const Q = Point3.BASE.multiplyAndAddUnsafe(R, u1, u2); + if (!Q) + throw new Error("point at infinify"); + Q.assertValidity(); + return Q; + } + hasHighS() { + return isBiggerThanHalfOrder(this.s); + } + normalizeS() { + return this.hasHighS() ? new Signature(this.r, modN2(-this.s), this.recovery) : this; + } + toDERRawBytes() { + return hexToBytes2(this.toDERHex()); + } + toDERHex() { + return DER.hexFromSig({ r: this.r, s: this.s }); + } + toCompactRawBytes() { + return hexToBytes2(this.toCompactHex()); + } + toCompactHex() { + return numToNByteStr(this.r) + numToNByteStr(this.s); + } + } + const utils = { + isValidPrivateKey(privateKey) { + try { + normPrivateKeyToScalar(privateKey); + return true; + } catch (error) { + return false; + } + }, + normPrivateKeyToScalar, + randomPrivateKey: () => { + const rand = CURVE.randomBytes(Fp2.BYTES + 8); + const num = hashToPrivateScalar(rand, CURVE_ORDER); + return numberToBytesBE(num, CURVE.nByteLength); + }, + precompute(windowSize = 8, point = Point3.BASE) { + point._setWindowSize(windowSize); + point.multiply(BigInt(3)); + return point; + } + }; + function getPublicKey2(privateKey, isCompressed = true) { + return Point3.fromPrivateKey(privateKey).toRawBytes(isCompressed); + } + function isProbPub(item) { + const arr = item instanceof Uint8Array; + const str = typeof item === "string"; + const len = (arr || str) && item.length; + if (arr) + return len === compressedLen || len === uncompressedLen; + if (str) + return len === 2 * compressedLen || len === 2 * uncompressedLen; + if (item instanceof Point3) + return true; + return false; + } + function getSharedSecret(privateA, publicB, isCompressed = true) { + if (isProbPub(privateA)) + throw new Error("first arg must be private key"); + if (!isProbPub(publicB)) + throw new Error("second arg must be public key"); + const b = Point3.fromHex(publicB); + return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed); + } + const bits2int = CURVE.bits2int || function(bytes2) { + const num = bytesToNumberBE(bytes2); + const delta = bytes2.length * 8 - CURVE.nBitLength; + return delta > 0 ? num >> BigInt(delta) : num; + }; + const bits2int_modN = CURVE.bits2int_modN || function(bytes2) { + return modN2(bits2int(bytes2)); + }; + const ORDER_MASK = bitMask(CURVE.nBitLength); + function int2octets(num) { + if (typeof num !== "bigint") + throw new Error("bigint expected"); + if (!(_0n4 <= num && num < ORDER_MASK)) + throw new Error(`bigint expected < 2^${CURVE.nBitLength}`); + return numberToBytesBE(num, CURVE.nByteLength); + } + function prepSig(msgHash, privateKey, opts = defaultSigOpts) { + if (["recovered", "canonical"].some((k) => k in opts)) + throw new Error("sign() legacy options not supported"); + const { hash: hash2, randomBytes: randomBytes2 } = CURVE; + let { lowS, prehash, extraEntropy: ent } = opts; + if (lowS == null) + lowS = true; + msgHash = ensureBytes("msgHash", msgHash); + if (prehash) + msgHash = ensureBytes("prehashed msgHash", hash2(msgHash)); + const h1int = bits2int_modN(msgHash); + const d = normPrivateKeyToScalar(privateKey); + const seedArgs = [int2octets(d), int2octets(h1int)]; + if (ent != null) { + const e = ent === true ? randomBytes2(Fp2.BYTES) : ent; + seedArgs.push(ensureBytes("extraEntropy", e, Fp2.BYTES)); + } + const seed = concatBytes2(...seedArgs); + const m = h1int; + function k2sig(kBytes) { + const k = bits2int(kBytes); + if (!isWithinCurveOrder(k)) + return; + const ik = invN(k); + const q = Point3.BASE.multiply(k).toAffine(); + const r = modN2(q.x); + if (r === _0n4) + return; + const s = modN2(ik * modN2(m + r * d)); + if (s === _0n4) + return; + let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n4); + let normS = s; + if (lowS && isBiggerThanHalfOrder(s)) { + normS = normalizeS(s); + recovery ^= 1; + } + return new Signature(r, normS, recovery); + } + return { seed, k2sig }; + } + const defaultSigOpts = { lowS: CURVE.lowS, prehash: false }; + const defaultVerOpts = { lowS: CURVE.lowS, prehash: false }; + function sign(msgHash, privKey, opts = defaultSigOpts) { + const { seed, k2sig } = prepSig(msgHash, privKey, opts); + const drbg = createHmacDrbg(CURVE.hash.outputLen, CURVE.nByteLength, CURVE.hmac); + return drbg(seed, k2sig); + } + Point3.BASE._setWindowSize(8); + function verify(signature, msgHash, publicKey, opts = defaultVerOpts) { + const sg = signature; + msgHash = ensureBytes("msgHash", msgHash); + publicKey = ensureBytes("publicKey", publicKey); + if ("strict" in opts) + throw new Error("options.strict was renamed to lowS"); + const { lowS, prehash } = opts; + let _sig = void 0; + let P; + try { + if (typeof sg === "string" || sg instanceof Uint8Array) { + try { + _sig = Signature.fromDER(sg); + } catch (derError) { + if (!(derError instanceof DER.Err)) + throw derError; + _sig = Signature.fromCompact(sg); + } + } else if (typeof sg === "object" && typeof sg.r === "bigint" && typeof sg.s === "bigint") { + const { r: r2, s: s2 } = sg; + _sig = new Signature(r2, s2); + } else { + throw new Error("PARSE"); + } + P = Point3.fromHex(publicKey); + } catch (error) { + if (error.message === "PARSE") + throw new Error(`signature must be Signature instance, Uint8Array or hex string`); + return false; + } + if (lowS && _sig.hasHighS()) + return false; + if (prehash) + msgHash = CURVE.hash(msgHash); + const { r, s } = _sig; + const h = bits2int_modN(msgHash); + const is = invN(s); + const u1 = modN2(h * is); + const u2 = modN2(r * is); + const R = Point3.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); + if (!R) + return false; + const v = modN2(R.x); + return v === r; + } + return { + CURVE, + getPublicKey: getPublicKey2, + getSharedSecret, + sign, + verify, + ProjectivePoint: Point3, + Signature, + utils + }; + } + function SWUFpSqrtRatio(Fp2, Z) { + const q = Fp2.ORDER; + let l = _0n4; + for (let o = q - _1n4; o % _2n3 === _0n4; o /= _2n3) + l += _1n4; + const c1 = l; + const c2 = (q - _1n4) / _2n3 ** c1; + const c3 = (c2 - _1n4) / _2n3; + const c4 = _2n3 ** c1 - _1n4; + const c5 = _2n3 ** (c1 - _1n4); + const c6 = Fp2.pow(Z, c2); + const c7 = Fp2.pow(Z, (c2 + _1n4) / _2n3); + let sqrtRatio = (u, v) => { + let tv1 = c6; + let tv2 = Fp2.pow(v, c4); + let tv3 = Fp2.sqr(tv2); + tv3 = Fp2.mul(tv3, v); + let tv5 = Fp2.mul(u, tv3); + tv5 = Fp2.pow(tv5, c3); + tv5 = Fp2.mul(tv5, tv2); + tv2 = Fp2.mul(tv5, v); + tv3 = Fp2.mul(tv5, u); + let tv4 = Fp2.mul(tv3, tv2); + tv5 = Fp2.pow(tv4, c5); + let isQR = Fp2.eql(tv5, Fp2.ONE); + tv2 = Fp2.mul(tv3, c7); + tv5 = Fp2.mul(tv4, tv1); + tv3 = Fp2.cmov(tv2, tv3, isQR); + tv4 = Fp2.cmov(tv5, tv4, isQR); + for (let i = c1; i > _1n4; i--) { + let tv52 = _2n3 ** (i - _2n3); + let tvv5 = Fp2.pow(tv4, tv52); + const e1 = Fp2.eql(tvv5, Fp2.ONE); + tv2 = Fp2.mul(tv3, tv1); + tv1 = Fp2.mul(tv1, tv1); + tvv5 = Fp2.mul(tv4, tv1); + tv3 = Fp2.cmov(tv2, tv3, e1); + tv4 = Fp2.cmov(tvv5, tv4, e1); + } + return { isValid: isQR, value: tv3 }; + }; + if (Fp2.ORDER % _4n2 === _3n2) { + const c12 = (Fp2.ORDER - _3n2) / _4n2; + const c22 = Fp2.sqrt(Fp2.neg(Z)); + sqrtRatio = (u, v) => { + let tv1 = Fp2.sqr(v); + const tv2 = Fp2.mul(u, v); + tv1 = Fp2.mul(tv1, tv2); + let y1 = Fp2.pow(tv1, c12); + y1 = Fp2.mul(y1, tv2); + const y2 = Fp2.mul(y1, c22); + const tv3 = Fp2.mul(Fp2.sqr(y1), v); + const isQR = Fp2.eql(tv3, u); + let y = Fp2.cmov(y2, y1, isQR); + return { isValid: isQR, value: y }; + }; + } + return sqrtRatio; + } + function mapToCurveSimpleSWU(Fp2, opts) { + validateField(Fp2); + if (!Fp2.isValid(opts.A) || !Fp2.isValid(opts.B) || !Fp2.isValid(opts.Z)) + throw new Error("mapToCurveSimpleSWU: invalid opts"); + const sqrtRatio = SWUFpSqrtRatio(Fp2, opts.Z); + if (!Fp2.isOdd) + throw new Error("Fp.isOdd is not implemented!"); + return (u) => { + let tv1, tv2, tv3, tv4, tv5, tv6, x, y; + tv1 = Fp2.sqr(u); + tv1 = Fp2.mul(tv1, opts.Z); + tv2 = Fp2.sqr(tv1); + tv2 = Fp2.add(tv2, tv1); + tv3 = Fp2.add(tv2, Fp2.ONE); + tv3 = Fp2.mul(tv3, opts.B); + tv4 = Fp2.cmov(opts.Z, Fp2.neg(tv2), !Fp2.eql(tv2, Fp2.ZERO)); + tv4 = Fp2.mul(tv4, opts.A); + tv2 = Fp2.sqr(tv3); + tv6 = Fp2.sqr(tv4); + tv5 = Fp2.mul(tv6, opts.A); + tv2 = Fp2.add(tv2, tv5); + tv2 = Fp2.mul(tv2, tv3); + tv6 = Fp2.mul(tv6, tv4); + tv5 = Fp2.mul(tv6, opts.B); + tv2 = Fp2.add(tv2, tv5); + x = Fp2.mul(tv1, tv3); + const { isValid, value } = sqrtRatio(tv2, tv6); + y = Fp2.mul(tv1, u); + y = Fp2.mul(y, value); + x = Fp2.cmov(x, tv3, isValid); + y = Fp2.cmov(y, value, isValid); + const e1 = Fp2.isOdd(u) === Fp2.isOdd(y); + y = Fp2.cmov(Fp2.neg(y), y, e1); + x = Fp2.div(x, tv4); + return { x, y }; + }; + } + + // node_modules/@noble/curves/esm/abstract/hash-to-curve.js + init_define_process(); + function validateDST(dst) { + if (dst instanceof Uint8Array) + return dst; + if (typeof dst === "string") + return utf8ToBytes2(dst); + throw new Error("DST must be Uint8Array or string"); + } + var os2ip = bytesToNumberBE; + function i2osp(value, length) { + if (value < 0 || value >= 1 << 8 * length) { + throw new Error(`bad I2OSP call: value=${value} length=${length}`); + } + const res = Array.from({ length }).fill(0); + for (let i = length - 1; i >= 0; i--) { + res[i] = value & 255; + value >>>= 8; + } + return new Uint8Array(res); + } + function strxor(a, b) { + const arr = new Uint8Array(a.length); + for (let i = 0; i < a.length; i++) { + arr[i] = a[i] ^ b[i]; + } + return arr; + } + function isBytes(item) { + if (!(item instanceof Uint8Array)) + throw new Error("Uint8Array expected"); + } + function isNum(item) { + if (!Number.isSafeInteger(item)) + throw new Error("number expected"); + } + function expand_message_xmd(msg, DST, lenInBytes, H) { + isBytes(msg); + isBytes(DST); + isNum(lenInBytes); + if (DST.length > 255) + DST = H(concatBytes2(utf8ToBytes2("H2C-OVERSIZE-DST-"), DST)); + const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H; + const ell = Math.ceil(lenInBytes / b_in_bytes); + if (ell > 255) + throw new Error("Invalid xmd length"); + const DST_prime = concatBytes2(DST, i2osp(DST.length, 1)); + const Z_pad = i2osp(0, r_in_bytes); + const l_i_b_str = i2osp(lenInBytes, 2); + const b = new Array(ell); + const b_0 = H(concatBytes2(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime)); + b[0] = H(concatBytes2(b_0, i2osp(1, 1), DST_prime)); + for (let i = 1; i <= ell; i++) { + const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime]; + b[i] = H(concatBytes2(...args)); + } + const pseudo_random_bytes = concatBytes2(...b); + return pseudo_random_bytes.slice(0, lenInBytes); + } + function expand_message_xof(msg, DST, lenInBytes, k, H) { + isBytes(msg); + isBytes(DST); + isNum(lenInBytes); + if (DST.length > 255) { + const dkLen = Math.ceil(2 * k / 8); + DST = H.create({ dkLen }).update(utf8ToBytes2("H2C-OVERSIZE-DST-")).update(DST).digest(); + } + if (lenInBytes > 65535 || DST.length > 255) + throw new Error("expand_message_xof: invalid lenInBytes"); + return H.create({ dkLen: lenInBytes }).update(msg).update(i2osp(lenInBytes, 2)).update(DST).update(i2osp(DST.length, 1)).digest(); + } + function hash_to_field(msg, count, options) { + validateObject(options, { + DST: "string", + p: "bigint", + m: "isSafeInteger", + k: "isSafeInteger", + hash: "hash" + }); + const { p, k, m, hash: hash2, expand, DST: _DST } = options; + isBytes(msg); + isNum(count); + const DST = validateDST(_DST); + const log2p = p.toString(2).length; + const L = Math.ceil((log2p + k) / 8); + const len_in_bytes = count * m * L; + let prb; + if (expand === "xmd") { + prb = expand_message_xmd(msg, DST, len_in_bytes, hash2); + } else if (expand === "xof") { + prb = expand_message_xof(msg, DST, len_in_bytes, k, hash2); + } else if (expand === "_internal_pass") { + prb = msg; + } else { + throw new Error('expand must be "xmd" or "xof"'); + } + const u = new Array(count); + for (let i = 0; i < count; i++) { + const e = new Array(m); + for (let j = 0; j < m; j++) { + const elm_offset = L * (j + i * m); + const tv = prb.subarray(elm_offset, elm_offset + L); + e[j] = mod(os2ip(tv), p); + } + u[i] = e; + } + return u; + } + function isogenyMap(field, map) { + const COEFF = map.map((i) => Array.from(i).reverse()); + return (x, y) => { + const [xNum, xDen, yNum, yDen] = COEFF.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i))); + x = field.div(xNum, xDen); + y = field.mul(y, field.div(yNum, yDen)); + return { x, y }; + }; + } + function createHasher(Point3, mapToCurve, def) { + if (typeof mapToCurve !== "function") + throw new Error("mapToCurve() must be defined"); + return { + hashToCurve(msg, options) { + const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options }); + const u0 = Point3.fromAffine(mapToCurve(u[0])); + const u1 = Point3.fromAffine(mapToCurve(u[1])); + const P = u0.add(u1).clearCofactor(); + P.assertValidity(); + return P; + }, + encodeToCurve(msg, options) { + const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options }); + const P = Point3.fromAffine(mapToCurve(u[0])).clearCofactor(); + P.assertValidity(); + return P; + } + }; + } + + // node_modules/@noble/curves/esm/_shortw_utils.js + init_define_process(); + + // node_modules/@noble/hashes/esm/hmac.js + init_define_process(); + var HMAC = class extends Hash { + constructor(hash2, _key) { + super(); + this.finished = false; + this.destroyed = false; + assert_default.hash(hash2); + const key = toBytes(_key); + this.iHash = hash2.create(); + if (typeof this.iHash.update !== "function") + throw new TypeError("Expected instance of class which extends utils.Hash"); + this.blockLen = this.iHash.blockLen; + this.outputLen = this.iHash.outputLen; + const blockLen = this.blockLen; + const pad = new Uint8Array(blockLen); + pad.set(key.length > blockLen ? hash2.create().update(key).digest() : key); + for (let i = 0; i < pad.length; i++) + pad[i] ^= 54; + this.iHash.update(pad); + this.oHash = hash2.create(); + for (let i = 0; i < pad.length; i++) + pad[i] ^= 54 ^ 92; + this.oHash.update(pad); + pad.fill(0); + } + update(buf) { + assert_default.exists(this); + this.iHash.update(buf); + return this; + } + digestInto(out) { + assert_default.exists(this); + assert_default.bytes(out, this.outputLen); + this.finished = true; + this.iHash.digestInto(out); + this.oHash.update(out); + this.oHash.digestInto(out); + this.destroy(); + } + digest() { + const out = new Uint8Array(this.oHash.outputLen); + this.digestInto(out); + return out; + } + _cloneInto(to) { + to || (to = Object.create(Object.getPrototypeOf(this), {})); + const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this; + to = to; + to.finished = finished; + to.destroyed = destroyed; + to.blockLen = blockLen; + to.outputLen = outputLen; + to.oHash = oHash._cloneInto(to.oHash); + to.iHash = iHash._cloneInto(to.iHash); + return to; + } + destroy() { + this.destroyed = true; + this.oHash.destroy(); + this.iHash.destroy(); + } + }; + var hmac = (hash2, key, message) => new HMAC(hash2, key).update(message).digest(); + hmac.create = (hash2, key) => new HMAC(hash2, key); + + // node_modules/@noble/curves/esm/_shortw_utils.js + function getHash(hash2) { + return { + hash: hash2, + hmac: (key, ...msgs) => hmac(hash2, key, concatBytes(...msgs)), + randomBytes + }; + } + function createCurve(curveDef, defHash) { + const create = (hash2) => weierstrass({ ...curveDef, ...getHash(hash2) }); + return Object.freeze({ ...create(defHash), create }); + } + + // node_modules/@noble/curves/esm/secp256k1.js + var secp256k1P = BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"); + var secp256k1N = BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"); + var _1n5 = BigInt(1); + var _2n4 = BigInt(2); + var divNearest = (a, b) => (a + b / _2n4) / b; + function sqrtMod(y) { + const P = secp256k1P; + const _3n3 = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22); + const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88); + const b2 = y * y * y % P; + const b3 = b2 * b2 * y % P; + const b6 = pow2(b3, _3n3, P) * b3 % P; + const b9 = pow2(b6, _3n3, P) * b3 % P; + const b11 = pow2(b9, _2n4, P) * b2 % P; + const b22 = pow2(b11, _11n, P) * b11 % P; + const b44 = pow2(b22, _22n, P) * b22 % P; + const b88 = pow2(b44, _44n, P) * b44 % P; + const b176 = pow2(b88, _88n, P) * b88 % P; + const b220 = pow2(b176, _44n, P) * b44 % P; + const b223 = pow2(b220, _3n3, P) * b3 % P; + const t1 = pow2(b223, _23n, P) * b22 % P; + const t2 = pow2(t1, _6n, P) * b2 % P; + const root = pow2(t2, _2n4, P); + if (!Fp.eql(Fp.sqr(root), y)) + throw new Error("Cannot find square root"); + return root; + } + var Fp = Field(secp256k1P, void 0, void 0, { sqrt: sqrtMod }); + var secp256k1 = createCurve({ + a: BigInt(0), + b: BigInt(7), + Fp, + n: secp256k1N, + Gx: BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"), + Gy: BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"), + h: BigInt(1), + lowS: true, + endo: { + beta: BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"), + splitScalar: (k) => { + const n = secp256k1N; + const a1 = BigInt("0x3086d221a7d46bcde86c90e49284eb15"); + const b1 = -_1n5 * BigInt("0xe4437ed6010e88286f547fa90abfe4c3"); + const a2 = BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"); + const b2 = a1; + const POW_2_128 = BigInt("0x100000000000000000000000000000000"); + const c1 = divNearest(b2 * k, n); + const c2 = divNearest(-b1 * k, n); + let k1 = mod(k - c1 * a1 - c2 * a2, n); + let k2 = mod(-c1 * b1 - c2 * b2, n); + const k1neg = k1 > POW_2_128; + const k2neg = k2 > POW_2_128; + if (k1neg) + k1 = n - k1; + if (k2neg) + k2 = n - k2; + if (k1 > POW_2_128 || k2 > POW_2_128) { + throw new Error("splitScalar: Endomorphism failed, k=" + k); + } + return { k1neg, k1, k2neg, k2 }; + } + } + }, sha256); + var _0n5 = BigInt(0); + var fe = (x) => typeof x === "bigint" && _0n5 < x && x < secp256k1P; + var ge = (x) => typeof x === "bigint" && _0n5 < x && x < secp256k1N; + var TAGGED_HASH_PREFIXES = {}; + function taggedHash(tag, ...messages) { + let tagP = TAGGED_HASH_PREFIXES[tag]; + if (tagP === void 0) { + const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0))); + tagP = concatBytes2(tagH, tagH); + TAGGED_HASH_PREFIXES[tag] = tagP; + } + return sha256(concatBytes2(tagP, ...messages)); + } + var pointToBytes = (point) => point.toRawBytes(true).slice(1); + var numTo32b = (n) => numberToBytesBE(n, 32); + var modP = (x) => mod(x, secp256k1P); + var modN = (x) => mod(x, secp256k1N); + var Point = secp256k1.ProjectivePoint; + var GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b); + function schnorrGetExtPubKey(priv) { + let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); + let p = Point.fromPrivateKey(d_); + const scalar = p.hasEvenY() ? d_ : modN(-d_); + return { scalar, bytes: pointToBytes(p) }; + } + function lift_x(x) { + if (!fe(x)) + throw new Error("bad x: need 0 < x < p"); + const xx = modP(x * x); + const c = modP(xx * x + BigInt(7)); + let y = sqrtMod(c); + if (y % _2n4 !== _0n5) + y = modP(-y); + const p = new Point(x, y, _1n5); + p.assertValidity(); + return p; + } + function challenge(...args) { + return modN(bytesToNumberBE(taggedHash("BIP0340/challenge", ...args))); + } + function schnorrGetPublicKey(privateKey) { + return schnorrGetExtPubKey(privateKey).bytes; + } + function schnorrSign(message, privateKey, auxRand = randomBytes(32)) { + const m = ensureBytes("message", message); + const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); + const a = ensureBytes("auxRand", auxRand, 32); + const t = numTo32b(d ^ bytesToNumberBE(taggedHash("BIP0340/aux", a))); + const rand = taggedHash("BIP0340/nonce", t, px, m); + const k_ = modN(bytesToNumberBE(rand)); + if (k_ === _0n5) + throw new Error("sign failed: k is zero"); + const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); + const e = challenge(rx, px, m); + const sig = new Uint8Array(64); + sig.set(rx, 0); + sig.set(numTo32b(modN(k + e * d)), 32); + if (!schnorrVerify(sig, m, px)) + throw new Error("sign: Invalid signature produced"); + return sig; + } + function schnorrVerify(signature, message, publicKey) { + const sig = ensureBytes("signature", signature, 64); + const m = ensureBytes("message", message); + const pub = ensureBytes("publicKey", publicKey, 32); + try { + const P = lift_x(bytesToNumberBE(pub)); + const r = bytesToNumberBE(sig.subarray(0, 32)); + if (!fe(r)) + return false; + const s = bytesToNumberBE(sig.subarray(32, 64)); + if (!ge(s)) + return false; + const e = challenge(numTo32b(r), pointToBytes(P), m); + const R = GmulAdd(P, s, modN(-e)); + if (!R || !R.hasEvenY() || R.toAffine().x !== r) + return false; + return true; + } catch (error) { + return false; + } + } + var schnorr = { + getPublicKey: schnorrGetPublicKey, + sign: schnorrSign, + verify: schnorrVerify, + utils: { + randomPrivateKey: secp256k1.utils.randomPrivateKey, + lift_x, + pointToBytes, + numberToBytesBE, + bytesToNumberBE, + taggedHash, + mod + } + }; + var isoMap = isogenyMap(Fp, [ + [ + "0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7", + "0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581", + "0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262", + "0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c" + ], + [ + "0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b", + "0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + [ + "0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c", + "0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3", + "0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931", + "0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84" + ], + [ + "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b", + "0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573", + "0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ] + ].map((i) => i.map((j) => BigInt(j)))); + var mapSWU = mapToCurveSimpleSWU(Fp, { + A: BigInt("0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533"), + B: BigInt("1771"), + Z: Fp.create(BigInt("-11")) + }); + var { hashToCurve, encodeToCurve } = createHasher(secp256k1.ProjectivePoint, (scalars) => { + const { x, y } = mapSWU(Fp.create(scalars[0])); + return isoMap(x, y); + }, { + DST: "secp256k1_XMD:SHA-256_SSWU_RO_", + encodeDST: "secp256k1_XMD:SHA-256_SSWU_NU_", + p: Fp.ORDER, + m: 1, + k: 128, + expand: "xmd", + hash: sha256 + }); + + // keys.ts + function generatePrivateKey() { + return bytesToHex(schnorr.utils.randomPrivateKey()); + } + function getPublicKey(privateKey) { + return bytesToHex(schnorr.getPublicKey(privateKey)); + } + + // relay.ts + init_define_process(); + + // event.ts + init_define_process(); + + // utils.ts + var utils_exports2 = {}; + __export(utils_exports2, { + MessageNode: () => MessageNode, + MessageQueue: () => MessageQueue, + insertEventIntoAscendingList: () => insertEventIntoAscendingList, + insertEventIntoDescendingList: () => insertEventIntoDescendingList, + normalizeURL: () => normalizeURL, + utf8Decoder: () => utf8Decoder, + utf8Encoder: () => utf8Encoder + }); + init_define_process(); + var utf8Decoder = new TextDecoder("utf-8"); + var utf8Encoder = new TextEncoder(); + function normalizeURL(url) { + let p = new URL(url); + p.pathname = p.pathname.replace(/\/+/g, "/"); + if (p.pathname.endsWith("/")) + p.pathname = p.pathname.slice(0, -1); + if (p.port === "80" && p.protocol === "ws:" || p.port === "443" && p.protocol === "wss:") + p.port = ""; + p.searchParams.sort(); + p.hash = ""; + return p.toString(); + } + function insertEventIntoDescendingList(sortedArray, event) { + let start = 0; + let end = sortedArray.length - 1; + let midPoint; + let position = start; + if (end < 0) { + position = 0; + } else if (event.created_at < sortedArray[end].created_at) { + position = end + 1; + } else if (event.created_at >= sortedArray[start].created_at) { + position = start; + } else + while (true) { + if (end <= start + 1) { + position = end; + break; + } + midPoint = Math.floor(start + (end - start) / 2); + if (sortedArray[midPoint].created_at > event.created_at) { + start = midPoint; + } else if (sortedArray[midPoint].created_at < event.created_at) { + end = midPoint; + } else { + position = midPoint; + break; + } + } + if (sortedArray[position]?.id !== event.id) { + return [ + ...sortedArray.slice(0, position), + event, + ...sortedArray.slice(position) + ]; + } + return sortedArray; + } + function insertEventIntoAscendingList(sortedArray, event) { + let start = 0; + let end = sortedArray.length - 1; + let midPoint; + let position = start; + if (end < 0) { + position = 0; + } else if (event.created_at > sortedArray[end].created_at) { + position = end + 1; + } else if (event.created_at <= sortedArray[start].created_at) { + position = start; + } else + while (true) { + if (end <= start + 1) { + position = end; + break; + } + midPoint = Math.floor(start + (end - start) / 2); + if (sortedArray[midPoint].created_at < event.created_at) { + start = midPoint; + } else if (sortedArray[midPoint].created_at > event.created_at) { + end = midPoint; + } else { + position = midPoint; + break; + } + } + if (sortedArray[position]?.id !== event.id) { + return [ + ...sortedArray.slice(0, position), + event, + ...sortedArray.slice(position) + ]; + } + return sortedArray; + } + var MessageNode = class { + _value; + _next; + get value() { + return this._value; + } + set value(message) { + this._value = message; + } + get next() { + return this._next; + } + set next(node) { + this._next = node; + } + constructor(message) { + this._value = message; + this._next = null; + } + }; + var MessageQueue = class { + _first; + _last; + get first() { + return this._first; + } + set first(messageNode) { + this._first = messageNode; + } + get last() { + return this._last; + } + set last(messageNode) { + this._last = messageNode; + } + _size; + get size() { + return this._size; + } + set size(v) { + this._size = v; + } + constructor() { + this._first = null; + this._last = null; + this._size = 0; + } + enqueue(message) { + const newNode = new MessageNode(message); + if (this._size === 0 || !this._last) { + this._first = newNode; + this._last = newNode; + } else { + this._last.next = newNode; + this._last = newNode; + } + this._size++; + return true; + } + dequeue() { + if (this._size === 0 || !this._first) + return null; + let prev = this._first; + this._first = prev.next; + prev.next = null; + this._size--; + return prev.value; + } + }; + + // event.ts + var Kind = /* @__PURE__ */ ((Kind3) => { + Kind3[Kind3["Metadata"] = 0] = "Metadata"; + Kind3[Kind3["Text"] = 1] = "Text"; + Kind3[Kind3["RecommendRelay"] = 2] = "RecommendRelay"; + Kind3[Kind3["Contacts"] = 3] = "Contacts"; + Kind3[Kind3["EncryptedDirectMessage"] = 4] = "EncryptedDirectMessage"; + Kind3[Kind3["EventDeletion"] = 5] = "EventDeletion"; + Kind3[Kind3["Repost"] = 6] = "Repost"; + Kind3[Kind3["Reaction"] = 7] = "Reaction"; + Kind3[Kind3["BadgeAward"] = 8] = "BadgeAward"; + Kind3[Kind3["ChannelCreation"] = 40] = "ChannelCreation"; + Kind3[Kind3["ChannelMetadata"] = 41] = "ChannelMetadata"; + Kind3[Kind3["ChannelMessage"] = 42] = "ChannelMessage"; + Kind3[Kind3["ChannelHideMessage"] = 43] = "ChannelHideMessage"; + Kind3[Kind3["ChannelMuteUser"] = 44] = "ChannelMuteUser"; + Kind3[Kind3["Blank"] = 255] = "Blank"; + Kind3[Kind3["Report"] = 1984] = "Report"; + Kind3[Kind3["ZapRequest"] = 9734] = "ZapRequest"; + Kind3[Kind3["Zap"] = 9735] = "Zap"; + Kind3[Kind3["RelayList"] = 10002] = "RelayList"; + Kind3[Kind3["ClientAuth"] = 22242] = "ClientAuth"; + Kind3[Kind3["HttpAuth"] = 27235] = "HttpAuth"; + Kind3[Kind3["ProfileBadge"] = 30008] = "ProfileBadge"; + Kind3[Kind3["BadgeDefinition"] = 30009] = "BadgeDefinition"; + Kind3[Kind3["Article"] = 30023] = "Article"; + return Kind3; + })(Kind || {}); + function getBlankEvent(kind = 255 /* Blank */) { + return { + kind, + content: "", + tags: [], + created_at: 0 + }; + } + function finishEvent(t, privateKey) { + let event = t; + event.pubkey = getPublicKey(privateKey); + event.id = getEventHash(event); + event.sig = getSignature(event, privateKey); + return event; + } + function serializeEvent(evt) { + if (!validateEvent(evt)) + throw new Error("can't serialize event with wrong or missing properties"); + return JSON.stringify([ + 0, + evt.pubkey, + evt.created_at, + evt.kind, + evt.tags, + evt.content + ]); + } + function getEventHash(event) { + let eventHash = sha256(utf8Encoder.encode(serializeEvent(event))); + return bytesToHex(eventHash); + } + var isRecord = (obj) => obj instanceof Object; + function validateEvent(event) { + if (!isRecord(event)) + return false; + if (typeof event.kind !== "number") + return false; + if (typeof event.content !== "string") + return false; + if (typeof event.created_at !== "number") + return false; + if (typeof event.pubkey !== "string") + return false; + if (!event.pubkey.match(/^[a-f0-9]{64}$/)) + return false; + if (!Array.isArray(event.tags)) + return false; + for (let i = 0; i < event.tags.length; i++) { + let tag = event.tags[i]; + if (!Array.isArray(tag)) + return false; + for (let j = 0; j < tag.length; j++) { + if (typeof tag[j] === "object") + return false; + } + } + return true; + } + function verifySignature(event) { + try { + return schnorr.verify(event.sig, getEventHash(event), event.pubkey); + } catch (err) { + return false; + } + } + function signEvent(event, key) { + console.warn( + "nostr-tools: `signEvent` is deprecated and will be removed or changed in the future. Please use `getSignature` instead." + ); + return getSignature(event, key); + } + function getSignature(event, key) { + return bytesToHex(schnorr.sign(getEventHash(event), key)); + } + + // filter.ts + init_define_process(); + function matchFilter(filter, event) { + if (filter.ids && filter.ids.indexOf(event.id) === -1) { + if (!filter.ids.some((prefix) => event.id.startsWith(prefix))) { + return false; + } + } + if (filter.kinds && filter.kinds.indexOf(event.kind) === -1) + return false; + if (filter.authors && filter.authors.indexOf(event.pubkey) === -1) { + if (!filter.authors.some((prefix) => event.pubkey.startsWith(prefix))) { + return false; + } + } + for (let f2 in filter) { + if (f2[0] === "#") { + let tagName = f2.slice(1); + let values = filter[`#${tagName}`]; + if (values && !event.tags.find( + ([t, v]) => t === f2.slice(1) && values.indexOf(v) !== -1 + )) + return false; + } + } + if (filter.since && event.created_at < filter.since) + return false; + if (filter.until && event.created_at > filter.until) + return false; + return true; + } + function matchFilters(filters, event) { + for (let i = 0; i < filters.length; i++) { + if (matchFilter(filters[i], event)) + return true; + } + return false; + } + function mergeFilters(...filters) { + let result = {}; + for (let i = 0; i < filters.length; i++) { + let filter = filters[i]; + Object.entries(filter).forEach(([property, values]) => { + if (property === "kinds" || property === "ids" || property === "authors" || property[0] === "#") { + result[property] = result[property] || []; + for (let v = 0; v < values.length; v++) { + let value = values[v]; + if (!result[property].includes(value)) + result[property].push(value); + } + } + }); + if (filter.limit && (!result.limit || filter.limit > result.limit)) + result.limit = filter.limit; + if (filter.until && (!result.until || filter.until > result.until)) + result.until = filter.until; + if (filter.since && (!result.since || filter.since < result.since)) + result.since = filter.since; + } + return result; + } + + // fakejson.ts + var fakejson_exports = {}; + __export(fakejson_exports, { + getHex64: () => getHex64, + getInt: () => getInt, + getSubscriptionId: () => getSubscriptionId, + matchEventId: () => matchEventId, + matchEventKind: () => matchEventKind, + matchEventPubkey: () => matchEventPubkey + }); + init_define_process(); + function getHex64(json, field) { + let len = field.length + 3; + let idx = json.indexOf(`"${field}":`) + len; + let s = json.slice(idx).indexOf(`"`) + idx + 1; + return json.slice(s, s + 64); + } + function getInt(json, field) { + let len = field.length; + let idx = json.indexOf(`"${field}":`) + len + 3; + let sliced = json.slice(idx); + let end = Math.min(sliced.indexOf(","), sliced.indexOf("}")); + return parseInt(sliced.slice(0, end), 10); + } + function getSubscriptionId(json) { + let idx = json.slice(0, 22).indexOf(`"EVENT"`); + if (idx === -1) + return null; + let pstart = json.slice(idx + 7 + 1).indexOf(`"`); + if (pstart === -1) + return null; + let start = idx + 7 + 1 + pstart; + let pend = json.slice(start + 1, 80).indexOf(`"`); + if (pend === -1) + return null; + let end = start + 1 + pend; + return json.slice(start + 1, end); + } + function matchEventId(json, id) { + return id === getHex64(json, "id"); + } + function matchEventPubkey(json, pubkey) { + return pubkey === getHex64(json, "pubkey"); + } + function matchEventKind(json, kind) { + return kind === getInt(json, "kind"); + } + + // relay.ts + var newListeners = () => ({ + connect: [], + disconnect: [], + error: [], + notice: [], + auth: [] + }); + function relayInit(url, options = {}) { + let { listTimeout = 3e3, getTimeout = 3e3, countTimeout = 3e3 } = options; + var ws; + var openSubs = {}; + var listeners = newListeners(); + var subListeners = {}; + var pubListeners = {}; + var connectionPromise; + async function connectRelay() { + if (connectionPromise) + return connectionPromise; + connectionPromise = new Promise((resolve, reject) => { + try { + ws = new WebSocket(url); + } catch (err) { + reject(err); + } + ws.onopen = () => { + listeners.connect.forEach((cb) => cb()); + resolve(); + }; + ws.onerror = () => { + connectionPromise = void 0; + listeners.error.forEach((cb) => cb()); + reject(); + }; + ws.onclose = async () => { + connectionPromise = void 0; + listeners.disconnect.forEach((cb) => cb()); + }; + let incomingMessageQueue = new MessageQueue(); + let handleNextInterval; + ws.onmessage = (e) => { + incomingMessageQueue.enqueue(e.data); + if (!handleNextInterval) { + handleNextInterval = setInterval(handleNext, 0); + } + }; + function handleNext() { + if (incomingMessageQueue.size === 0) { + clearInterval(handleNextInterval); + handleNextInterval = null; + return; + } + var json = incomingMessageQueue.dequeue(); + if (!json) + return; + let subid = getSubscriptionId(json); + if (subid) { + let so = openSubs[subid]; + if (so && so.alreadyHaveEvent && so.alreadyHaveEvent(getHex64(json, "id"), url)) { + return; + } + } + try { + let data = JSON.parse(json); + switch (data[0]) { + case "EVENT": { + let id2 = data[1]; + let event = data[2]; + if (validateEvent(event) && openSubs[id2] && (openSubs[id2].skipVerification || verifySignature(event)) && matchFilters(openSubs[id2].filters, event)) { + openSubs[id2]; + (subListeners[id2]?.event || []).forEach((cb) => cb(event)); + } + return; + } + case "COUNT": + let id = data[1]; + let payload = data[2]; + if (openSubs[id]) { + ; + (subListeners[id]?.count || []).forEach((cb) => cb(payload)); + } + return; + case "EOSE": { + let id2 = data[1]; + if (id2 in subListeners) { + subListeners[id2].eose.forEach((cb) => cb()); + subListeners[id2].eose = []; + } + return; + } + case "OK": { + let id2 = data[1]; + let ok = data[2]; + let reason = data[3] || ""; + if (id2 in pubListeners) { + if (ok) + pubListeners[id2].ok.forEach((cb) => cb()); + else + pubListeners[id2].failed.forEach((cb) => cb(reason)); + pubListeners[id2].ok = []; + pubListeners[id2].failed = []; + } + return; + } + case "NOTICE": + let notice = data[1]; + listeners.notice.forEach((cb) => cb(notice)); + return; + case "AUTH": { + let challenge2 = data[1]; + listeners.auth?.forEach((cb) => cb(challenge2)); + return; + } + } + } catch (err) { + return; + } + } + }); + return connectionPromise; + } + function connected() { + return ws?.readyState === 1; + } + async function connect() { + if (connected()) + return; + await connectRelay(); + } + async function trySend(params) { + let msg = JSON.stringify(params); + if (!connected()) { + await new Promise((resolve) => setTimeout(resolve, 1e3)); + if (!connected()) { + return; + } + } + try { + ws.send(msg); + } catch (err) { + console.log(err); + } + } + const sub = (filters, { + verb = "REQ", + skipVerification = false, + alreadyHaveEvent = null, + id = Math.random().toString().slice(2) + } = {}) => { + let subid = id; + openSubs[subid] = { + id: subid, + filters, + skipVerification, + alreadyHaveEvent + }; + trySend([verb, subid, ...filters]); + return { + sub: (newFilters, newOpts = {}) => sub(newFilters || filters, { + skipVerification: newOpts.skipVerification || skipVerification, + alreadyHaveEvent: newOpts.alreadyHaveEvent || alreadyHaveEvent, + id: subid + }), + unsub: () => { + delete openSubs[subid]; + delete subListeners[subid]; + trySend(["CLOSE", subid]); + }, + on: (type, cb) => { + subListeners[subid] = subListeners[subid] || { + event: [], + count: [], + eose: [] + }; + subListeners[subid][type].push(cb); + }, + off: (type, cb) => { + let listeners2 = subListeners[subid]; + let idx = listeners2[type].indexOf(cb); + if (idx >= 0) + listeners2[type].splice(idx, 1); + } + }; + }; + function _publishEvent(event, type) { + if (!event.id) + throw new Error(`event ${event} has no id`); + let id = event.id; + trySend([type, event]); + return { + on: (type2, cb) => { + pubListeners[id] = pubListeners[id] || { + ok: [], + failed: [] + }; + pubListeners[id][type2].push(cb); + }, + off: (type2, cb) => { + let listeners2 = pubListeners[id]; + if (!listeners2) + return; + let idx = listeners2[type2].indexOf(cb); + if (idx >= 0) + listeners2[type2].splice(idx, 1); + } + }; + } + return { + url, + sub, + on: (type, cb) => { + listeners[type].push(cb); + if (type === "connect" && ws?.readyState === 1) { + ; + cb(); + } + }, + off: (type, cb) => { + let index = listeners[type].indexOf(cb); + if (index !== -1) + listeners[type].splice(index, 1); + }, + list: (filters, opts) => new Promise((resolve) => { + let s = sub(filters, opts); + let events = []; + let timeout = setTimeout(() => { + s.unsub(); + resolve(events); + }, listTimeout); + s.on("eose", () => { + s.unsub(); + clearTimeout(timeout); + resolve(events); + }); + s.on("event", (event) => { + events.push(event); + }); + }), + get: (filter, opts) => new Promise((resolve) => { + let s = sub([filter], opts); + let timeout = setTimeout(() => { + s.unsub(); + resolve(null); + }, getTimeout); + s.on("event", (event) => { + s.unsub(); + clearTimeout(timeout); + resolve(event); + }); + }), + count: (filters) => new Promise((resolve) => { + let s = sub(filters, { ...sub, verb: "COUNT" }); + let timeout = setTimeout(() => { + s.unsub(); + resolve(null); + }, countTimeout); + s.on("count", (event) => { + s.unsub(); + clearTimeout(timeout); + resolve(event); + }); + }), + publish(event) { + return _publishEvent(event, "EVENT"); + }, + auth(event) { + return _publishEvent(event, "AUTH"); + }, + connect, + close() { + listeners = newListeners(); + subListeners = {}; + pubListeners = {}; + if (ws.readyState === WebSocket.OPEN) { + ws?.close(); + } + }, + get status() { + return ws?.readyState ?? 3; + } + }; + } + + // pool.ts + init_define_process(); + var SimplePool = class { + _conn; + _seenOn = {}; + eoseSubTimeout; + getTimeout; + seenOnEnabled = true; + constructor(options = {}) { + this._conn = {}; + this.eoseSubTimeout = options.eoseSubTimeout || 3400; + this.getTimeout = options.getTimeout || 3400; + this.seenOnEnabled = options.seenOnEnabled !== false; + } + close(relays) { + relays.forEach((url) => { + let relay = this._conn[normalizeURL(url)]; + if (relay) + relay.close(); + }); + } + async ensureRelay(url) { + const nm = normalizeURL(url); + if (!this._conn[nm]) { + this._conn[nm] = relayInit(nm, { + getTimeout: this.getTimeout * 0.9, + listTimeout: this.getTimeout * 0.9 + }); + } + const relay = this._conn[nm]; + await relay.connect(); + return relay; + } + sub(relays, filters, opts) { + let _knownIds = /* @__PURE__ */ new Set(); + let modifiedOpts = { ...opts || {} }; + modifiedOpts.alreadyHaveEvent = (id, url) => { + if (opts?.alreadyHaveEvent?.(id, url)) { + return true; + } + if (this.seenOnEnabled) { + let set = this._seenOn[id] || /* @__PURE__ */ new Set(); + set.add(url); + this._seenOn[id] = set; + } + return _knownIds.has(id); + }; + let subs = []; + let eventListeners = /* @__PURE__ */ new Set(); + let eoseListeners = /* @__PURE__ */ new Set(); + let eosesMissing = relays.length; + let eoseSent = false; + let eoseTimeout = setTimeout(() => { + eoseSent = true; + for (let cb of eoseListeners.values()) + cb(); + }, this.eoseSubTimeout); + relays.forEach(async (relay) => { + let r; + try { + r = await this.ensureRelay(relay); + } catch (err) { + handleEose(); + return; + } + if (!r) + return; + let s = r.sub(filters, modifiedOpts); + s.on("event", (event) => { + _knownIds.add(event.id); + for (let cb of eventListeners.values()) + cb(event); + }); + s.on("eose", () => { + if (eoseSent) + return; + handleEose(); + }); + subs.push(s); + function handleEose() { + eosesMissing--; + if (eosesMissing === 0) { + clearTimeout(eoseTimeout); + for (let cb of eoseListeners.values()) + cb(); + } + } + }); + let greaterSub = { + sub(filters2, opts2) { + subs.forEach((sub) => sub.sub(filters2, opts2)); + return greaterSub; + }, + unsub() { + subs.forEach((sub) => sub.unsub()); + }, + on(type, cb) { + if (type === "event") { + eventListeners.add(cb); + } else if (type === "eose") { + eoseListeners.add(cb); + } + }, + off(type, cb) { + if (type === "event") { + eventListeners.delete(cb); + } else if (type === "eose") + eoseListeners.delete(cb); + } + }; + return greaterSub; + } + get(relays, filter, opts) { + return new Promise((resolve) => { + let sub = this.sub(relays, [filter], opts); + let timeout = setTimeout(() => { + sub.unsub(); + resolve(null); + }, this.getTimeout); + sub.on("event", (event) => { + resolve(event); + clearTimeout(timeout); + sub.unsub(); + }); + }); + } + list(relays, filters, opts) { + return new Promise((resolve) => { + let events = []; + let sub = this.sub(relays, filters, opts); + sub.on("event", (event) => { + events.push(event); + }); + sub.on("eose", () => { + sub.unsub(); + resolve(events); + }); + }); + } + publish(relays, event) { + const pubPromises = relays.map(async (relay) => { + let r; + try { + r = await this.ensureRelay(relay); + return r.publish(event); + } catch (_) { + return { on() { + }, off() { + } }; + } + }); + const callbackMap = /* @__PURE__ */ new Map(); + return { + on(type, cb) { + relays.forEach(async (relay, i) => { + let pub = await pubPromises[i]; + let callback = () => cb(relay); + callbackMap.set(cb, callback); + pub.on(type, callback); + }); + }, + off(type, cb) { + relays.forEach(async (_, i) => { + let callback = callbackMap.get(cb); + if (callback) { + let pub = await pubPromises[i]; + pub.off(type, callback); + } + }); + } + }; + } + seenOn(id) { + return Array.from(this._seenOn[id]?.values?.() || []); + } + }; + + // references.ts + init_define_process(); + + // nip19.ts + var nip19_exports = {}; + __export(nip19_exports, { + BECH32_REGEX: () => BECH32_REGEX, + decode: () => decode, + naddrEncode: () => naddrEncode, + neventEncode: () => neventEncode, + noteEncode: () => noteEncode, + nprofileEncode: () => nprofileEncode, + npubEncode: () => npubEncode, + nrelayEncode: () => nrelayEncode, + nsecEncode: () => nsecEncode + }); + init_define_process(); + + // node_modules/@scure/base/lib/esm/index.js + init_define_process(); + function assertNumber(n) { + if (!Number.isSafeInteger(n)) + throw new Error(`Wrong integer: ${n}`); + } + function chain(...args) { + const wrap = (a, b) => (c) => a(b(c)); + const encode = Array.from(args).reverse().reduce((acc, i) => acc ? wrap(acc, i.encode) : i.encode, void 0); + const decode2 = args.reduce((acc, i) => acc ? wrap(acc, i.decode) : i.decode, void 0); + return { encode, decode: decode2 }; + } + function alphabet(alphabet2) { + return { + encode: (digits) => { + if (!Array.isArray(digits) || digits.length && typeof digits[0] !== "number") + throw new Error("alphabet.encode input should be an array of numbers"); + return digits.map((i) => { + assertNumber(i); + if (i < 0 || i >= alphabet2.length) + throw new Error(`Digit index outside alphabet: ${i} (alphabet: ${alphabet2.length})`); + return alphabet2[i]; + }); + }, + decode: (input) => { + if (!Array.isArray(input) || input.length && typeof input[0] !== "string") + throw new Error("alphabet.decode input should be array of strings"); + return input.map((letter) => { + if (typeof letter !== "string") + throw new Error(`alphabet.decode: not string element=${letter}`); + const index = alphabet2.indexOf(letter); + if (index === -1) + throw new Error(`Unknown letter: "${letter}". Allowed: ${alphabet2}`); + return index; + }); + } + }; + } + function join(separator = "") { + if (typeof separator !== "string") + throw new Error("join separator should be string"); + return { + encode: (from) => { + if (!Array.isArray(from) || from.length && typeof from[0] !== "string") + throw new Error("join.encode input should be array of strings"); + for (let i of from) + if (typeof i !== "string") + throw new Error(`join.encode: non-string input=${i}`); + return from.join(separator); + }, + decode: (to) => { + if (typeof to !== "string") + throw new Error("join.decode input should be string"); + return to.split(separator); + } + }; + } + function padding(bits, chr = "=") { + assertNumber(bits); + if (typeof chr !== "string") + throw new Error("padding chr should be string"); + return { + encode(data) { + if (!Array.isArray(data) || data.length && typeof data[0] !== "string") + throw new Error("padding.encode input should be array of strings"); + for (let i of data) + if (typeof i !== "string") + throw new Error(`padding.encode: non-string input=${i}`); + while (data.length * bits % 8) + data.push(chr); + return data; + }, + decode(input) { + if (!Array.isArray(input) || input.length && typeof input[0] !== "string") + throw new Error("padding.encode input should be array of strings"); + for (let i of input) + if (typeof i !== "string") + throw new Error(`padding.decode: non-string input=${i}`); + let end = input.length; + if (end * bits % 8) + throw new Error("Invalid padding: string should have whole number of bytes"); + for (; end > 0 && input[end - 1] === chr; end--) { + if (!((end - 1) * bits % 8)) + throw new Error("Invalid padding: string has too much padding"); + } + return input.slice(0, end); + } + }; + } + function normalize(fn) { + if (typeof fn !== "function") + throw new Error("normalize fn should be function"); + return { encode: (from) => from, decode: (to) => fn(to) }; + } + function convertRadix(data, from, to) { + if (from < 2) + throw new Error(`convertRadix: wrong from=${from}, base cannot be less than 2`); + if (to < 2) + throw new Error(`convertRadix: wrong to=${to}, base cannot be less than 2`); + if (!Array.isArray(data)) + throw new Error("convertRadix: data should be array"); + if (!data.length) + return []; + let pos = 0; + const res = []; + const digits = Array.from(data); + digits.forEach((d) => { + assertNumber(d); + if (d < 0 || d >= from) + throw new Error(`Wrong integer: ${d}`); + }); + while (true) { + let carry = 0; + let done = true; + for (let i = pos; i < digits.length; i++) { + const digit = digits[i]; + const digitBase = from * carry + digit; + if (!Number.isSafeInteger(digitBase) || from * carry / from !== carry || digitBase - digit !== from * carry) { + throw new Error("convertRadix: carry overflow"); + } + carry = digitBase % to; + digits[i] = Math.floor(digitBase / to); + if (!Number.isSafeInteger(digits[i]) || digits[i] * to + carry !== digitBase) + throw new Error("convertRadix: carry overflow"); + if (!done) + continue; + else if (!digits[i]) + pos = i; + else + done = false; + } + res.push(carry); + if (done) + break; + } + for (let i = 0; i < data.length - 1 && data[i] === 0; i++) + res.push(0); + return res.reverse(); + } + var gcd = (a, b) => !b ? a : gcd(b, a % b); + var radix2carry = (from, to) => from + (to - gcd(from, to)); + function convertRadix2(data, from, to, padding2) { + if (!Array.isArray(data)) + throw new Error("convertRadix2: data should be array"); + if (from <= 0 || from > 32) + throw new Error(`convertRadix2: wrong from=${from}`); + if (to <= 0 || to > 32) + throw new Error(`convertRadix2: wrong to=${to}`); + if (radix2carry(from, to) > 32) { + throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`); + } + let carry = 0; + let pos = 0; + const mask = 2 ** to - 1; + const res = []; + for (const n of data) { + assertNumber(n); + if (n >= 2 ** from) + throw new Error(`convertRadix2: invalid data word=${n} from=${from}`); + carry = carry << from | n; + if (pos + from > 32) + throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`); + pos += from; + for (; pos >= to; pos -= to) + res.push((carry >> pos - to & mask) >>> 0); + carry &= 2 ** pos - 1; + } + carry = carry << to - pos & mask; + if (!padding2 && pos >= from) + throw new Error("Excess padding"); + if (!padding2 && carry) + throw new Error(`Non-zero padding: ${carry}`); + if (padding2 && pos > 0) + res.push(carry >>> 0); + return res; + } + function radix(num) { + assertNumber(num); + return { + encode: (bytes2) => { + if (!(bytes2 instanceof Uint8Array)) + throw new Error("radix.encode input should be Uint8Array"); + return convertRadix(Array.from(bytes2), 2 ** 8, num); + }, + decode: (digits) => { + if (!Array.isArray(digits) || digits.length && typeof digits[0] !== "number") + throw new Error("radix.decode input should be array of strings"); + return Uint8Array.from(convertRadix(digits, num, 2 ** 8)); + } + }; + } + function radix2(bits, revPadding = false) { + assertNumber(bits); + if (bits <= 0 || bits > 32) + throw new Error("radix2: bits should be in (0..32]"); + if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32) + throw new Error("radix2: carry overflow"); + return { + encode: (bytes2) => { + if (!(bytes2 instanceof Uint8Array)) + throw new Error("radix2.encode input should be Uint8Array"); + return convertRadix2(Array.from(bytes2), 8, bits, !revPadding); + }, + decode: (digits) => { + if (!Array.isArray(digits) || digits.length && typeof digits[0] !== "number") + throw new Error("radix2.decode input should be array of strings"); + return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding)); + } + }; + } + function unsafeWrapper(fn) { + if (typeof fn !== "function") + throw new Error("unsafeWrapper fn should be function"); + return function(...args) { + try { + return fn.apply(null, args); + } catch (e) { + } + }; + } + function checksum(len, fn) { + assertNumber(len); + if (typeof fn !== "function") + throw new Error("checksum fn should be function"); + return { + encode(data) { + if (!(data instanceof Uint8Array)) + throw new Error("checksum.encode: input should be Uint8Array"); + const checksum2 = fn(data).slice(0, len); + const res = new Uint8Array(data.length + len); + res.set(data); + res.set(checksum2, data.length); + return res; + }, + decode(data) { + if (!(data instanceof Uint8Array)) + throw new Error("checksum.decode: input should be Uint8Array"); + const payload = data.slice(0, -len); + const newChecksum = fn(payload).slice(0, len); + const oldChecksum = data.slice(-len); + for (let i = 0; i < len; i++) + if (newChecksum[i] !== oldChecksum[i]) + throw new Error("Invalid checksum"); + return payload; + } + }; + } + var base16 = chain(radix2(4), alphabet("0123456789ABCDEF"), join("")); + var base32 = chain(radix2(5), alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"), padding(5), join("")); + var base32hex = chain(radix2(5), alphabet("0123456789ABCDEFGHIJKLMNOPQRSTUV"), padding(5), join("")); + var base32crockford = chain(radix2(5), alphabet("0123456789ABCDEFGHJKMNPQRSTVWXYZ"), join(""), normalize((s) => s.toUpperCase().replace(/O/g, "0").replace(/[IL]/g, "1"))); + var base64 = chain(radix2(6), alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), padding(6), join("")); + var base64url = chain(radix2(6), alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"), padding(6), join("")); + var genBase58 = (abc) => chain(radix(58), alphabet(abc), join("")); + var base58 = genBase58("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"); + var base58flickr = genBase58("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"); + var base58xrp = genBase58("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz"); + var XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11]; + var base58xmr = { + encode(data) { + let res = ""; + for (let i = 0; i < data.length; i += 8) { + const block = data.subarray(i, i + 8); + res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], "1"); + } + return res; + }, + decode(str) { + let res = []; + for (let i = 0; i < str.length; i += 11) { + const slice = str.slice(i, i + 11); + const blockLen = XMR_BLOCK_LEN.indexOf(slice.length); + const block = base58.decode(slice); + for (let j = 0; j < block.length - blockLen; j++) { + if (block[j] !== 0) + throw new Error("base58xmr: wrong padding"); + } + res = res.concat(Array.from(block.slice(block.length - blockLen))); + } + return Uint8Array.from(res); + } + }; + var base58check = (sha2562) => chain(checksum(4, (data) => sha2562(sha2562(data))), base58); + var BECH_ALPHABET = chain(alphabet("qpzry9x8gf2tvdw0s3jn54khce6mua7l"), join("")); + var POLYMOD_GENERATORS = [996825010, 642813549, 513874426, 1027748829, 705979059]; + function bech32Polymod(pre) { + const b = pre >> 25; + let chk = (pre & 33554431) << 5; + for (let i = 0; i < POLYMOD_GENERATORS.length; i++) { + if ((b >> i & 1) === 1) + chk ^= POLYMOD_GENERATORS[i]; + } + return chk; + } + function bechChecksum(prefix, words, encodingConst = 1) { + const len = prefix.length; + let chk = 1; + for (let i = 0; i < len; i++) { + const c = prefix.charCodeAt(i); + if (c < 33 || c > 126) + throw new Error(`Invalid prefix (${prefix})`); + chk = bech32Polymod(chk) ^ c >> 5; + } + chk = bech32Polymod(chk); + for (let i = 0; i < len; i++) + chk = bech32Polymod(chk) ^ prefix.charCodeAt(i) & 31; + for (let v of words) + chk = bech32Polymod(chk) ^ v; + for (let i = 0; i < 6; i++) + chk = bech32Polymod(chk); + chk ^= encodingConst; + return BECH_ALPHABET.encode(convertRadix2([chk % 2 ** 30], 30, 5, false)); + } + function genBech32(encoding) { + const ENCODING_CONST = encoding === "bech32" ? 1 : 734539939; + const _words = radix2(5); + const fromWords = _words.decode; + const toWords = _words.encode; + const fromWordsUnsafe = unsafeWrapper(fromWords); + function encode(prefix, words, limit = 90) { + if (typeof prefix !== "string") + throw new Error(`bech32.encode prefix should be string, not ${typeof prefix}`); + if (!Array.isArray(words) || words.length && typeof words[0] !== "number") + throw new Error(`bech32.encode words should be array of numbers, not ${typeof words}`); + const actualLength = prefix.length + 7 + words.length; + if (limit !== false && actualLength > limit) + throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`); + prefix = prefix.toLowerCase(); + return `${prefix}1${BECH_ALPHABET.encode(words)}${bechChecksum(prefix, words, ENCODING_CONST)}`; + } + function decode2(str, limit = 90) { + if (typeof str !== "string") + throw new Error(`bech32.decode input should be string, not ${typeof str}`); + if (str.length < 8 || limit !== false && str.length > limit) + throw new TypeError(`Wrong string length: ${str.length} (${str}). Expected (8..${limit})`); + const lowered = str.toLowerCase(); + if (str !== lowered && str !== str.toUpperCase()) + throw new Error(`String must be lowercase or uppercase`); + str = lowered; + const sepIndex = str.lastIndexOf("1"); + if (sepIndex === 0 || sepIndex === -1) + throw new Error(`Letter "1" must be present between prefix and data only`); + const prefix = str.slice(0, sepIndex); + const _words2 = str.slice(sepIndex + 1); + if (_words2.length < 6) + throw new Error("Data must be at least 6 characters long"); + const words = BECH_ALPHABET.decode(_words2).slice(0, -6); + const sum = bechChecksum(prefix, words, ENCODING_CONST); + if (!_words2.endsWith(sum)) + throw new Error(`Invalid checksum in ${str}: expected "${sum}"`); + return { prefix, words }; + } + const decodeUnsafe = unsafeWrapper(decode2); + function decodeToBytes(str) { + const { prefix, words } = decode2(str, false); + return { prefix, words, bytes: fromWords(words) }; + } + return { encode, decode: decode2, decodeToBytes, decodeUnsafe, fromWords, fromWordsUnsafe, toWords }; + } + var bech32 = genBech32("bech32"); + var bech32m = genBech32("bech32m"); + var utf8 = { + encode: (data) => new TextDecoder().decode(data), + decode: (str) => new TextEncoder().encode(str) + }; + var hex = chain(radix2(4), alphabet("0123456789abcdef"), join(""), normalize((s) => { + if (typeof s !== "string" || s.length % 2) + throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`); + return s.toLowerCase(); + })); + var CODERS = { + utf8, + hex, + base16, + base32, + base64, + base64url, + base58, + base58xmr + }; + var coderTypeError = `Invalid encoding type. Available types: ${Object.keys(CODERS).join(", ")}`; + + // nip19.ts + var Bech32MaxSize = 5e3; + var BECH32_REGEX = /[\x21-\x7E]{1,83}1[023456789acdefghjklmnpqrstuvwxyz]{6,}/; + function decode(nip19) { + let { prefix, words } = bech32.decode(nip19, Bech32MaxSize); + let data = new Uint8Array(bech32.fromWords(words)); + switch (prefix) { + case "nprofile": { + let tlv = parseTLV(data); + if (!tlv[0]?.[0]) + throw new Error("missing TLV 0 for nprofile"); + if (tlv[0][0].length !== 32) + throw new Error("TLV 0 should be 32 bytes"); + return { + type: "nprofile", + data: { + pubkey: bytesToHex(tlv[0][0]), + relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [] + } + }; + } + case "nevent": { + let tlv = parseTLV(data); + if (!tlv[0]?.[0]) + throw new Error("missing TLV 0 for nevent"); + if (tlv[0][0].length !== 32) + throw new Error("TLV 0 should be 32 bytes"); + if (tlv[2] && tlv[2][0].length !== 32) + throw new Error("TLV 2 should be 32 bytes"); + return { + type: "nevent", + data: { + id: bytesToHex(tlv[0][0]), + relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [], + author: tlv[2]?.[0] ? bytesToHex(tlv[2][0]) : void 0 + } + }; + } + case "naddr": { + let tlv = parseTLV(data); + if (!tlv[0]?.[0]) + throw new Error("missing TLV 0 for naddr"); + if (!tlv[2]?.[0]) + throw new Error("missing TLV 2 for naddr"); + if (tlv[2][0].length !== 32) + throw new Error("TLV 2 should be 32 bytes"); + if (!tlv[3]?.[0]) + throw new Error("missing TLV 3 for naddr"); + if (tlv[3][0].length !== 4) + throw new Error("TLV 3 should be 4 bytes"); + return { + type: "naddr", + data: { + identifier: utf8Decoder.decode(tlv[0][0]), + pubkey: bytesToHex(tlv[2][0]), + kind: parseInt(bytesToHex(tlv[3][0]), 16), + relays: tlv[1] ? tlv[1].map((d) => utf8Decoder.decode(d)) : [] + } + }; + } + case "nrelay": { + let tlv = parseTLV(data); + if (!tlv[0]?.[0]) + throw new Error("missing TLV 0 for nrelay"); + return { + type: "nrelay", + data: utf8Decoder.decode(tlv[0][0]) + }; + } + case "nsec": + case "npub": + case "note": + return { type: prefix, data: bytesToHex(data) }; + default: + throw new Error(`unknown prefix ${prefix}`); + } + } + function parseTLV(data) { + let result = {}; + let rest = data; + while (rest.length > 0) { + let t = rest[0]; + let l = rest[1]; + if (!l) + throw new Error(`malformed TLV ${t}`); + let v = rest.slice(2, 2 + l); + rest = rest.slice(2 + l); + if (v.length < l) + throw new Error(`not enough data to read on TLV ${t}`); + result[t] = result[t] || []; + result[t].push(v); + } + return result; + } + function nsecEncode(hex2) { + return encodeBytes("nsec", hex2); + } + function npubEncode(hex2) { + return encodeBytes("npub", hex2); + } + function noteEncode(hex2) { + return encodeBytes("note", hex2); + } + function encodeBech32(prefix, data) { + let words = bech32.toWords(data); + return bech32.encode(prefix, words, Bech32MaxSize); + } + function encodeBytes(prefix, hex2) { + let data = hexToBytes(hex2); + return encodeBech32(prefix, data); + } + function nprofileEncode(profile) { + let data = encodeTLV({ + 0: [hexToBytes(profile.pubkey)], + 1: (profile.relays || []).map((url) => utf8Encoder.encode(url)) + }); + return encodeBech32("nprofile", data); + } + function neventEncode(event) { + let data = encodeTLV({ + 0: [hexToBytes(event.id)], + 1: (event.relays || []).map((url) => utf8Encoder.encode(url)), + 2: event.author ? [hexToBytes(event.author)] : [] + }); + return encodeBech32("nevent", data); + } + function naddrEncode(addr) { + let kind = new ArrayBuffer(4); + new DataView(kind).setUint32(0, addr.kind, false); + let data = encodeTLV({ + 0: [utf8Encoder.encode(addr.identifier)], + 1: (addr.relays || []).map((url) => utf8Encoder.encode(url)), + 2: [hexToBytes(addr.pubkey)], + 3: [new Uint8Array(kind)] + }); + return encodeBech32("naddr", data); + } + function nrelayEncode(url) { + let data = encodeTLV({ + 0: [utf8Encoder.encode(url)] + }); + return encodeBech32("nrelay", data); + } + function encodeTLV(tlv) { + let entries = []; + Object.entries(tlv).forEach(([t, vs]) => { + vs.forEach((v) => { + let entry = new Uint8Array(v.length + 2); + entry.set([parseInt(t)], 0); + entry.set([v.length], 1); + entry.set(v, 2); + entries.push(entry); + }); + }); + return concatBytes(...entries); + } + + // references.ts + var mentionRegex = /\bnostr:((note|npub|naddr|nevent|nprofile)1\w+)\b|#\[(\d+)\]/g; + function parseReferences(evt) { + let references = []; + for (let ref of evt.content.matchAll(mentionRegex)) { + if (ref[2]) { + try { + let { type, data } = decode(ref[1]); + switch (type) { + case "npub": { + references.push({ + text: ref[0], + profile: { pubkey: data, relays: [] } + }); + break; + } + case "nprofile": { + references.push({ + text: ref[0], + profile: data + }); + break; + } + case "note": { + references.push({ + text: ref[0], + event: { id: data, relays: [] } + }); + break; + } + case "nevent": { + references.push({ + text: ref[0], + event: data + }); + break; + } + case "naddr": { + references.push({ + text: ref[0], + address: data + }); + break; + } + } + } catch (err) { + } + } else if (ref[3]) { + let idx = parseInt(ref[3], 10); + let tag = evt.tags[idx]; + if (!tag) + continue; + switch (tag[0]) { + case "p": { + references.push({ + text: ref[0], + profile: { pubkey: tag[1], relays: tag[2] ? [tag[2]] : [] } + }); + break; + } + case "e": { + references.push({ + text: ref[0], + event: { id: tag[1], relays: tag[2] ? [tag[2]] : [] } + }); + break; + } + case "a": { + try { + let [kind, pubkey, identifier] = tag[1].split(":"); + references.push({ + text: ref[0], + address: { + identifier, + pubkey, + kind: parseInt(kind, 10), + relays: tag[2] ? [tag[2]] : [] + } + }); + } catch (err) { + } + break; + } + } + } + } + return references; + } + + // nip04.ts + var nip04_exports = {}; + __export(nip04_exports, { + decrypt: () => decrypt, + encrypt: () => encrypt + }); + init_define_process(); + if (typeof crypto !== "undefined" && !crypto.subtle && crypto.webcrypto) { + crypto.subtle = crypto.webcrypto.subtle; + } + async function encrypt(privkey, pubkey, text) { + const key = secp256k1.getSharedSecret(privkey, "02" + pubkey); + const normalizedKey = getNormalizedX(key); + let iv = Uint8Array.from(randomBytes(16)); + let plaintext = utf8Encoder.encode(text); + let cryptoKey = await crypto.subtle.importKey( + "raw", + normalizedKey, + { name: "AES-CBC" }, + false, + ["encrypt"] + ); + let ciphertext = await crypto.subtle.encrypt( + { name: "AES-CBC", iv }, + cryptoKey, + plaintext + ); + let ctb64 = base64.encode(new Uint8Array(ciphertext)); + let ivb64 = base64.encode(new Uint8Array(iv.buffer)); + return `${ctb64}?iv=${ivb64}`; + } + async function decrypt(privkey, pubkey, data) { + let [ctb64, ivb64] = data.split("?iv="); + let key = secp256k1.getSharedSecret(privkey, "02" + pubkey); + let normalizedKey = getNormalizedX(key); + let cryptoKey = await crypto.subtle.importKey( + "raw", + normalizedKey, + { name: "AES-CBC" }, + false, + ["decrypt"] + ); + let ciphertext = base64.decode(ctb64); + let iv = base64.decode(ivb64); + let plaintext = await crypto.subtle.decrypt( + { name: "AES-CBC", iv }, + cryptoKey, + ciphertext + ); + let text = utf8Decoder.decode(plaintext); + return text; + } + function getNormalizedX(key) { + return key.slice(1, 33); + } + + // nip05.ts + var nip05_exports = {}; + __export(nip05_exports, { + NIP05_REGEX: () => NIP05_REGEX, + queryProfile: () => queryProfile, + searchDomain: () => searchDomain, + useFetchImplementation: () => useFetchImplementation + }); + init_define_process(); + var NIP05_REGEX = /^(?:([\w.+-]+)@)?([\w.-]+)$/; + var _fetch; + try { + _fetch = fetch; + } catch { + } + function useFetchImplementation(fetchImplementation) { + _fetch = fetchImplementation; + } + async function searchDomain(domain, query = "") { + try { + let res = await (await _fetch(`https://${domain}/.well-known/nostr.json?name=${query}`)).json(); + return res.names; + } catch (_) { + return {}; + } + } + async function queryProfile(fullname) { + const match = fullname.match(NIP05_REGEX); + if (!match) + return null; + const [_, name = "_", domain] = match; + try { + const res = await _fetch(`https://${domain}/.well-known/nostr.json?name=${name}`); + const { names, relays } = parseNIP05Result(await res.json()); + const pubkey = names[name]; + return pubkey ? { pubkey, relays: relays?.[pubkey] } : null; + } catch (_e) { + return null; + } + } + function parseNIP05Result(json) { + const result = { + names: {} + }; + for (const [name, pubkey] of Object.entries(json.names)) { + if (typeof name === "string" && typeof pubkey === "string") { + result.names[name] = pubkey; + } + } + if (json.relays) { + result.relays = {}; + for (const [pubkey, relays] of Object.entries(json.relays)) { + if (typeof pubkey === "string" && Array.isArray(relays)) { + result.relays[pubkey] = relays.filter((relay) => typeof relay === "string"); + } + } + } + return result; + } + + // nip06.ts + var nip06_exports = {}; + __export(nip06_exports, { + generateSeedWords: () => generateSeedWords, + privateKeyFromSeedWords: () => privateKeyFromSeedWords, + validateWords: () => validateWords + }); + init_define_process(); + var import_english = __toESM(require_english()); + var import_bip39 = __toESM(require_bip39()); + + // node_modules/@scure/bip32/lib/esm/index.js + init_define_process(); + + // node_modules/@noble/hashes/esm/ripemd160.js + init_define_process(); + var Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]); + var Id = Uint8Array.from({ length: 16 }, (_, i) => i); + var Pi = Id.map((i) => (9 * i + 5) % 16); + var idxL = [Id]; + var idxR = [Pi]; + for (let i = 0; i < 4; i++) + for (let j of [idxL, idxR]) + j.push(j[i].map((k) => Rho[k])); + var shifts = [ + [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8], + [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7], + [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9], + [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6], + [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5] + ].map((i) => new Uint8Array(i)); + var shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j])); + var shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j])); + var Kl = new Uint32Array([0, 1518500249, 1859775393, 2400959708, 2840853838]); + var Kr = new Uint32Array([1352829926, 1548603684, 1836072691, 2053994217, 0]); + var rotl = (word, shift) => word << shift | word >>> 32 - shift; + function f(group, x, y, z) { + if (group === 0) + return x ^ y ^ z; + else if (group === 1) + return x & y | ~x & z; + else if (group === 2) + return (x | ~y) ^ z; + else if (group === 3) + return x & z | y & ~z; + else + return x ^ (y | ~z); + } + var BUF = new Uint32Array(16); + var RIPEMD160 = class extends SHA2 { + constructor() { + super(64, 20, 8, true); + this.h0 = 1732584193 | 0; + this.h1 = 4023233417 | 0; + this.h2 = 2562383102 | 0; + this.h3 = 271733878 | 0; + this.h4 = 3285377520 | 0; + } + get() { + const { h0, h1, h2, h3, h4 } = this; + return [h0, h1, h2, h3, h4]; + } + set(h0, h1, h2, h3, h4) { + this.h0 = h0 | 0; + this.h1 = h1 | 0; + this.h2 = h2 | 0; + this.h3 = h3 | 0; + this.h4 = h4 | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) + BUF[i] = view.getUint32(offset, true); + let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el; + for (let group = 0; group < 5; group++) { + const rGroup = 4 - group; + const hbl = Kl[group], hbr = Kr[group]; + const rl = idxL[group], rr = idxR[group]; + const sl = shiftsL[group], sr = shiftsR[group]; + for (let i = 0; i < 16; i++) { + const tl = rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el | 0; + al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; + } + for (let i = 0; i < 16; i++) { + const tr = rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er | 0; + ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; + } + } + this.set(this.h1 + cl + dr | 0, this.h2 + dl + er | 0, this.h3 + el + ar | 0, this.h4 + al + br | 0, this.h0 + bl + cr | 0); + } + roundClean() { + BUF.fill(0); + } + destroy() { + this.destroyed = true; + this.buffer.fill(0); + this.set(0, 0, 0, 0, 0); + } + }; + var ripemd160 = wrapConstructor(() => new RIPEMD160()); + + // node_modules/@noble/hashes/esm/sha512.js + init_define_process(); + + // node_modules/@noble/hashes/esm/_u64.js + init_define_process(); + var U32_MASK64 = BigInt(2 ** 32 - 1); + var _32n = BigInt(32); + function fromBig(n, le = false) { + if (le) + return { h: Number(n & U32_MASK64), l: Number(n >> _32n & U32_MASK64) }; + return { h: Number(n >> _32n & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 }; + } + function split(lst, le = false) { + let Ah = new Uint32Array(lst.length); + let Al = new Uint32Array(lst.length); + for (let i = 0; i < lst.length; i++) { + const { h, l } = fromBig(lst[i], le); + [Ah[i], Al[i]] = [h, l]; + } + return [Ah, Al]; + } + var toBig = (h, l) => BigInt(h >>> 0) << _32n | BigInt(l >>> 0); + var shrSH = (h, l, s) => h >>> s; + var shrSL = (h, l, s) => h << 32 - s | l >>> s; + var rotrSH = (h, l, s) => h >>> s | l << 32 - s; + var rotrSL = (h, l, s) => h << 32 - s | l >>> s; + var rotrBH = (h, l, s) => h << 64 - s | l >>> s - 32; + var rotrBL = (h, l, s) => h >>> s - 32 | l << 64 - s; + var rotr32H = (h, l) => l; + var rotr32L = (h, l) => h; + var rotlSH = (h, l, s) => h << s | l >>> 32 - s; + var rotlSL = (h, l, s) => l << s | h >>> 32 - s; + var rotlBH = (h, l, s) => l << s - 32 | h >>> 64 - s; + var rotlBL = (h, l, s) => h << s - 32 | l >>> 64 - s; + function add(Ah, Al, Bh, Bl) { + const l = (Al >>> 0) + (Bl >>> 0); + return { h: Ah + Bh + (l / 2 ** 32 | 0) | 0, l: l | 0 }; + } + var add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0); + var add3H = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0; + var add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0); + var add4H = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0; + var add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0); + var add5H = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0; + var u64 = { + fromBig, + split, + toBig, + shrSH, + shrSL, + rotrSH, + rotrSL, + rotrBH, + rotrBL, + rotr32H, + rotr32L, + rotlSH, + rotlSL, + rotlBH, + rotlBL, + add, + add3L, + add3H, + add4L, + add4H, + add5H, + add5L + }; + var u64_default = u64; + + // node_modules/@noble/hashes/esm/sha512.js + var [SHA512_Kh, SHA512_Kl] = u64_default.split([ + "0x428a2f98d728ae22", + "0x7137449123ef65cd", + "0xb5c0fbcfec4d3b2f", + "0xe9b5dba58189dbbc", + "0x3956c25bf348b538", + "0x59f111f1b605d019", + "0x923f82a4af194f9b", + "0xab1c5ed5da6d8118", + "0xd807aa98a3030242", + "0x12835b0145706fbe", + "0x243185be4ee4b28c", + "0x550c7dc3d5ffb4e2", + "0x72be5d74f27b896f", + "0x80deb1fe3b1696b1", + "0x9bdc06a725c71235", + "0xc19bf174cf692694", + "0xe49b69c19ef14ad2", + "0xefbe4786384f25e3", + "0x0fc19dc68b8cd5b5", + "0x240ca1cc77ac9c65", + "0x2de92c6f592b0275", + "0x4a7484aa6ea6e483", + "0x5cb0a9dcbd41fbd4", + "0x76f988da831153b5", + "0x983e5152ee66dfab", + "0xa831c66d2db43210", + "0xb00327c898fb213f", + "0xbf597fc7beef0ee4", + "0xc6e00bf33da88fc2", + "0xd5a79147930aa725", + "0x06ca6351e003826f", + "0x142929670a0e6e70", + "0x27b70a8546d22ffc", + "0x2e1b21385c26c926", + "0x4d2c6dfc5ac42aed", + "0x53380d139d95b3df", + "0x650a73548baf63de", + "0x766a0abb3c77b2a8", + "0x81c2c92e47edaee6", + "0x92722c851482353b", + "0xa2bfe8a14cf10364", + "0xa81a664bbc423001", + "0xc24b8b70d0f89791", + "0xc76c51a30654be30", + "0xd192e819d6ef5218", + "0xd69906245565a910", + "0xf40e35855771202a", + "0x106aa07032bbd1b8", + "0x19a4c116b8d2d0c8", + "0x1e376c085141ab53", + "0x2748774cdf8eeb99", + "0x34b0bcb5e19b48a8", + "0x391c0cb3c5c95a63", + "0x4ed8aa4ae3418acb", + "0x5b9cca4f7763e373", + "0x682e6ff3d6b2b8a3", + "0x748f82ee5defb2fc", + "0x78a5636f43172f60", + "0x84c87814a1f0ab72", + "0x8cc702081a6439ec", + "0x90befffa23631e28", + "0xa4506cebde82bde9", + "0xbef9a3f7b2c67915", + "0xc67178f2e372532b", + "0xca273eceea26619c", + "0xd186b8c721c0c207", + "0xeada7dd6cde0eb1e", + "0xf57d4f7fee6ed178", + "0x06f067aa72176fba", + "0x0a637dc5a2c898a6", + "0x113f9804bef90dae", + "0x1b710b35131c471b", + "0x28db77f523047d84", + "0x32caab7b40c72493", + "0x3c9ebe0a15c9bebc", + "0x431d67c49c100d4c", + "0x4cc5d4becb3e42b6", + "0x597f299cfc657e2a", + "0x5fcb6fab3ad6faec", + "0x6c44198c4a475817" + ].map((n) => BigInt(n))); + var SHA512_W_H = new Uint32Array(80); + var SHA512_W_L = new Uint32Array(80); + var SHA512 = class extends SHA2 { + constructor() { + super(128, 64, 16, false); + this.Ah = 1779033703 | 0; + this.Al = 4089235720 | 0; + this.Bh = 3144134277 | 0; + this.Bl = 2227873595 | 0; + this.Ch = 1013904242 | 0; + this.Cl = 4271175723 | 0; + this.Dh = 2773480762 | 0; + this.Dl = 1595750129 | 0; + this.Eh = 1359893119 | 0; + this.El = 2917565137 | 0; + this.Fh = 2600822924 | 0; + this.Fl = 725511199 | 0; + this.Gh = 528734635 | 0; + this.Gl = 4215389547 | 0; + this.Hh = 1541459225 | 0; + this.Hl = 327033209 | 0; + } + get() { + const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl]; + } + set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) { + this.Ah = Ah | 0; + this.Al = Al | 0; + this.Bh = Bh | 0; + this.Bl = Bl | 0; + this.Ch = Ch | 0; + this.Cl = Cl | 0; + this.Dh = Dh | 0; + this.Dl = Dl | 0; + this.Eh = Eh | 0; + this.El = El | 0; + this.Fh = Fh | 0; + this.Fl = Fl | 0; + this.Gh = Gh | 0; + this.Gl = Gl | 0; + this.Hh = Hh | 0; + this.Hl = Hl | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) { + SHA512_W_H[i] = view.getUint32(offset); + SHA512_W_L[i] = view.getUint32(offset += 4); + } + for (let i = 16; i < 80; i++) { + const W15h = SHA512_W_H[i - 15] | 0; + const W15l = SHA512_W_L[i - 15] | 0; + const s0h = u64_default.rotrSH(W15h, W15l, 1) ^ u64_default.rotrSH(W15h, W15l, 8) ^ u64_default.shrSH(W15h, W15l, 7); + const s0l = u64_default.rotrSL(W15h, W15l, 1) ^ u64_default.rotrSL(W15h, W15l, 8) ^ u64_default.shrSL(W15h, W15l, 7); + const W2h = SHA512_W_H[i - 2] | 0; + const W2l = SHA512_W_L[i - 2] | 0; + const s1h = u64_default.rotrSH(W2h, W2l, 19) ^ u64_default.rotrBH(W2h, W2l, 61) ^ u64_default.shrSH(W2h, W2l, 6); + const s1l = u64_default.rotrSL(W2h, W2l, 19) ^ u64_default.rotrBL(W2h, W2l, 61) ^ u64_default.shrSL(W2h, W2l, 6); + const SUMl = u64_default.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]); + const SUMh = u64_default.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]); + SHA512_W_H[i] = SUMh | 0; + SHA512_W_L[i] = SUMl | 0; + } + let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + for (let i = 0; i < 80; i++) { + const sigma1h = u64_default.rotrSH(Eh, El, 14) ^ u64_default.rotrSH(Eh, El, 18) ^ u64_default.rotrBH(Eh, El, 41); + const sigma1l = u64_default.rotrSL(Eh, El, 14) ^ u64_default.rotrSL(Eh, El, 18) ^ u64_default.rotrBL(Eh, El, 41); + const CHIh = Eh & Fh ^ ~Eh & Gh; + const CHIl = El & Fl ^ ~El & Gl; + const T1ll = u64_default.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]); + const T1h = u64_default.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]); + const T1l = T1ll | 0; + const sigma0h = u64_default.rotrSH(Ah, Al, 28) ^ u64_default.rotrBH(Ah, Al, 34) ^ u64_default.rotrBH(Ah, Al, 39); + const sigma0l = u64_default.rotrSL(Ah, Al, 28) ^ u64_default.rotrBL(Ah, Al, 34) ^ u64_default.rotrBL(Ah, Al, 39); + const MAJh = Ah & Bh ^ Ah & Ch ^ Bh & Ch; + const MAJl = Al & Bl ^ Al & Cl ^ Bl & Cl; + Hh = Gh | 0; + Hl = Gl | 0; + Gh = Fh | 0; + Gl = Fl | 0; + Fh = Eh | 0; + Fl = El | 0; + ({ h: Eh, l: El } = u64_default.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0)); + Dh = Ch | 0; + Dl = Cl | 0; + Ch = Bh | 0; + Cl = Bl | 0; + Bh = Ah | 0; + Bl = Al | 0; + const All = u64_default.add3L(T1l, sigma0l, MAJl); + Ah = u64_default.add3H(All, T1h, sigma0h, MAJh); + Al = All | 0; + } + ({ h: Ah, l: Al } = u64_default.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0)); + ({ h: Bh, l: Bl } = u64_default.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0)); + ({ h: Ch, l: Cl } = u64_default.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0)); + ({ h: Dh, l: Dl } = u64_default.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0)); + ({ h: Eh, l: El } = u64_default.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0)); + ({ h: Fh, l: Fl } = u64_default.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0)); + ({ h: Gh, l: Gl } = u64_default.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0)); + ({ h: Hh, l: Hl } = u64_default.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0)); + this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl); + } + roundClean() { + SHA512_W_H.fill(0); + SHA512_W_L.fill(0); + } + destroy() { + this.buffer.fill(0); + this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + } + }; + var SHA512_224 = class extends SHA512 { + constructor() { + super(); + this.Ah = 2352822216 | 0; + this.Al = 424955298 | 0; + this.Bh = 1944164710 | 0; + this.Bl = 2312950998 | 0; + this.Ch = 502970286 | 0; + this.Cl = 855612546 | 0; + this.Dh = 1738396948 | 0; + this.Dl = 1479516111 | 0; + this.Eh = 258812777 | 0; + this.El = 2077511080 | 0; + this.Fh = 2011393907 | 0; + this.Fl = 79989058 | 0; + this.Gh = 1067287976 | 0; + this.Gl = 1780299464 | 0; + this.Hh = 286451373 | 0; + this.Hl = 2446758561 | 0; + this.outputLen = 28; + } + }; + var SHA512_256 = class extends SHA512 { + constructor() { + super(); + this.Ah = 573645204 | 0; + this.Al = 4230739756 | 0; + this.Bh = 2673172387 | 0; + this.Bl = 3360449730 | 0; + this.Ch = 596883563 | 0; + this.Cl = 1867755857 | 0; + this.Dh = 2520282905 | 0; + this.Dl = 1497426621 | 0; + this.Eh = 2519219938 | 0; + this.El = 2827943907 | 0; + this.Fh = 3193839141 | 0; + this.Fl = 1401305490 | 0; + this.Gh = 721525244 | 0; + this.Gl = 746961066 | 0; + this.Hh = 246885852 | 0; + this.Hl = 2177182882 | 0; + this.outputLen = 32; + } + }; + var SHA384 = class extends SHA512 { + constructor() { + super(); + this.Ah = 3418070365 | 0; + this.Al = 3238371032 | 0; + this.Bh = 1654270250 | 0; + this.Bl = 914150663 | 0; + this.Ch = 2438529370 | 0; + this.Cl = 812702999 | 0; + this.Dh = 355462360 | 0; + this.Dl = 4144912697 | 0; + this.Eh = 1731405415 | 0; + this.El = 4290775857 | 0; + this.Fh = 2394180231 | 0; + this.Fl = 1750603025 | 0; + this.Gh = 3675008525 | 0; + this.Gl = 1694076839 | 0; + this.Hh = 1203062813 | 0; + this.Hl = 3204075428 | 0; + this.outputLen = 48; + } + }; + var sha512 = wrapConstructor(() => new SHA512()); + var sha512_224 = wrapConstructor(() => new SHA512_224()); + var sha512_256 = wrapConstructor(() => new SHA512_256()); + var sha384 = wrapConstructor(() => new SHA384()); + + // node_modules/@scure/bip32/lib/esm/index.js + var Point2 = secp256k1.ProjectivePoint; + var base58check2 = base58check(sha256); + function bytesToNumber(bytes2) { + return BigInt(`0x${bytesToHex(bytes2)}`); + } + function numberToBytes(num) { + return hexToBytes(num.toString(16).padStart(64, "0")); + } + var MASTER_SECRET = utf8ToBytes("Bitcoin seed"); + var BITCOIN_VERSIONS = { private: 76066276, public: 76067358 }; + var HARDENED_OFFSET = 2147483648; + var hash160 = (data) => ripemd160(sha256(data)); + var fromU32 = (data) => createView(data).getUint32(0, false); + var toU32 = (n) => { + if (!Number.isSafeInteger(n) || n < 0 || n > 2 ** 32 - 1) { + throw new Error(`Invalid number=${n}. Should be from 0 to 2 ** 32 - 1`); + } + const buf = new Uint8Array(4); + createView(buf).setUint32(0, n, false); + return buf; + }; + var HDKey = class { + get fingerprint() { + if (!this.pubHash) { + throw new Error("No publicKey set!"); + } + return fromU32(this.pubHash); + } + get identifier() { + return this.pubHash; + } + get pubKeyHash() { + return this.pubHash; + } + get privateKey() { + return this.privKeyBytes || null; + } + get publicKey() { + return this.pubKey || null; + } + get privateExtendedKey() { + const priv = this.privateKey; + if (!priv) { + throw new Error("No private key"); + } + return base58check2.encode(this.serialize(this.versions.private, concatBytes(new Uint8Array([0]), priv))); + } + get publicExtendedKey() { + if (!this.pubKey) { + throw new Error("No public key"); + } + return base58check2.encode(this.serialize(this.versions.public, this.pubKey)); + } + static fromMasterSeed(seed, versions = BITCOIN_VERSIONS) { + bytes(seed); + if (8 * seed.length < 128 || 8 * seed.length > 512) { + throw new Error(`HDKey: wrong seed length=${seed.length}. Should be between 128 and 512 bits; 256 bits is advised)`); + } + const I = hmac(sha512, MASTER_SECRET, seed); + return new HDKey({ + versions, + chainCode: I.slice(32), + privateKey: I.slice(0, 32) + }); + } + static fromExtendedKey(base58key, versions = BITCOIN_VERSIONS) { + const keyBuffer = base58check2.decode(base58key); + const keyView = createView(keyBuffer); + const version = keyView.getUint32(0, false); + const opt = { + versions, + depth: keyBuffer[4], + parentFingerprint: keyView.getUint32(5, false), + index: keyView.getUint32(9, false), + chainCode: keyBuffer.slice(13, 45) + }; + const key = keyBuffer.slice(45); + const isPriv = key[0] === 0; + if (version !== versions[isPriv ? "private" : "public"]) { + throw new Error("Version mismatch"); + } + if (isPriv) { + return new HDKey({ ...opt, privateKey: key.slice(1) }); + } else { + return new HDKey({ ...opt, publicKey: key }); + } + } + static fromJSON(json) { + return HDKey.fromExtendedKey(json.xpriv); + } + constructor(opt) { + this.depth = 0; + this.index = 0; + this.chainCode = null; + this.parentFingerprint = 0; + if (!opt || typeof opt !== "object") { + throw new Error("HDKey.constructor must not be called directly"); + } + this.versions = opt.versions || BITCOIN_VERSIONS; + this.depth = opt.depth || 0; + this.chainCode = opt.chainCode; + this.index = opt.index || 0; + this.parentFingerprint = opt.parentFingerprint || 0; + if (!this.depth) { + if (this.parentFingerprint || this.index) { + throw new Error("HDKey: zero depth with non-zero index/parent fingerprint"); + } + } + if (opt.publicKey && opt.privateKey) { + throw new Error("HDKey: publicKey and privateKey at same time."); + } + if (opt.privateKey) { + if (!secp256k1.utils.isValidPrivateKey(opt.privateKey)) { + throw new Error("Invalid private key"); + } + this.privKey = typeof opt.privateKey === "bigint" ? opt.privateKey : bytesToNumber(opt.privateKey); + this.privKeyBytes = numberToBytes(this.privKey); + this.pubKey = secp256k1.getPublicKey(opt.privateKey, true); + } else if (opt.publicKey) { + this.pubKey = Point2.fromHex(opt.publicKey).toRawBytes(true); + } else { + throw new Error("HDKey: no public or private key provided"); + } + this.pubHash = hash160(this.pubKey); + } + derive(path) { + if (!/^[mM]'?/.test(path)) { + throw new Error('Path must start with "m" or "M"'); + } + if (/^[mM]'?$/.test(path)) { + return this; + } + const parts = path.replace(/^[mM]'?\//, "").split("/"); + let child = this; + for (const c of parts) { + const m = /^(\d+)('?)$/.exec(c); + if (!m || m.length !== 3) { + throw new Error(`Invalid child index: ${c}`); + } + let idx = +m[1]; + if (!Number.isSafeInteger(idx) || idx >= HARDENED_OFFSET) { + throw new Error("Invalid index"); + } + if (m[2] === "'") { + idx += HARDENED_OFFSET; + } + child = child.deriveChild(idx); + } + return child; + } + deriveChild(index) { + if (!this.pubKey || !this.chainCode) { + throw new Error("No publicKey or chainCode set"); + } + let data = toU32(index); + if (index >= HARDENED_OFFSET) { + const priv = this.privateKey; + if (!priv) { + throw new Error("Could not derive hardened child key"); + } + data = concatBytes(new Uint8Array([0]), priv, data); + } else { + data = concatBytes(this.pubKey, data); + } + const I = hmac(sha512, this.chainCode, data); + const childTweak = bytesToNumber(I.slice(0, 32)); + const chainCode = I.slice(32); + if (!secp256k1.utils.isValidPrivateKey(childTweak)) { + throw new Error("Tweak bigger than curve order"); + } + const opt = { + versions: this.versions, + chainCode, + depth: this.depth + 1, + parentFingerprint: this.fingerprint, + index + }; + try { + if (this.privateKey) { + const added = mod(this.privKey + childTweak, secp256k1.CURVE.n); + if (!secp256k1.utils.isValidPrivateKey(added)) { + throw new Error("The tweak was out of range or the resulted private key is invalid"); + } + opt.privateKey = added; + } else { + const added = Point2.fromHex(this.pubKey).add(Point2.fromPrivateKey(childTweak)); + if (added.equals(Point2.ZERO)) { + throw new Error("The tweak was equal to negative P, which made the result key invalid"); + } + opt.publicKey = added.toRawBytes(true); + } + return new HDKey(opt); + } catch (err) { + return this.deriveChild(index + 1); + } + } + sign(hash2) { + if (!this.privateKey) { + throw new Error("No privateKey set!"); + } + bytes(hash2, 32); + return secp256k1.sign(hash2, this.privKey).toCompactRawBytes(); + } + verify(hash2, signature) { + bytes(hash2, 32); + bytes(signature, 64); + if (!this.publicKey) { + throw new Error("No publicKey set!"); + } + let sig; + try { + sig = secp256k1.Signature.fromCompact(signature); + } catch (error) { + return false; + } + return secp256k1.verify(sig, hash2, this.publicKey); + } + wipePrivateData() { + this.privKey = void 0; + if (this.privKeyBytes) { + this.privKeyBytes.fill(0); + this.privKeyBytes = void 0; + } + return this; + } + toJSON() { + return { + xpriv: this.privateExtendedKey, + xpub: this.publicExtendedKey + }; + } + serialize(version, key) { + if (!this.chainCode) { + throw new Error("No chainCode set"); + } + bytes(key, 33); + return concatBytes(toU32(version), new Uint8Array([this.depth]), toU32(this.parentFingerprint), toU32(this.index), this.chainCode, key); + } + }; + + // nip06.ts + function privateKeyFromSeedWords(mnemonic, passphrase) { + let root = HDKey.fromMasterSeed((0, import_bip39.mnemonicToSeedSync)(mnemonic, passphrase)); + let privateKey = root.derive(`m/44'/1237'/0'/0/0`).privateKey; + if (!privateKey) + throw new Error("could not derive private key"); + return bytesToHex(privateKey); + } + function generateSeedWords() { + return (0, import_bip39.generateMnemonic)(import_english.wordlist); + } + function validateWords(words) { + return (0, import_bip39.validateMnemonic)(words, import_english.wordlist); + } + + // nip10.ts + var nip10_exports = {}; + __export(nip10_exports, { + parse: () => parse + }); + init_define_process(); + function parse(event) { + const result = { + reply: void 0, + root: void 0, + mentions: [], + profiles: [] + }; + const eTags = []; + for (const tag of event.tags) { + if (tag[0] === "e" && tag[1]) { + eTags.push(tag); + } + if (tag[0] === "p" && tag[1]) { + result.profiles.push({ + pubkey: tag[1], + relays: tag[2] ? [tag[2]] : [] + }); + } + } + for (let eTagIndex = 0; eTagIndex < eTags.length; eTagIndex++) { + const eTag = eTags[eTagIndex]; + const [_, eTagEventId, eTagRelayUrl, eTagMarker] = eTag; + const eventPointer = { + id: eTagEventId, + relays: eTagRelayUrl ? [eTagRelayUrl] : [] + }; + const isFirstETag = eTagIndex === 0; + const isLastETag = eTagIndex === eTags.length - 1; + if (eTagMarker === "root") { + result.root = eventPointer; + continue; + } + if (eTagMarker === "reply") { + result.reply = eventPointer; + continue; + } + if (eTagMarker === "mention") { + result.mentions.push(eventPointer); + continue; + } + if (isFirstETag) { + result.root = eventPointer; + continue; + } + if (isLastETag) { + result.reply = eventPointer; + continue; + } + result.mentions.push(eventPointer); + } + return result; + } + + // nip13.ts + var nip13_exports = {}; + __export(nip13_exports, { + getPow: () => getPow + }); + init_define_process(); + function getPow(id) { + return getLeadingZeroBits(hexToBytes(id)); + } + function getLeadingZeroBits(hash2) { + let total, i, bits; + for (i = 0, total = 0; i < hash2.length; i++) { + bits = msb(hash2[i]); + total += bits; + if (bits !== 8) { + break; + } + } + return total; + } + function msb(b) { + let n = 0; + if (b === 0) { + return 8; + } + while (b >>= 1) { + n++; + } + return 7 - n; + } + + // nip18.ts + var nip18_exports = {}; + __export(nip18_exports, { + finishRepostEvent: () => finishRepostEvent, + getRepostedEvent: () => getRepostedEvent, + getRepostedEventPointer: () => getRepostedEventPointer + }); + init_define_process(); + function finishRepostEvent(t, reposted, relayUrl, privateKey) { + return finishEvent({ + kind: 6 /* Repost */, + tags: [ + ...t.tags ?? [], + ["e", reposted.id, relayUrl], + ["p", reposted.pubkey] + ], + content: t.content === "" ? "" : JSON.stringify(reposted), + created_at: t.created_at + }, privateKey); + } + function getRepostedEventPointer(event) { + if (event.kind !== 6 /* Repost */) { + return void 0; + } + let lastETag; + let lastPTag; + for (let i = event.tags.length - 1; i >= 0 && (lastETag === void 0 || lastPTag === void 0); i--) { + const tag = event.tags[i]; + if (tag.length >= 2) { + if (tag[0] === "e" && lastETag === void 0) { + lastETag = tag; + } else if (tag[0] === "p" && lastPTag === void 0) { + lastPTag = tag; + } + } + } + if (lastETag === void 0) { + return void 0; + } + return { + id: lastETag[1], + relays: [lastETag[2], lastPTag?.[2]].filter((x) => typeof x === "string"), + author: lastPTag?.[1] + }; + } + function getRepostedEvent(event, { skipVerification } = {}) { + const pointer = getRepostedEventPointer(event); + if (pointer === void 0 || event.content === "") { + return void 0; + } + let repostedEvent; + try { + repostedEvent = JSON.parse(event.content); + } catch (error) { + return void 0; + } + if (repostedEvent.id !== pointer.id) { + return void 0; + } + if (!skipVerification && !verifySignature(repostedEvent)) { + return void 0; + } + return repostedEvent; + } + + // nip21.ts + var nip21_exports = {}; + __export(nip21_exports, { + NOSTR_URI_REGEX: () => NOSTR_URI_REGEX, + parse: () => parse2, + test: () => test + }); + init_define_process(); + var NOSTR_URI_REGEX = new RegExp(`nostr:(${BECH32_REGEX.source})`); + function test(value) { + return typeof value === "string" && new RegExp(`^${NOSTR_URI_REGEX.source}$`).test(value); + } + function parse2(uri) { + const match = uri.match(new RegExp(`^${NOSTR_URI_REGEX.source}$`)); + if (!match) + throw new Error(`Invalid Nostr URI: ${uri}`); + return { + uri: match[0], + value: match[1], + decoded: decode(match[1]) + }; + } + + // nip25.ts + var nip25_exports = {}; + __export(nip25_exports, { + finishReactionEvent: () => finishReactionEvent, + getReactedEventPointer: () => getReactedEventPointer + }); + init_define_process(); + function finishReactionEvent(t, reacted, privateKey) { + const inheritedTags = reacted.tags.filter( + (tag) => tag.length >= 2 && (tag[0] === "e" || tag[0] === "p") + ); + return finishEvent({ + ...t, + kind: 7 /* Reaction */, + tags: [ + ...t.tags ?? [], + ...inheritedTags, + ["e", reacted.id], + ["p", reacted.pubkey] + ], + content: t.content ?? "+" + }, privateKey); + } + function getReactedEventPointer(event) { + if (event.kind !== 7 /* Reaction */) { + return void 0; + } + let lastETag; + let lastPTag; + for (let i = event.tags.length - 1; i >= 0 && (lastETag === void 0 || lastPTag === void 0); i--) { + const tag = event.tags[i]; + if (tag.length >= 2) { + if (tag[0] === "e" && lastETag === void 0) { + lastETag = tag; + } else if (tag[0] === "p" && lastPTag === void 0) { + lastPTag = tag; + } + } + } + if (lastETag === void 0 || lastPTag === void 0) { + return void 0; + } + return { + id: lastETag[1], + relays: [lastETag[2], lastPTag[2]].filter((x) => x !== void 0), + author: lastPTag[1] + }; + } + + // nip26.ts + var nip26_exports = {}; + __export(nip26_exports, { + createDelegation: () => createDelegation, + getDelegator: () => getDelegator + }); + init_define_process(); + function createDelegation(privateKey, parameters) { + let conditions = []; + if ((parameters.kind || -1) >= 0) + conditions.push(`kind=${parameters.kind}`); + if (parameters.until) + conditions.push(`created_at<${parameters.until}`); + if (parameters.since) + conditions.push(`created_at>${parameters.since}`); + let cond = conditions.join("&"); + if (cond === "") + throw new Error("refusing to create a delegation without any conditions"); + let sighash = sha256( + utf8Encoder.encode(`nostr:delegation:${parameters.pubkey}:${cond}`) + ); + let sig = bytesToHex( + schnorr.sign(sighash, privateKey) + ); + return { + from: getPublicKey(privateKey), + to: parameters.pubkey, + cond, + sig + }; + } + function getDelegator(event) { + let tag = event.tags.find((tag2) => tag2[0] === "delegation" && tag2.length >= 4); + if (!tag) + return null; + let pubkey = tag[1]; + let cond = tag[2]; + let sig = tag[3]; + let conditions = cond.split("&"); + for (let i = 0; i < conditions.length; i++) { + let [key, operator, value] = conditions[i].split(/\b/); + if (key === "kind" && operator === "=" && event.kind === parseInt(value)) + continue; + else if (key === "created_at" && operator === "<" && event.created_at < parseInt(value)) + continue; + else if (key === "created_at" && operator === ">" && event.created_at > parseInt(value)) + continue; + else + return null; + } + let sighash = sha256( + utf8Encoder.encode(`nostr:delegation:${event.pubkey}:${cond}`) + ); + if (!schnorr.verify(sig, sighash, pubkey)) + return null; + return pubkey; + } + + // nip27.ts + var nip27_exports = {}; + __export(nip27_exports, { + matchAll: () => matchAll, + regex: () => regex, + replaceAll: () => replaceAll + }); + init_define_process(); + var regex = () => new RegExp(`\\b${NOSTR_URI_REGEX.source}\\b`, "g"); + function* matchAll(content) { + const matches = content.matchAll(regex()); + for (const match of matches) { + try { + const [uri, value] = match; + yield { + uri, + value, + decoded: decode(value), + start: match.index, + end: match.index + uri.length + }; + } catch (_e) { + } + } + } + function replaceAll(content, replacer) { + return content.replaceAll(regex(), (uri, value) => { + return replacer({ + uri, + value, + decoded: decode(value) + }); + }); + } + + // nip39.ts + var nip39_exports = {}; + __export(nip39_exports, { + useFetchImplementation: () => useFetchImplementation2, + validateGithub: () => validateGithub + }); + init_define_process(); + var _fetch2; + try { + _fetch2 = fetch; + } catch { + } + function useFetchImplementation2(fetchImplementation) { + _fetch2 = fetchImplementation; + } + async function validateGithub(pubkey, username, proof) { + try { + let res = await (await _fetch2(`https://gist.github.com/${username}/${proof}/raw`)).text(); + return res === `Verifying that I control the following Nostr public key: ${pubkey}`; + } catch (_) { + return false; + } + } + + // nip42.ts + var nip42_exports = {}; + __export(nip42_exports, { + authenticate: () => authenticate + }); + init_define_process(); + var authenticate = async ({ + challenge: challenge2, + relay, + sign + }) => { + const e = { + kind: 22242 /* ClientAuth */, + created_at: Math.floor(Date.now() / 1e3), + tags: [ + ["relay", relay.url], + ["challenge", challenge2] + ], + content: "" + }; + const pub = relay.auth(await sign(e)); + return new Promise((resolve, reject) => { + pub.on("ok", function ok() { + pub.off("ok", ok); + resolve(); + }); + pub.on("failed", function fail(reason) { + pub.off("failed", fail); + reject(reason); + }); + }); + }; + + // nip57.ts + var nip57_exports = {}; + __export(nip57_exports, { + getZapEndpoint: () => getZapEndpoint, + makeZapReceipt: () => makeZapReceipt, + makeZapRequest: () => makeZapRequest, + useFetchImplementation: () => useFetchImplementation3, + validateZapRequest: () => validateZapRequest + }); + init_define_process(); + var _fetch3; + try { + _fetch3 = fetch; + } catch { + } + function useFetchImplementation3(fetchImplementation) { + _fetch3 = fetchImplementation; + } + async function getZapEndpoint(metadata) { + try { + let lnurl = ""; + let { lud06, lud16 } = JSON.parse(metadata.content); + if (lud06) { + let { words } = bech32.decode(lud06, 1e3); + let data = bech32.fromWords(words); + lnurl = utf8Decoder.decode(data); + } else if (lud16) { + let [name, domain] = lud16.split("@"); + lnurl = `https://${domain}/.well-known/lnurlp/${name}`; + } else { + return null; + } + let res = await _fetch3(lnurl); + let body = await res.json(); + if (body.allowsNostr && body.nostrPubkey) { + return body.callback; + } + } catch (err) { + } + return null; + } + function makeZapRequest({ + profile, + event, + amount, + relays, + comment = "" + }) { + if (!amount) + throw new Error("amount not given"); + if (!profile) + throw new Error("profile not given"); + let zr = { + kind: 9734, + created_at: Math.round(Date.now() / 1e3), + content: comment, + tags: [ + ["p", profile], + ["amount", amount.toString()], + ["relays", ...relays] + ] + }; + if (event) { + zr.tags.push(["e", event]); + } + return zr; + } + function validateZapRequest(zapRequestString) { + let zapRequest; + try { + zapRequest = JSON.parse(zapRequestString); + } catch (err) { + return "Invalid zap request JSON."; + } + if (!validateEvent(zapRequest)) + return "Zap request is not a valid Nostr event."; + if (!verifySignature(zapRequest)) + return "Invalid signature on zap request."; + let p = zapRequest.tags.find(([t, v]) => t === "p" && v); + if (!p) + return "Zap request doesn't have a 'p' tag."; + if (!p[1].match(/^[a-f0-9]{64}$/)) + return "Zap request 'p' tag is not valid hex."; + let e = zapRequest.tags.find(([t, v]) => t === "e" && v); + if (e && !e[1].match(/^[a-f0-9]{64}$/)) + return "Zap request 'e' tag is not valid hex."; + let relays = zapRequest.tags.find(([t, v]) => t === "relays" && v); + if (!relays) + return "Zap request doesn't have a 'relays' tag."; + return null; + } + function makeZapReceipt({ + zapRequest, + preimage, + bolt11, + paidAt + }) { + let zr = JSON.parse(zapRequest); + let tagsFromZapRequest = zr.tags.filter( + ([t]) => t === "e" || t === "p" || t === "a" + ); + let zap = { + kind: 9735, + created_at: Math.round(paidAt.getTime() / 1e3), + content: "", + tags: [ + ...tagsFromZapRequest, + ["bolt11", bolt11], + ["description", zapRequest] + ] + }; + if (preimage) { + zap.tags.push(["preimage", preimage]); + } + return zap; + } + + // nip98.ts + var nip98_exports = {}; + __export(nip98_exports, { + getToken: () => getToken, + validateToken: () => validateToken + }); + init_define_process(); + var _authorizationScheme = "Nostr "; + async function getToken(loginUrl, httpMethod, sign, includeAuthorizationScheme = false) { + if (!loginUrl || !httpMethod) + throw new Error("Missing loginUrl or httpMethod"); + if (httpMethod !== "get" /* Get */ && httpMethod !== "post" /* Post */) + throw new Error("Unknown httpMethod"); + const event = getBlankEvent(27235 /* HttpAuth */); + event.tags = [ + ["u", loginUrl], + ["method", httpMethod] + ]; + event.created_at = Math.round(new Date().getTime() / 1e3); + const signedEvent = await sign(event); + const authorizationScheme = includeAuthorizationScheme ? _authorizationScheme : ""; + return authorizationScheme + base64.encode(utf8Encoder.encode(JSON.stringify(signedEvent))); + } + async function validateToken(token, url, method) { + if (!token) { + throw new Error("Missing token"); + } + token = token.replace(_authorizationScheme, ""); + const eventB64 = utf8Decoder.decode(base64.decode(token)); + if (!eventB64 || eventB64.length === 0 || !eventB64.startsWith("{")) { + throw new Error("Invalid token"); + } + const event = JSON.parse(eventB64); + if (!event) { + throw new Error("Invalid nostr event"); + } + if (!verifySignature(event)) { + throw new Error("Invalid nostr event, signature invalid"); + } + if (event.kind !== 27235 /* HttpAuth */) { + throw new Error("Invalid nostr event, kind invalid"); + } + if (!event.created_at) { + throw new Error("Invalid nostr event, created_at invalid"); + } + if (Math.round(new Date().getTime() / 1e3) - event.created_at > 60) { + throw new Error("Invalid nostr event, expired"); + } + const urlTag = event.tags.find((t) => t[0] === "u"); + if (urlTag?.length !== 1 && urlTag?.[1] !== url) { + throw new Error("Invalid nostr event, url tag invalid"); + } + const methodTag = event.tags.find((t) => t[0] === "method"); + if (methodTag?.length !== 1 && methodTag?.[1].toLowerCase() !== method.toLowerCase()) { + throw new Error("Invalid nostr event, method tag invalid"); + } + return true; + } + return __toCommonJS(nostr_tools_exports); +})(); diff --git a/static/market/assets/ErrorNotFound.db627eb7.js b/static/market/assets/ErrorNotFound.db627eb7.js new file mode 100644 index 0000000..c3e2dc2 --- /dev/null +++ b/static/market/assets/ErrorNotFound.db627eb7.js @@ -0,0 +1 @@ +import{_ as t,y as o,A as s,aU as a,D as e,E as n,aQ as r}from"./index.725caa24.js";const c=o({name:"ErrorNotFound"}),l={class:"fullscreen bg-blue text-white text-center q-pa-md flex flex-center"},d=e("div",{style:{"font-size":"30vh"}}," 404 ",-1),i=e("div",{class:"text-h2",style:{opacity:".4"}}," Oops. Nothing here... ",-1);function _(p,f,u,h,x,m){return s(),a("div",l,[e("div",null,[d,i,n(r,{class:"q-mt-xl",color:"white","text-color":"blue",unelevated:"",to:"/",label:"Go Home","no-caps":""})])])}var N=t(c,[["render",_]]);export{N as default}; diff --git a/static/market/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff b/static/market/assets/KFOkCnqEu92Fr1MmgVxIIzQ.34e9582c.woff new file mode 100644 index 0000000000000000000000000000000000000000..a815cf86dfffe53d84f9522397adcd6c3eec46ee GIT binary patch literal 20436 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 CL5i0E literal 0 HcmV?d00001 diff --git a/static/market/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff b/static/market/assets/KFOlCnqEu92Fr1MmSU5fBBc-.bf14c7d7.woff new file mode 100644 index 0000000000000000000000000000000000000000..36979aeeff6ae17c15e6b0e81080d75fc46dff27 GIT binary patch literal 20416 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 pPeMS3_r!&SPf^YZw?90vQ+> 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 literal 0 HcmV?d00001 diff --git a/static/market/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff b/static/market/assets/KFOlCnqEu92Fr1MmYUtfBBc-.f6537e32.woff new file mode 100644 index 0000000000000000000000000000000000000000..04cbe949a4f1357f2aae25a16aa185f9592fd736 GIT binary patch literal 20424 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 ZM0t%SIf*9qGqP(FlFx8lIUi8L005KJJbeHF literal 0 HcmV?d00001 diff --git a/static/market/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff b/static/market/assets/KFOmCnqEu92Fr1Mu4mxM.f2abf7fb.woff new file mode 100644 index 0000000000000000000000000000000000000000..9eaa94f9bfdf6a4c7bb191be56f78d0935e3184c GIT binary patch literal 20344 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 literal 0 HcmV?d00001 diff --git a/static/market/assets/MainLayout.421c5479.js b/static/market/assets/MainLayout.421c5479.js new file mode 100644 index 0000000..6ac98a9 --- /dev/null +++ b/static/market/assets/MainLayout.421c5479.js @@ -0,0 +1 @@ +import{c as q,i as j,e as C,l as O,p as W,a as u,h as d,b as k,g as P,d as A,w as T,o as D,f as K,n as U,j as I,k as G,m as J,q as X,r as p,s as Y,t as L,u as _,v as Z,x as ee,_ as te,y as oe,z as ne,A as le,B as ie,C as B,D as x,E}from"./index.725caa24.js";import{Q as F}from"./QResizeObserver.bcb70109.js";var ae=q({name:"QPageContainer",setup(e,{slots:h}){const{proxy:{$q:n}}=P(),o=j(O,C);if(o===C)return console.error("QPageContainer needs to be child of QLayout"),C;W(A,!0);const i=u(()=>{const a={};return o.header.space===!0&&(a.paddingTop=`${o.header.size}px`),o.right.space===!0&&(a[`padding${n.lang.rtl===!0?"Left":"Right"}`]=`${o.right.size}px`),o.footer.space===!0&&(a.paddingBottom=`${o.footer.size}px`),o.left.space===!0&&(a[`padding${n.lang.rtl===!0?"Right":"Left"}`]=`${o.left.size}px`),a});return()=>d("div",{class:"q-page-container",style:i.value},k(h.default))}});const{passive:M}=G,re=["both","horizontal","vertical"];var se=q({name:"QScrollObserver",props:{axis:{type:String,validator:e=>re.includes(e),default:"vertical"},debounce:[String,Number],scrollTarget:{default:void 0}},emits:["scroll"],setup(e,{emit:h}){const n={position:{top:0,left:0},direction:"down",directionChanged:!1,delta:{top:0,left:0},inflectionPoint:{top:0,left:0}};let o=null,i,a;T(()=>e.scrollTarget,()=>{f(),y()});function c(){o!==null&&o();const g=Math.max(0,J(i)),m=X(i),s={top:g-n.position.top,left:m-n.position.left};if(e.axis==="vertical"&&s.top===0||e.axis==="horizontal"&&s.left===0)return;const S=Math.abs(s.top)>=Math.abs(s.left)?s.top<0?"up":"down":s.left<0?"left":"right";n.position={top:g,left:m},n.directionChanged=n.direction!==S,n.delta=s,n.directionChanged===!0&&(n.direction=S,n.inflectionPoint=n.position),h("scroll",{...n})}function y(){i=I(a,e.scrollTarget),i.addEventListener("scroll",r,M),r(!0)}function f(){i!==void 0&&(i.removeEventListener("scroll",r,M),i=void 0)}function r(g){if(g===!0||e.debounce===0||e.debounce==="0")c();else if(o===null){const[m,s]=e.debounce?[setTimeout(c,e.debounce),clearTimeout]:[requestAnimationFrame(c),cancelAnimationFrame];o=()=>{s(m),o=null}}}const{proxy:b}=P();return T(()=>b.$q.lang.rtl,c),D(()=>{a=b.$el.parentNode,y()}),K(()=>{o!==null&&o(),f()}),Object.assign(b,{trigger:r,getPosition:()=>n}),U}}),ce=q({name:"QLayout",props:{container:Boolean,view:{type:String,default:"hhh lpr fff",validator:e=>/^(h|l)h(h|r) lpr (f|l)f(f|r)$/.test(e.toLowerCase())},onScroll:Function,onScrollHeight:Function,onResize:Function},setup(e,{slots:h,emit:n}){const{proxy:{$q:o}}=P(),i=p(null),a=p(o.screen.height),c=p(e.container===!0?0:o.screen.width),y=p({position:0,direction:"down",inflectionPoint:0}),f=p(0),r=p(Y.value===!0?0:L()),b=u(()=>"q-layout q-layout--"+(e.container===!0?"containerized":"standard")),g=u(()=>e.container===!1?{minHeight:o.screen.height+"px"}:null),m=u(()=>r.value!==0?{[o.lang.rtl===!0?"left":"right"]:`${r.value}px`}:null),s=u(()=>r.value!==0?{[o.lang.rtl===!0?"right":"left"]:0,[o.lang.rtl===!0?"left":"right"]:`-${r.value}px`,width:`calc(100% + ${r.value}px)`}:null);function S(t){if(e.container===!0||document.qScrollPrevented!==!0){const l={position:t.position.top,direction:t.direction,directionChanged:t.directionChanged,inflectionPoint:t.inflectionPoint.top,delta:t.delta.top};y.value=l,e.onScroll!==void 0&&n("scroll",l)}}function N(t){const{height:l,width:v}=t;let w=!1;a.value!==l&&(w=!0,a.value=l,e.onScrollHeight!==void 0&&n("scrollHeight",l),R()),c.value!==v&&(w=!0,c.value=v),w===!0&&e.onResize!==void 0&&n("resize",t)}function V({height:t}){f.value!==t&&(f.value=t,R())}function R(){if(e.container===!0){const t=a.value>f.value?L():0;r.value!==t&&(r.value=t)}}let z=null;const H={instances:{},view:u(()=>e.view),isContainer:u(()=>e.container),rootRef:i,height:a,containerHeight:f,scrollbarWidth:r,totalWidth:u(()=>c.value+r.value),rows:u(()=>{const t=e.view.toLowerCase().split(" ");return{top:t[0].split(""),middle:t[1].split(""),bottom:t[2].split("")}}),header:_({size:0,offset:0,space:!1}),right:_({size:300,offset:0,space:!1}),footer:_({size:0,offset:0,space:!1}),left:_({size:300,offset:0,space:!1}),scroll:y,animate(){z!==null?clearTimeout(z):document.body.classList.add("q-body--layout-animate"),z=setTimeout(()=>{z=null,document.body.classList.remove("q-body--layout-animate")},155)},update(t,l,v){H[t][l]=v}};if(W(O,H),L()>0){let v=function(){t=null,l.classList.remove("hide-scrollbar")},w=function(){if(t===null){if(l.scrollHeight>o.screen.height)return;l.classList.add("hide-scrollbar")}else clearTimeout(t);t=setTimeout(v,300)},$=function(Q){t!==null&&Q==="remove"&&(clearTimeout(t),v()),window[`${Q}EventListener`]("resize",w)},t=null;const l=document.body;T(()=>e.container!==!0?"add":"remove",$),e.container!==!0&&$("add"),Z(()=>{$("remove")})}return()=>{const t=ee(h.default,[d(se,{onScroll:S}),d(F,{onResize:N})]),l=d("div",{class:b.value,style:g.value,ref:e.container===!0?void 0:i,tabindex:-1},t);return e.container===!0?d("div",{class:"q-layout-container overflow-hidden",ref:i},[d(F,{onResize:V}),d("div",{class:"absolute-full",style:m.value},[d("div",{class:"scroll",style:s.value},[l])])]):l}}});const ue=oe({name:"MainLayout",setup(){return{}}}),de={class:"row q-mb-sm q-mt-md"},fe=x("div",{class:"col-lg-2 col-md-1 col-sm-0"},null,-1),ve={class:"col-lg-8 col-md-10 col-sm-12 auto-width q-ml-md q-mr-md"},he=x("div",{class:"col-lg-2 col-md-1 col-sm-0"},null,-1);function ge(e,h,n,o,i,a){const c=ne("router-view");return le(),ie(ce,{view:"lHh Lpr lFf"},{default:B(()=>[x("div",de,[fe,x("div",ve,[E(ae,null,{default:B(()=>[E(c)]),_:1})]),he])]),_:1})}var ye=te(ue,[["render",ge]]);export{ye as default}; diff --git a/static/market/assets/MarketPage.2aa781b5.js b/static/market/assets/MarketPage.2aa781b5.js new file mode 100644 index 0000000..5d63629 --- /dev/null +++ b/static/market/assets/MarketPage.2aa781b5.js @@ -0,0 +1,18 @@ +import{c as Se,a as k,h as _,b as Ee,x as Ln,P as as,r as Q,G as ta,H as zn,F as dt,I as jt,w as de,o as fn,f as Ke,g as Fe,J as Mn,k as xn,K as Il,L as Sn,t as is,M as Ri,N as Bi,O as Vi,Q as Wn,R as pa,S as no,T as Fi,U as ao,j as Ea,V as na,W as We,X as Vt,Y as ls,Z as Ft,$ as os,a0 as Yi,a1 as je,a2 as rs,a3 as io,n as lo,a4 as oo,a5 as Ui,a6 as Na,a7 as La,a8 as ss,a9 as us,aa as ro,ab as Ra,ac as so,ad as cs,ae as ds,af as uo,ag as co,i as ba,e as Et,l as fs,d as hs,ah as fo,ai as ms,aj as gs,ak as vs,y as ot,al as ho,am as dn,an as mo,ao as kn,ap as _a,p as ys,aq as ps,ar as ii,as as wi,at as bs,au as Hi,av as go,aw as vo,ax as yo,ay as _s,az as ws,aA as Al,aB as Ss,aC as ks,aD as Cs,aE as Ts,aF as Ms,aG as qs,aH as Ol,aI as Ps,aJ as Ds,aK as $s,aL as on,aM as Si,_ as _t,A as S,B as j,C as f,E as c,D as m,aN as we,aO as Ae,aP as vt,aQ as ee,aR as fe,aS as Xe,aT as ki,aU as V,aV as at,aW as et,aX as po,aY as lt,aZ as oe,a_ as W,a$ as xs,b0 as In,b1 as bo,b2 as Is,b3 as As,b4 as ca,m as li,b5 as oi,b6 as El,z as Ci,b7 as _o,b8 as Os,b9 as Es,ba as Ns,bb as Nl,bc as Ls,bd as Rs,be as Bs,bf as Vs}from"./index.725caa24.js";import{Q as Fs}from"./QResizeObserver.bcb70109.js";var ri=Se({name:"QToolbar",props:{inset:Boolean},setup(e,{slots:t}){const n=k(()=>"q-toolbar row no-wrap items-center"+(e.inset===!0?" q-toolbar--inset":""));return()=>_("div",{class:n.value,role:"toolbar"},Ee(t.default))}});const Ys=["top","middle","bottom"];var rn=Se({name:"QBadge",props:{color:String,textColor:String,floating:Boolean,transparent:Boolean,multiLine:Boolean,outline:Boolean,rounded:Boolean,label:[Number,String],align:{type:String,validator:e=>Ys.includes(e)}},setup(e,{slots:t}){const n=k(()=>e.align!==void 0?{verticalAlign:e.align}:null),a=k(()=>{const i=e.outline===!0&&e.color||e.textColor;return`q-badge flex inline items-center no-wrap q-badge--${e.multiLine===!0?"multi":"single"}-line`+(e.outline===!0?" q-badge--outline":e.color!==void 0?` bg-${e.color}`:"")+(i!==void 0?` text-${i}`:"")+(e.floating===!0?" q-badge--floating":"")+(e.rounded===!0?" q-badge--rounded":"")+(e.transparent===!0?" q-badge--transparent":"")});return()=>_("div",{class:a.value,style:n.value,role:"status","aria-label":e.label},Ln(t.default,e.label!==void 0?[e.label]:[]))}});function wa(){if(window.getSelection!==void 0){const e=window.getSelection();e.empty!==void 0?e.empty():e.removeAllRanges!==void 0&&(e.removeAllRanges(),as.is.mobile!==!0&&e.addRange(document.createRange()))}else document.selection!==void 0&&document.selection.empty()}const wo={target:{default:!0},noParentEvent:Boolean,contextMenu:Boolean};function So({showing:e,avoidEmit:t,configureAnchorEl:n}){const{props:a,proxy:i,emit:l}=Fe(),o=Q(null);let r=null;function s(g){return o.value===null?!1:g===void 0||g.touches===void 0||g.touches.length<=1}const u={};n===void 0&&(Object.assign(u,{hide(g){i.hide(g)},toggle(g){i.toggle(g),g.qAnchorHandled=!0},toggleKey(g){ta(g,13)===!0&&u.toggle(g)},contextClick(g){i.hide(g),zn(g),dt(()=>{i.show(g),g.qAnchorHandled=!0})},prevent:zn,mobileTouch(g){if(u.mobileCleanup(g),s(g)!==!0)return;i.hide(g),o.value.classList.add("non-selectable");const C=g.target;jt(u,"anchor",[[C,"touchmove","mobileCleanup","passive"],[C,"touchend","mobileCleanup","passive"],[C,"touchcancel","mobileCleanup","passive"],[o.value,"contextmenu","prevent","notPassive"]]),r=setTimeout(()=>{r=null,i.show(g),g.qAnchorHandled=!0},300)},mobileCleanup(g){o.value.classList.remove("non-selectable"),r!==null&&(clearTimeout(r),r=null),e.value===!0&&g!==void 0&&wa()}}),n=function(g=a.contextMenu){if(a.noParentEvent===!0||o.value===null)return;let C;g===!0?i.$q.platform.is.mobile===!0?C=[[o.value,"touchstart","mobileTouch","passive"]]:C=[[o.value,"mousedown","hide","passive"],[o.value,"contextmenu","contextClick","notPassive"]]:C=[[o.value,"click","toggle","passive"],[o.value,"keyup","toggleKey","passive"]],jt(u,"anchor",C)});function d(){Mn(u,"anchor")}function v(g){for(o.value=g;o.value.classList.contains("q-anchor--skip");)o.value=o.value.parentNode;n()}function y(){if(a.target===!1||a.target===""||i.$el.parentNode===null)o.value=null;else if(a.target===!0)v(i.$el.parentNode);else{let g=a.target;if(typeof a.target=="string")try{g=document.querySelector(a.target)}catch{g=void 0}g!=null?(o.value=g.$el||g,n()):(o.value=null,console.error(`Anchor: target "${a.target}" not found`))}}return de(()=>a.contextMenu,g=>{o.value!==null&&(d(),n(g))}),de(()=>a.target,()=>{o.value!==null&&d(),y()}),de(()=>a.noParentEvent,g=>{o.value!==null&&(g===!0?d():n())}),fn(()=>{y(),t!==!0&&a.modelValue===!0&&o.value===null&&l("update:modelValue",!1)}),Ke(()=>{r!==null&&clearTimeout(r),d()}),{anchorEl:o,canShow:s,anchorEvents:u}}function ko(e,t){const n=Q(null);let a;function i(r,s){const u=`${s!==void 0?"add":"remove"}EventListener`,d=s!==void 0?s:a;r!==window&&r[u]("scroll",d,xn.passive),window[u]("scroll",d,xn.passive),a=s}function l(){n.value!==null&&(i(n.value),n.value=null)}const o=de(()=>e.noParentEvent,()=>{n.value!==null&&(l(),t())});return Ke(o),{localScrollTarget:n,unconfigureScrollTarget:l,changeScrollEvent:i}}const{notPassiveCapture:Sa}=xn,un=[];function ka(e){const t=e.target;if(t===void 0||t.nodeType===8||t.classList.contains("no-pointer-events")===!0)return;let n=Il.length-1;for(;n>=0;){const a=Il[n].$;if(a.type.name==="QTooltip"){n--;continue}if(a.type.name!=="QDialog")break;if(a.props.seamless!==!0)return;n--}for(let a=un.length-1;a>=0;a--){const i=un[a];if((i.anchorEl.value===null||i.anchorEl.value.contains(t)===!1)&&(t===document.body||i.innerRef.value!==null&&i.innerRef.value.contains(t)===!1))e.qClickOutside=!0,i.onClickOutside(e);else return}}function Co(e){un.push(e),un.length===1&&(document.addEventListener("mousedown",ka,Sa),document.addEventListener("touchstart",ka,Sa))}function Ca(e){const t=un.findIndex(n=>n===e);t>-1&&(un.splice(t,1),un.length===0&&(document.removeEventListener("mousedown",ka,Sa),document.removeEventListener("touchstart",ka,Sa)))}let Ll,Rl;function Ta(e){const t=e.split(" ");return t.length!==2?!1:["top","center","bottom"].includes(t[0])!==!0?(console.error("Anchor/Self position must start with one of top/center/bottom"),!1):["left","middle","right","start","end"].includes(t[1])!==!0?(console.error("Anchor/Self position must end with one of left/middle/right/start/end"),!1):!0}function To(e){return e?!(e.length!==2||typeof e[0]!="number"||typeof e[1]!="number"):!0}const Ti={"start#ltr":"left","start#rtl":"right","end#ltr":"right","end#rtl":"left"};["left","middle","right"].forEach(e=>{Ti[`${e}#ltr`]=e,Ti[`${e}#rtl`]=e});function Ma(e,t){const n=e.split(" ");return{vertical:n[0],horizontal:Ti[`${n[1]}#${t===!0?"rtl":"ltr"}`]}}function Us(e,t){let{top:n,left:a,right:i,bottom:l,width:o,height:r}=e.getBoundingClientRect();return t!==void 0&&(n-=t[1],a-=t[0],l+=t[1],i+=t[0],o+=t[0],r+=t[1]),{top:n,bottom:l,height:r,left:a,right:i,width:o,middle:a+(i-a)/2,center:n+(l-n)/2}}function Hs(e,t,n){let{top:a,left:i}=e.getBoundingClientRect();return a+=t.top,i+=t.left,n!==void 0&&(a+=n[1],i+=n[0]),{top:a,bottom:a+1,height:1,left:i,right:i+1,width:1,middle:i,center:a}}function zs(e,t){return{top:0,center:t/2,bottom:t,left:0,middle:e/2,right:e}}function Bl(e,t,n,a){return{top:e[n.vertical]-t[a.vertical],left:e[n.horizontal]-t[a.horizontal]}}function zi(e,t=0){if(e.targetEl===null||e.anchorEl===null||t>5)return;if(e.targetEl.offsetHeight===0||e.targetEl.offsetWidth===0){setTimeout(()=>{zi(e,t+1)},10);return}const{targetEl:n,offset:a,anchorEl:i,anchorOrigin:l,selfOrigin:o,absoluteOffset:r,fit:s,cover:u,maxHeight:d,maxWidth:v}=e;if(Sn.is.ios===!0&&window.visualViewport!==void 0){const B=document.body.style,{offsetLeft:x,offsetTop:$}=window.visualViewport;x!==Ll&&(B.setProperty("--q-pe-left",x+"px"),Ll=x),$!==Rl&&(B.setProperty("--q-pe-top",$+"px"),Rl=$)}const{scrollLeft:y,scrollTop:g}=n,C=r===void 0?Us(i,u===!0?[0,0]:a):Hs(i,r,a);Object.assign(n.style,{top:0,left:0,minWidth:null,minHeight:null,maxWidth:v||"100vw",maxHeight:d||"100vh",visibility:"visible"});const{offsetWidth:w,offsetHeight:T}=n,{elWidth:q,elHeight:P}=s===!0||u===!0?{elWidth:Math.max(C.width,w),elHeight:u===!0?Math.max(C.height,T):T}:{elWidth:w,elHeight:T};let p={maxWidth:v,maxHeight:d};(s===!0||u===!0)&&(p.minWidth=C.width+"px",u===!0&&(p.minHeight=C.height+"px")),Object.assign(n.style,p);const b=zs(q,P);let M=Bl(C,b,l,o);if(r===void 0||a===void 0)si(M,C,b,l,o);else{const{top:B,left:x}=M;si(M,C,b,l,o);let $=!1;if(M.top!==B){$=!0;const G=2*a[1];C.center=C.top-=G,C.bottom-=G+2}if(M.left!==x){$=!0;const G=2*a[0];C.middle=C.left-=G,C.right-=G+2}$===!0&&(M=Bl(C,b,l,o),si(M,C,b,l,o))}p={top:M.top+"px",left:M.left+"px"},M.maxHeight!==void 0&&(p.maxHeight=M.maxHeight+"px",C.height>M.maxHeight&&(p.minHeight=p.maxHeight)),M.maxWidth!==void 0&&(p.maxWidth=M.maxWidth+"px",C.width>M.maxWidth&&(p.minWidth=p.maxWidth)),Object.assign(n.style,p),n.scrollTop!==g&&(n.scrollTop=g),n.scrollLeft!==y&&(n.scrollLeft=y)}function si(e,t,n,a,i){const l=n.bottom,o=n.right,r=is(),s=window.innerHeight-r,u=document.body.clientWidth;if(e.top<0||e.top+l>s)if(i.vertical==="center")e.top=t[a.vertical]>s/2?Math.max(0,s-l):0,e.maxHeight=Math.min(l,s);else if(t[a.vertical]>s/2){const d=Math.min(s,a.vertical==="center"?t.center:a.vertical===i.vertical?t.bottom:t.top);e.maxHeight=Math.min(l,d),e.top=Math.max(0,d-l)}else e.top=Math.max(0,a.vertical==="center"?t.center:a.vertical===i.vertical?t.top:t.bottom),e.maxHeight=Math.min(l,s-e.top);if(e.left<0||e.left+o>u)if(e.maxWidth=Math.min(o,u),i.horizontal==="middle")e.left=t[a.horizontal]>u/2?Math.max(0,u-o):0;else if(t[a.horizontal]>u/2){const d=Math.min(u,a.horizontal==="middle"?t.middle:a.horizontal===i.horizontal?t.right:t.left);e.maxWidth=Math.min(o,d),e.left=Math.max(0,d-e.maxWidth)}else e.left=Math.max(0,a.horizontal==="middle"?t.middle:a.horizontal===i.horizontal?t.left:t.right),e.maxWidth=Math.min(o,u-e.left)}var Tt=Se({name:"QTooltip",inheritAttrs:!1,props:{...wo,...Ri,...Bi,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null},transitionShow:{default:"jump-down"},transitionHide:{default:"jump-up"},anchor:{type:String,default:"bottom middle",validator:Ta},self:{type:String,default:"top middle",validator:Ta},offset:{type:Array,default:()=>[14,14],validator:To},scrollTarget:{default:void 0},delay:{type:Number,default:0},hideDelay:{type:Number,default:0}},emits:[...Vi],setup(e,{slots:t,emit:n,attrs:a}){let i,l;const o=Fe(),{proxy:{$q:r}}=o,s=Q(null),u=Q(!1),d=k(()=>Ma(e.anchor,r.lang.rtl)),v=k(()=>Ma(e.self,r.lang.rtl)),y=k(()=>e.persistent!==!0),{registerTick:g,removeTick:C}=Wn(),{registerTimeout:w}=pa(),{transitionProps:T,transitionStyle:q}=no(e),{localScrollTarget:P,changeScrollEvent:p,unconfigureScrollTarget:b}=ko(e,N),{anchorEl:M,canShow:B,anchorEvents:x}=So({showing:u,configureAnchorEl:Be}),{show:$,hide:G}=Fi({showing:u,canShow:B,handleShow:E,handleHide:le,hideOnRouteChange:y,processOnMount:!0});Object.assign(x,{delayShow:J,delayHide:qe});const{showPortal:Z,hidePortal:ce,renderPortal:$e}=ao(o,s,H,"tooltip");if(r.platform.is.mobile===!0){const U={anchorEl:M,innerRef:s,onClickOutside(be){return G(be),be.target.classList.contains("q-dialog__backdrop")&&We(be),!0}},me=k(()=>e.modelValue===null&&e.persistent!==!0&&u.value===!0);de(me,be=>{(be===!0?Co:Ca)(U)}),Ke(()=>{Ca(U)})}function E(U){Z(),g(()=>{l=new MutationObserver(()=>ke()),l.observe(s.value,{attributes:!1,childList:!0,characterData:!0,subtree:!0}),ke(),N()}),i===void 0&&(i=de(()=>r.screen.width+"|"+r.screen.height+"|"+e.self+"|"+e.anchor+"|"+r.lang.rtl,ke)),w(()=>{Z(!0),n("show",U)},e.transitionDuration)}function le(U){C(),ce(),ve(),w(()=>{ce(!0),n("hide",U)},e.transitionDuration)}function ve(){l!==void 0&&(l.disconnect(),l=void 0),i!==void 0&&(i(),i=void 0),b(),Mn(x,"tooltipTemp")}function ke(){zi({targetEl:s.value,offset:e.offset,anchorEl:M.value,anchorOrigin:d.value,selfOrigin:v.value,maxHeight:e.maxHeight,maxWidth:e.maxWidth})}function J(U){if(r.platform.is.mobile===!0){wa(),document.body.classList.add("non-selectable");const me=M.value,be=["touchmove","touchcancel","touchend","click"].map(X=>[me,X,"delayHide","passiveCapture"]);jt(x,"tooltipTemp",be)}w(()=>{$(U)},e.delay)}function qe(U){r.platform.is.mobile===!0&&(Mn(x,"tooltipTemp"),wa(),setTimeout(()=>{document.body.classList.remove("non-selectable")},10)),w(()=>{G(U)},e.hideDelay)}function Be(){if(e.noParentEvent===!0||M.value===null)return;const U=r.platform.is.mobile===!0?[[M.value,"touchstart","delayShow","passive"]]:[[M.value,"mouseenter","delayShow","passive"],[M.value,"mouseleave","delayHide","passive"]];jt(x,"anchor",U)}function N(){if(M.value!==null||e.scrollTarget!==void 0){P.value=Ea(M.value,e.scrollTarget);const U=e.noParentEvent===!0?ke:G;p(P.value,U)}}function A(){return u.value===!0?_("div",{...a,ref:s,class:["q-tooltip q-tooltip--style q-position-engine no-pointer-events",a.class],style:[a.style,q.value],role:"tooltip"},Ee(t.default)):null}function H(){return _(na,T.value,A)}return Ke(ve),Object.assign(o.proxy,{updatePosition:ke}),$e}});const Ws={xs:8,sm:10,md:14,lg:20,xl:24};var aa=Se({name:"QChip",props:{...Vt,...ls,dense:Boolean,icon:String,iconRight:String,iconRemove:String,iconSelected:String,label:[String,Number],color:String,textColor:String,modelValue:{type:Boolean,default:!0},selected:{type:Boolean,default:null},square:Boolean,outline:Boolean,clickable:Boolean,removable:Boolean,removeAriaLabel:String,tabindex:[String,Number],disable:Boolean,ripple:{type:[Boolean,Object],default:!0}},emits:["update:modelValue","update:selected","remove","click"],setup(e,{slots:t,emit:n}){const{proxy:{$q:a}}=Fe(),i=Ft(e,a),l=os(e,Ws),o=k(()=>e.selected===!0||e.icon!==void 0),r=k(()=>e.selected===!0?e.iconSelected||a.iconSet.chip.selected:e.icon),s=k(()=>e.iconRemove||a.iconSet.chip.remove),u=k(()=>e.disable===!1&&(e.clickable===!0||e.selected!==null)),d=k(()=>{const T=e.outline===!0&&e.color||e.textColor;return"q-chip row inline no-wrap items-center"+(e.outline===!1&&e.color!==void 0?` bg-${e.color}`:"")+(T?` text-${T} q-chip--colored`:"")+(e.disable===!0?" disabled":"")+(e.dense===!0?" q-chip--dense":"")+(e.outline===!0?" q-chip--outline":"")+(e.selected===!0?" q-chip--selected":"")+(u.value===!0?" q-chip--clickable cursor-pointer non-selectable q-hoverable":"")+(e.square===!0?" q-chip--square":"")+(i.value===!0?" q-chip--dark q-dark":"")}),v=k(()=>{const T=e.disable===!0?{tabindex:-1,"aria-disabled":"true"}:{tabindex:e.tabindex||0},q={...T,role:"button","aria-hidden":"false","aria-label":e.removeAriaLabel||a.lang.label.remove};return{chip:T,remove:q}});function y(T){T.keyCode===13&&g(T)}function g(T){e.disable||(n("update:selected",!e.selected),n("click",T))}function C(T){(T.keyCode===void 0||T.keyCode===13)&&(We(T),e.disable===!1&&(n("update:modelValue",!1),n("remove")))}function w(){const T=[];u.value===!0&&T.push(_("div",{class:"q-focus-helper"})),o.value===!0&&T.push(_(je,{class:"q-chip__icon q-chip__icon--left",name:r.value}));const q=e.label!==void 0?[_("div",{class:"ellipsis"},[e.label])]:void 0;return T.push(_("div",{class:"q-chip__content col row no-wrap items-center q-anchor--skip"},rs(t.default,q))),e.iconRight&&T.push(_(je,{class:"q-chip__icon q-chip__icon--right",name:e.iconRight})),e.removable===!0&&T.push(_(je,{class:"q-chip__icon q-chip__icon--remove cursor-pointer",name:s.value,...v.value.remove,onClick:C,onKeyup:C})),T}return()=>{if(e.modelValue===!1)return;const T={class:d.value,style:l.value};return u.value===!0&&Object.assign(T,v.value.chip,{onClick:g,onKeyup:y}),Yi("div",T,w(),"ripple",e.ripple!==!1&&e.disable!==!0,()=>[[io,e.ripple]])}}}),Qt=Se({name:"QList",props:{...Vt,bordered:Boolean,dense:Boolean,separator:Boolean,padding:Boolean,tag:{type:String,default:"div"}},setup(e,{slots:t}){const n=Fe(),a=Ft(e,n.proxy.$q),i=k(()=>"q-list"+(e.bordered===!0?" q-list--bordered":"")+(e.dense===!0?" q-list--dense":"")+(e.separator===!0?" q-list--separator":"")+(a.value===!0?" q-list--dark":"")+(e.padding===!0?" q-list--padding":""));return()=>_(e.tag,{class:i.value},Ee(t.default))}});const js=["horizontal","vertical","cell","none"];var Qs=Se({name:"QMarkupTable",props:{...Vt,dense:Boolean,flat:Boolean,bordered:Boolean,square:Boolean,wrapCells:Boolean,separator:{type:String,default:"horizontal",validator:e=>js.includes(e)}},setup(e,{slots:t}){const n=Fe(),a=Ft(e,n.proxy.$q),i=k(()=>`q-markup-table q-table__container q-table__card q-table--${e.separator}-separator`+(a.value===!0?" q-table--dark q-table__card--dark q-dark":"")+(e.dense===!0?" q-table--dense":"")+(e.flat===!0?" q-table--flat":"")+(e.bordered===!0?" q-table--bordered":"")+(e.square===!0?" q-table--square":"")+(e.wrapCells===!1?" q-table--no-wrap":""));return()=>_("div",{class:i.value},[_("table",{class:"q-table"},Ee(t.default))])}});function Ks(e,t){return _("div",e,[_("table",{class:"q-table"},t)])}let Gn=!1;{const e=document.createElement("div");e.setAttribute("dir","rtl"),Object.assign(e.style,{width:"1px",height:"1px",overflow:"auto"});const t=document.createElement("div");Object.assign(t.style,{width:"1000px",height:"1px"}),document.body.appendChild(e),e.appendChild(t),e.scrollLeft=-1e3,Gn=e.scrollLeft>=0,e.remove()}const gt=1e3,Gs=["start","center","end","start-force","center-force","end-force"],Mo=Array.prototype.filter,Zs=window.getComputedStyle(document.body).overflowAnchor===void 0?lo:function(e,t){e!==null&&(e._qOverflowAnimationFrame!==void 0&&cancelAnimationFrame(e._qOverflowAnimationFrame),e._qOverflowAnimationFrame=requestAnimationFrame(()=>{if(e===null)return;e._qOverflowAnimationFrame=void 0;const n=e.children||[];Mo.call(n,i=>i.dataset&&i.dataset.qVsAnchor!==void 0).forEach(i=>{delete i.dataset.qVsAnchor});const a=n[t];a&&a.dataset&&(a.dataset.qVsAnchor="")}))};function qn(e,t){return e+t}function ui(e,t,n,a,i,l,o,r){const s=e===window?document.scrollingElement||document.documentElement:e,u=i===!0?"offsetWidth":"offsetHeight",d={scrollStart:0,scrollViewSize:-o-r,scrollMaxSize:0,offsetStart:-o,offsetEnd:-r};if(i===!0?(e===window?(d.scrollStart=window.pageXOffset||window.scrollX||document.body.scrollLeft||0,d.scrollViewSize+=document.documentElement.clientWidth):(d.scrollStart=s.scrollLeft,d.scrollViewSize+=s.clientWidth),d.scrollMaxSize=s.scrollWidth,l===!0&&(d.scrollStart=(Gn===!0?d.scrollMaxSize-d.scrollViewSize:0)-d.scrollStart)):(e===window?(d.scrollStart=window.pageYOffset||window.scrollY||document.body.scrollTop||0,d.scrollViewSize+=document.documentElement.clientHeight):(d.scrollStart=s.scrollTop,d.scrollViewSize+=s.clientHeight),d.scrollMaxSize=s.scrollHeight),n!==null)for(let v=n.previousElementSibling;v!==null;v=v.previousElementSibling)v.classList.contains("q-virtual-scroll--skip")===!1&&(d.offsetStart+=v[u]);if(a!==null)for(let v=a.nextElementSibling;v!==null;v=v.nextElementSibling)v.classList.contains("q-virtual-scroll--skip")===!1&&(d.offsetEnd+=v[u]);if(t!==e){const v=s.getBoundingClientRect(),y=t.getBoundingClientRect();i===!0?(d.offsetStart+=y.left-v.left,d.offsetEnd-=y.width):(d.offsetStart+=y.top-v.top,d.offsetEnd-=y.height),e!==window&&(d.offsetStart+=d.scrollStart),d.offsetEnd+=d.scrollMaxSize-d.offsetStart}return d}function Vl(e,t,n,a){t==="end"&&(t=(e===window?document.body:e)[n===!0?"scrollWidth":"scrollHeight"]),e===window?n===!0?(a===!0&&(t=(Gn===!0?document.body.scrollWidth-document.documentElement.clientWidth:0)-t),window.scrollTo(t,window.pageYOffset||window.scrollY||document.body.scrollTop||0)):window.scrollTo(window.pageXOffset||window.scrollX||document.body.scrollLeft||0,t):n===!0?(a===!0&&(t=(Gn===!0?e.scrollWidth-e.offsetWidth:0)-t),e.scrollLeft=t):e.scrollTop=t}function Fn(e,t,n,a){if(n>=a)return 0;const i=t.length,l=Math.floor(n/gt),o=Math.floor((a-1)/gt)+1;let r=e.slice(l,o).reduce(qn,0);return n%gt!==0&&(r-=t.slice(l*gt,n).reduce(qn,0)),a%gt!==0&&a!==i&&(r-=t.slice(a,o*gt).reduce(qn,0)),r}const Js={virtualScrollSliceSize:{type:[Number,String],default:null},virtualScrollSliceRatioBefore:{type:[Number,String],default:1},virtualScrollSliceRatioAfter:{type:[Number,String],default:1},virtualScrollItemSize:{type:[Number,String],default:24},virtualScrollStickySizeStart:{type:[Number,String],default:0},virtualScrollStickySizeEnd:{type:[Number,String],default:0},tableColspan:[Number,String]},qo={virtualScrollHorizontal:Boolean,onVirtualScroll:Function,...Js};function Po({virtualScrollLength:e,getVirtualScrollTarget:t,getVirtualScrollEl:n,virtualScrollItemSizeComputed:a}){const i=Fe(),{props:l,emit:o,proxy:r}=i,{$q:s}=r;let u,d,v,y=[],g;const C=Q(0),w=Q(0),T=Q({}),q=Q(null),P=Q(null),p=Q(null),b=Q({from:0,to:0}),M=k(()=>l.tableColspan!==void 0?l.tableColspan:100);a===void 0&&(a=k(()=>l.virtualScrollItemSize));const B=k(()=>a.value+";"+l.virtualScrollHorizontal),x=k(()=>B.value+";"+l.virtualScrollSliceRatioBefore+";"+l.virtualScrollSliceRatioAfter);de(x,()=>{ke()}),de(B,$);function $(){ve(d,!0)}function G(A){ve(A===void 0?d:A)}function Z(A,H){const U=t();if(U==null||U.nodeType===8)return;const me=ui(U,n(),q.value,P.value,l.virtualScrollHorizontal,s.lang.rtl,l.virtualScrollStickySizeStart,l.virtualScrollStickySizeEnd);v!==me.scrollViewSize&&ke(me.scrollViewSize),$e(U,me,Math.min(e.value-1,Math.max(0,parseInt(A,10)||0)),0,Gs.indexOf(H)>-1?H:d>-1&&A>d?"end":"start")}function ce(){const A=t();if(A==null||A.nodeType===8)return;const H=ui(A,n(),q.value,P.value,l.virtualScrollHorizontal,s.lang.rtl,l.virtualScrollStickySizeStart,l.virtualScrollStickySizeEnd),U=e.value-1,me=H.scrollMaxSize-H.offsetStart-H.offsetEnd-w.value;if(u===H.scrollStart)return;if(H.scrollMaxSize<=0){$e(A,H,0,0);return}v!==H.scrollViewSize&&ke(H.scrollViewSize),E(b.value.from);const be=Math.floor(H.scrollMaxSize-Math.max(H.scrollViewSize,H.offsetEnd)-Math.min(g[U],H.scrollViewSize/2));if(be>0&&Math.ceil(H.scrollStart)>=be){$e(A,H,U,H.scrollMaxSize-H.offsetEnd-y.reduce(qn,0));return}let X=0,te=H.scrollStart-H.offsetStart,Ve=te;if(te<=me&&te+H.scrollViewSize>=C.value)te-=C.value,X=b.value.from,Ve=te;else for(let O=0;te>=y[O]&&X0&&X-H.scrollViewSize?(X++,Ve=te):Ve=g[X]+te;$e(A,H,X,Ve)}function $e(A,H,U,me,be){const X=typeof be=="string"&&be.indexOf("-force")>-1,te=X===!0?be.replace("-force",""):be,Ve=te!==void 0?te:"start";let O=Math.max(0,U-T.value[Ve]),Ne=O+T.value.total;Ne>e.value&&(Ne=e.value,O=Math.max(0,Ne-T.value.total)),u=H.scrollStart;const St=O!==b.value.from||Ne!==b.value.to;if(St===!1&&te===void 0){qe(U);return}const{activeElement:xt}=document,ut=p.value;St===!0&&ut!==null&&ut!==xt&&ut.contains(xt)===!0&&(ut.addEventListener("focusout",le),setTimeout(()=>{ut!==null&&ut.removeEventListener("focusout",le)})),Zs(ut,U-O);const It=te!==void 0?g.slice(O,U).reduce(qn,0):0;if(St===!0){const kt=Ne>=b.value.from&&O<=b.value.to?b.value.to:Ne;b.value={from:O,to:kt},C.value=Fn(y,g,0,O),w.value=Fn(y,g,Ne,e.value),requestAnimationFrame(()=>{b.value.to!==Ne&&u===H.scrollStart&&(b.value={from:b.value.from,to:Ne},w.value=Fn(y,g,Ne,e.value))})}requestAnimationFrame(()=>{if(u!==H.scrollStart)return;St===!0&&E(O);const kt=g.slice(O,U).reduce(qn,0),Ht=kt+H.offsetStart+C.value,mn=Ht+g[U];let zt=Ht+me;if(te!==void 0){const gn=kt-It,He=H.scrollStart+gn;zt=X!==!0&&HeO.classList&&O.classList.contains("q-virtual-scroll--skip")===!1),me=U.length,be=l.virtualScrollHorizontal===!0?O=>O.getBoundingClientRect().width:O=>O.offsetHeight;let X=A,te,Ve;for(let O=0;O=me;X--)g[X]=U;const be=Math.floor((e.value-1)/gt);y=[];for(let X=0;X<=be;X++){let te=0;const Ve=Math.min((X+1)*gt,e.value);for(let O=X*gt;O=0?(E(b.value.from),dt(()=>{Z(A)})):Be()}function ke(A){if(A===void 0&&typeof window!="undefined"){const te=t();te!=null&&te.nodeType!==8&&(A=ui(te,n(),q.value,P.value,l.virtualScrollHorizontal,s.lang.rtl,l.virtualScrollStickySizeStart,l.virtualScrollStickySizeEnd).scrollViewSize)}v=A;const H=parseFloat(l.virtualScrollSliceRatioBefore)||0,U=parseFloat(l.virtualScrollSliceRatioAfter)||0,me=1+H+U,be=A===void 0||A<=0?1:Math.ceil(A/a.value),X=Math.max(1,be,Math.ceil((l.virtualScrollSliceSize>0?l.virtualScrollSliceSize:10)/me));T.value={total:Math.ceil(X*me),start:Math.ceil(X*H),center:Math.ceil(X*(.5+H)),end:Math.ceil(X*(1+H)),view:be}}function J(A,H){const U=l.virtualScrollHorizontal===!0?"width":"height",me={["--q-virtual-scroll-item-"+U]:a.value+"px"};return[A==="tbody"?_(A,{class:"q-virtual-scroll__padding",key:"before",ref:q},[_("tr",[_("td",{style:{[U]:`${C.value}px`,...me},colspan:M.value})])]):_(A,{class:"q-virtual-scroll__padding",key:"before",ref:q,style:{[U]:`${C.value}px`,...me}}),_(A,{class:"q-virtual-scroll__content",key:"content",ref:p,tabindex:-1},H.flat()),A==="tbody"?_(A,{class:"q-virtual-scroll__padding",key:"after",ref:P},[_("tr",[_("td",{style:{[U]:`${w.value}px`,...me},colspan:M.value})])]):_(A,{class:"q-virtual-scroll__padding",key:"after",ref:P,style:{[U]:`${w.value}px`,...me}})]}function qe(A){d!==A&&(l.onVirtualScroll!==void 0&&o("virtualScroll",{index:A,from:b.value.from,to:b.value.to-1,direction:A{ke()});let N=!1;return Na(()=>{N=!0}),La(()=>{if(N!==!0)return;const A=t();u!==void 0&&A!==void 0&&A!==null&&A.nodeType!==8?Vl(A,u,l.virtualScrollHorizontal,s.lang.rtl):Z(d)}),Ke(()=>{Be.cancel()}),Object.assign(r,{scrollTo:Z,reset:$,refresh:G}),{virtualScrollSliceRange:b,virtualScrollSliceSizeComputed:T,setVirtualScrollSize:ke,onVirtualScrollEvt:Be,localResetVirtualScroll:ve,padVirtualScroll:J,scrollTo:Z,reset:$,refresh:G}}const Xs={list:Qt,table:Qs},eu=["list","table","__qtable"];var Wi=Se({name:"QVirtualScroll",props:{...qo,type:{type:String,default:"list",validator:e=>eu.includes(e)},items:{type:Array,default:()=>[]},itemsFn:Function,itemsSize:Number,scrollTarget:{default:void 0}},setup(e,{slots:t,attrs:n}){let a;const i=Q(null),l=k(()=>e.itemsSize>=0&&e.itemsFn!==void 0?parseInt(e.itemsSize,10):Array.isArray(e.items)?e.items.length:0),{virtualScrollSliceRange:o,localResetVirtualScroll:r,padVirtualScroll:s,onVirtualScrollEvt:u}=Po({virtualScrollLength:l,getVirtualScrollTarget:C,getVirtualScrollEl:g}),d=k(()=>{if(l.value===0)return[];const P=(p,b)=>({index:o.value.from+b,item:p});return e.itemsFn===void 0?e.items.slice(o.value.from,o.value.to).map(P):e.itemsFn(o.value.from,o.value.to-o.value.from).map(P)}),v=k(()=>"q-virtual-scroll q-virtual-scroll"+(e.virtualScrollHorizontal===!0?"--horizontal":"--vertical")+(e.scrollTarget!==void 0?"":" scroll")),y=k(()=>e.scrollTarget!==void 0?{}:{tabindex:0});de(l,()=>{r()}),de(()=>e.scrollTarget,()=>{T(),w()});function g(){return i.value.$el||i.value}function C(){return a}function w(){a=Ea(g(),e.scrollTarget),a.addEventListener("scroll",u,xn.passive)}function T(){a!==void 0&&(a.removeEventListener("scroll",u,xn.passive),a=void 0)}function q(){let P=s(e.type==="list"?"div":"tbody",d.value.map(t.default));return t.before!==void 0&&(P=t.before().concat(P)),Ln(t.after,P)}return Ui(()=>{r()}),fn(()=>{w()}),La(()=>{w()}),Na(()=>{T()}),Ke(()=>{T()}),()=>{if(t.default===void 0){console.error("QVirtualScroll: default scoped slot is required for rendering");return}return e.type==="__qtable"?Ks({ref:i,class:"q-table__middle "+v.value},q()):_(Xs[e.type],{...n,ref:i,class:[n.class,v.value],...y.value},q)}}});const tu=[_("circle",{cx:"15",cy:"15",r:"15"},[_("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),_("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})]),_("circle",{cx:"60",cy:"15",r:"9","fill-opacity":".3"},[_("animate",{attributeName:"r",from:"9",to:"9",begin:"0s",dur:"0.8s",values:"9;15;9",calcMode:"linear",repeatCount:"indefinite"}),_("animate",{attributeName:"fill-opacity",from:".5",to:".5",begin:"0s",dur:"0.8s",values:".5;1;.5",calcMode:"linear",repeatCount:"indefinite"})]),_("circle",{cx:"105",cy:"15",r:"15"},[_("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),_("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})])];var Do=Se({name:"QSpinnerDots",props:ss,setup(e){const{cSize:t,classes:n}=us(e);return()=>_("svg",{class:n.value,fill:"currentColor",width:t.value,height:t.value,viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg"},tu)}});const nu={ratio:[String,Number]};function au(e,t){return k(()=>{const n=Number(e.ratio||(t!==void 0?t.value:void 0));return isNaN(n)!==!0&&n>0?{paddingBottom:`${100/n}%`}:null})}const iu=16/9;var ji=Se({name:"QImg",props:{...nu,src:String,srcset:String,sizes:String,alt:String,crossorigin:String,decoding:String,referrerpolicy:String,draggable:Boolean,loading:{type:String,default:"lazy"},fetchpriority:{type:String,default:"auto"},width:String,height:String,initialRatio:{type:[Number,String],default:iu},placeholderSrc:String,fit:{type:String,default:"cover"},position:{type:String,default:"50% 50%"},imgClass:String,imgStyle:Object,noSpinner:Boolean,noNativeMenu:Boolean,noTransition:Boolean,spinnerColor:String,spinnerSize:String},emits:["load","error"],setup(e,{slots:t,emit:n}){const a=Q(e.initialRatio),i=au(e,a);let l=null,o=!1;const r=[Q(null),Q(T())],s=Q(0),u=Q(!1),d=Q(!1),v=k(()=>`q-img q-img--${e.noNativeMenu===!0?"no-":""}menu`),y=k(()=>({width:e.width,height:e.height})),g=k(()=>`q-img__image ${e.imgClass!==void 0?e.imgClass+" ":""}q-img__image--with${e.noTransition===!0?"out":""}-transition`),C=k(()=>({...e.imgStyle,objectFit:e.fit,objectPosition:e.position}));de(()=>w(),q);function w(){return e.src||e.srcset||e.sizes?{src:e.src,srcset:e.srcset,sizes:e.sizes}:null}function T(){return e.placeholderSrc!==void 0?{src:e.placeholderSrc}:null}function q($){l!==null&&(clearTimeout(l),l=null),d.value=!1,$===null?(u.value=!1,r[s.value^1].value=T()):u.value=!0,r[s.value].value=$}function P({target:$}){o!==!0&&(l!==null&&(clearTimeout(l),l=null),a.value=$.naturalHeight===0?.5:$.naturalWidth/$.naturalHeight,p($,1))}function p($,G){o===!0||G===1e3||($.complete===!0?b($):l=setTimeout(()=>{l=null,p($,G+1)},50))}function b($){o!==!0&&(s.value=s.value^1,r[s.value].value=null,u.value=!1,d.value=!1,n("load",$.currentSrc||$.src))}function M($){l!==null&&(clearTimeout(l),l=null),u.value=!1,d.value=!0,r[s.value].value=null,r[s.value^1].value=T(),n("error",$)}function B($){const G=r[$].value,Z={key:"img_"+$,class:g.value,style:C.value,crossorigin:e.crossorigin,decoding:e.decoding,referrerpolicy:e.referrerpolicy,height:e.height,width:e.width,loading:e.loading,fetchpriority:e.fetchpriority,"aria-hidden":"true",draggable:e.draggable,...G};return s.value===$?(Z.class+=" q-img__image--waiting",Object.assign(Z,{onLoad:P,onError:M})):Z.class+=" q-img__image--loaded",_("div",{class:"q-img__container absolute-full",key:"img"+$},_("img",Z))}function x(){return u.value!==!0?_("div",{key:"content",class:"q-img__content absolute-full q-anchor--skip"},Ee(t[d.value===!0?"error":"default"])):_("div",{key:"loading",class:"q-img__loading absolute-full flex flex-center"},t.loading!==void 0?t.loading():e.noSpinner===!0?void 0:[_(ro,{color:e.spinnerColor,size:e.spinnerSize})])}return q(w()),Ke(()=>{o=!0,l!==null&&(clearTimeout(l),l=null)}),()=>{const $=[];return i.value!==null&&$.push(_("div",{key:"filler",style:i.value})),d.value!==!0&&(r[0].value!==null&&$.push(B(0)),r[1].value!==null&&$.push(B(1))),$.push(_(na,{name:"q-transition--fade"},x)),_("div",{class:v.value,style:y.value,role:"img","aria-label":e.alt},$)}}}),lu=Se({name:"QBanner",props:{...Vt,inlineActions:Boolean,dense:Boolean,rounded:Boolean},setup(e,{slots:t}){const{proxy:{$q:n}}=Fe(),a=Ft(e,n),i=k(()=>"q-banner row items-center"+(e.dense===!0?" q-banner--dense":"")+(a.value===!0?" q-banner--dark q-dark":"")+(e.rounded===!0?" rounded-borders":"")),l=k(()=>`q-banner__actions row items-center justify-end col-${e.inlineActions===!0?"auto":"all"}`);return()=>{const o=[_("div",{class:"q-banner__avatar col-auto row items-center self-start"},Ee(t.avatar)),_("div",{class:"q-banner__content col text-body2"},Ee(t.default))],r=Ee(t.action);return r!==void 0&&o.push(_("div",{class:l.value},r)),_("div",{class:i.value+(e.inlineActions===!1&&r!==void 0?" q-banner--top-padding":""),role:"alert"},o)}}}),Wt=Se({name:"QBreadcrumbsEl",props:{...Ra,label:String,icon:String,tag:{type:String,default:"span"}},emits:["click"],setup(e,{slots:t}){const{linkTag:n,linkAttrs:a,linkClass:i,navigateOnClick:l}=so(),o=k(()=>({class:"q-breadcrumbs__el q-link flex inline items-center relative-position "+(e.disable!==!0?"q-link--focusable"+i.value:"q-breadcrumbs__el--disable"),...a.value,onClick:l})),r=k(()=>"q-breadcrumbs__el-icon"+(e.label!==void 0?" q-breadcrumbs__el-icon--with-label":""));return()=>{const s=[];return e.icon!==void 0&&s.push(_(je,{class:r.value,name:e.icon})),e.label!==void 0&&s.push(e.label),_(n.value,{...o.value},Ln(t.default,s))}}});const ou=["",!0];var ru=Se({name:"QBreadcrumbs",props:{...cs,separator:{type:String,default:"/"},separatorColor:String,activeColor:{type:String,default:"primary"},gutter:{type:String,validator:e=>["none","xs","sm","md","lg","xl"].includes(e),default:"sm"}},setup(e,{slots:t}){const n=ds(e),a=k(()=>`flex items-center ${n.value}${e.gutter==="none"?"":` q-gutter-${e.gutter}`}`),i=k(()=>e.separatorColor?` text-${e.separatorColor}`:""),l=k(()=>` text-${e.activeColor}`);return()=>{const o=uo(Ee(t.default));if(o.length===0)return;let r=1;const s=[],u=o.filter(v=>v.type!==void 0&&v.type.name==="QBreadcrumbsEl").length,d=t.separator!==void 0?t.separator:()=>e.separator;return o.forEach(v=>{if(v.type!==void 0&&v.type.name==="QBreadcrumbsEl"){const y=rparseInt(e.lines,10)),a=k(()=>"q-item__label"+(e.overline===!0?" q-item__label--overline text-overline":"")+(e.caption===!0?" q-item__label--caption text-caption":"")+(e.header===!0?" q-item__label--header":"")+(n.value===1?" ellipsis":"")),i=k(()=>e.lines!==void 0&&n.value>1?{overflow:"hidden",display:"-webkit-box","-webkit-box-orient":"vertical","-webkit-line-clamp":n.value}:null);return()=>_("div",{style:i.value,class:a.value},Ee(t.default))}}),ae=Se({name:"QItemSection",props:{avatar:Boolean,thumbnail:Boolean,side:Boolean,top:Boolean,noWrap:Boolean},setup(e,{slots:t}){const n=k(()=>`q-item__section column q-item__section--${e.avatar===!0||e.side===!0||e.thumbnail===!0?"side":"main"}`+(e.top===!0?" q-item__section--top justify-start":" justify-center")+(e.avatar===!0?" q-item__section--avatar":"")+(e.thumbnail===!0?" q-item__section--thumbnail":"")+(e.noWrap===!0?" q-item__section--nowrap":""));return()=>_("div",{class:n.value},Ee(t.default))}}),nt=Se({name:"QItem",props:{...Vt,...Ra,tag:{type:String,default:"div"},active:{type:Boolean,default:null},clickable:Boolean,dense:Boolean,insetLevel:Number,tabindex:[String,Number],focused:Boolean,manualFocus:Boolean},emits:["click","keyup"],setup(e,{slots:t,emit:n}){const{proxy:{$q:a}}=Fe(),i=Ft(e,a),{hasLink:l,linkAttrs:o,linkClass:r,linkTag:s,navigateOnClick:u}=so(),d=Q(null),v=Q(null),y=k(()=>e.clickable===!0||l.value===!0||e.tag==="label"),g=k(()=>e.disable!==!0&&y.value===!0),C=k(()=>"q-item q-item-type row no-wrap"+(e.dense===!0?" q-item--dense":"")+(i.value===!0?" q-item--dark":"")+(l.value===!0&&e.active===null?r.value:e.active===!0?` q-item--active${e.activeClass!==void 0?` ${e.activeClass}`:""}`:"")+(e.disable===!0?" disabled":"")+(g.value===!0?" q-item--clickable q-link cursor-pointer "+(e.manualFocus===!0?"q-manual-focusable":"q-focusable q-hoverable")+(e.focused===!0?" q-manual-focusable--focused":""):"")),w=k(()=>{if(e.insetLevel===void 0)return null;const p=a.lang.rtl===!0?"Right":"Left";return{["padding"+p]:16+e.insetLevel*56+"px"}});function T(p){g.value===!0&&(v.value!==null&&(p.qKeyEvent!==!0&&document.activeElement===d.value?v.value.focus():document.activeElement===v.value&&d.value.focus()),u(p))}function q(p){if(g.value===!0&&ta(p,13)===!0){We(p),p.qKeyEvent=!0;const b=new MouseEvent("click",p);b.qKeyEvent=!0,d.value.dispatchEvent(b)}n("keyup",p)}function P(){const p=co(t.default,[]);return g.value===!0&&p.unshift(_("div",{class:"q-focus-helper",tabindex:-1,ref:v})),p}return()=>{const p={ref:d,class:C.value,style:w.value,role:"listitem",onClick:T,onKeyup:q};return g.value===!0?(p.tabindex=e.tabindex||"0",Object.assign(p,o.value)):y.value===!0&&(p["aria-disabled"]="true"),_(s.value,p,P())}}}),su=Se({name:"QPage",props:{padding:Boolean,styleFn:Function},setup(e,{slots:t}){const{proxy:{$q:n}}=Fe(),a=ba(fs,Et);if(a===Et)return console.error("QPage needs to be a deep child of QLayout"),Et;if(ba(hs,Et)===Et)return console.error("QPage needs to be child of QPageContainer"),Et;const l=k(()=>{const r=(a.header.space===!0?a.header.size:0)+(a.footer.space===!0?a.footer.size:0);if(typeof e.styleFn=="function"){const s=a.isContainer.value===!0?a.containerHeight.value:n.screen.height;return e.styleFn(r,s)}return{minHeight:a.isContainer.value===!0?a.containerHeight.value-r+"px":n.screen.height===0?r!==0?`calc(100vh - ${r}px)`:"100vh":n.screen.height-r+"px"}}),o=k(()=>`q-page${e.padding===!0?" q-layout-padding":""}`);return()=>_("main",{class:o.value,style:l.value},Ee(t.default))}});const uu=_("div",{class:"q-space"});var cu=Se({name:"QSpace",setup(){return()=>uu}});function Fl(e){if(e===!1)return 0;if(e===!0||e===void 0)return 1;const t=parseInt(e,10);return isNaN(t)?0:t}var Mi=fo({name:"close-popup",beforeMount(e,{value:t}){const n={depth:Fl(t),handler(a){n.depth!==0&&setTimeout(()=>{const i=ms(e);i!==void 0&&gs(i,a,n.depth)})},handlerKey(a){ta(a,13)===!0&&n.handler(a)}};e.__qclosepopup=n,e.addEventListener("click",n.handler),e.addEventListener("keyup",n.handlerKey)},updated(e,{value:t,oldValue:n}){t!==n&&(e.__qclosepopup.depth=Fl(t))},beforeUnmount(e){const t=e.__qclosepopup;e.removeEventListener("click",t.handler),e.removeEventListener("keyup",t.handlerKey),delete e.__qclosepopup}});function du(){return ba(vs)}var fu=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},$o={},rt={};let Qi;const hu=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];rt.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};rt.getSymbolTotalCodewords=function(t){return hu[t]};rt.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};rt.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');Qi=t};rt.isKanjiModeEnabled=function(){return typeof Qi!="undefined"};rt.toSJIS=function(t){return Qi(t)};var Ba={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}e.isValid=function(a){return a&&typeof a.bit!="undefined"&&a.bit>=0&&a.bit<4},e.from=function(a,i){if(e.isValid(a))return a;try{return t(a)}catch{return i}}})(Ba);function xo(){this.buffer=[],this.length=0}xo.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let n=0;n>>t-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var mu=xo;function ia(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}ia.prototype.set=function(e,t,n,a){const i=e*this.size+t;this.data[i]=n,a&&(this.reservedBit[i]=!0)};ia.prototype.get=function(e,t){return this.data[e*this.size+t]};ia.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n};ia.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var gu=ia,Io={};(function(e){const t=rt.getSymbolSize;e.getRowColCoords=function(a){if(a===1)return[];const i=Math.floor(a/7)+2,l=t(a),o=l===145?26:Math.ceil((l-13)/(2*i-2))*2,r=[l-7];for(let s=1;s=0&&i<=7},e.from=function(i){return e.isValid(i)?parseInt(i,10):void 0},e.getPenaltyN1=function(i){const l=i.size;let o=0,r=0,s=0,u=null,d=null;for(let v=0;v=5&&(o+=t.N1+(r-5)),u=g,r=1),g=i.get(y,v),g===d?s++:(s>=5&&(o+=t.N1+(s-5)),d=g,s=1)}r>=5&&(o+=t.N1+(r-5)),s>=5&&(o+=t.N1+(s-5))}return o},e.getPenaltyN2=function(i){const l=i.size;let o=0;for(let r=0;r=10&&(r===1488||r===93)&&o++,s=s<<1&2047|i.get(d,u),d>=10&&(s===1488||s===93)&&o++}return o*t.N3},e.getPenaltyN4=function(i){let l=0;const o=i.data.length;for(let s=0;s=0;){const o=l[0];for(let s=0;s0){const l=new Uint8Array(this.degree);return l.set(a,i),l}return a};var yu=Ki,Lo={},Xt={},Gi={};Gi.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var Pt={};const Ro="[0-9]+",pu="[A-Z $%*+\\-./:]+";let Zn="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Zn=Zn.replace(/u/g,"\\u");const bu="(?:(?![A-Z0-9 $%*+\\-./:]|"+Zn+`)(?:.|[\r +]))+`;Pt.KANJI=new RegExp(Zn,"g");Pt.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Pt.BYTE=new RegExp(bu,"g");Pt.NUMERIC=new RegExp(Ro,"g");Pt.ALPHANUMERIC=new RegExp(pu,"g");const _u=new RegExp("^"+Zn+"$"),wu=new RegExp("^"+Ro+"$"),Su=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Pt.testKanji=function(t){return _u.test(t)};Pt.testNumeric=function(t){return wu.test(t)};Pt.testAlphanumeric=function(t){return Su.test(t)};(function(e){const t=Gi,n=Pt;e.NUMERIC={id:"Numeric",bit:1<<0,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:1<<1,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:1<<2,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:1<<3,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(l,o){if(!l.ccBits)throw new Error("Invalid mode: "+l);if(!t.isValid(o))throw new Error("Invalid version: "+o);return o>=1&&o<10?l.ccBits[0]:o<27?l.ccBits[1]:l.ccBits[2]},e.getBestModeForData=function(l){return n.testNumeric(l)?e.NUMERIC:n.testAlphanumeric(l)?e.ALPHANUMERIC:n.testKanji(l)?e.KANJI:e.BYTE},e.toString=function(l){if(l&&l.id)return l.id;throw new Error("Invalid mode")},e.isValid=function(l){return l&&l.bit&&l.ccBits};function a(i){if(typeof i!="string")throw new Error("Param is not a string");switch(i.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+i)}}e.from=function(l,o){if(e.isValid(l))return l;try{return a(l)}catch{return o}}})(Xt);(function(e){const t=rt,n=Va,a=Ba,i=Xt,l=Gi,o=1<<12|1<<11|1<<10|1<<9|1<<8|1<<5|1<<2|1<<0,r=t.getBCHDigit(o);function s(y,g,C){for(let w=1;w<=40;w++)if(g<=e.getCapacity(w,C,y))return w}function u(y,g){return i.getCharCountIndicator(y,g)+4}function d(y,g){let C=0;return y.forEach(function(w){C+=u(w.mode,g)+w.getBitsLength()}),C}function v(y,g){for(let C=1;C<=40;C++)if(d(y,C)<=e.getCapacity(C,g,i.MIXED))return C}e.from=function(g,C){return l.isValid(g)?parseInt(g,10):C},e.getCapacity=function(g,C,w){if(!l.isValid(g))throw new Error("Invalid QR Code version");typeof w=="undefined"&&(w=i.BYTE);const T=t.getSymbolTotalCodewords(g),q=n.getTotalCodewordsCount(g,C),P=(T-q)*8;if(w===i.MIXED)return P;const p=P-u(w,g);switch(w){case i.NUMERIC:return Math.floor(p/10*3);case i.ALPHANUMERIC:return Math.floor(p/11*2);case i.KANJI:return Math.floor(p/13);case i.BYTE:default:return Math.floor(p/8)}},e.getBestVersionForData=function(g,C){let w;const T=a.from(C,a.M);if(Array.isArray(g)){if(g.length>1)return v(g,T);if(g.length===0)return 1;w=g[0]}else w=g;return s(w.mode,w.getLength(),T)},e.getEncodedBits=function(g){if(!l.isValid(g)||g<7)throw new Error("Invalid QR Code version");let C=g<<12;for(;t.getBCHDigit(C)-r>=0;)C^=o<=0;)i^=Vo<0&&(a=this.data.substr(n),i=parseInt(a,10),t.put(i,l*3+1))};var Tu=An;const Mu=Xt,ci=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function On(e){this.mode=Mu.ALPHANUMERIC,this.data=e}On.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};On.prototype.getLength=function(){return this.data.length};On.prototype.getBitsLength=function(){return On.getBitsLength(this.data.length)};On.prototype.write=function(t){let n;for(n=0;n+2<=this.data.length;n+=2){let a=ci.indexOf(this.data[n])*45;a+=ci.indexOf(this.data[n+1]),t.put(a,11)}this.data.length%2&&t.put(ci.indexOf(this.data[n]),6)};var qu=On,Pu=function(t){for(var n=[],a=t.length,i=0;i=55296&&l<=56319&&a>i+1){var o=t.charCodeAt(i+1);o>=56320&&o<=57343&&(l=(l-55296)*1024+o-56320+65536,i+=1)}if(l<128){n.push(l);continue}if(l<2048){n.push(l>>6|192),n.push(l&63|128);continue}if(l<55296||l>=57344&&l<65536){n.push(l>>12|224),n.push(l>>6&63|128),n.push(l&63|128);continue}if(l>=65536&&l<=1114111){n.push(l>>18|240),n.push(l>>12&63|128),n.push(l>>6&63|128),n.push(l&63|128);continue}n.push(239,191,189)}return new Uint8Array(n).buffer};const Du=Pu,$u=Xt;function En(e){this.mode=$u.BYTE,typeof e=="string"&&(e=Du(e)),this.data=new Uint8Array(e)}En.getBitsLength=function(t){return t*8};En.prototype.getLength=function(){return this.data.length};En.prototype.getBitsLength=function(){return En.getBitsLength(this.data.length)};En.prototype.write=function(e){for(let t=0,n=this.data.length;t=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` +Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}};var Ou=Nn,Yo={exports:{}};(function(e){var t={single_source_shortest_paths:function(n,a,i){var l={},o={};o[a]=0;var r=t.PriorityQueue.make();r.push(a,0);for(var s,u,d,v,y,g,C,w,T;!r.empty();){s=r.pop(),u=s.value,v=s.cost,y=n[u]||{};for(d in y)y.hasOwnProperty(d)&&(g=y[d],C=v+g,w=o[d],T=typeof o[d]=="undefined",(T||w>C)&&(o[d]=C,r.push(d,C),l[d]=u))}if(typeof i!="undefined"&&typeof o[i]=="undefined"){var q=["Could not find a path from ",a," to ",i,"."].join("");throw new Error(q)}return l},extract_shortest_path_from_predecessor_list:function(n,a){for(var i=[],l=a;l;)i.push(l),n[l],l=n[l];return i.reverse(),i},find_path:function(n,a,i){var l=t.single_source_shortest_paths(n,a,i);return t.extract_shortest_path_from_predecessor_list(l,i)},PriorityQueue:{make:function(n){var a=t.PriorityQueue,i={},l;n=n||{};for(l in a)a.hasOwnProperty(l)&&(i[l]=a[l]);return i.queue=[],i.sorter=n.sorter||a.default_sorter,i},default_sorter:function(n,a){return n.cost-a.cost},push:function(n,a){var i={value:n,cost:a};this.queue.push(i),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(Yo);(function(e){const t=Xt,n=Tu,a=qu,i=xu,l=Ou,o=Pt,r=rt,s=Yo.exports;function u(q){return unescape(encodeURIComponent(q)).length}function d(q,P,p){const b=[];let M;for(;(M=q.exec(p))!==null;)b.push({data:M[0],index:M.index,mode:P,length:M[0].length});return b}function v(q){const P=d(o.NUMERIC,t.NUMERIC,q),p=d(o.ALPHANUMERIC,t.ALPHANUMERIC,q);let b,M;return r.isKanjiModeEnabled()?(b=d(o.BYTE,t.BYTE,q),M=d(o.KANJI,t.KANJI,q)):(b=d(o.BYTE_KANJI,t.BYTE,q),M=[]),P.concat(p,b,M).sort(function(x,$){return x.index-$.index}).map(function(x){return{data:x.data,mode:x.mode,length:x.length}})}function y(q,P){switch(P){case t.NUMERIC:return n.getBitsLength(q);case t.ALPHANUMERIC:return a.getBitsLength(q);case t.KANJI:return l.getBitsLength(q);case t.BYTE:return i.getBitsLength(q)}}function g(q){return q.reduce(function(P,p){const b=P.length-1>=0?P[P.length-1]:null;return b&&b.mode===p.mode?(P[P.length-1].data+=p.data,P):(P.push(p),P)},[])}function C(q){const P=[];for(let p=0;p=0&&r<=6&&(s===0||s===6)||s>=0&&s<=6&&(r===0||r===6)||r>=2&&r<=4&&s>=2&&s<=4?e.set(l+r,o+s,!0,!0):e.set(l+r,o+s,!1,!0))}}function Uu(e){const t=e.size;for(let n=8;n>r&1)===1,e.set(i,l,o,!0),e.set(l,i,o,!0)}function hi(e,t,n){const a=e.size,i=Vu.getEncodedBits(t,n);let l,o;for(l=0;l<15;l++)o=(i>>l&1)===1,l<6?e.set(l,8,o,!0):l<8?e.set(l+1,8,o,!0):e.set(a-15+l,8,o,!0),l<8?e.set(8,a-l-1,o,!0):l<9?e.set(8,15-l-1+1,o,!0):e.set(8,15-l-1,o,!0);e.set(a-8,8,1,!0)}function Wu(e,t){const n=e.size;let a=-1,i=n-1,l=7,o=0;for(let r=n-1;r>0;r-=2)for(r===6&&r--;;){for(let s=0;s<2;s++)if(!e.isReserved(i,r-s)){let u=!1;o>>l&1)===1),e.set(i,r-s,u),l--,l===-1&&(o++,l=7)}if(i+=a,i<0||n<=i){i-=a,a=-a;break}}}function ju(e,t,n){const a=new Eu;n.forEach(function(s){a.put(s.mode.bit,4),a.put(s.getLength(),Fu.getCharCountIndicator(s.mode,e)),s.write(a)});const i=Ya.getSymbolTotalCodewords(e),l=Di.getTotalCodewordsCount(e,t),o=(i-l)*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!==0;)a.putBit(0);const r=(o-a.getLengthInBits())/8;for(let s=0;s=7&&zu(s,t),Wu(s,o),isNaN(a)&&(a=Pi.getBestMask(s,hi.bind(null,s,n))),Pi.applyMask(a,s),hi(s,n,a),{modules:s,version:t,errorCorrectionLevel:n,maskPattern:a,segments:i}}$o.create=function(t,n){if(typeof t=="undefined"||t==="")throw new Error("No input text");let a=di.M,i,l;return typeof n!="undefined"&&(a=di.from(n.errorCorrectionLevel,di.M),i=Pa.from(n.version),l=Pi.from(n.maskPattern),n.toSJISFunc&&Ya.setToSJISFunction(n.toSJISFunc)),Ku(t,i,a,l)};var Uo={},Zi={};(function(e){function t(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let a=n.slice().replace("#","").split("");if(a.length<3||a.length===5||a.length>8)throw new Error("Invalid hex color: "+n);(a.length===3||a.length===4)&&(a=Array.prototype.concat.apply([],a.map(function(l){return[l,l]}))),a.length===6&&a.push("F","F");const i=parseInt(a.join(""),16);return{r:i>>24&255,g:i>>16&255,b:i>>8&255,a:i&255,hex:"#"+a.slice(0,6).join("")}}e.getOptions=function(a){a||(a={}),a.color||(a.color={});const i=typeof a.margin=="undefined"||a.margin===null||a.margin<0?4:a.margin,l=a.width&&a.width>=21?a.width:void 0,o=a.scale||4;return{width:l,scale:l?4:o,margin:i,color:{dark:t(a.color.dark||"#000000ff"),light:t(a.color.light||"#ffffffff")},type:a.type,rendererOpts:a.rendererOpts||{}}},e.getScale=function(a,i){return i.width&&i.width>=a+i.margin*2?i.width/(a+i.margin*2):i.scale},e.getImageWidth=function(a,i){const l=e.getScale(a,i);return Math.floor((a+i.margin*2)*l)},e.qrToImageData=function(a,i,l){const o=i.modules.size,r=i.modules.data,s=e.getScale(o,l),u=Math.floor((o+l.margin*2)*s),d=l.margin*s,v=[l.color.light,l.color.dark];for(let y=0;y=d&&g>=d&&y0&&s>0&&e[r-1]||(a+=l?mi("M",s+n,.5+u+n):mi("m",i,0),i=0,l=!1),s+1':"",u="',d='viewBox="0 0 '+r+" "+r+'"',v=i.width?'width="'+i.width+'" height="'+i.width+'" ':"",y=''+s+u+` +`;return typeof a=="function"&&a(null,y),y};const Ju=fu,$i=$o,zo=Uo,Xu=Ho;function Ji(e,t,n,a,i){const l=[].slice.call(arguments,1),o=l.length,r=typeof l[o-1]=="function";if(!r&&!Ju())throw new Error("Callback required as last argument");if(r){if(o<2)throw new Error("Too few arguments provided");o===2?(i=n,n=t,t=a=void 0):o===3&&(t.getContext&&typeof i=="undefined"?(i=a,a=void 0):(i=a,a=n,n=t,t=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(n=t,t=a=void 0):o===2&&!t.getContext&&(a=n,n=t,t=void 0),new Promise(function(s,u){try{const d=$i.create(n,a);s(e(d,t,a))}catch(d){u(d)}})}try{const s=$i.create(n,a);i(null,e(s,t,a))}catch(s){i(s)}}$i.create;var ec=Ji.bind(null,zo.render),tc=Ji.bind(null,zo.renderToDataURL),nc=Ji.bind(null,function(e,t,n){return Xu.render(e,n)});/*! vue-qrcode v2.0.0 | (c) 2018-present Chen Fengyuan | MIT */const zl="ready";var ac=ot({name:"VueQrcode",props:{value:{type:String,default:void 0},options:{type:Object,default:void 0},tag:{type:String,default:"canvas"}},emits:[zl],watch:{$props:{deep:!0,immediate:!0,handler(){this.$el&&this.generate()}}},mounted(){this.generate()},methods:{generate(){const e=this.options||{},t=String(this.value),n=()=>{this.$emit(zl,this.$el)};switch(this.tag){case"canvas":ec(this.$el,t,e,a=>{if(a)throw a;n()});break;case"img":tc(t,e,(a,i)=>{if(a)throw a;this.$el.src=i,this.$el.onload=n});break;case"svg":nc(t,e,(a,i)=>{if(a)throw a;const l=document.createElement("div");l.innerHTML=i;const o=l.querySelector("svg");if(o){const{attributes:r,childNodes:s}=o;Object.keys(r).forEach(u=>{const d=r[Number(u)];this.$el.setAttribute(d.name,d.value)}),Object.keys(s).forEach(u=>{const d=s[Number(u)];this.$el.appendChild(d.cloneNode(!0))}),n()}});break}}},render(){return _(this.tag,this.$slots.default)}});let ic=0;const lc=["click","keydown"],oc={icon:String,label:[Number,String],alert:[Boolean,String],alertIcon:String,name:{type:[Number,String],default:()=>`t_${ic++}`},noCaps:Boolean,tabindex:[String,Number],disable:Boolean,contentClass:String,ripple:{type:[Boolean,Object],default:!0}};function rc(e,t,n,a){const i=ba(ho,Et);if(i===Et)return console.error("QTab/QRouteTab component needs to be child of QTabs"),Et;const{proxy:l}=Fe(),o=Q(null),r=Q(null),s=Q(null),u=k(()=>e.disable===!0||e.ripple===!1?!1:Object.assign({keyCodes:[13,32],early:!0},e.ripple===!0?{}:e.ripple)),d=k(()=>i.currentModel.value===e.name),v=k(()=>"q-tab relative-position self-stretch flex flex-center text-center"+(d.value===!0?" q-tab--active"+(i.tabProps.value.activeClass?" "+i.tabProps.value.activeClass:"")+(i.tabProps.value.activeColor?` text-${i.tabProps.value.activeColor}`:"")+(i.tabProps.value.activeBgColor?` bg-${i.tabProps.value.activeBgColor}`:""):" q-tab--inactive")+(e.icon&&e.label&&i.tabProps.value.inlineLabel===!1?" q-tab--full":"")+(e.noCaps===!0||i.tabProps.value.noCaps===!0?" q-tab--no-caps":"")+(e.disable===!0?" disabled":" q-focusable q-hoverable cursor-pointer")+(a!==void 0?a.linkClass.value:"")),y=k(()=>"q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable "+(i.tabProps.value.inlineLabel===!0?"row no-wrap q-tab__content--inline":"column")+(e.contentClass!==void 0?` ${e.contentClass}`:"")),g=k(()=>e.disable===!0||i.hasFocus.value===!0||d.value===!1&&i.hasActiveTab.value===!0?-1:e.tabindex||0);function C(p,b){if(b!==!0&&o.value!==null&&o.value.focus(),e.disable===!0){a!==void 0&&a.hasRouterLink.value===!0&&We(p);return}if(a===void 0){i.updateModel({name:e.name}),n("click",p);return}if(a.hasRouterLink.value===!0){const M=(B={})=>{let x;const $=B.to===void 0||kn(B.to,e.to)===!0?i.avoidRouteWatcher=_a():null;return a.navigateToRouterLink(p,{...B,returnRouterError:!0}).catch(G=>{x=G}).then(G=>{if($===i.avoidRouteWatcher&&(i.avoidRouteWatcher=!1,x===void 0&&(G===void 0||G.message.startsWith("Avoided redundant navigation")===!0)&&i.updateModel({name:e.name})),B.returnRouterError===!0)return x!==void 0?Promise.reject(x):G})};n("click",p,M),p.defaultPrevented!==!0&&M();return}n("click",p)}function w(p){ta(p,[13,32])?C(p,!0):mo(p)!==!0&&p.keyCode>=35&&p.keyCode<=40&&p.altKey!==!0&&p.metaKey!==!0&&i.onKbdNavigate(p.keyCode,l.$el)===!0&&We(p),n("keydown",p)}function T(){const p=i.tabProps.value.narrowIndicator,b=[],M=_("div",{ref:s,class:["q-tab__indicator",i.tabProps.value.indicatorClass]});e.icon!==void 0&&b.push(_(je,{class:"q-tab__icon",name:e.icon})),e.label!==void 0&&b.push(_("div",{class:"q-tab__label"},e.label)),e.alert!==!1&&b.push(e.alertIcon!==void 0?_(je,{class:"q-tab__alert-icon",color:e.alert!==!0?e.alert:void 0,name:e.alertIcon}):_("div",{class:"q-tab__alert"+(e.alert!==!0?` text-${e.alert}`:"")})),p===!0&&b.push(M);const B=[_("div",{class:"q-focus-helper",tabindex:-1,ref:o}),_("div",{class:y.value},Ln(t.default,b))];return p===!1&&B.push(M),B}const q={name:k(()=>e.name),rootRef:r,tabIndicatorRef:s,routeData:a};Ke(()=>{i.unregisterTab(q)}),fn(()=>{i.registerTab(q)});function P(p,b){const M={ref:r,class:v.value,tabindex:g.value,role:"tab","aria-selected":d.value===!0?"true":"false","aria-disabled":e.disable===!0?"true":void 0,onClick:C,onKeydown:w,...b};return dn(_(p,M,T()),[[io,u.value]])}return{renderTab:P,$tabs:i}}var gi=Se({name:"QTab",props:oc,emits:lc,setup(e,{slots:t,emit:n}){const{renderTab:a}=rc(e,t,n);return()=>a("div")}});function sc(e,t,n){const a=n===!0?["left","right"]:["top","bottom"];return`absolute-${t===!0?a[0]:a[1]}${e?` text-${e}`:""}`}const uc=["left","center","right","justify"];var cc=Se({name:"QTabs",props:{modelValue:[Number,String],align:{type:String,default:"center",validator:e=>uc.includes(e)},breakpoint:{type:[String,Number],default:600},vertical:Boolean,shrink:Boolean,stretch:Boolean,activeClass:String,activeColor:String,activeBgColor:String,indicatorColor:String,leftIcon:String,rightIcon:String,outsideArrows:Boolean,mobileArrows:Boolean,switchIndicator:Boolean,narrowIndicator:Boolean,inlineLabel:Boolean,noCaps:Boolean,dense:Boolean,contentClass:String,"onUpdate:modelValue":[Function,Array]},setup(e,{slots:t,emit:n}){const{proxy:a}=Fe(),{$q:i}=a,{registerTick:l}=Wn(),{registerTick:o}=Wn(),{registerTick:r}=Wn(),{registerTimeout:s,removeTimeout:u}=pa(),{registerTimeout:d,removeTimeout:v}=pa(),y=Q(null),g=Q(null),C=Q(e.modelValue),w=Q(!1),T=Q(!0),q=Q(!1),P=Q(!1),p=[],b=Q(0),M=Q(!1);let B=null,x=null,$;const G=k(()=>({activeClass:e.activeClass,activeColor:e.activeColor,activeBgColor:e.activeBgColor,indicatorClass:sc(e.indicatorColor,e.switchIndicator,e.vertical),narrowIndicator:e.narrowIndicator,inlineLabel:e.inlineLabel,noCaps:e.noCaps})),Z=k(()=>{const I=b.value,z=C.value;for(let ie=0;ie`q-tabs__content--align-${w.value===!0?"left":P.value===!0?"justify":e.align}`),$e=k(()=>`q-tabs row no-wrap items-center q-tabs--${w.value===!0?"":"not-"}scrollable q-tabs--${e.vertical===!0?"vertical":"horizontal"} q-tabs__arrows--${e.outsideArrows===!0?"outside":"inside"} q-tabs--mobile-with${e.mobileArrows===!0?"":"out"}-arrows`+(e.dense===!0?" q-tabs--dense":"")+(e.shrink===!0?" col-shrink":"")+(e.stretch===!0?" self-stretch":"")),E=k(()=>"q-tabs__content scroll--mobile row no-wrap items-center self-stretch hide-scrollbar relative-position "+ce.value+(e.contentClass!==void 0?` ${e.contentClass}`:"")),le=k(()=>e.vertical===!0?{container:"height",content:"offsetHeight",scroll:"scrollHeight"}:{container:"width",content:"offsetWidth",scroll:"scrollWidth"}),ve=k(()=>e.vertical!==!0&&i.lang.rtl===!0),ke=k(()=>Gn===!1&&ve.value===!0);de(ve,H),de(()=>e.modelValue,I=>{J({name:I,setCurrent:!0,skipEmit:!0})}),de(()=>e.outsideArrows,qe);function J({name:I,setCurrent:z,skipEmit:ie}){C.value!==I&&(ie!==!0&&e["onUpdate:modelValue"]!==void 0&&n("update:modelValue",I),(z===!0||e["onUpdate:modelValue"]===void 0)&&(N(C.value,I),C.value=I))}function qe(){l(()=>{Be({width:y.value.offsetWidth,height:y.value.offsetHeight})})}function Be(I){if(le.value===void 0||g.value===null)return;const z=I[le.value.container],ie=Math.min(g.value[le.value.scroll],Array.prototype.reduce.call(g.value.children,(xe,_e)=>xe+(_e[le.value.content]||0),0)),Oe=z>0&&ie>z;w.value=Oe,Oe===!0&&o(H),P.value=zxe.name.value===I):null,Oe=z!=null&&z!==""?p.find(xe=>xe.name.value===z):null;if(ie&&Oe){const xe=ie.tabIndicatorRef.value,_e=Oe.tabIndicatorRef.value;B!==null&&(clearTimeout(B),B=null),xe.style.transition="none",xe.style.transform="none",_e.style.transition="none",_e.style.transform="none";const ge=xe.getBoundingClientRect(),Ue=_e.getBoundingClientRect();_e.style.transform=e.vertical===!0?`translate3d(0,${ge.top-Ue.top}px,0) scale3d(1,${Ue.height?ge.height/Ue.height:1},1)`:`translate3d(${ge.left-Ue.left}px,0,0) scale3d(${Ue.width?ge.width/Ue.width:1},1,1)`,r(()=>{B=setTimeout(()=>{B=null,_e.style.transition="transform .25s cubic-bezier(.4, 0, .2, 1)",_e.style.transform="none"},70)})}Oe&&w.value===!0&&A(Oe.rootRef.value)}function A(I){const{left:z,width:ie,top:Oe,height:xe}=g.value.getBoundingClientRect(),_e=I.getBoundingClientRect();let ge=e.vertical===!0?_e.top-Oe:_e.left-z;if(ge<0){g.value[e.vertical===!0?"scrollTop":"scrollLeft"]+=Math.floor(ge),H();return}ge+=e.vertical===!0?_e.height-xe:_e.width-ie,ge>0&&(g.value[e.vertical===!0?"scrollTop":"scrollLeft"]+=Math.ceil(ge),H())}function H(){const I=g.value;if(I===null)return;const z=I.getBoundingClientRect(),ie=e.vertical===!0?I.scrollTop:Math.abs(I.scrollLeft);ve.value===!0?(T.value=Math.ceil(ie+z.width)0):(T.value=ie>0,q.value=e.vertical===!0?Math.ceil(ie+z.height){O(I)===!0&&X()},5)}function me(){U(ke.value===!0?Number.MAX_SAFE_INTEGER:0)}function be(){U(ke.value===!0?0:Number.MAX_SAFE_INTEGER)}function X(){x!==null&&(clearInterval(x),x=null)}function te(I,z){const ie=Array.prototype.filter.call(g.value.children,Ue=>Ue===z||Ue.matches&&Ue.matches(".q-tab.q-focusable")===!0),Oe=ie.length;if(Oe===0)return;if(I===36)return A(ie[0]),ie[0].focus(),!0;if(I===35)return A(ie[Oe-1]),ie[Oe-1].focus(),!0;const xe=I===(e.vertical===!0?38:37),_e=I===(e.vertical===!0?40:39),ge=xe===!0?-1:_e===!0?1:void 0;if(ge!==void 0){const Ue=ve.value===!0?-1:1,ze=ie.indexOf(z)+ge*Ue;return ze>=0&&zeke.value===!0?{get:I=>Math.abs(I.scrollLeft),set:(I,z)=>{I.scrollLeft=-z}}:e.vertical===!0?{get:I=>I.scrollTop,set:(I,z)=>{I.scrollTop=z}}:{get:I=>I.scrollLeft,set:(I,z)=>{I.scrollLeft=z}});function O(I){const z=g.value,{get:ie,set:Oe}=Ve.value;let xe=!1,_e=ie(z);const ge=I<_e?-1:1;return _e+=ge*5,_e<0?(xe=!0,_e=0):(ge===-1&&_e<=I||ge===1&&_e>=I)&&(xe=!0,_e=I),Oe(z,_e),H(),xe}function Ne(I,z){for(const ie in I)if(I[ie]!==z[ie])return!1;return!0}function St(){let I=null,z={matchedLen:0,queryDiff:9999,hrefLen:0};const ie=p.filter(ge=>ge.routeData!==void 0&&ge.routeData.hasRouterLink.value===!0),{hash:Oe,query:xe}=a.$route,_e=Object.keys(xe).length;for(const ge of ie){const Ue=ge.routeData.exact.value===!0;if(ge.routeData[Ue===!0?"linkIsExactActive":"linkIsActive"].value!==!0)continue;const{hash:ze,query:Ct,matched:vn,href:ti}=ge.routeData.resolvedLink.value,en=Object.keys(Ct).length;if(Ue===!0){if(ze!==Oe||en!==_e||Ne(xe,Ct)===!1)continue;I=ge.name.value;break}if(ze!==""&&ze!==Oe||en!==0&&Ne(Ct,xe)===!1)continue;const ct={matchedLen:vn.length,queryDiff:_e-en,hrefLen:ti.length-ze.length};if(ct.matchedLen>z.matchedLen){I=ge.name.value,z=ct;continue}else if(ct.matchedLen!==z.matchedLen)continue;if(ct.queryDiffz.hrefLen&&(I=ge.name.value,z=ct)}I===null&&p.some(ge=>ge.routeData===void 0&&ge.name.value===C.value)===!0||J({name:I,setCurrent:!0})}function xt(I){if(u(),M.value!==!0&&y.value!==null&&I.target&&typeof I.target.closest=="function"){const z=I.target.closest(".q-tab");z&&y.value.contains(z)===!0&&(M.value=!0,w.value===!0&&A(z))}}function ut(){s(()=>{M.value=!1},30)}function It(){zt.avoidRouteWatcher===!1?d(St):v()}function kt(){if($===void 0){const I=de(()=>a.$route.fullPath,It);$=()=>{I(),$=void 0}}}function Ht(I){p.push(I),b.value++,qe(),I.routeData===void 0||a.$route===void 0?d(()=>{if(w.value===!0){const z=C.value,ie=z!=null&&z!==""?p.find(Oe=>Oe.name.value===z):null;ie&&A(ie.rootRef.value)}}):(kt(),I.routeData.hasRouterLink.value===!0&&It())}function mn(I){p.splice(p.indexOf(I),1),b.value--,qe(),$!==void 0&&I.routeData!==void 0&&(p.every(z=>z.routeData===void 0)===!0&&$(),It())}const zt={currentModel:C,tabProps:G,hasFocus:M,hasActiveTab:Z,registerTab:Ht,unregisterTab:mn,verifyRouteModel:It,updateModel:J,onKbdNavigate:te,avoidRouteWatcher:!1};ys(ho,zt);function gn(){B!==null&&clearTimeout(B),X(),$!==void 0&&$()}let He;return Ke(gn),Na(()=>{He=$!==void 0,gn()}),La(()=>{He===!0&&kt(),qe()}),()=>_("div",{ref:y,class:$e.value,role:"tablist",onFocusin:xt,onFocusout:ut},[_(Fs,{onResize:Be}),_("div",{ref:g,class:E.value,onScroll:H},Ee(t.default)),_(je,{class:"q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon"+(T.value===!0?"":" q-tabs__arrow--faded"),name:e.leftIcon||i.iconSet.tabs[e.vertical===!0?"up":"left"],onMousedownPassive:me,onTouchstartPassive:me,onMouseupPassive:X,onMouseleavePassive:X,onTouchendPassive:X}),_(je,{class:"q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon"+(q.value===!0?"":" q-tabs__arrow--faded"),name:e.rightIcon||i.iconSet.tabs[e.vertical===!0?"down":"right"],onMousedownPassive:be,onTouchstartPassive:be,onMouseupPassive:X,onMouseleavePassive:X,onTouchendPassive:X})])}});const Xi={left:!0,right:!0,up:!0,down:!0,horizontal:!0,vertical:!0},dc=Object.keys(Xi);Xi.all=!0;function Wl(e){const t={};for(const n of dc)e[n]===!0&&(t[n]=!0);return Object.keys(t).length===0?Xi:(t.horizontal===!0?t.left=t.right=!0:t.left===!0&&t.right===!0&&(t.horizontal=!0),t.vertical===!0?t.up=t.down=!0:t.up===!0&&t.down===!0&&(t.vertical=!0),t.horizontal===!0&&t.vertical===!0&&(t.all=!0),t)}const fc=["INPUT","TEXTAREA"];function jl(e,t){return t.event===void 0&&e.target!==void 0&&e.target.draggable!==!0&&typeof t.handler=="function"&&fc.includes(e.target.nodeName.toUpperCase())===!1&&(e.qClonedBy===void 0||e.qClonedBy.indexOf(t.uid)===-1)}function hc(e){const t=[.06,6,50];return typeof e=="string"&&e.length&&e.split(":").forEach((n,a)=>{const i=parseFloat(n);i&&(t[a]=i)}),t}var mc=fo({name:"touch-swipe",beforeMount(e,{value:t,arg:n,modifiers:a}){if(a.mouse!==!0&&Sn.has.touch!==!0)return;const i=a.mouseCapture===!0?"Capture":"",l={handler:t,sensitivity:hc(n),direction:Wl(a),noop:lo,mouseStart(o){jl(o,l)&&ps(o)&&(jt(l,"temp",[[document,"mousemove","move",`notPassive${i}`],[document,"mouseup","end","notPassiveCapture"]]),l.start(o,!0))},touchStart(o){if(jl(o,l)){const r=o.target;jt(l,"temp",[[r,"touchmove","move","notPassiveCapture"],[r,"touchcancel","end","notPassiveCapture"],[r,"touchend","end","notPassiveCapture"]]),l.start(o)}},start(o,r){Sn.is.firefox===!0&&ii(e,!0);const s=wi(o);l.event={x:s.left,y:s.top,time:Date.now(),mouse:r===!0,dir:!1}},move(o){if(l.event===void 0)return;if(l.event.dir!==!1){We(o);return}const r=Date.now()-l.event.time;if(r===0)return;const s=wi(o),u=s.left-l.event.x,d=Math.abs(u),v=s.top-l.event.y,y=Math.abs(v);if(l.event.mouse!==!0){if(dl.sensitivity[0]&&(l.event.dir=v<0?"up":"down"),l.direction.horizontal===!0&&d>y&&y<100&&g>l.sensitivity[0]&&(l.event.dir=u<0?"left":"right"),l.direction.up===!0&&dl.sensitivity[0]&&(l.event.dir="up"),l.direction.down===!0&&d0&&d<100&&C>l.sensitivity[0]&&(l.event.dir="down"),l.direction.left===!0&&d>y&&u<0&&y<100&&g>l.sensitivity[0]&&(l.event.dir="left"),l.direction.right===!0&&d>y&&u>0&&y<100&&g>l.sensitivity[0]&&(l.event.dir="right"),l.event.dir!==!1?(We(o),l.event.mouse===!0&&(document.body.classList.add("no-pointer-events--children"),document.body.classList.add("non-selectable"),wa(),l.styleCleanup=w=>{l.styleCleanup=void 0,document.body.classList.remove("non-selectable");const T=()=>{document.body.classList.remove("no-pointer-events--children")};w===!0?setTimeout(T,50):T()}),l.handler({evt:o,touch:l.event.mouse!==!0,mouse:l.event.mouse,direction:l.event.dir,duration:r,distance:{x:d,y}})):l.end(o)},end(o){l.event!==void 0&&(Mn(l,"temp"),Sn.is.firefox===!0&&ii(e,!1),l.styleCleanup!==void 0&&l.styleCleanup(!0),o!==void 0&&l.event.dir!==!1&&We(o),l.event=void 0)}};if(e.__qtouchswipe=l,a.mouse===!0){const o=a.mouseCapture===!0||a.mousecapture===!0?"Capture":"";jt(l,"main",[[e,"mousedown","mouseStart",`passive${o}`]])}Sn.has.touch===!0&&jt(l,"main",[[e,"touchstart","touchStart",`passive${a.capture===!0?"Capture":""}`],[e,"touchmove","noop","notPassiveCapture"]])},updated(e,t){const n=e.__qtouchswipe;n!==void 0&&(t.oldValue!==t.value&&(typeof t.value!="function"&&n.end(),n.handler=t.value),n.direction=Wl(t.modifiers))},beforeUnmount(e){const t=e.__qtouchswipe;t!==void 0&&(Mn(t,"main"),Mn(t,"temp"),Sn.is.firefox===!0&&ii(e,!1),t.styleCleanup!==void 0&&t.styleCleanup(),delete e.__qtouchswipe)}});function gc(){const e=new Map;return{getCache:function(t,n){return e[t]===void 0?e[t]=n:e[t]},getCacheWithFn:function(t,n){return e[t]===void 0?e[t]=n():e[t]}}}const Wo={name:{required:!0},disable:Boolean},Ql={setup(e,{slots:t}){return()=>_("div",{class:"q-panel scroll",role:"tabpanel"},Ee(t.default))}},jo={modelValue:{required:!0},animated:Boolean,infinite:Boolean,swipeable:Boolean,vertical:Boolean,transitionPrev:String,transitionNext:String,transitionDuration:{type:[String,Number],default:300},keepAlive:Boolean,keepAliveInclude:[String,Array,RegExp],keepAliveExclude:[String,Array,RegExp],keepAliveMax:Number},Qo=["update:modelValue","beforeTransition","transition"];function Ko(){const{props:e,emit:t,proxy:n}=Fe(),{getCacheWithFn:a}=gc();let i,l;const o=Q(null),r=Q(null);function s(E){const le=e.vertical===!0?"up":"left";x((n.$q.lang.rtl===!0?-1:1)*(E.direction===le?1:-1))}const u=k(()=>[[mc,s,void 0,{horizontal:e.vertical!==!0,vertical:e.vertical,mouse:!0}]]),d=k(()=>e.transitionPrev||`slide-${e.vertical===!0?"down":"right"}`),v=k(()=>e.transitionNext||`slide-${e.vertical===!0?"up":"left"}`),y=k(()=>`--q-transition-duration: ${e.transitionDuration}ms`),g=k(()=>typeof e.modelValue=="string"||typeof e.modelValue=="number"?e.modelValue:String(e.modelValue)),C=k(()=>({include:e.keepAliveInclude,exclude:e.keepAliveExclude,max:e.keepAliveMax})),w=k(()=>e.keepAliveInclude!==void 0||e.keepAliveExclude!==void 0);de(()=>e.modelValue,(E,le)=>{const ve=p(E)===!0?b(E):-1;l!==!0&&B(ve===-1?0:ve{t("transition",E,le)}))});function T(){x(1)}function q(){x(-1)}function P(E){t("update:modelValue",E)}function p(E){return E!=null&&E!==""}function b(E){return i.findIndex(le=>le.props.name===E&&le.props.disable!==""&&le.props.disable!==!0)}function M(){return i.filter(E=>E.props.disable!==""&&E.props.disable!==!0)}function B(E){const le=E!==0&&e.animated===!0&&o.value!==-1?"q-transition--"+(E===-1?d.value:v.value):null;r.value!==le&&(r.value=le)}function x(E,le=o.value){let ve=le+E;for(;ve>-1&&ve{l=!1});return}ve+=E}e.infinite===!0&&i.length!==0&&le!==-1&&le!==i.length&&x(E,E===-1?i.length:-1)}function $(){const E=b(e.modelValue);return o.value!==E&&(o.value=E),!0}function G(){const E=p(e.modelValue)===!0&&$()&&i[o.value];return e.keepAlive===!0?[_(bs,C.value,[_(w.value===!0?a(g.value,()=>({...Ql,name:g.value})):Ql,{key:g.value,style:y.value},()=>E)])]:[_("div",{class:"q-panel scroll",style:y.value,key:g.value,role:"tabpanel"},[E])]}function Z(){if(i.length!==0)return e.animated===!0?[_(na,{name:r.value},G)]:G()}function ce(E){return i=uo(Ee(E.default,[])).filter(le=>le.props!==null&&le.props.slot===void 0&&p(le.props.name)===!0),i.length}function $e(){return i}return Object.assign(n,{next:T,previous:q,goTo:P}),{panelIndex:o,panelDirectives:u,updatePanelsList:ce,updatePanelIndex:$,getPanelContent:Z,getEnabledPanels:M,getPanels:$e,isValidPanelName:p,keepAliveProps:C,needsUniqueKeepAliveWrapper:w,goToPanelByOffset:x,goToPanel:P,nextPanel:T,previousPanel:q}}var vi=Se({name:"QTabPanel",props:Wo,setup(e,{slots:t}){return()=>_("div",{class:"q-tab-panel",role:"tabpanel"},Ee(t.default))}}),vc=Se({name:"QField",inheritAttrs:!1,props:Hi,emits:go,setup(){return vo(yo())}}),Go=Se({name:"QMenu",inheritAttrs:!1,props:{...wo,...Ri,...Vt,...Bi,persistent:Boolean,autoClose:Boolean,separateClosePopup:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,fit:Boolean,cover:Boolean,square:Boolean,anchor:{type:String,validator:Ta},self:{type:String,validator:Ta},offset:{type:Array,validator:To},scrollTarget:{default:void 0},touchPosition:Boolean,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null}},emits:[...Vi,"click","escapeKey"],setup(e,{slots:t,emit:n,attrs:a}){let i=null,l,o,r;const s=Fe(),{proxy:u}=s,{$q:d}=u,v=Q(null),y=Q(!1),g=k(()=>e.persistent!==!0&&e.noRouteDismiss!==!0),C=Ft(e,d),{registerTick:w,removeTick:T}=Wn(),{registerTimeout:q}=pa(),{transitionProps:P,transitionStyle:p}=no(e),{localScrollTarget:b,changeScrollEvent:M,unconfigureScrollTarget:B}=ko(e,U),{anchorEl:x,canShow:$}=So({showing:y}),{hide:G}=Fi({showing:y,canShow:$,handleShow:N,handleHide:A,hideOnRouteChange:g,processOnMount:!0}),{showPortal:Z,hidePortal:ce,renderPortal:$e}=ao(s,v,Ve,"menu"),E={anchorEl:x,innerRef:v,onClickOutside(O){if(e.persistent!==!0&&y.value===!0)return G(O),(O.type==="touchstart"||O.target.classList.contains("q-dialog__backdrop"))&&We(O),!0}},le=k(()=>Ma(e.anchor||(e.cover===!0?"center middle":"bottom start"),d.lang.rtl)),ve=k(()=>e.cover===!0?le.value:Ma(e.self||"top start",d.lang.rtl)),ke=k(()=>(e.square===!0?" q-menu--square":"")+(C.value===!0?" q-menu--dark q-dark":"")),J=k(()=>e.autoClose===!0?{onClick:me}:{}),qe=k(()=>y.value===!0&&e.persistent!==!0);de(qe,O=>{O===!0?(ks(X),Co(E)):(Al(X),Ca(E))});function Be(){Cs(()=>{let O=v.value;O&&O.contains(document.activeElement)!==!0&&(O=O.querySelector("[autofocus][tabindex], [data-autofocus][tabindex]")||O.querySelector("[autofocus] [tabindex], [data-autofocus] [tabindex]")||O.querySelector("[autofocus], [data-autofocus]")||O,O.focus({preventScroll:!0}))})}function N(O){if(i=e.noRefocus===!1?document.activeElement:null,_s(be),Z(),U(),l=void 0,O!==void 0&&(e.touchPosition||e.contextMenu)){const Ne=wi(O);if(Ne.left!==void 0){const{top:St,left:xt}=x.value.getBoundingClientRect();l={left:Ne.left-xt,top:Ne.top-St}}}o===void 0&&(o=de(()=>d.screen.width+"|"+d.screen.height+"|"+e.self+"|"+e.anchor+"|"+d.lang.rtl,te)),e.noFocus!==!0&&document.activeElement.blur(),w(()=>{te(),e.noFocus!==!0&&Be()}),q(()=>{d.platform.is.ios===!0&&(r=e.autoClose,v.value.click()),te(),Z(!0),n("show",O)},e.transitionDuration)}function A(O){T(),ce(),H(!0),i!==null&&(O===void 0||O.qClickOutside!==!0)&&(((O&&O.type.indexOf("key")===0?i.closest('[tabindex]:not([tabindex^="-"])'):void 0)||i).focus(),i=null),q(()=>{ce(!0),n("hide",O)},e.transitionDuration)}function H(O){l=void 0,o!==void 0&&(o(),o=void 0),(O===!0||y.value===!0)&&(ws(be),B(),Ca(E),Al(X)),O!==!0&&(i=null)}function U(){(x.value!==null||e.scrollTarget!==void 0)&&(b.value=Ea(x.value,e.scrollTarget),M(b.value,te))}function me(O){r!==!0?(Ss(u,O),n("click",O)):r=!1}function be(O){qe.value===!0&&e.noFocus!==!0&&Ts(v.value,O.target)!==!0&&Be()}function X(O){n("escapeKey"),G(O)}function te(){zi({targetEl:v.value,offset:e.offset,anchorEl:x.value,anchorOrigin:le.value,selfOrigin:ve.value,absoluteOffset:l,fit:e.fit,cover:e.cover,maxHeight:e.maxHeight,maxWidth:e.maxWidth})}function Ve(){return _(na,P.value,()=>y.value===!0?_("div",{role:"menu",...a,ref:v,tabindex:-1,class:["q-menu q-position-engine scroll"+ke.value,a.class],style:[a.style,p.value],...J.value},Ee(t.default)):null)}return Ke(H),Object.assign(u,{focus:Be,updatePosition:te}),$e}});function Kl(e,t,n){if(n<=t)return t;const a=n-t+1;let i=t+(e-t)%a;return i["add","add-unique","toggle"].includes(e),yc=".*+?^${}()|[]\\",pc=Object.keys(Hi);var bc=Se({name:"QSelect",inheritAttrs:!1,props:{...qo,...Ms,...Hi,modelValue:{required:!0},multiple:Boolean,displayValue:[String,Number],displayValueHtml:Boolean,dropdownIcon:String,options:{type:Array,default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],hideSelected:Boolean,hideDropdownIcon:Boolean,fillInput:Boolean,maxValues:[Number,String],optionsDense:Boolean,optionsDark:{type:Boolean,default:null},optionsSelectedClass:String,optionsHtml:Boolean,optionsCover:Boolean,menuShrink:Boolean,menuAnchor:String,menuSelf:String,menuOffset:Array,popupContentClass:String,popupContentStyle:[String,Array,Object],useInput:Boolean,useChips:Boolean,newValueMode:{type:String,validator:Gl},mapOptions:Boolean,emitValue:Boolean,inputDebounce:{type:[Number,String],default:500},inputClass:[Array,String,Object],inputStyle:[Array,String,Object],tabindex:{type:[String,Number],default:0},autocomplete:String,transitionShow:String,transitionHide:String,transitionDuration:[String,Number],behavior:{type:String,validator:e=>["default","menu","dialog"].includes(e),default:"default"},virtualScrollItemSize:{type:[Number,String],default:void 0},onNewValue:Function,onFilter:Function},emits:[...go,"add","remove","inputValue","newValue","keyup","keypress","keydown","filterAbort"],setup(e,{slots:t,emit:n}){const{proxy:a}=Fe(),{$q:i}=a,l=Q(!1),o=Q(!1),r=Q(-1),s=Q(""),u=Q(!1),d=Q(!1);let v=null,y,g,C,w=null,T,q,P,p;const b=Q(null),M=Q(null),B=Q(null),x=Q(null),$=Q(null),G=qs(e),Z=$s(ql),ce=k(()=>Array.isArray(e.options)?e.options.length:0),$e=k(()=>e.virtualScrollItemSize===void 0?e.optionsDense===!0?24:48:e.virtualScrollItemSize),{virtualScrollSliceRange:E,virtualScrollSliceSizeComputed:le,localResetVirtualScroll:ve,padVirtualScroll:ke,onVirtualScrollEvt:J,scrollTo:qe,setVirtualScrollSize:Be}=Po({virtualScrollLength:ce,getVirtualScrollTarget:Hr,getVirtualScrollEl:Tl,virtualScrollItemSizeComputed:$e}),N=yo(),A=k(()=>{const h=e.mapOptions===!0&&e.multiple!==!0,F=e.modelValue!==void 0&&(e.modelValue!==null||h===!0)?e.multiple===!0&&Array.isArray(e.modelValue)?e.modelValue:[e.modelValue]:[];if(e.mapOptions===!0&&Array.isArray(e.options)===!0){const L=e.mapOptions===!0&&y!==void 0?y:[],ne=F.map(Me=>ti(Me,L));return e.modelValue===null&&h===!0?ne.filter(Me=>Me!==null):ne}return F}),H=k(()=>{const h={};return pc.forEach(F=>{const L=e[F];L!==void 0&&(h[F]=L)}),h}),U=k(()=>e.optionsDark===null?N.isDark.value:e.optionsDark),me=k(()=>Ol(A.value)),be=k(()=>{let h="q-field__input q-placeholder col";return e.hideSelected===!0||A.value.length===0?[h,e.inputClass]:(h+=" q-field__input--padding",e.inputClass===void 0?h:[h,e.inputClass])}),X=k(()=>(e.virtualScrollHorizontal===!0?"q-virtual-scroll--horizontal":"")+(e.popupContentClass?" "+e.popupContentClass:"")),te=k(()=>ce.value===0),Ve=k(()=>A.value.map(h=>I.value(h)).join(", ")),O=k(()=>e.displayValue!==void 0?e.displayValue:Ve.value),Ne=k(()=>e.optionsHtml===!0?()=>!0:h=>h!=null&&h.html===!0),St=k(()=>e.displayValueHtml===!0||e.displayValue===void 0&&(e.optionsHtml===!0||A.value.some(Ne.value))),xt=k(()=>N.focused.value===!0?e.tabindex:-1),ut=k(()=>{const h={tabindex:e.tabindex,role:"combobox","aria-label":e.label,"aria-readonly":e.readonly===!0?"true":"false","aria-autocomplete":e.useInput===!0?"list":"none","aria-expanded":l.value===!0?"true":"false","aria-controls":`${N.targetUid.value}_lb`};return r.value>=0&&(h["aria-activedescendant"]=`${N.targetUid.value}_${r.value}`),h}),It=k(()=>({id:`${N.targetUid.value}_lb`,role:"listbox","aria-multiselectable":e.multiple===!0?"true":"false"})),kt=k(()=>A.value.map((h,F)=>({index:F,opt:h,html:Ne.value(h),selected:!0,removeAtIndex:ge,toggleOption:ze,tabindex:xt.value}))),Ht=k(()=>{if(ce.value===0)return[];const{from:h,to:F}=E.value;return e.options.slice(h,F).map((L,ne)=>{const Me=z.value(L)===!0,Ce=h+ne,Le={clickable:!0,active:!1,activeClass:gn.value,manualFocus:!0,focused:!1,disable:Me,tabindex:-1,dense:e.optionsDense,dark:U.value,role:"option",id:`${N.targetUid.value}_${Ce}`,onClick:()=>{ze(L)}};return Me!==!0&&(ct(L)===!0&&(Le.active=!0),r.value===Ce&&(Le.focused=!0),Le["aria-selected"]=Le.active===!0?"true":"false",i.platform.is.desktop===!0&&(Le.onMousemove=()=>{l.value===!0&&Ct(Ce)})),{index:Ce,opt:L,html:Ne.value(L),label:I.value(L),selected:Le.active,focused:Le.focused,toggleOption:ze,setOptionIndex:Ct,itemProps:Le}})}),mn=k(()=>e.dropdownIcon!==void 0?e.dropdownIcon:i.iconSet.arrow.dropdown),zt=k(()=>e.optionsCover===!1&&e.outlined!==!0&&e.standout!==!0&&e.borderless!==!0&&e.rounded!==!0),gn=k(()=>e.optionsSelectedClass!==void 0?e.optionsSelectedClass:e.color!==void 0?`text-${e.color}`:""),He=k(()=>en(e.optionValue,"value")),I=k(()=>en(e.optionLabel,"label")),z=k(()=>en(e.optionDisable,"disable")),ie=k(()=>A.value.map(h=>He.value(h))),Oe=k(()=>{const h={onInput:ql,onChange:Z,onKeydown:Cl,onKeyup:Sl,onKeypress:kl,onFocus:_l,onClick(F){g===!0&&on(F)}};return h.onCompositionstart=h.onCompositionupdate=h.onCompositionend=Z,h});de(A,h=>{y=h,e.useInput===!0&&e.fillInput===!0&&e.multiple!==!0&&N.innerLoading.value!==!0&&(o.value!==!0&&l.value!==!0||me.value!==!0)&&(C!==!0&&_n(),(o.value===!0||l.value===!0)&&yn(""))},{immediate:!0}),de(()=>e.fillInput,_n),de(l,ni),de(ce,ns);function xe(h){return e.emitValue===!0?He.value(h):h}function _e(h){if(h>-1&&h=e.maxValues)return;const ne=e.modelValue.slice();n("add",{index:ne.length,value:L}),ne.push(L),n("update:modelValue",ne)}function ze(h,F){if(N.editable.value!==!0||h===void 0||z.value(h)===!0)return;const L=He.value(h);if(e.multiple!==!0){F!==!0&&(Vn(e.fillInput===!0?I.value(h):"",!0,!0),tn()),M.value!==null&&M.value.focus(),(A.value.length===0||kn(He.value(A.value[0]),L)!==!0)&&n("update:modelValue",e.emitValue===!0?L:h);return}if((g!==!0||u.value===!0)&&N.focus(),_l(),A.value.length===0){const Ce=e.emitValue===!0?L:h;n("add",{index:0,value:Ce}),n("update:modelValue",e.multiple===!0?[Ce]:Ce);return}const ne=e.modelValue.slice(),Me=ie.value.findIndex(Ce=>kn(Ce,L));if(Me>-1)n("remove",{index:Me,value:ne.splice(Me,1)[0]});else{if(e.maxValues!==void 0&&ne.length>=e.maxValues)return;const Ce=e.emitValue===!0?L:h;n("add",{index:ne.length,value:Ce}),ne.push(Ce)}n("update:modelValue",ne)}function Ct(h){if(i.platform.is.desktop!==!0)return;const F=h>-1&&h=0?I.value(e.options[L]):T))}}function ti(h,F){const L=ne=>kn(He.value(ne),h);return e.options.find(L)||F.find(L)||h}function en(h,F){const L=h!==void 0?h:F;return typeof L=="function"?L:ne=>ne!==null&&typeof ne=="object"&&L in ne?ne[L]:ne}function ct(h){const F=He.value(h);return ie.value.find(L=>kn(L,F))!==void 0}function _l(h){e.useInput===!0&&M.value!==null&&(h===void 0||M.value===h.target&&h.target.value===Ve.value)&&M.value.select()}function wl(h){ta(h,27)===!0&&l.value===!0&&(on(h),tn(),_n()),n("keyup",h)}function Sl(h){const{value:F}=h.target;if(h.keyCode!==void 0){wl(h);return}if(h.target.value="",v!==null&&(clearTimeout(v),v=null),_n(),typeof F=="string"&&F.length!==0){const L=F.toLocaleLowerCase(),ne=Ce=>{const Le=e.options.find(Je=>Ce.value(Je).toLocaleLowerCase()===L);return Le===void 0?!1:(A.value.indexOf(Le)===-1?ze(Le):tn(),!0)},Me=Ce=>{ne(He)!==!0&&(ne(I)===!0||Ce===!0||yn(F,!0,()=>Me(!0)))};Me()}else N.clearValue(h)}function kl(h){n("keypress",h)}function Cl(h){if(n("keydown",h),mo(h)===!0)return;const F=s.value.length!==0&&(e.newValueMode!==void 0||e.onNewValue!==void 0),L=h.shiftKey!==!0&&e.multiple!==!0&&(r.value>-1||F===!0);if(h.keyCode===27){zn(h);return}if(h.keyCode===9&&L===!1){pn();return}if(h.target===void 0||h.target.id!==N.targetUid.value||N.editable.value!==!0)return;if(h.keyCode===40&&N.innerLoading.value!==!0&&l.value===!1){We(h),bn();return}if(h.keyCode===8&&e.hideSelected!==!0&&s.value.length===0){e.multiple===!0&&Array.isArray(e.modelValue)===!0?_e(e.modelValue.length-1):e.multiple!==!0&&e.modelValue!==null&&n("update:modelValue",null);return}(h.keyCode===35||h.keyCode===36)&&(typeof s.value!="string"||s.value.length===0)&&(We(h),r.value=-1,vn(h.keyCode===36?1:-1,e.multiple)),(h.keyCode===33||h.keyCode===34)&&le.value!==void 0&&(We(h),r.value=Math.max(-1,Math.min(ce.value,r.value+(h.keyCode===33?-1:1)*le.value.view)),vn(h.keyCode===33?1:-1,e.multiple)),(h.keyCode===38||h.keyCode===40)&&(We(h),vn(h.keyCode===38?-1:1,e.multiple));const ne=ce.value;if((P===void 0||p0&&e.useInput!==!0&&h.key!==void 0&&h.key.length===1&&h.altKey===!1&&h.ctrlKey===!1&&h.metaKey===!1&&(h.keyCode!==32||P.length!==0)){l.value!==!0&&bn(h);const Me=h.key.toLocaleLowerCase(),Ce=P.length===1&&P[0]===Me;p=Date.now()+1500,Ce===!1&&(We(h),P+=Me);const Le=new RegExp("^"+P.split("").map(ai=>yc.indexOf(ai)>-1?"\\"+ai:ai).join(".*"),"i");let Je=r.value;if(Ce===!0||Je<0||Le.test(I.value(e.options[Je]))!==!0)do Je=Kl(Je+1,-1,ne-1);while(Je!==r.value&&(z.value(e.options[Je])===!0||Le.test(I.value(e.options[Je]))!==!0));r.value!==Je&&dt(()=>{Ct(Je),qe(Je),Je>=0&&e.useInput===!0&&e.fillInput===!0&&ua(I.value(e.options[Je]))});return}if(!(h.keyCode!==13&&(h.keyCode!==32||e.useInput===!0||P!=="")&&(h.keyCode!==9||L===!1))){if(h.keyCode!==9&&We(h),r.value>-1&&r.value{if(Le){if(Gl(Le)!==!0)return}else Le=e.newValueMode;if(Ce==null)return;Vn("",e.multiple!==!0,!0),(Le==="toggle"?ze:Ue)(Ce,Le==="add-unique"),e.multiple!==!0&&(M.value!==null&&M.value.focus(),tn())};if(e.onNewValue!==void 0?n("newValue",s.value,Me):Me(s.value),e.multiple!==!0)return}l.value===!0?pn():N.innerLoading.value!==!0&&bn()}}function Tl(){return g===!0?$.value:B.value!==null&&B.value.contentEl!==null?B.value.contentEl:void 0}function Hr(){return Tl()}function zr(){return e.hideSelected===!0?[]:t["selected-item"]!==void 0?kt.value.map(h=>t["selected-item"](h)).slice():t.selected!==void 0?[].concat(t.selected()):e.useChips===!0?kt.value.map((h,F)=>_(aa,{key:"option-"+F,removable:N.editable.value===!0&&z.value(h.opt)!==!0,dense:!0,textColor:e.color,tabindex:xt.value,onRemove(){h.removeAtIndex(F)}},()=>_("span",{class:"ellipsis",[h.html===!0?"innerHTML":"textContent"]:I.value(h.opt)}))):[_("span",{[St.value===!0?"innerHTML":"textContent"]:O.value})]}function Ml(){if(te.value===!0)return t["no-option"]!==void 0?t["no-option"]({inputValue:s.value}):void 0;const h=t.option!==void 0?t.option:L=>_(nt,{key:L.index,...L.itemProps},()=>_(ae,()=>_(se,()=>_("span",{[L.html===!0?"innerHTML":"textContent"]:L.label}))));let F=ke("div",Ht.value.map(h));return t["before-options"]!==void 0&&(F=t["before-options"]().concat(F)),Ln(t["after-options"],F)}function Wr(h,F){const L=F===!0?{...ut.value,...N.splitAttrs.attributes.value}:void 0,ne={ref:F===!0?M:void 0,key:"i_t",class:be.value,style:e.inputStyle,value:s.value!==void 0?s.value:"",type:"search",...L,id:F===!0?N.targetUid.value:void 0,maxlength:e.maxlength,autocomplete:e.autocomplete,"data-autofocus":h===!0||e.autofocus===!0||void 0,disabled:e.disable===!0,readonly:e.readonly===!0,...Oe.value};return h!==!0&&g===!0&&(Array.isArray(ne.class)===!0?ne.class=[...ne.class,"no-pointer-events"]:ne.class+=" no-pointer-events"),_("input",ne)}function ql(h){v!==null&&(clearTimeout(v),v=null),!(h&&h.target&&h.target.qComposing===!0)&&(ua(h.target.value||""),C=!0,T=s.value,N.focused.value!==!0&&(g!==!0||u.value===!0)&&N.focus(),e.onFilter!==void 0&&(v=setTimeout(()=>{v=null,yn(s.value)},e.inputDebounce)))}function ua(h){s.value!==h&&(s.value=h,n("inputValue",h))}function Vn(h,F,L){C=L!==!0,e.useInput===!0&&(ua(h),(F===!0||L!==!0)&&(T=h),F!==!0&&yn(h))}function yn(h,F,L){if(e.onFilter===void 0||F!==!0&&N.focused.value!==!0)return;N.innerLoading.value===!0?n("filterAbort"):(N.innerLoading.value=!0,d.value=!0),h!==""&&e.multiple!==!0&&A.value.length!==0&&C!==!0&&h===I.value(A.value[0])&&(h="");const ne=setTimeout(()=>{l.value===!0&&(l.value=!1)},10);w!==null&&clearTimeout(w),w=ne,n("filter",h,(Me,Ce)=>{(F===!0||N.focused.value===!0)&&w===ne&&(clearTimeout(w),typeof Me=="function"&&Me(),d.value=!1,dt(()=>{N.innerLoading.value=!1,N.editable.value===!0&&(F===!0?l.value===!0&&tn():l.value===!0?ni(!0):l.value=!0),typeof Ce=="function"&&dt(()=>{Ce(a)}),typeof L=="function"&&dt(()=>{L(a)})}))},()=>{N.focused.value===!0&&w===ne&&(clearTimeout(w),N.innerLoading.value=!1,d.value=!1),l.value===!0&&(l.value=!1)})}function jr(){return _(Go,{ref:B,class:X.value,style:e.popupContentStyle,modelValue:l.value,fit:e.menuShrink!==!0,cover:e.optionsCover===!0&&te.value!==!0&&e.useInput!==!0,anchor:e.menuAnchor,self:e.menuSelf,offset:e.menuOffset,dark:U.value,noParentEvent:!0,noRefocus:!0,noFocus:!0,square:zt.value,transitionShow:e.transitionShow,transitionHide:e.transitionHide,transitionDuration:e.transitionDuration,separateClosePopup:!0,...It.value,onScrollPassive:J,onBeforeShow:Dl,onBeforeHide:Qr,onShow:Kr},Ml)}function Qr(h){$l(h),pn()}function Kr(){Be()}function Gr(h){on(h),M.value!==null&&M.value.focus(),u.value=!0,window.scrollTo(window.pageXOffset||window.scrollX||document.body.scrollLeft||0,0)}function Zr(h){on(h),dt(()=>{u.value=!1})}function Jr(){const h=[_(vc,{class:`col-auto ${N.fieldClass.value}`,...H.value,for:N.targetUid.value,dark:U.value,square:!0,loading:d.value,itemAligned:!1,filled:!0,stackLabel:s.value.length!==0,...N.splitAttrs.listeners.value,onFocus:Gr,onBlur:Zr},{...t,rawControl:()=>N.getControl(!0),before:void 0,after:void 0})];return l.value===!0&&h.push(_("div",{ref:$,class:X.value+" scroll",style:e.popupContentStyle,...It.value,onClick:zn,onScrollPassive:J},Ml())),_(Si,{ref:x,modelValue:o.value,position:e.useInput===!0?"top":void 0,transitionShow:q,transitionHide:e.transitionHide,transitionDuration:e.transitionDuration,onBeforeShow:Dl,onBeforeHide:Xr,onHide:es,onShow:ts},()=>_("div",{class:"q-select__dialog"+(U.value===!0?" q-select__dialog--dark q-dark":"")+(u.value===!0?" q-select__dialog--focused":"")},h))}function Xr(h){$l(h),x.value!==null&&x.value.__updateRefocusTarget(N.rootRef.value.querySelector(".q-field__native > [tabindex]:last-child")),N.focused.value=!1}function es(h){tn(),N.focused.value===!1&&n("blur",h),_n()}function ts(){const h=document.activeElement;(h===null||h.id!==N.targetUid.value)&&M.value!==null&&M.value!==h&&M.value.focus(),Be()}function pn(){o.value!==!0&&(r.value=-1,l.value===!0&&(l.value=!1),N.focused.value===!1&&(w!==null&&(clearTimeout(w),w=null),N.innerLoading.value===!0&&(n("filterAbort"),N.innerLoading.value=!1,d.value=!1)))}function bn(h){N.editable.value===!0&&(g===!0?(N.onControlFocusin(h),o.value=!0,dt(()=>{N.focus()})):N.focus(),e.onFilter!==void 0?yn(s.value):(te.value!==!0||t["no-option"]!==void 0)&&(l.value=!0))}function tn(){o.value=!1,pn()}function _n(){e.useInput===!0&&Vn(e.multiple!==!0&&e.fillInput===!0&&A.value.length!==0&&I.value(A.value[0])||"",!0,!0)}function ni(h){let F=-1;if(h===!0){if(A.value.length!==0){const L=He.value(A.value[0]);F=e.options.findIndex(ne=>kn(He.value(ne),L))}ve(F)}Ct(F)}function ns(h,F){l.value===!0&&N.innerLoading.value===!1&&(ve(-1,!0),dt(()=>{l.value===!0&&N.innerLoading.value===!1&&(h>F?ve():ni(!0))}))}function Pl(){o.value===!1&&B.value!==null&&B.value.updatePosition()}function Dl(h){h!==void 0&&on(h),n("popupShow",h),N.hasPopupOpen=!0,N.onControlFocusin(h)}function $l(h){h!==void 0&&on(h),n("popupHide",h),N.hasPopupOpen=!1,N.onControlFocusout(h)}function xl(){g=i.platform.is.mobile!==!0&&e.behavior!=="dialog"?!1:e.behavior!=="menu"&&(e.useInput===!0?t["no-option"]!==void 0||e.onFilter!==void 0||te.value===!1:!0),q=i.platform.is.ios===!0&&g===!0&&e.useInput===!0?"fade":e.transitionShow}return Ps(xl),Ds(Pl),xl(),Ke(()=>{v!==null&&clearTimeout(v)}),Object.assign(a,{showPopup:bn,hidePopup:tn,removeAtIndex:_e,add:Ue,toggleOption:ze,getOptionIndex:()=>r.value,setOptionIndex:Ct,moveOptionSelection:vn,filter:yn,updateMenuPosition:Pl,updateInputValue:Vn,isOptionSelected:ct,getEmittingOptionValue:xe,isOptionDisabled:(...h)=>z.value.apply(null,h)===!0,getOptionValue:(...h)=>He.value.apply(null,h),getOptionLabel:(...h)=>I.value.apply(null,h)}),Object.assign(N,{innerValue:A,fieldClass:k(()=>`q-select q-field--auto-height q-select--with${e.useInput!==!0?"out":""}-input q-select--with${e.useChips!==!0?"out":""}-chips q-select--${e.multiple===!0?"multiple":"single"}`),inputRef:b,targetRef:M,hasValue:me,showPopup:bn,floatingLabel:k(()=>e.hideSelected!==!0&&me.value===!0||typeof s.value=="number"||s.value.length!==0||Ol(e.displayValue)),getControlChild:()=>{if(N.editable.value!==!1&&(o.value===!0||te.value!==!0||t["no-option"]!==void 0))return g===!0?Jr():jr();N.hasPopupOpen===!0&&(N.hasPopupOpen=!1)},controlEvents:{onFocusin(h){N.onControlFocusin(h)},onFocusout(h){N.onControlFocusout(h,()=>{_n(),pn()})},onClick(h){if(zn(h),g!==!0&&l.value===!0){pn(),M.value!==null&&M.value.focus();return}bn(h)}},getControl:h=>{const F=zr(),L=h===!0||o.value!==!0||g!==!0;if(e.useInput===!0)F.push(Wr(h,L));else if(N.editable.value===!0){const Me=L===!0?ut.value:void 0;F.push(_("input",{ref:L===!0?M:void 0,key:"d_t",class:"q-select__focus-target",id:L===!0?N.targetUid.value:void 0,value:O.value,readonly:!0,"data-autofocus":h===!0||e.autofocus===!0||void 0,...Me,onKeydown:Cl,onKeyup:wl,onKeypress:kl})),L===!0&&typeof e.autocomplete=="string"&&e.autocomplete.length!==0&&F.push(_("input",{class:"q-select__autocomplete-input",autocomplete:e.autocomplete,tabindex:-1,onKeyup:Sl}))}if(G.value!==void 0&&e.disable!==!0&&ie.value.length!==0){const Me=ie.value.map(Ce=>_("option",{value:Ce,selected:!0}));F.push(_("select",{class:"hidden",name:G.value,multiple:e.multiple},Me))}const ne=e.useInput===!0||L!==!0?void 0:N.splitAttrs.attributes.value;return _("div",{class:"q-field__native row items-center",...ne,...N.splitAttrs.listeners.value},F)},getInnerAppend:()=>e.loading!==!0&&d.value!==!0&&e.hideDropdownIcon!==!0?[_(je,{class:"q-select__dropdown-icon"+(l.value===!0?" rotate-180":""),name:mn.value})]:null}),vo(N)}}),_c=Se({name:"QTabPanels",props:{...jo,...Vt},emits:Qo,setup(e,{slots:t}){const n=Fe(),a=Ft(e,n.proxy.$q),{updatePanelsList:i,getPanelContent:l,panelDirectives:o}=Ko(),r=k(()=>"q-tab-panels q-panel-parent"+(a.value===!0?" q-tab-panels--dark q-dark":""));return()=>(i(t),Yi("div",{class:r.value},l(),"pan",e.swipeable,()=>o.value))}});const wc=ot({name:"EssentialLink",props:["merchants","relays","config-ui","read-notes"],data:function(){return{tab:"merchants",merchantPubkey:null,relayUrl:null,configData:{identifier:null,name:null,about:null,ui:{picture:null,banner:null,theme:null,darkMode:!1}},themeOptions:["classic","bitcoin","flamingo","cyber","freedom","mint","autumn","monochrome","salvador"]}},methods:{addMerchant:async function(){if(!isValidKey(this.merchantPubkey,"npub")){$q.notify({message:"Invalid Public Key!",type:"warning"});return}const e=isValidKeyHex(this.merchantPubkey)?this.merchantPubkey:NostrTools.nip19.decode(this.merchantPubkey).data;this.$emit("add-merchant",e),this.merchantPubkey=null},removeMerchant:async function(e){this.$emit("remove-merchant",e)},addRelay:async function(){const e=(this.relayUrl||"").trim();if(!e.startsWith("wss://")&&!e.startsWith("ws://")){this.relayUrl=null,$q.notify({timeout:5e3,type:"warning",message:"Invalid relay URL.",caption:"Should start with 'wss://'' or 'ws://'"});return}try{new URL(e),this.$emit("add-relay",e)}catch(t){$q.notify({timeout:5e3,type:"warning",message:"Invalid relay URL.",caption:`Error: ${t}`})}this.relayUrl=null},removeRelay:async function(e){this.$emit("remove-relay",e)},updateUiConfig:function(){setTimeout(()=>{const{name:e,about:t,ui:n}=this.configData;this.$emit("ui-config-update",{name:e,about:t,ui:n})},100)},publishNaddr(){this.$emit("publish-naddr")},clearAllData(){this.$emit("clear-all-data")},markNoteAsRead(e){this.$emit("note-read",e)}},created:async function(){this.configUi&&(this.configData={...this.configData,...this.configUi,ui:{...this.configData.ui,...this.configUi.ui||{}}})}}),Sc={class:"q-pt-md"},kc={class:"q-gutter-y-md"},Cc={class:"q-pa-md"},Tc={class:"q-gutter-y-md"},Mc=m("strong",null,"Note",-1),qc=m("div",{class:"text-caption"},[m("ul",null,[m("li",null,[m("span",{class:"text-subtitle1"}," Here all the mercants of the marketplace are listed. ")]),m("li",null,[m("span",{class:"text-subtitle1"}," You can easily add a new merchant by entering its public key in the input below. ")]),m("li",null,[m("span",{class:"text-subtitle1"}," When a merchant is added all its products and stalls will be available in the Market page. ")])])],-1),Pc=["src"],Dc=["src"],$c={class:"text-caption text-grey ellipsis-2-lines"},xc=m("strong",null,"Note",-1),Ic=m("div",{class:"text-caption"},[m("ul",null,[m("li",null,[m("span",{class:"text-subtitle1"}," Here one can customize the look and feel of the Market. ")]),m("li",null,[m("span",{class:"text-subtitle1"},[oe(" When the Market Profile is shared (via "),m("code",null,"naddr"),oe(" ) these customisations will be available to the customers. ")])])])],-1),Ac=m("div",{class:"q-mb-md"},[m("strong",null,"Information")],-1),Oc=m("div",{class:"q-mb-md q-mt-lg"},[m("strong",null,"UI Configurations")],-1),Ec=m("div",{class:"lt-md q-mt-lg"},null,-1),Nc={class:"float-right"};function Lc(e,t,n,a,i,l){return S(),j(lt,null,{default:f(()=>[c(we,null,{default:f(()=>[m("div",Sc,[m("div",kc,[c(cc,{modelValue:e.tab,"onUpdate:modelValue":t[3]||(t[3]=o=>e.tab=o),"active-color":"primary",align:"justify"},{default:f(()=>[c(gi,{name:"merchants",label:"Merchants",onUpdate:t[0]||(t[0]=o=>e.tab=o.name)}),c(gi,{name:"relays",label:"Relays",onUpdate:t[1]||(t[1]=o=>e.tab=o.name)}),c(gi,{name:"marketplace",label:"Look And Feel",onUpdate:t[2]||(t[2]=o=>e.tab=o.name)})]),_:1},8,["modelValue"])])])]),_:1}),c(Ae),c(we,null,{default:f(()=>[m("div",Cc,[m("div",Tc,[c(_c,{modelValue:e.tab,"onUpdate:modelValue":t[14]||(t[14]=o=>e.tab=o)},{default:f(()=>[c(vi,{name:"merchants"},{default:f(()=>{var o;return[(o=e.readNotes)!=null&&o.merchants?fe("",!0):(S(),j(Qt,{key:0,class:"q-mb-lg",bordered:""},{default:f(()=>[c(nt,null,{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>[c(je,{color:"primary",name:"info",size:"xl"})]),_:1})]),_:1}),c(ae,{class:"q-mt-sm q-ml-lg"},{default:f(()=>[c(se,null,{default:f(()=>[Mc]),_:1}),c(se,null,{default:f(()=>[qc]),_:1})]),_:1}),c(ae,{side:""},{default:f(()=>[c(ee,{onClick:t[4]||(t[4]=r=>e.markNoteAsRead("merchants")),size:"lg",outline:"",color:"primary",label:"Got it!",icon:"check_small"})]),_:1})]),_:1})]),_:1})),m("div",null,[c(Xe,{outlined:"",modelValue:e.merchantPubkey,"onUpdate:modelValue":t[5]||(t[5]=r=>e.merchantPubkey=r),onKeydown:ki(e.addMerchant,["enter"]),type:"text",label:"Pubkey/Npub",hint:"Add merchants"},{default:f(()=>[c(ee,{onClick:e.addMerchant,dense:"",flat:"",icon:"add"},null,8,["onClick"])]),_:1},8,["modelValue","onKeydown"]),c(Qt,{class:"q-mt-md"},{default:f(()=>[(S(!0),V(et,null,at(e.merchants,({publicKey:r,profile:s})=>(S(),j(nt,{key:r},{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>[s!=null&&s.picture?(S(),V("img",{key:0,src:s.picture},null,8,Pc)):(S(),V("img",{key:1,src:e.$q.config.staticPath+"/images/blank-avatar.webp"},null,8,Dc))]),_:2},1024)]),_:2},1024),c(ae,{class:"q-mt-sm"},{default:f(()=>[c(se,null,{default:f(()=>[m("strong",null,W(s==null?void 0:s.name),1)]),_:2},1024),c(se,null,{default:f(()=>[m("div",$c,[m("p",null,W(r),1)])]),_:2},1024),c(Tt,null,{default:f(()=>[oe(W(r),1)]),_:2},1024)]),_:2},1024),c(ae,{side:""},{default:f(()=>[c(ee,{size:"12px",flat:"",dense:"",round:"",icon:"delete",onClick:u=>e.removeMerchant(r)},null,8,["onClick"])]),_:2},1024)]),_:2},1024))),128))]),_:1})])]}),_:1}),c(vi,{name:"relays"},{default:f(()=>[m("div",null,[m("div",null,[c(Xe,{outlined:"",modelValue:e.relayUrl,"onUpdate:modelValue":t[6]||(t[6]=o=>e.relayUrl=o),onKeydown:ki(e.addRelay,["enter"]),type:"text",label:"wss://",hint:"Add realays"},{default:f(()=>[c(ee,{onClick:e.addRelay,dense:"",flat:"",icon:"add"},null,8,["onClick"])]),_:1},8,["modelValue","onKeydown"]),c(Qt,{class:"q-mt-md"},{default:f(()=>[(S(!0),V(et,null,at(e.relays,o=>(S(),j(nt,{key:o},{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>[c(je,{name:"router"})]),_:1})]),_:1}),c(ae,{class:"q-mt-sm"},{default:f(()=>[c(se,null,{default:f(()=>[m("strong",null,W(o),1)]),_:2},1024)]),_:2},1024),c(ae,{side:""},{default:f(()=>[c(ee,{size:"12px",flat:"",dense:"",round:"",icon:"delete",onClick:r=>e.removeRelay(o)},null,8,["onClick"])]),_:2},1024)]),_:2},1024))),128))]),_:1})])])]),_:1}),c(vi,{name:"marketplace"},{default:f(()=>{var o;return[(o=e.readNotes)!=null&&o.marketUi?fe("",!0):(S(),j(Qt,{key:0,class:"q-mb-lg gt-sm",bordered:""},{default:f(()=>[c(nt,null,{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>[c(je,{color:"primary",name:"info",size:"xl"})]),_:1})]),_:1}),c(ae,{class:"q-mt-sm q-ml-lg"},{default:f(()=>[c(se,null,{default:f(()=>[xc]),_:1}),c(se,null,{default:f(()=>[Ic]),_:1})]),_:1}),c(ae,{side:""},{default:f(()=>[c(ee,{onClick:t[7]||(t[7]=r=>e.markNoteAsRead("marketUi")),size:"lg",outline:"",color:"primary",label:"Got it!",icon:"check_small"})]),_:1})]),_:1})]),_:1})),Ac,c(Xe,{onChange:e.updateUiConfig,outlined:"",modelValue:e.configData.name,"onUpdate:modelValue":t[8]||(t[8]=r=>e.configData.name=r),type:"text",label:"Market Name",hint:"Short name for the market",class:"q-mb-md"},null,8,["onChange","modelValue"]),c(Xe,{onChange:e.updateUiConfig,outlined:"",modelValue:e.configData.about,"onUpdate:modelValue":t[9]||(t[9]=r=>e.configData.about=r),type:"textarea",rows:"3",label:"Marketplace Description",hint:"It will be displayed on top of the banner image. Can be a longer text.",class:"q-mb-lg"},null,8,["onChange","modelValue"]),Oc,c(Xe,{onChange:e.updateUiConfig,outlined:"",modelValue:e.configData.ui.picture,"onUpdate:modelValue":t[10]||(t[10]=r=>e.configData.ui.picture=r),type:"text",label:"Logo",hint:"It will be displayed next to the search input. Can be png, jpg, ico, gif, svg.",class:"q-mb-md"},null,8,["onChange","modelValue"]),c(Xe,{onChange:e.updateUiConfig,outlined:"",modelValue:e.configData.ui.banner,"onUpdate:modelValue":t[11]||(t[11]=r=>e.configData.ui.banner=r),type:"text",label:"Banner",hint:"It represents the visual identity of the market. Can be png, jpg, ico, gif, svg.",class:"q-mb-md"},null,8,["onChange","modelValue"]),c(bc,{onInput:e.updateUiConfig,"onUpdate:modelValue":[e.updateUiConfig,t[12]||(t[12]=r=>e.configData.ui.theme=r)],filled:"",modelValue:e.configData.ui.theme,hint:"The colors of the market will vary based on the theme. It applies to all components (buttons, labels, inputs, etc)",options:e.themeOptions,label:"Marketplace Theme"},null,8,["onInput","onUpdate:modelValue","modelValue","options"]),Ec,c(po,{onInput:e.updateUiConfig,onClick:e.updateUiConfig,modelValue:e.configData.ui.darkMode,"onUpdate:modelValue":t[13]||(t[13]=r=>e.configData.ui.darkMode=r),label:"Dark Mode",size:"sm",class:"q-mt-sm"},null,8,["onInput","onClick","modelValue"])]}),_:1})]),_:1},8,["modelValue"])])])]),_:1}),c(Ae),c(we,null,{default:f(()=>[m("div",Nc,[c(ee,{onClick:e.clearAllData,flat:"",label:"Clear All Data",icon:"delete",class:"q-ml-lg",color:"negative"},null,8,["onClick"]),c(ee,{onClick:e.publishNaddr,flat:"",label:"Share Market Profile",icon:"share",class:"q-ml-lg",color:"primary"},null,8,["onClick"])])]),_:1}),c(we,{class:"lt-md"}),c(we)]),_:1})}var Zo=_t(wc,[["render",Lc]]);const Rc=ot({name:"UserConfig",props:["account"],data:function(){return{}},methods:{logout:async function(){this.$q.dialog(confirm("Please make sure you save your private key! You will not be able to recover it later!")).onOk(async()=>{this.$emit("logout")})},copyText(e){this.$emit("copy-text",e)}},created:async function(){}}),Bc={class:"row"},Vc={class:"col-10"},Fc={class:"col-2 auto-width"},Yc={class:"row"},Uc={class:"col-10"},Hc={class:"col-2 auto-width"},zc={key:0,class:"float-right"},Wc={key:1},jc=m("strong",null,"No Account",-1),Qc=[jc];function Kc(e,t,n,a,i,l){const o=xs("value");return S(),j(lt,null,{default:f(()=>[e.account?(S(),j(we,{key:0},{default:f(()=>[m("div",Bc,[m("div",Vc,[dn((S(),j(Xe,{readonly:"",disbled:"",outlined:"",hint:e.account.pubkey,type:"text",label:"Public Key",class:"q-mb-md"},{append:f(()=>[c(ee,{onClick:t[0]||(t[0]=r=>e.copyText(e.account.npub)),icon:"content_copy",label:"Npub",flat:"",color:"gray float-right q-mt-sm"})]),_:1},8,["hint"])),[[o,e.account.npub]])]),m("div",Fc,[c(ee,{onClick:t[1]||(t[1]=r=>e.copyText(e.account.pubkey)),icon:"content_copy",label:"Hex",flat:"",color:"gray float-right q-mt-sm"})])]),m("div",Yc,[m("div",Uc,[dn((S(),j(Xe,{readonly:"",disbled:"",outlined:"",type:"password",label:"Private Key",class:"q-mb-md"},{append:f(()=>[c(ee,{onClick:t[2]||(t[2]=r=>e.copyText(e.account.nsec)),icon:"content_copy",label:"Nsec",flat:"",color:"gray float-right q-mt-sm"})]),_:1})),[[o,e.account.nsec]])]),m("div",Hc,[c(ee,{onClick:t[3]||(t[3]=r=>e.copyText(e.account.privkey)),icon:"content_copy",label:"Hex",flat:"",color:"gray float-right q-mt-sm"})])])]),_:1})):fe("",!0),c(Ae),c(we,null,{default:f(()=>[e.account?(S(),V("div",zc,[c(ee,{onClick:e.logout,flat:"",label:"Logout",icon:"logout",class:"q-ml-lg",color:"primary"},null,8,["onClick"])])):(S(),V("div",Wc,Qc))]),_:1}),c(we)]),_:1})}var Gc=_t(Rc,[["render",Kc]]);const Zc=ot({name:"UserChat",props:["user"],data:function(){return{}},methods:{},created:async function(){}}),Jc=m("div",{class:"q-pa-md"},[m("div",{class:"q-gutter-y-md"}," User Chat ")],-1);function Xc(e,t,n,a,i,l){return S(),j(lt,null,{default:f(()=>[Jc]),_:1})}var ed=_t(Zc,[["render",Xc]]);const td=ot({name:"ShoppingCartList",props:["carts"],data:function(){return{}},computed:{},methods:{formatCurrency:function(e,t){return formatCurrency(e,t)},cartTotalFormatted(e){var n;if(!((n=e.products)!=null&&n.length))return"";const t=e.products.reduce((a,i)=>i.price+a,0);return formatCurrency(t,e.products[0].currency)},removeProduct:function(e,t){this.$emit("remove-from-cart",{stallId:e,productId:t})},removeCart:function(e){this.$emit("remove-cart",e)},quantityChanged:function(e){this.$emit("add-to-cart",e)},proceedToCheckout:function(e){this.$emit("checkout-cart",e)}},created(){}}),nd=m("strong",null,"No products in cart!",-1),ad=["src"],id=["src"],ld=["textContent"],od=["textContent"],rd=["src"],sd=["src"],ud={class:"text-caption text-grey ellipsis-2-lines"},cd={class:"q-ma-md"};function dd(e,t,n,a,i,l){var o;return S(),V("div",null,[(o=e.carts)!=null&&o.length?fe("",!0):(S(),j(lt,{key:0,bordered:"",class:"q-mb-md"},{default:f(()=>[c(we,null,{default:f(()=>[nd]),_:1})]),_:1})),(S(!0),V(et,null,at(e.carts,r=>(S(),V("div",{key:r.id},[c(lt,{bordered:"",class:"q-mb-md"},{default:f(()=>[c(nt,null,{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>{var s,u,d,v;return[(u=(s=r.merchant)==null?void 0:s.profile)!=null&&u.picture?(S(),V("img",{key:0,src:(v=(d=r.merchant)==null?void 0:d.profile)==null?void 0:v.picture},null,8,ad)):(S(),V("img",{key:1,src:e.$q.config.staticPath+"/images/blank-avatar.webp"},null,8,id))]}),_:2},1024)]),_:2},1024),c(ae,null,{default:f(()=>[c(se,null,{default:f(()=>{var s;return[m("strong",null,[m("span",{textContent:W((s=r.products[0])==null?void 0:s.stallName)},null,8,ld)])]}),_:2},1024),c(se,{caption:""},{default:f(()=>{var s,u,d;return[oe(" By "),m("span",{class:"ellipsis-2-lines text-wrap",textContent:W(((u=(s=r.merchant)==null?void 0:s.profile)==null?void 0:u.name)||((d=r.merchant)==null?void 0:d.publicKey))},null,8,od)]}),_:2},1024)]),_:2},1024),c(ae,{side:""},{default:f(()=>[m("div",null,[c(ee,{onClick:s=>e.removeCart(r.id),flat:"",color:"pink"},{default:f(()=>[oe(" Clear Cart ")]),_:2},1032,["onClick"])])]),_:2},1024)]),_:2},1024),c(Ae),c(we,{horizontal:""},{default:f(()=>[c(we,{class:"col-12"},{default:f(()=>[c(Qt,{class:"q-mt-md"},{default:f(()=>[(S(!0),V(et,null,at(r.products,s=>(S(),j(nt,{key:s.id},{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>[s.images[0]||s.image?(S(),V("img",{key:0,src:s.images[0]||s.image},null,8,rd)):(S(),V("img",{key:1,src:e.$q.config.staticPath+"/images/placeholder.png"},null,8,sd))]),_:2},1024)]),_:2},1024),c(ae,{class:"q-mt-sm"},{default:f(()=>[c(se,null,{default:f(()=>[oe(W(s.name),1)]),_:2},1024),c(se,{class:"gt-sm"},{default:f(()=>[m("div",ud,[m("p",null,W(s.description),1)])]),_:2},1024)]),_:2},1024),c(ae,{class:"q-mt-sm gt-sm"},{default:f(()=>[c(se,null,{default:f(()=>[m("strong",null,W(e.formatCurrency(s.price,s.currency)),1)]),_:2},1024),c(se)]),_:2},1024),c(ae,{class:"q-ma-sm"},{default:f(()=>[c(Xe,{modelValue:s.orderedQuantity,"onUpdate:modelValue":u=>s.orderedQuantity=u,modelModifiers:{number:!0},onChange:u=>e.quantityChanged(s),type:"number",rounded:"",outlined:"",min:"1",max:s.quantity},null,8,["modelValue","onUpdate:modelValue","onChange","max"])]),_:2},1024),c(ae,null,{default:f(()=>[c(se,null,{default:f(()=>[m("strong",null,W(e.formatCurrency(s.price*s.orderedQuantity,s.currency)),1)]),_:2},1024)]),_:2},1024),c(ae,{side:""},{default:f(()=>[m("div",null,[c(ee,{flat:"",dense:"",round:"",icon:"delete",onClick:u=>e.removeProduct(s.stall_id,s.id)},null,8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024),c(Ae),c(In,{align:"right"},{default:f(()=>[oe(" Total: "),m("strong",cd,W(e.cartTotalFormatted(r)),1),c(ee,{onClick:s=>e.proceedToCheckout(r),flat:"",color:"primary"},{default:f(()=>[oe(" Proceed to Checkout ")]),_:2},1032,["onClick"])]),_:2},1024)]),_:2},1024)]))),128))])}var fd=_t(td,[["render",dd]]),hd=Se({name:"QBtnGroup",props:{unelevated:Boolean,outline:Boolean,flat:Boolean,rounded:Boolean,square:Boolean,push:Boolean,stretch:Boolean,glossy:Boolean,spread:Boolean},setup(e,{slots:t}){const n=k(()=>{const a=["unelevated","outline","flat","rounded","square","push","stretch","glossy"].filter(i=>e[i]===!0).map(i=>`q-btn-group--${i}`).join(" ");return`q-btn-group row no-wrap${a.length!==0?" "+a:""}`+(e.spread===!0?" q-btn-group--spread":" inline")});return()=>_("div",{class:n.value},Ee(t.default))}});const md=Object.keys(bo),gd=e=>md.reduce((t,n)=>{const a=e[n];return a!==void 0&&(t[n]=a),t},{});var vd=Se({name:"QBtnDropdown",props:{...bo,...Bi,modelValue:Boolean,split:Boolean,dropdownIcon:String,contentClass:[Array,String,Object],contentStyle:[Array,String,Object],cover:Boolean,persistent:Boolean,noRouteDismiss:Boolean,autoClose:Boolean,menuAnchor:{type:String,default:"bottom end"},menuSelf:{type:String,default:"top end"},menuOffset:Array,disableMainBtn:Boolean,disableDropdown:Boolean,noIconAnimation:Boolean,toggleAriaLabel:String},emits:["update:modelValue","click","beforeShow","show","beforeHide","hide"],setup(e,{slots:t,emit:n}){const{proxy:a}=Fe(),i=Q(e.modelValue),l=Q(null),o=_a(),r=k(()=>{const b={"aria-expanded":i.value===!0?"true":"false","aria-haspopup":"true","aria-controls":o,"aria-label":e.toggleAriaLabel||a.$q.lang.label[i.value===!0?"collapse":"expand"](e.label)};return(e.disable===!0||e.split===!1&&e.disableMainBtn===!0||e.disableDropdown===!0)&&(b["aria-disabled"]="true"),b}),s=k(()=>"q-btn-dropdown__arrow"+(i.value===!0&&e.noIconAnimation===!1?" rotate-180":"")+(e.split===!1?" q-btn-dropdown__arrow-container":"")),u=k(()=>Is(e)),d=k(()=>gd(e));de(()=>e.modelValue,b=>{l.value!==null&&l.value[b?"show":"hide"]()}),de(()=>e.split,p);function v(b){i.value=!0,n("beforeShow",b)}function y(b){n("show",b),n("update:modelValue",!0)}function g(b){i.value=!1,n("beforeHide",b)}function C(b){n("hide",b),n("update:modelValue",!1)}function w(b){n("click",b)}function T(b){on(b),p(),n("click",b)}function q(b){l.value!==null&&l.value.toggle(b)}function P(b){l.value!==null&&l.value.show(b)}function p(b){l.value!==null&&l.value.hide(b)}return Object.assign(a,{show:P,hide:p,toggle:q}),fn(()=>{e.modelValue===!0&&P()}),()=>{const b=[_(je,{class:s.value,name:e.dropdownIcon||a.$q.iconSet.arrow.dropdown})];return e.disableDropdown!==!0&&b.push(_(Go,{ref:l,id:o,class:e.contentClass,style:e.contentStyle,cover:e.cover,fit:!0,persistent:e.persistent,noRouteDismiss:e.noRouteDismiss,autoClose:e.autoClose,anchor:e.menuAnchor,self:e.menuSelf,offset:e.menuOffset,separateClosePopup:!0,transitionShow:e.transitionShow,transitionHide:e.transitionHide,transitionDuration:e.transitionDuration,onBeforeShow:v,onShow:y,onBeforeHide:g,onHide:C},t.default)),e.split===!1?_(ee,{class:"q-btn-dropdown q-btn-dropdown--simple",...d.value,...r.value,disable:e.disable===!0||e.disableMainBtn===!0,noWrap:!0,round:!1,onClick:w},{default:()=>Ee(t.label,[]).concat(b),loading:t.loading}):_(hd,{class:"q-btn-dropdown q-btn-dropdown--split no-wrap q-btn-item",rounded:e.rounded,square:e.square,...u.value,glossy:e.glossy,stretch:e.stretch},()=>[_(ee,{class:"q-btn-dropdown--current",...d.value,disable:e.disable===!0||e.disableMainBtn===!0,noWrap:!0,round:!1,onClick:T},{default:t.label,loading:t.loading}),_(ee,{class:"q-btn-dropdown__arrow-container q-anchor--skip",...r.value,...u.value,disable:e.disable===!0||e.disableDropdown===!0,rounded:e.rounded,color:e.color,textColor:e.textColor,dense:e.dense,size:e.size,padding:e.padding,ripple:e.ripple},()=>b)])}}});const yd=ot({name:"ShoppingCartCheckout",props:["cart","stall","customer-pubkey"],data:function(){return{orderConfirmed:!1,paymentMethod:"ln",shippingZone:null,contactData:{email:null,npub:null,address:null,message:null},paymentOptions:[{label:"Lightning Network",value:"ln"},{label:"BTC Onchain",value:"btc"},{label:"Cashu",value:"cashu"}]}},computed:{cartTotal(){var e;return(e=this.cart.products)!=null&&e.length?this.cart.products.reduce((t,n)=>n.price+t,0):0},cartTotalWithShipping(){return this.shippingZone?this.cartTotal+this.shippingZone.cost:this.cartTotal},shippingZoneLabel(){var t;if(!this.shippingZone)return"Shipping Zone";const e=this.shippingZone.name.substring(0,10);return((t=this.shippingZone)==null?void 0:t.name.length)<10?e:e+"..."}},methods:{formatCurrency:function(e,t){return formatCurrency(e,t)},selectShippingZone:function(e){this.shippingZone=e},confirmOrder:function(){if(!this.shippingZone){this.$q.notify({timeout:5e3,type:"warning",message:"Please select a shipping zone!"});return}this.orderConfirmed=!0},async placeOrder(){if(!this.shippingZone){this.$q.notify({timeout:5e3,type:"warning",message:"Please select a shipping zone!"});return}if(!this.customerPubkey){this.$emit("login-required");return}const e={address:this.contactData.address,message:this.contactData.message,contact:{nostr:this.contactData.npub,email:this.contactData.email},items:Array.from(this.cart.products,a=>({product_id:a.id,quantity:a.orderedQuantity})),shipping_id:this.shippingZone.id,type:0},t=Math.floor(Date.now()/1e3);e.id=await hash([this.customerPubkey,t,JSON.stringify(e)].join(":"));const n={...await NostrTools.getBlankEvent(),kind:4,created_at:t,tags:[["p",this.stall.pubkey]],pubkey:this.customerPubkey};this.$emit("place-order",{event:n,order:e,cartId:this.cart.id})},goToShoppingCart:function(){this.$emit("change-page","shopping-cart-list")}},created(){var e;((e=this.stall.shipping)==null?void 0:e.length)===1&&(this.shippingZone=this.stall.shipping[0])}}),pd=["src"],bd=["src"],_d=["textContent"],wd=["textContent"],Sd={class:"row q-mt-md q-ml-md q-pr-md"},kd=m("div",{class:"col-xs-12 col-sm-12 col-md-2 q-mt-md"},[m("strong",null,"Message:")],-1),Cd={class:"col-xs-12 col-sm-12 col-md-10"},Td={class:"row q-mt-md q-ml-md q-pr-md"},Md=m("div",{class:"col-xs-12 col-sm-12 col-md-2 q-mt-md"},[m("strong",null,"Address:")],-1),qd={class:"col-xs-12 col-sm-12 col-md-10"},Pd={class:"row q-mt-md q-ml-md q-pr-md"},Dd=m("div",{class:"col-xs-12 col-sm-12 col-md-2 q-mt-md"},[m("strong",null,"Email:")],-1),$d={class:"col-xs-12 col-sm-12 col-md-10"},xd={class:"row q-mt-md q-ml-md q-pr-md"},Id=m("div",{class:"col-xs-12 col-sm-12 col-md-2 q-mt-md"},[m("strong",null,"Npub:")],-1),Ad={class:"col-xs-12 col-sm-12 col-md-10"},Od={class:"row q-mt-md"},Ed=m("div",{class:"col-xs-12 col-sm-12 col-md-4"},[m("strong",null,"Subtotal:")],-1),Nd={class:"col-xs-12 col-sm-12 col-md-4"},Ld=m("div",{class:"col-xs-12 col-sm-12 col-md-4"},null,-1),Rd={class:"row q-mt-md"},Bd=m("div",{class:"col-xs-12 col-sm-12 col-md-4"},[m("strong",null,"Shipping:")],-1),Vd={class:"col-xs-12 col-sm-12 col-md-4"},Fd={key:0},Yd={class:"col-xs-12 col-sm-12 col-md-4"},Ud=["textContent"],Hd=["textContent"],zd={class:"row q-mt-md"},Wd=m("div",{class:"col-xs-12 col-sm-12 col-md-4"},[m("strong",null,"Total:")],-1),jd={class:"col-xs-12 col-sm-12 col-md-4"},Qd=m("div",{class:"col-xs-12 col-sm-12 col-md-4"},null,-1),Kd=m("strong",null,"Payment Method",-1),Gd={key:0},Zd={key:1};function Jd(e,t,n,a,i,l){return S(),V("div",null,[e.cart&&e.stall?(S(),j(lt,{key:0,bordered:"",class:"q-mb-md"},{default:f(()=>[c(nt,null,{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>{var o,r,s,u;return[(r=(o=e.cart.merchant)==null?void 0:o.profile)!=null&&r.picture?(S(),V("img",{key:0,src:(u=(s=e.cart.merchant)==null?void 0:s.profile)==null?void 0:u.picture},null,8,pd)):(S(),V("img",{key:1,src:e.$q.config.staticPath+"/images/blank-avatar.webp"},null,8,bd))]}),_:1})]),_:1}),c(ae,null,{default:f(()=>[c(se,null,{default:f(()=>{var o;return[m("strong",null,[m("span",{textContent:W((o=e.cart.products[0])==null?void 0:o.stallName)},null,8,_d)])]}),_:1}),c(se,{caption:""},{default:f(()=>{var o,r,s;return[oe(" By "),m("span",{class:"ellipsis-2-lines text-wrap",textContent:W(((r=(o=e.cart.merchant)==null?void 0:o.profile)==null?void 0:r.name)||((s=e.cart.merchant)==null?void 0:s.publicKey))},null,8,wd)]}),_:1})]),_:1}),c(ae,{side:""})]),_:1}),c(Ae),e.orderConfirmed?(S(),j(we,{key:0},{default:f(()=>[m("div",Sd,[kd,m("div",Cd,[c(Xe,{modelValue:e.contactData.message,"onUpdate:modelValue":t[0]||(t[0]=o=>e.contactData.message=o),modelModifiers:{trim:!0},outlined:"",type:"textarea",rows:"3",label:"Message (optional)",hint:"Message merchant about additional order needs"},null,8,["modelValue"])])]),m("div",Td,[Md,m("div",qd,[c(Xe,{modelValue:e.contactData.address,"onUpdate:modelValue":t[1]||(t[1]=o=>e.contactData.address=o),modelModifiers:{trim:!0},outlined:"",type:"textarea",rows:"3",label:"Address (optional)",hint:"Must provide for physical shipping"},null,8,["modelValue"])])]),m("div",Pd,[Dd,m("div",$d,[c(Xe,{modelValue:e.contactData.email,"onUpdate:modelValue":t[2]||(t[2]=o=>e.contactData.email=o),modelModifiers:{trim:!0},type:"email",outlined:"",label:"Email (optional)",hint:"Merchant may not use email"},null,8,["modelValue"])])]),m("div",xd,[Id,m("div",Ad,[c(Xe,{modelValue:e.contactData.npub,"onUpdate:modelValue":t[3]||(t[3]=o=>e.contactData.npub=o),modelModifiers:{trim:!0},outlined:"",label:"Alternative Npub (optional)",hint:"Use a different Npub to communicate with the merchant"},null,8,["modelValue"])])])]),_:1})):(S(),j(we,{key:1,horizontal:""},{default:f(()=>[c(we,{class:"col-7"},{default:f(()=>[m("div",Od,[Ed,m("div",Nd,[m("strong",null,W(e.formatCurrency(e.cartTotal,e.stall.currency)),1)]),Ld]),m("div",Rd,[Bd,m("div",Vd,[e.shippingZone?(S(),V("strong",Fd,W(e.formatCurrency(e.shippingZone.cost,e.stall.currency)),1)):fe("",!0)]),m("div",Yd,[c(vd,{unelevated:"",color:"secondary",rounded:"",label:e.shippingZoneLabel},{default:f(()=>[(S(!0),V(et,null,at(e.stall.shipping,o=>dn((S(),j(nt,{onClick:r=>e.selectShippingZone(o),key:o.id,clickable:""},{default:f(()=>[c(ae,null,{default:f(()=>[c(se,null,{default:f(()=>[m("span",{textContent:W(o.name)},null,8,Ud)]),_:2},1024),c(se,{caption:""},{default:f(()=>{var r;return[m("span",{textContent:W((r=o.countries)==null?void 0:r.join(", "))},null,8,Hd)]}),_:2},1024)]),_:2},1024)]),_:2},1032,["onClick"])),[[Mi]])),128))]),_:1},8,["label"])])]),c(Ae,{class:"q-mt-sm"}),m("div",zd,[Wd,m("div",jd,[m("strong",null,W(e.formatCurrency(e.cartTotalWithShipping,e.stall.currency)),1)]),Qd])]),_:1}),c(Ae,{vertical:""}),c(we,null,{default:f(()=>[Kd,c(As,{modelValue:e.paymentMethod,"onUpdate:modelValue":t[4]||(t[4]=o=>e.paymentMethod=o),options:e.paymentOptions,color:"green",disable:""},null,8,["modelValue","options"])]),_:1})]),_:1})),c(Ae),c(In,{align:"right"},{default:f(()=>[e.orderConfirmed?(S(),V("div",Gd,[c(ee,{onClick:t[5]||(t[5]=o=>e.orderConfirmed=!1),flat:"",color:"grey"},{default:f(()=>[oe(" Back ")]),_:1}),c(ee,{onClick:t[6]||(t[6]=o=>e.placeOrder()),flat:"",color:"primary"},{default:f(()=>[oe(" Place Order ")]),_:1})])):(S(),V("div",Zd,[c(ee,{onClick:e.goToShoppingCart,flat:"",color:"grey"},{default:f(()=>[oe(" Back ")]),_:1},8,["onClick"]),c(ee,{onClick:e.confirmOrder,flat:"",color:"primary"},{default:f(()=>[oe(" Confirm ")]),_:1},8,["onClick"])]))]),_:1})]),_:1})):fe("",!0)])}var Xd=_t(yd,[["render",Jd]]);const{passive:nn}=xn;var ef=Se({name:"QInfiniteScroll",props:{offset:{type:Number,default:500},debounce:{type:[String,Number],default:100},scrollTarget:{default:void 0},initialIndex:Number,disable:Boolean,reverse:Boolean},emits:["load"],setup(e,{slots:t,emit:n}){const a=Q(!1),i=Q(!0),l=Q(null),o=Q(null);let r=e.initialIndex||0,s,u;const d=k(()=>"q-infinite-scroll__loading"+(a.value===!0?"":" invisible"));function v(){if(e.disable===!0||a.value===!0||i.value===!1)return;const x=ca(s),$=li(s),G=El(s);e.reverse===!1?Math.round($+G+e.offset)>=Math.round(x)&&y():Math.round($)<=e.offset&&y()}function y(){if(e.disable===!0||a.value===!0||i.value===!1)return;r++,a.value=!0;const x=ca(s);n("load",r,$=>{i.value===!0&&(a.value=!1,dt(()=>{if(e.reverse===!0){const G=ca(s),Z=li(s),ce=G-x;oi(s,Z+ce)}$===!0?w():l.value&&l.value.closest("body")&&u()}))})}function g(){r=0}function C(){i.value===!1&&(i.value=!0,s.addEventListener("scroll",u,nn)),v()}function w(){i.value===!0&&(i.value=!1,a.value=!1,s.removeEventListener("scroll",u,nn),u!==void 0&&u.cancel!==void 0&&u.cancel())}function T(){if(s&&i.value===!0&&s.removeEventListener("scroll",u,nn),s=Ea(l.value,e.scrollTarget),i.value===!0){if(s.addEventListener("scroll",u,nn),e.reverse===!0){const x=ca(s),$=El(s);oi(s,x-$)}v()}}function q(x){r=x}function P(x){x=parseInt(x,10);const $=u;u=x<=0?v:oo(v,isNaN(x)===!0?100:x),s&&i.value===!0&&($!==void 0&&s.removeEventListener("scroll",$,nn),s.addEventListener("scroll",u,nn))}function p(x){if(b.value===!0){if(o.value===null){x!==!0&&dt(()=>{p(!0)});return}const $=`${a.value===!0?"un":""}pauseAnimations`;Array.from(o.value.getElementsByTagName("svg")).forEach(G=>{G[$]()})}}const b=k(()=>e.disable!==!0&&i.value===!0);de([a,b],()=>{p()}),de(()=>e.disable,x=>{x===!0?w():C()}),de(()=>e.reverse,()=>{a.value===!1&&i.value===!0&&v()}),de(()=>e.scrollTarget,T),de(()=>e.debounce,P);let M=!1;La(()=>{M!==!1&&s&&oi(s,M)}),Na(()=>{M=s?li(s):!1}),Ke(()=>{i.value===!0&&s.removeEventListener("scroll",u,nn)}),fn(()=>{P(e.debounce),T(),a.value===!1&&p()});const B=Fe();return Object.assign(B.proxy,{poll:()=>{u!==void 0&&u()},trigger:y,stop:w,reset:g,resume:C,setIndex:q}),()=>{const x=co(t.default,[]);return b.value===!0&&x[e.reverse===!1?"push":"unshift"](_("div",{ref:o,class:d.value},Ee(t.loading))),_("div",{class:"q-infinite-scroll",ref:l},x)}}});const tf=ot({name:"ProductCard",props:["product","is-stall"],data:function(){return{}},methods:{},created(){}}),nf={class:"row no-wrap items-center"},af={class:"col text-subtitle2 ellipsis-2-lines"},lf={key:0},of={class:"text-h6"},rf={key:1},sf={class:"text-h6"},uf={class:"q-ml-md text-caption text-green-8 text-weight-bolder q-mt-md"},cf={key:0,class:"text-subtitle1"},df=["textContent"],ff={key:1,class:"text-subtitle1"},hf={class:"text-caption text-grey ellipsis-2-lines",style:{"min-height":"40px"}},mf={key:0},gf={class:"text-caption text-weight-bolder"},vf={class:"q-ml-auto"};function yf(e,t,n,a,i,l){return S(),j(lt,{class:"card--product"},{default:f(()=>[c(ji,{src:e.product.images&&e.product.images.length>0&&e.product.images[0]?e.product.images[0]:e.$q.config.staticPath+"/images/placeholder.png",alt:"Product Image",loading:"lazy","spinner-color":"white",fit:"contain",height:"300px"},null,8,["src"]),c(we,{class:"q-pb-xs q-pt-md"},{default:f(()=>[c(ee,{round:"",disabled:e.product.quantity<1,color:"primary",rounded:"",icon:"shopping_cart",size:"lg",style:{position:"absolute",top:"0",right:"0",transform:"translate(-50%, -50%)"},onClick:t[0]||(t[0]=o=>e.$emit("add-to-cart",e.product))},{default:f(()=>[c(Tt,null,{default:f(()=>[oe(" Add to cart ")]),_:1})]),_:1},8,["disabled"]),m("div",nf,[m("div",af,W(e.product.name),1)])]),_:1}),c(we,{class:"q-py-sm"},{default:f(()=>[m("div",null,[e.product.currency=="sat"?(S(),V("span",lf,[m("span",of,W(e.product.price)+" sats",1),c(Tt,null,{default:f(()=>[oe(" BTC "+W((e.product.price/1e8).toFixed(8)),1)]),_:1})])):(S(),V("span",rf,[m("span",sf,W(e.product.formatedPrice),1)])),m("span",uf,W(e.product.quantity)+" left",1)]),e.product.categories?(S(),V("div",cf,[c(Wi,{items:e.product.categories||[],"virtual-scroll-horizontal":""},{default:f(({item:o,index:r})=>[(S(),j(aa,{key:r,dense:""},{default:f(()=>[m("span",{textContent:W(o)},null,8,df)]),_:2},1024))]),_:1},8,["items"])])):(S(),V("div",ff," \xA0 ")),m("div",hf,[e.product.description?(S(),V("p",mf,W(e.product.description),1)):fe("",!0)])]),_:1}),c(Ae),c(In,null,{default:f(()=>[m("div",gf,W(e.product.stallName),1)]),_:1}),c(Ae),c(In,null,{default:f(()=>[m("div",vf,[e.isStall?fe("",!0):(S(),j(ee,{key:0,flat:"",class:"text-weight-bold text-capitalize q-ml-auto float-left",dense:"",color:"primary",onClick:t[1]||(t[1]=o=>e.$emit("change-page","stall",{stall:e.product.stall_id}))},{default:f(()=>[oe(" Visit Stall ")]),_:1})),c(ee,{flat:"",class:"text-weight-bold text-capitalize q-ml-auto",dense:"",color:"primary",onClick:t[2]||(t[2]=o=>e.$emit("change-page","stall",{stall:e.product.stall_id,product:e.product.id}))},{default:f(()=>[oe(" View details ")]),_:1})])]),_:1})]),_:1})}var Jo=_t(tf,[["render",yf]]);const pf=ot({name:"CustomerMarket",components:{ProductCard:Jo},props:["filtered-products","search-text","filter-categories"],data:function(){return{search:null,partialProducts:[],productsPerPage:12,startIndex:0,lastProductIndex:0,showProducts:!0}},watch:{searchText:function(){this.refreshProducts()},filteredProducts:function(){this.refreshProducts()},filterCategories:function(){this.refreshProducts()}},methods:{refreshProducts:function(){this.showProducts=!1,this.partialProducts=[],this.startIndex=0,this.lastProductIndex=Math.min(this.filteredProducts.length,this.productsPerPage),this.partialProducts.push(...this.filteredProducts.slice(0,this.lastProductIndex)),setTimeout(()=>{this.showProducts=!0},0)},addToCart(e){this.$emit("add-to-cart",e)},changePageM(e,t){this.$emit("change-page",e,t)},onLoad(e,t){setTimeout(()=>{if(this.startIndex>=this.filteredProducts.length){t();return}this.startIndex=this.lastProductIndex,this.lastProductIndex=Math.min(this.filteredProducts.length,this.lastProductIndex+this.productsPerPage),this.partialProducts.push(...this.filteredProducts.slice(this.startIndex,this.lastProductIndex)),t()},100)}},created(){this.lastProductIndex=Math.min(this.filteredProducts.length,24),this.partialProducts.push(...this.filteredProducts.slice(0,this.lastProductIndex))}}),bf={class:"row q-col-gutter-md"},_f={class:"row justify-center q-my-md"};function wf(e,t,n,a,i,l){const o=Ci("product-card");return S(),V("div",null,[e.showProducts?(S(),j(ef,{key:0,onLoad:e.onLoad,offset:250},_o({default:f(()=>[m("div",bf,[(S(!0),V(et,null,at(e.partialProducts,(r,s)=>(S(),V("div",{class:"col-xs-12 col-sm-6 col-md-4 col-lg-3",key:s},[c(o,{product:r,onChangePage:e.changePageM,onAddToCart:e.addToCart},null,8,["product","onChangePage","onAddToCart"])]))),128))])]),_:2},[e.lastProductIndex[m("div",_f,[c(Do,{color:"primary",size:"40px"})])]),key:"0"}:void 0]),1032,["onLoad"])):fe("",!0)])}var Sf=_t(pf,[["render",wf]]),kf=Se({name:"QSlideTransition",props:{appear:Boolean,duration:{type:Number,default:300}},emits:["show","hide"],setup(e,{slots:t,emit:n}){let a=!1,i,l,o=null,r=null,s,u;function d(){i&&i(),i=null,a=!1,o!==null&&(clearTimeout(o),o=null),r!==null&&(clearTimeout(r),r=null),l!==void 0&&l.removeEventListener("transitionend",s),s=null}function v(w,T,q){T!==void 0&&(w.style.height=`${T}px`),w.style.transition=`height ${e.duration}ms cubic-bezier(.25, .8, .50, 1)`,a=!0,i=q}function y(w,T){w.style.overflowY=null,w.style.height=null,w.style.transition=null,d(),T!==u&&n(T)}function g(w,T){let q=0;l=w,a===!0?(d(),q=w.offsetHeight===w.scrollHeight?0:void 0):(u="hide",w.style.overflowY="hidden"),v(w,q,T),o=setTimeout(()=>{o=null,w.style.height=`${w.scrollHeight}px`,s=P=>{r=null,(Object(P)!==P||P.target===w)&&y(w,"show")},w.addEventListener("transitionend",s),r=setTimeout(s,e.duration*1.1)},100)}function C(w,T){let q;l=w,a===!0?d():(u="show",w.style.overflowY="hidden",q=w.scrollHeight),v(w,q,T),o=setTimeout(()=>{o=null,w.style.height=0,s=P=>{r=null,(Object(P)!==P||P.target===w)&&y(w,"hide")},w.addEventListener("transitionend",s),r=setTimeout(s,e.duration*1.1)},100)}return Ke(()=>{a===!0&&d()}),()=>_(na,{css:!1,appear:e.appear,onEnter:g,onLeave:C},t.default)}});const an=Os({}),Cf=Object.keys(Ra);var Tf=Se({name:"QExpansionItem",props:{...Ra,...Ri,...Vt,icon:String,label:String,labelLines:[Number,String],caption:String,captionLines:[Number,String],dense:Boolean,toggleAriaLabel:String,expandIcon:String,expandedIcon:String,expandIconClass:[Array,String,Object],duration:Number,headerInsetLevel:Number,contentInsetLevel:Number,expandSeparator:Boolean,defaultOpened:Boolean,hideExpandIcon:Boolean,expandIconToggle:Boolean,switchToggleSide:Boolean,denseToggle:Boolean,group:String,popup:Boolean,headerStyle:[Array,String,Object],headerClass:[Array,String,Object]},emits:[...Vi,"click","afterShow","afterHide"],setup(e,{slots:t,emit:n}){const{proxy:{$q:a}}=Fe(),i=Ft(e,a),l=Q(e.modelValue!==null?e.modelValue:e.defaultOpened),o=Q(null),r=_a(),{show:s,hide:u,toggle:d}=Fi({showing:l});let v,y;const g=k(()=>`q-expansion-item q-item-type q-expansion-item--${l.value===!0?"expanded":"collapsed"} q-expansion-item--${e.popup===!0?"popup":"standard"}`),C=k(()=>{if(e.contentInsetLevel===void 0)return null;const J=a.lang.rtl===!0?"Right":"Left";return{["padding"+J]:e.contentInsetLevel*56+"px"}}),w=k(()=>e.disable!==!0&&(e.href!==void 0||e.to!==void 0&&e.to!==null&&e.to!=="")),T=k(()=>{const J={};return Cf.forEach(qe=>{J[qe]=e[qe]}),J}),q=k(()=>w.value===!0||e.expandIconToggle!==!0),P=k(()=>e.expandedIcon!==void 0&&l.value===!0?e.expandedIcon:e.expandIcon||a.iconSet.expansionItem[e.denseToggle===!0?"denseIcon":"icon"]),p=k(()=>e.disable!==!0&&(w.value===!0||e.expandIconToggle===!0)),b=k(()=>({expanded:l.value===!0,detailsId:e.targetUid,toggle:d,show:s,hide:u})),M=k(()=>{const J=e.toggleAriaLabel!==void 0?e.toggleAriaLabel:a.lang.label[l.value===!0?"collapse":"expand"](e.label);return{role:"button","aria-expanded":l.value===!0?"true":"false","aria-controls":r,"aria-label":J}});de(()=>e.group,J=>{y!==void 0&&y(),J!==void 0&&ce()});function B(J){w.value!==!0&&d(J),n("click",J)}function x(J){J.keyCode===13&&$(J,!0)}function $(J,qe){qe!==!0&&o.value!==null&&o.value.focus(),d(J),We(J)}function G(){n("afterShow")}function Z(){n("afterHide")}function ce(){v===void 0&&(v=_a()),l.value===!0&&(an[e.group]=v);const J=de(l,Be=>{Be===!0?an[e.group]=v:an[e.group]===v&&delete an[e.group]}),qe=de(()=>an[e.group],(Be,N)=>{N===v&&Be!==void 0&&Be!==v&&u()});y=()=>{J(),qe(),an[e.group]===v&&delete an[e.group],y=void 0}}function $e(){const J={class:[`q-focusable relative-position cursor-pointer${e.denseToggle===!0&&e.switchToggleSide===!0?" items-end":""}`,e.expandIconClass],side:e.switchToggleSide!==!0,avatar:e.switchToggleSide},qe=[_(je,{class:"q-expansion-item__toggle-icon"+(e.expandedIcon===void 0&&l.value===!0?" q-expansion-item__toggle-icon--rotated":""),name:P.value})];return p.value===!0&&(Object.assign(J,{tabindex:0,...M.value,onClick:$,onKeyup:x}),qe.unshift(_("div",{ref:o,class:"q-expansion-item__toggle-focus q-icon q-focus-helper q-focus-helper--rounded",tabindex:-1}))),_(ae,J,()=>qe)}function E(){let J;return t.header!==void 0?J=[].concat(t.header(b.value)):(J=[_(ae,()=>[_(se,{lines:e.labelLines},()=>e.label||""),e.caption?_(se,{lines:e.captionLines,caption:!0},()=>e.caption):null])],e.icon&&J[e.switchToggleSide===!0?"push":"unshift"](_(ae,{side:e.switchToggleSide===!0,avatar:e.switchToggleSide!==!0},()=>_(je,{name:e.icon})))),e.disable!==!0&&e.hideExpandIcon!==!0&&J[e.switchToggleSide===!0?"unshift":"push"]($e()),J}function le(){const J={ref:"item",style:e.headerStyle,class:e.headerClass,dark:i.value,disable:e.disable,dense:e.dense,insetLevel:e.headerInsetLevel};return q.value===!0&&(J.clickable=!0,J.onClick=B,Object.assign(J,w.value===!0?T.value:M.value)),_(nt,J,E)}function ve(){return dn(_("div",{key:"e-content",class:"q-expansion-item__content relative-position",style:C.value,id:r},Ee(t.default)),[[Es,l.value]])}function ke(){const J=[le(),_(kf,{duration:e.duration,onShow:G,onHide:Z},ve)];return e.expandSeparator===!0&&J.push(_(Ae,{class:"q-expansion-item__border q-expansion-item__border--top absolute-top",dark:i.value}),_(Ae,{class:"q-expansion-item__border q-expansion-item__border--bottom absolute-bottom",dark:i.value})),J}return e.group!==void 0&&ce(),Ke(()=>{y!==void 0&&y()}),()=>_("div",{class:g.value},[_("div",{class:"q-expansion-item__container relative-position"},ke())])}});//! moment.js +//! version : 2.29.4 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +var Xo;function R(){return Xo.apply(null,arguments)}function Mf(e){Xo=e}function pt(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function cn(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function ye(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function el(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var t;for(t in e)if(ye(e,t))return!1;return!0}function tt(e){return e===void 0}function Bt(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function la(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function er(e,t){var n=[],a,i=e.length;for(a=0;a>>0,a;for(a=0;a0)for(n=0;n=0;return(l?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+a}var il=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ha=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,pi={},Pn={};function K(e,t,n,a){var i=a;typeof a=="string"&&(i=function(){return this[a]()}),e&&(Pn[e]=i),t&&(Pn[t[0]]=function(){return qt(i.apply(this,arguments),t[1],t[2])}),n&&(Pn[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function xf(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function If(e){var t=e.match(il),n,a;for(n=0,a=t.length;n=0&&ha.test(e);)e=e.replace(ha,a),ha.lastIndex=0,n-=1;return e}var Af={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function Of(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(il).map(function(a){return a==="MMMM"||a==="MM"||a==="DD"||a==="dddd"?a.slice(1):a}).join(""),this._longDateFormat[e])}var Ef="Invalid date";function Nf(){return this._invalidDate}var Lf="%d",Rf=/\d{1,2}/;function Bf(e){return this._ordinal.replace("%d",e)}var Vf={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Ff(e,t,n,a){var i=this._relativeTime[n];return $t(i)?i(e,t,n,a):i.replace(/%d/i,e)}function Yf(e,t){var n=this._relativeTime[e>0?"future":"past"];return $t(n)?n(t):n.replace(/%s/i,t)}var Qn={};function Ge(e,t){var n=e.toLowerCase();Qn[n]=Qn[n+"s"]=Qn[t]=e}function mt(e){return typeof e=="string"?Qn[e]||Qn[e.toLowerCase()]:void 0}function ll(e){var t={},n,a;for(a in e)ye(e,a)&&(n=mt(a),n&&(t[n]=e[a]));return t}var ir={};function Ze(e,t){ir[e]=t}function Uf(e){var t=[],n;for(n in e)ye(e,n)&&t.push({unit:n,priority:ir[n]});return t.sort(function(a,i){return a.priority-i.priority}),t}function Ha(e){return e%4===0&&e%100!==0||e%400===0}function ft(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ue(e){var t=+e,n=0;return t!==0&&isFinite(t)&&(n=ft(t)),n}function Rn(e,t){return function(n){return n!=null?(lr(this,e,n),R.updateOffset(this,t),this):Da(this,e)}}function Da(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function lr(e,t,n){e.isValid()&&!isNaN(n)&&(t==="FullYear"&&Ha(e.year())&&e.month()===1&&e.date()===29?(n=ue(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Ga(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Hf(e){return e=mt(e),$t(this[e])?this[e]():this}function zf(e,t){if(typeof e=="object"){e=ll(e);var n=Uf(e),a,i=n.length;for(a=0;a68?1900:2e3)};var gr=Rn("FullYear",!0);function ch(){return Ha(this.year())}function dh(e,t,n,a,i,l,o){var r;return e<100&&e>=0?(r=new Date(e+400,t,n,a,i,l,o),isFinite(r.getFullYear())&&r.setFullYear(e)):r=new Date(e,t,n,a,i,l,o),r}function Jn(e){var t,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function xa(e,t,n){var a=7+t-n,i=(7+Jn(e,0,a).getUTCDay()-t)%7;return-i+a-1}function vr(e,t,n,a,i){var l=(7+n-a)%7,o=xa(e,a,i),r=1+7*(t-1)+l+o,s,u;return r<=0?(s=e-1,u=Kn(s)+r):r>Kn(e)?(s=e+1,u=r-Kn(e)):(s=e,u=r),{year:s,dayOfYear:u}}function Xn(e,t,n){var a=xa(e.year(),t,n),i=Math.floor((e.dayOfYear()-a-1)/7)+1,l,o;return i<1?(o=e.year()-1,l=i+Rt(o,t,n)):i>Rt(e.year(),t,n)?(l=i-Rt(e.year(),t,n),o=e.year()+1):(o=e.year(),l=i),{week:l,year:o}}function Rt(e,t,n){var a=xa(e,t,n),i=xa(e+1,t,n);return(Kn(e)-a+i)/7}K("w",["ww",2],"wo","week");K("W",["WW",2],"Wo","isoWeek");Ge("week","w");Ge("isoWeek","W");Ze("week",5);Ze("isoWeek",5);Y("w",De);Y("ww",De,st);Y("W",De);Y("WW",De,st);sa(["w","ww","W","WW"],function(e,t,n,a){t[a.substr(0,1)]=ue(e)});function fh(e){return Xn(e,this._week.dow,this._week.doy).week}var hh={dow:0,doy:6};function mh(){return this._week.dow}function gh(){return this._week.doy}function vh(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function yh(e){var t=Xn(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}K("d",0,"do","day");K("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});K("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});K("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});K("e",0,0,"weekday");K("E",0,0,"isoWeekday");Ge("day","d");Ge("weekday","e");Ge("isoWeekday","E");Ze("day",11);Ze("weekday",11);Ze("isoWeekday",11);Y("d",De);Y("e",De);Y("E",De);Y("dd",function(e,t){return t.weekdaysMinRegex(e)});Y("ddd",function(e,t){return t.weekdaysShortRegex(e)});Y("dddd",function(e,t){return t.weekdaysRegex(e)});sa(["dd","ddd","dddd"],function(e,t,n,a){var i=n._locale.weekdaysParse(e,a,n._strict);i!=null?t.d=i:re(n).invalidWeekday=e});sa(["d","e","E"],function(e,t,n,a){t[a]=ue(e)});function ph(e,t){return typeof e!="string"?e:isNaN(e)?(e=t.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function bh(e,t){return typeof e=="string"?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function sl(e,t){return e.slice(t,7).concat(e.slice(0,t))}var _h="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),yr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),wh="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Sh=ra,kh=ra,Ch=ra;function Th(e,t){var n=pt(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===!0?sl(n,this._week.dow):e?n[e.day()]:n}function Mh(e){return e===!0?sl(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function qh(e){return e===!0?sl(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Ph(e,t,n){var a,i,l,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)l=Dt([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(l,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(l,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(l,"").toLocaleLowerCase();return n?t==="dddd"?(i=Re.call(this._weekdaysParse,o),i!==-1?i:null):t==="ddd"?(i=Re.call(this._shortWeekdaysParse,o),i!==-1?i:null):(i=Re.call(this._minWeekdaysParse,o),i!==-1?i:null):t==="dddd"?(i=Re.call(this._weekdaysParse,o),i!==-1||(i=Re.call(this._shortWeekdaysParse,o),i!==-1)?i:(i=Re.call(this._minWeekdaysParse,o),i!==-1?i:null)):t==="ddd"?(i=Re.call(this._shortWeekdaysParse,o),i!==-1||(i=Re.call(this._weekdaysParse,o),i!==-1)?i:(i=Re.call(this._minWeekdaysParse,o),i!==-1?i:null)):(i=Re.call(this._minWeekdaysParse,o),i!==-1||(i=Re.call(this._weekdaysParse,o),i!==-1)?i:(i=Re.call(this._shortWeekdaysParse,o),i!==-1?i:null))}function Dh(e,t,n){var a,i,l;if(this._weekdaysParseExact)return Ph.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(i=Dt([2e3,1]).day(a),n&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[a]||(l="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[a]=new RegExp(l.replace(".",""),"i")),n&&t==="dddd"&&this._fullWeekdaysParse[a].test(e))return a;if(n&&t==="ddd"&&this._shortWeekdaysParse[a].test(e))return a;if(n&&t==="dd"&&this._minWeekdaysParse[a].test(e))return a;if(!n&&this._weekdaysParse[a].test(e))return a}}function $h(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e!=null?(e=ph(e,this.localeData()),this.add(e-t,"d")):t}function xh(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Ih(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=bh(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Ah(e){return this._weekdaysParseExact?(ye(this,"_weekdaysRegex")||ul.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(ye(this,"_weekdaysRegex")||(this._weekdaysRegex=Sh),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oh(e){return this._weekdaysParseExact?(ye(this,"_weekdaysRegex")||ul.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(ye(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=kh),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Eh(e){return this._weekdaysParseExact?(ye(this,"_weekdaysRegex")||ul.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(ye(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ch),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function ul(){function e(d,v){return v.length-d.length}var t=[],n=[],a=[],i=[],l,o,r,s,u;for(l=0;l<7;l++)o=Dt([2e3,1]).day(l),r=it(this.weekdaysMin(o,"")),s=it(this.weekdaysShort(o,"")),u=it(this.weekdays(o,"")),t.push(r),n.push(s),a.push(u),i.push(r),i.push(s),i.push(u);t.sort(e),n.sort(e),a.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function cl(){return this.hours()%12||12}function Nh(){return this.hours()||24}K("H",["HH",2],0,"hour");K("h",["hh",2],0,cl);K("k",["kk",2],0,Nh);K("hmm",0,0,function(){return""+cl.apply(this)+qt(this.minutes(),2)});K("hmmss",0,0,function(){return""+cl.apply(this)+qt(this.minutes(),2)+qt(this.seconds(),2)});K("Hmm",0,0,function(){return""+this.hours()+qt(this.minutes(),2)});K("Hmmss",0,0,function(){return""+this.hours()+qt(this.minutes(),2)+qt(this.seconds(),2)});function pr(e,t){K(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}pr("a",!0);pr("A",!1);Ge("hour","h");Ze("hour",13);function br(e,t){return t._meridiemParse}Y("a",br);Y("A",br);Y("H",De);Y("h",De);Y("k",De);Y("HH",De,st);Y("hh",De,st);Y("kk",De,st);Y("hmm",sr);Y("hmmss",ur);Y("Hmm",sr);Y("Hmmss",ur);Te(["H","HH"],Ye);Te(["k","kk"],function(e,t,n){var a=ue(e);t[Ye]=a===24?0:a});Te(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e});Te(["h","hh"],function(e,t,n){t[Ye]=ue(e),re(n).bigHour=!0});Te("hmm",function(e,t,n){var a=e.length-2;t[Ye]=ue(e.substr(0,a)),t[yt]=ue(e.substr(a)),re(n).bigHour=!0});Te("hmmss",function(e,t,n){var a=e.length-4,i=e.length-2;t[Ye]=ue(e.substr(0,a)),t[yt]=ue(e.substr(a,2)),t[Lt]=ue(e.substr(i)),re(n).bigHour=!0});Te("Hmm",function(e,t,n){var a=e.length-2;t[Ye]=ue(e.substr(0,a)),t[yt]=ue(e.substr(a))});Te("Hmmss",function(e,t,n){var a=e.length-4,i=e.length-2;t[Ye]=ue(e.substr(0,a)),t[yt]=ue(e.substr(a,2)),t[Lt]=ue(e.substr(i))});function Lh(e){return(e+"").toLowerCase().charAt(0)==="p"}var Rh=/[ap]\.?m?\.?/i,Bh=Rn("Hours",!0);function Vh(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var _r={calendar:Df,longDateFormat:Af,invalidDate:Ef,ordinal:Lf,dayOfMonthOrdinalParse:Rf,relativeTime:Vf,months:eh,monthsShort:cr,week:hh,weekdays:_h,weekdaysMin:wh,weekdaysShort:yr,meridiemParse:Rh},Ie={},Yn={},ea;function Fh(e,t){var n,a=Math.min(e.length,t.length);for(n=0;n0;){if(i=Za(l.slice(0,n).join("-")),i)return i;if(a&&a.length>=n&&Fh(l,a)>=n-1)break;n--}t++}return ea}function Uh(e){return e.match("^[^/\\\\]*$")!=null}function Za(e){var t=null,n;if(Ie[e]===void 0&&typeof module!="undefined"&&module&&module.exports&&Uh(e))try{t=ea._abbr,n=require,n("./locale/"+e),Jt(t)}catch{Ie[e]=null}return Ie[e]}function Jt(e,t){var n;return e&&(tt(t)?n=Yt(e):n=dl(e,t),n?ea=n:typeof console!="undefined"&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ea._abbr}function dl(e,t){if(t!==null){var n,a=_r;if(t.abbr=e,Ie[e]!=null)nr("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),a=Ie[e]._config;else if(t.parentLocale!=null)if(Ie[t.parentLocale]!=null)a=Ie[t.parentLocale]._config;else if(n=Za(t.parentLocale),n!=null)a=n._config;else return Yn[t.parentLocale]||(Yn[t.parentLocale]=[]),Yn[t.parentLocale].push({name:e,config:t}),null;return Ie[e]=new al(Ii(a,t)),Yn[e]&&Yn[e].forEach(function(i){dl(i.name,i.config)}),Jt(e),Ie[e]}else return delete Ie[e],null}function Hh(e,t){if(t!=null){var n,a,i=_r;Ie[e]!=null&&Ie[e].parentLocale!=null?Ie[e].set(Ii(Ie[e]._config,t)):(a=Za(e),a!=null&&(i=a._config),t=Ii(i,t),a==null&&(t.abbr=e),n=new al(t),n.parentLocale=Ie[e],Ie[e]=n),Jt(e)}else Ie[e]!=null&&(Ie[e].parentLocale!=null?(Ie[e]=Ie[e].parentLocale,e===Jt()&&Jt(e)):Ie[e]!=null&&delete Ie[e]);return Ie[e]}function Yt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ea;if(!pt(e)){if(t=Za(e),t)return t;e=[e]}return Yh(e)}function zh(){return Ai(Ie)}function fl(e){var t,n=e._a;return n&&re(e).overflow===-2&&(t=n[Nt]<0||n[Nt]>11?Nt:n[Mt]<1||n[Mt]>Ga(n[Qe],n[Nt])?Mt:n[Ye]<0||n[Ye]>24||n[Ye]===24&&(n[yt]!==0||n[Lt]!==0||n[sn]!==0)?Ye:n[yt]<0||n[yt]>59?yt:n[Lt]<0||n[Lt]>59?Lt:n[sn]<0||n[sn]>999?sn:-1,re(e)._overflowDayOfYear&&(tMt)&&(t=Mt),re(e)._overflowWeeks&&t===-1&&(t=Zf),re(e)._overflowWeekday&&t===-1&&(t=Jf),re(e).overflow=t),e}var Wh=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,jh=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Qh=/Z|[+-]\d\d(?::?\d\d)?/,ma=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],bi=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Kh=/^\/?Date\((-?\d+)/i,Gh=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Zh={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function wr(e){var t,n,a=e._i,i=Wh.exec(a)||jh.exec(a),l,o,r,s,u=ma.length,d=bi.length;if(i){for(re(e).iso=!0,t=0,n=u;tKn(o)||e._dayOfYear===0)&&(re(e)._overflowDayOfYear=!0),n=Jn(o,0,e._dayOfYear),e._a[Nt]=n.getUTCMonth(),e._a[Mt]=n.getUTCDate()),t=0;t<3&&e._a[t]==null;++t)e._a[t]=a[t]=i[t];for(;t<7;t++)e._a[t]=a[t]=e._a[t]==null?t===2?1:0:e._a[t];e._a[Ye]===24&&e._a[yt]===0&&e._a[Lt]===0&&e._a[sn]===0&&(e._nextDay=!0,e._a[Ye]=0),e._d=(e._useUTC?Jn:dh).apply(null,a),l=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Ye]=24),e._w&&typeof e._w.d!="undefined"&&e._w.d!==l&&(re(e).weekdayMismatch=!0)}}function lm(e){var t,n,a,i,l,o,r,s,u;t=e._w,t.GG!=null||t.W!=null||t.E!=null?(l=1,o=4,n=Cn(t.GG,e._a[Qe],Xn(Pe(),1,4).year),a=Cn(t.W,1),i=Cn(t.E,1),(i<1||i>7)&&(s=!0)):(l=e._locale._week.dow,o=e._locale._week.doy,u=Xn(Pe(),l,o),n=Cn(t.gg,e._a[Qe],u.year),a=Cn(t.w,u.week),t.d!=null?(i=t.d,(i<0||i>6)&&(s=!0)):t.e!=null?(i=t.e+l,(t.e<0||t.e>6)&&(s=!0)):i=l),a<1||a>Rt(n,l,o)?re(e)._overflowWeeks=!0:s!=null?re(e)._overflowWeekday=!0:(r=vr(n,a,i,l,o),e._a[Qe]=r.year,e._dayOfYear=r.dayOfYear)}R.ISO_8601=function(){};R.RFC_2822=function(){};function ml(e){if(e._f===R.ISO_8601){wr(e);return}if(e._f===R.RFC_2822){Sr(e);return}e._a=[],re(e).empty=!0;var t=""+e._i,n,a,i,l,o,r=t.length,s=0,u,d;for(i=ar(e._f,e._locale).match(il)||[],d=i.length,n=0;n0&&re(e).unusedInput.push(o),t=t.slice(t.indexOf(a)+a.length),s+=a.length),Pn[l]?(a?re(e).empty=!1:re(e).unusedTokens.push(l),Gf(l,a,e)):e._strict&&!a&&re(e).unusedTokens.push(l);re(e).charsLeftOver=r-s,t.length>0&&re(e).unusedInput.push(t),e._a[Ye]<=12&&re(e).bigHour===!0&&e._a[Ye]>0&&(re(e).bigHour=void 0),re(e).parsedDateParts=e._a.slice(0),re(e).meridiem=e._meridiem,e._a[Ye]=om(e._locale,e._a[Ye],e._meridiem),u=re(e).era,u!==null&&(e._a[Qe]=e._locale.erasConvertYear(u,e._a[Qe])),hl(e),fl(e)}function om(e,t,n){var a;return n==null?t:e.meridiemHour!=null?e.meridiemHour(t,n):(e.isPM!=null&&(a=e.isPM(n),a&&t<12&&(t+=12),!a&&t===12&&(t=0)),t)}function rm(e){var t,n,a,i,l,o,r=!1,s=e._f.length;if(s===0){re(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;ithis?this:e:Ua()});function Tr(e,t){var n,a;if(t.length===1&&pt(t[0])&&(t=t[0]),!t.length)return Pe();for(n=t[0],a=1;athis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Pm(){if(!tt(this._isDSTShifted))return this._isDSTShifted;var e={},t;return nl(e,this),e=kr(e),e._a?(t=e._isUTC?Dt(e._a):Pe(e._a),this._isDSTShifted=this.isValid()&&bm(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Dm(){return this.isValid()?!this._isUTC:!1}function $m(){return this.isValid()?this._isUTC:!1}function qr(){return this.isValid()?this._isUTC&&this._offset===0:!1}var xm=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Im=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function wt(e,t){var n=e,a=null,i,l,o;return va(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:Bt(e)||!isNaN(+e)?(n={},t?n[t]=+e:n.milliseconds=+e):(a=xm.exec(e))?(i=a[1]==="-"?-1:1,n={y:0,d:ue(a[Mt])*i,h:ue(a[Ye])*i,m:ue(a[yt])*i,s:ue(a[Lt])*i,ms:ue(Ei(a[sn]*1e3))*i}):(a=Im.exec(e))?(i=a[1]==="-"?-1:1,n={y:ln(a[2],i),M:ln(a[3],i),w:ln(a[4],i),d:ln(a[5],i),h:ln(a[6],i),m:ln(a[7],i),s:ln(a[8],i)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(o=Am(Pe(n.from),Pe(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),l=new Ja(n),va(e)&&ye(e,"_locale")&&(l._locale=e._locale),va(e)&&ye(e,"_isValid")&&(l._isValid=e._isValid),l}wt.fn=Ja.prototype;wt.invalid=pm;function ln(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function eo(e,t){var n={};return n.months=t.month()-e.month()+(t.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Am(e,t){var n;return e.isValid()&&t.isValid()?(t=vl(t,e),e.isBefore(t)?n=eo(e,t):(n=eo(t,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Pr(e,t){return function(n,a){var i,l;return a!==null&&!isNaN(+a)&&(nr(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),l=n,n=a,a=l),i=wt(n,a),Dr(this,i,e),this}}function Dr(e,t,n,a){var i=t._milliseconds,l=Ei(t._days),o=Ei(t._months);!e.isValid()||(a=a==null?!0:a,o&&fr(e,Da(e,"Month")+o*n),l&&lr(e,"Date",Da(e,"Date")+l*n),i&&e._d.setTime(e._d.valueOf()+i*n),a&&R.updateOffset(e,l||o))}var Om=Pr(1,"add"),Em=Pr(-1,"subtract");function $r(e){return typeof e=="string"||e instanceof String}function Nm(e){return bt(e)||la(e)||$r(e)||Bt(e)||Rm(e)||Lm(e)||e===null||e===void 0}function Lm(e){var t=cn(e)&&!el(e),n=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],i,l,o=a.length;for(i=0;in.valueOf():n.valueOf()9999?ga(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):$t(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",ga(n,"Z")):ga(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function Jm(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,a,i,l;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",t="Z"),n="["+e+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i="-MM-DD[T]HH:mm:ss.SSS",l=t+'[")]',this.format(n+a+i+l)}function Xm(e){e||(e=this.isUtc()?R.defaultFormatUtc:R.defaultFormat);var t=ga(this,e);return this.localeData().postformat(t)}function eg(e,t){return this.isValid()&&(bt(e)&&e.isValid()||Pe(e).isValid())?wt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function tg(e){return this.from(Pe(),e)}function ng(e,t){return this.isValid()&&(bt(e)&&e.isValid()||Pe(e).isValid())?wt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function ag(e){return this.to(Pe(),e)}function xr(e){var t;return e===void 0?this._locale._abbr:(t=Yt(e),t!=null&&(this._locale=t),this)}var Ir=ht("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function Ar(){return this._locale}var Ia=1e3,Dn=60*Ia,Aa=60*Dn,Or=(365*400+97)*24*Aa;function $n(e,t){return(e%t+t)%t}function Er(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-Or:new Date(e,t,n).valueOf()}function Nr(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-Or:Date.UTC(e,t,n)}function ig(e){var t,n;if(e=mt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?Nr:Er,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=$n(t+(this._isUTC?0:this.utcOffset()*Dn),Aa);break;case"minute":t=this._d.valueOf(),t-=$n(t,Dn);break;case"second":t=this._d.valueOf(),t-=$n(t,Ia);break}return this._d.setTime(t),R.updateOffset(this,!0),this}function lg(e){var t,n;if(e=mt(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?Nr:Er,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=Aa-$n(t+(this._isUTC?0:this.utcOffset()*Dn),Aa)-1;break;case"minute":t=this._d.valueOf(),t+=Dn-$n(t,Dn)-1;break;case"second":t=this._d.valueOf(),t+=Ia-$n(t,Ia)-1;break}return this._d.setTime(t),R.updateOffset(this,!0),this}function og(){return this._d.valueOf()-(this._offset||0)*6e4}function rg(){return Math.floor(this.valueOf()/1e3)}function sg(){return new Date(this.valueOf())}function ug(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function cg(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function dg(){return this.isValid()?this.toISOString():null}function fg(){return tl(this)}function hg(){return Gt({},re(this))}function mg(){return re(this).overflow}function gg(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}K("N",0,0,"eraAbbr");K("NN",0,0,"eraAbbr");K("NNN",0,0,"eraAbbr");K("NNNN",0,0,"eraName");K("NNNNN",0,0,"eraNarrow");K("y",["y",1],"yo","eraYear");K("y",["yy",2],0,"eraYear");K("y",["yyy",3],0,"eraYear");K("y",["yyyy",4],0,"eraYear");Y("N",yl);Y("NN",yl);Y("NNN",yl);Y("NNNN",Mg);Y("NNNNN",qg);Te(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,a){var i=n._locale.erasParse(e,a,n._strict);i?re(n).era=i:re(n).invalidEra=e});Y("y",Bn);Y("yy",Bn);Y("yyy",Bn);Y("yyyy",Bn);Y("yo",Pg);Te(["y","yy","yyy","yyyy"],Qe);Te(["yo"],function(e,t,n,a){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Qe]=n._locale.eraYearOrdinalParse(e,i):t[Qe]=parseInt(e,10)});function vg(e,t){var n,a,i,l=this._eras||Yt("en")._eras;for(n=0,a=l.length;n=0)return l[a]}function pg(e,t){var n=e.since<=e.until?1:-1;return t===void 0?R(e.since).year():R(e.since).year()+(t-e.offset)*n}function bg(){var e,t,n,a=this.localeData().eras();for(e=0,t=a.length;el&&(t=l),Eg.call(this,e,t,n,a,i))}function Eg(e,t,n,a,i){var l=vr(e,t,n,a,i),o=Jn(l.year,0,l.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}K("Q",0,"Qo","quarter");Ge("quarter","Q");Ze("quarter",7);Y("Q",or);Te("Q",function(e,t){t[Nt]=(ue(e)-1)*3});function Ng(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}K("D",["DD",2],"Do","date");Ge("date","D");Ze("date",9);Y("D",De);Y("DD",De,st);Y("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient});Te(["D","DD"],Mt);Te("Do",function(e,t){t[Mt]=ue(e.match(De)[0])});var Rr=Rn("Date",!0);K("DDD",["DDDD",3],"DDDo","dayOfYear");Ge("dayOfYear","DDD");Ze("dayOfYear",4);Y("DDD",Wa);Y("DDDD",rr);Te(["DDD","DDDD"],function(e,t,n){n._dayOfYear=ue(e)});function Lg(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}K("m",["mm",2],0,"minute");Ge("minute","m");Ze("minute",14);Y("m",De);Y("mm",De,st);Te(["m","mm"],yt);var Rg=Rn("Minutes",!1);K("s",["ss",2],0,"second");Ge("second","s");Ze("second",15);Y("s",De);Y("ss",De,st);Te(["s","ss"],Lt);var Bg=Rn("Seconds",!1);K("S",0,0,function(){return~~(this.millisecond()/100)});K(0,["SS",2],0,function(){return~~(this.millisecond()/10)});K(0,["SSS",3],0,"millisecond");K(0,["SSSS",4],0,function(){return this.millisecond()*10});K(0,["SSSSS",5],0,function(){return this.millisecond()*100});K(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});K(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});K(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});K(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});Ge("millisecond","ms");Ze("millisecond",16);Y("S",Wa,or);Y("SS",Wa,st);Y("SSS",Wa,rr);var Zt,Br;for(Zt="SSSS";Zt.length<=9;Zt+="S")Y(Zt,Bn);function Vg(e,t){t[sn]=ue(("0."+e)*1e3)}for(Zt="S";Zt.length<=9;Zt+="S")Te(Zt,Vg);Br=Rn("Milliseconds",!1);K("z",0,0,"zoneAbbr");K("zz",0,0,"zoneName");function Fg(){return this._isUTC?"UTC":""}function Yg(){return this._isUTC?"Coordinated Universal Time":""}var D=oa.prototype;D.add=Om;D.calendar=Fm;D.clone=Ym;D.diff=Km;D.endOf=lg;D.format=Xm;D.from=eg;D.fromNow=tg;D.to=ng;D.toNow=ag;D.get=Hf;D.invalidAt=mg;D.isAfter=Um;D.isBefore=Hm;D.isBetween=zm;D.isSame=Wm;D.isSameOrAfter=jm;D.isSameOrBefore=Qm;D.isValid=fg;D.lang=Ir;D.locale=xr;D.localeData=Ar;D.max=fm;D.min=dm;D.parsingFlags=hg;D.set=zf;D.startOf=ig;D.subtract=Em;D.toArray=ug;D.toObject=cg;D.toDate=sg;D.toISOString=Zm;D.inspect=Jm;typeof Symbol!="undefined"&&Symbol.for!=null&&(D[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});D.toJSON=dg;D.toString=Gm;D.unix=rg;D.valueOf=og;D.creationData=gg;D.eraName=bg;D.eraNarrow=_g;D.eraAbbr=wg;D.eraYear=Sg;D.year=gr;D.isLeapYear=ch;D.weekYear=Dg;D.isoWeekYear=$g;D.quarter=D.quarters=Ng;D.month=hr;D.daysInMonth=rh;D.week=D.weeks=vh;D.isoWeek=D.isoWeeks=yh;D.weeksInYear=Ag;D.weeksInWeekYear=Og;D.isoWeeksInYear=xg;D.isoWeeksInISOWeekYear=Ig;D.date=Rr;D.day=D.days=$h;D.weekday=xh;D.isoWeekday=Ih;D.dayOfYear=Lg;D.hour=D.hours=Bh;D.minute=D.minutes=Rg;D.second=D.seconds=Bg;D.millisecond=D.milliseconds=Br;D.utcOffset=wm;D.utc=km;D.local=Cm;D.parseZone=Tm;D.hasAlignedHourOffset=Mm;D.isDST=qm;D.isLocal=Dm;D.isUtcOffset=$m;D.isUtc=qr;D.isUTC=qr;D.zoneAbbr=Fg;D.zoneName=Yg;D.dates=ht("dates accessor is deprecated. Use date instead.",Rr);D.months=ht("months accessor is deprecated. Use month instead",hr);D.years=ht("years accessor is deprecated. Use year instead",gr);D.zone=ht("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Sm);D.isDSTShifted=ht("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Pm);function Ug(e){return Pe(e*1e3)}function Hg(){return Pe.apply(null,arguments).parseZone()}function Vr(e){return e}var pe=al.prototype;pe.calendar=$f;pe.longDateFormat=Of;pe.invalidDate=Nf;pe.ordinal=Bf;pe.preparse=Vr;pe.postformat=Vr;pe.relativeTime=Ff;pe.pastFuture=Yf;pe.set=Pf;pe.eras=vg;pe.erasParse=yg;pe.erasConvertYear=pg;pe.erasAbbrRegex=Cg;pe.erasNameRegex=kg;pe.erasNarrowRegex=Tg;pe.months=ah;pe.monthsShort=ih;pe.monthsParse=oh;pe.monthsRegex=uh;pe.monthsShortRegex=sh;pe.week=fh;pe.firstDayOfYear=gh;pe.firstDayOfWeek=mh;pe.weekdays=Th;pe.weekdaysMin=qh;pe.weekdaysShort=Mh;pe.weekdaysParse=Dh;pe.weekdaysRegex=Ah;pe.weekdaysShortRegex=Oh;pe.weekdaysMinRegex=Eh;pe.isPM=Lh;pe.meridiem=Vh;function Oa(e,t,n,a){var i=Yt(),l=Dt().set(a,t);return i[n](l,e)}function Fr(e,t,n){if(Bt(e)&&(t=e,e=void 0),e=e||"",t!=null)return Oa(e,t,n,"month");var a,i=[];for(a=0;a<12;a++)i[a]=Oa(e,a,n,"month");return i}function bl(e,t,n,a){typeof e=="boolean"?(Bt(t)&&(n=t,t=void 0),t=t||""):(t=e,n=t,e=!1,Bt(t)&&(n=t,t=void 0),t=t||"");var i=Yt(),l=e?i._week.dow:0,o,r=[];if(n!=null)return Oa(t,(n+l)%7,a,"day");for(o=0;o<7;o++)r[o]=Oa(t,(o+l)%7,a,"day");return r}function zg(e,t){return Fr(e,t,"months")}function Wg(e,t){return Fr(e,t,"monthsShort")}function jg(e,t,n){return bl(e,t,n,"weekdays")}function Qg(e,t,n){return bl(e,t,n,"weekdaysShort")}function Kg(e,t,n){return bl(e,t,n,"weekdaysMin")}Jt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=ue(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}});R.lang=ht("moment.lang is deprecated. Use moment.locale instead.",Jt);R.langData=ht("moment.langData is deprecated. Use moment.localeData instead.",Yt);var At=Math.abs;function Gg(){var e=this._data;return this._milliseconds=At(this._milliseconds),this._days=At(this._days),this._months=At(this._months),e.milliseconds=At(e.milliseconds),e.seconds=At(e.seconds),e.minutes=At(e.minutes),e.hours=At(e.hours),e.months=At(e.months),e.years=At(e.years),this}function Yr(e,t,n,a){var i=wt(t,n);return e._milliseconds+=a*i._milliseconds,e._days+=a*i._days,e._months+=a*i._months,e._bubble()}function Zg(e,t){return Yr(this,e,t,1)}function Jg(e,t){return Yr(this,e,t,-1)}function to(e){return e<0?Math.floor(e):Math.ceil(e)}function Xg(){var e=this._milliseconds,t=this._days,n=this._months,a=this._data,i,l,o,r,s;return e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0||(e+=to(Li(n)+t)*864e5,t=0,n=0),a.milliseconds=e%1e3,i=ft(e/1e3),a.seconds=i%60,l=ft(i/60),a.minutes=l%60,o=ft(l/60),a.hours=o%24,t+=ft(o/24),s=ft(Ur(t)),n+=s,t-=to(Li(s)),r=ft(n/12),n%=12,a.days=t,a.months=n,a.years=r,this}function Ur(e){return e*4800/146097}function Li(e){return e*146097/4800}function ev(e){if(!this.isValid())return NaN;var t,n,a=this._milliseconds;if(e=mt(e),e==="month"||e==="quarter"||e==="year")switch(t=this._days+a/864e5,n=this._months+Ur(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Li(this._months)),e){case"week":return t/7+a/6048e5;case"day":return t+a/864e5;case"hour":return t*24+a/36e5;case"minute":return t*1440+a/6e4;case"second":return t*86400+a/1e3;case"millisecond":return Math.floor(t*864e5)+a;default:throw new Error("Unknown unit "+e)}}function tv(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+ue(this._months/12)*31536e6:NaN}function Ut(e){return function(){return this.as(e)}}var nv=Ut("ms"),av=Ut("s"),iv=Ut("m"),lv=Ut("h"),ov=Ut("d"),rv=Ut("w"),sv=Ut("M"),uv=Ut("Q"),cv=Ut("y");function dv(){return wt(this)}function fv(e){return e=mt(e),this.isValid()?this[e+"s"]():NaN}function hn(e){return function(){return this.isValid()?this._data[e]:NaN}}var hv=hn("milliseconds"),mv=hn("seconds"),gv=hn("minutes"),vv=hn("hours"),yv=hn("days"),pv=hn("months"),bv=hn("years");function _v(){return ft(this.days()/7)}var Ot=Math.round,Tn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function wv(e,t,n,a,i){return i.relativeTime(t||1,!!n,e,a)}function Sv(e,t,n,a){var i=wt(e).abs(),l=Ot(i.as("s")),o=Ot(i.as("m")),r=Ot(i.as("h")),s=Ot(i.as("d")),u=Ot(i.as("M")),d=Ot(i.as("w")),v=Ot(i.as("y")),y=l<=n.ss&&["s",l]||l0,y[4]=a,wv.apply(null,y)}function kv(e){return e===void 0?Ot:typeof e=="function"?(Ot=e,!0):!1}function Cv(e,t){return Tn[e]===void 0?!1:t===void 0?Tn[e]:(Tn[e]=t,e==="s"&&(Tn.ss=t-1),!0)}function Tv(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=!1,a=Tn,i,l;return typeof e=="object"&&(t=e,e=!1),typeof e=="boolean"&&(n=e),typeof t=="object"&&(a=Object.assign({},Tn,t),t.s!=null&&t.ss==null&&(a.ss=t.s-1)),i=this.localeData(),l=Sv(this,!n,a,i),n&&(l=i.pastFuture(+this,l)),i.postformat(l)}var _i=Math.abs;function wn(e){return(e>0)-(e<0)||+e}function ei(){if(!this.isValid())return this.localeData().invalidDate();var e=_i(this._milliseconds)/1e3,t=_i(this._days),n=_i(this._months),a,i,l,o,r=this.asSeconds(),s,u,d,v;return r?(a=ft(e/60),i=ft(a/60),e%=60,a%=60,l=ft(n/12),n%=12,o=e?e.toFixed(3).replace(/\.?0+$/,""):"",s=r<0?"-":"",u=wn(this._months)!==wn(r)?"-":"",d=wn(this._days)!==wn(r)?"-":"",v=wn(this._milliseconds)!==wn(r)?"-":"",s+"P"+(l?u+l+"Y":"")+(n?u+n+"M":"")+(t?d+t+"D":"")+(i||a||e?"T":"")+(i?v+i+"H":"")+(a?v+a+"M":"")+(e?v+o+"S":"")):"P0D"}var he=Ja.prototype;he.isValid=ym;he.abs=Gg;he.add=Zg;he.subtract=Jg;he.as=ev;he.asMilliseconds=nv;he.asSeconds=av;he.asMinutes=iv;he.asHours=lv;he.asDays=ov;he.asWeeks=rv;he.asMonths=sv;he.asQuarters=uv;he.asYears=cv;he.valueOf=tv;he._bubble=Xg;he.clone=dv;he.get=fv;he.milliseconds=hv;he.seconds=mv;he.minutes=gv;he.hours=vv;he.days=yv;he.weeks=_v;he.months=pv;he.years=bv;he.humanize=Tv;he.toISOString=ei;he.toString=ei;he.toJSON=ei;he.locale=xr;he.localeData=Ar;he.toIsoString=ht("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ei);he.lang=Ir;K("X",0,0,"unix");K("x",0,0,"valueOf");Y("x",Qa);Y("X",jf);Te("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)});Te("x",function(e,t,n){n._d=new Date(ue(e))});//! moment.js +R.version="2.29.4";Mf(Pe);R.fn=D;R.min=hm;R.max=mm;R.now=gm;R.utc=Dt;R.unix=Ug;R.months=zg;R.isDate=la;R.locale=Jt;R.invalid=Ua;R.duration=wt;R.isMoment=bt;R.weekdays=jg;R.parseZone=Hg;R.localeData=Yt;R.isDuration=va;R.monthsShort=Wg;R.weekdaysMin=Kg;R.defineLocale=dl;R.updateLocale=Hh;R.locales=zh;R.weekdaysShort=Qg;R.normalizeUnits=mt;R.relativeTimeRounding=kv;R.relativeTimeThreshold=Cv;R.calendarFormat=Vm;R.prototype=D;R.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};const Mv=ot({name:"CustomerOrders",props:["orders","products","stalls","merchants"],data:function(){return{}},computed:{merchantOrders:function(){return Object.keys(this.orders).map(e=>({pubkey:e,profile:this.merchantProfile(e),orders:this.orders[e].map(this.enrichOrder)}))}},methods:{enrichOrder:function(e){var n;const t=this.stallForOrder(e);return{...e,stallName:(t==null?void 0:t.name)||"Stall",shippingZone:((n=t==null?void 0:t.shipping)==null?void 0:n.find(a=>a.id===e.shipping_id))||{id:e.shipping_id,name:e.shipping_id},invoice:this.invoiceForOrder(e),products:this.getProductsForOrder(e)}},stallForOrder:function(e){var t;try{const n=e.items&&((t=e.items[0])==null?void 0:t.product_id);if(!n)return;const a=this.products.find(l=>l.id===n);if(!a)return;const i=this.stalls.find(l=>l.id===a.stall_id);return i||void 0}catch(n){console.log(n)}},invoiceForOrder:function(e){var t;try{const n=(t=e==null?void 0:e.payment_options)==null?void 0:t.find(a=>a.type==="ln");return n!=null&&n.link?decode(n.link):void 0}catch(n){console.warn(n)}},merchantProfile:function(e){const t=this.merchants.find(n=>n.publicKey===e);return t==null?void 0:t.profile},getProductsForOrder:function(e){var t;return(t=e==null?void 0:e.items)!=null&&t.length?e.items.map(n=>({...this.products.find(i=>i.id===n.product_id)||{id:n.product_id,name:n.product_id},orderedQuantity:n.quantity})):[]},showInvoice:function(e){var n;if(e.paid)return;const t=(n=e==null?void 0:e.payment_options)==null?void 0:n.find(a=>a.type==="ln").link;!t||this.$emit("show-invoice",t)},formatCurrency:function(e,t){return formatCurrency(e,t)},fromNow:function(e){return e?R(e*1e3).fromNow():""}},created(){}}),qv=m("strong",null,"No orders!",-1),Pv=["src"],Dv=["src"],$v=["textContent"],xv=["textContent"],Iv=["textContent"],Av=["textContent"],Ov={class:"text-caption text-grey ellipsis-2-lines"},Ev={key:0},Nv=["textContent"],Lv=["textContent"],Rv=["textContent"],Bv={class:"text-caption text-grey ellipsis-2-lines"},Vv=["textContent"],Fv=["textContent"],Yv=m("strong",null,"Order ID: ",-1),Uv=["textContent"],Hv=m("strong",null,"Products",-1),zv=["src"],Wv=["src"],jv={class:"text-caption text-grey ellipsis-2-lines"},Qv=m("strong",null,"Shipping Zone: ",-1),Kv=["textContent"],Gv=m("strong",null,"Message: ",-1),Zv=["textContent"],Jv=m("strong",null,"Invoice: ",-1),Xv=["textContent"];function e0(e,t,n,a,i,l){var o;return S(),V("div",null,[(o=e.merchantOrders)!=null&&o.length?fe("",!0):(S(),j(lt,{key:0,bordered:"",class:"q-mb-md"},{default:f(()=>[c(we,null,{default:f(()=>[qv]),_:1})]),_:1})),(S(!0),V(et,null,at(e.merchantOrders,r=>(S(),V("div",{key:r.id},[c(lt,{bordered:"",class:"q-mb-md"},{default:f(()=>[c(nt,null,{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>{var s,u;return[(s=r.profile)!=null&&s.picture?(S(),V("img",{key:0,src:(u=r.profile)==null?void 0:u.picture},null,8,Pv)):(S(),V("img",{key:1,src:e.$q.config.staticPath+"/images/blank-avatar.webp"},null,8,Dv))]}),_:2},1024)]),_:2},1024),c(ae,null,{default:f(()=>[c(se,null,{default:f(()=>{var s;return[m("strong",null,[m("span",{textContent:W((s=r.profile)==null?void 0:s.name)},null,8,$v)])]}),_:2},1024),c(se,{caption:""},{default:f(()=>[m("span",{class:"ellipsis-2-lines text-wrap",textContent:W(r.pubkey)},null,8,xv)]),_:2},1024)]),_:2},1024)]),_:2},1024),c(Ae),c(we,{class:"col-12"},{default:f(()=>[c(Qt,null,{default:f(()=>[(S(!0),V(et,null,at(r.orders,s=>(S(),V("div",{key:s.id,class:"q-mb-md"},[c(Tf,{dense:"","expand-separator":""},{header:f(()=>[c(ae,{class:"q-mt-sm"},{default:f(()=>[c(se,null,{default:f(()=>{var u,d;return[m("strong",null,[m("span",{textContent:W(s.stallName)},null,8,Iv)]),(d=(u=s.invoice)==null?void 0:u.human_readable_part)!=null&&d.amount?(S(),j(rn,{key:0,onClick:v=>e.showInvoice(s),color:"orange",class:"q-ml-lg gt-sm"},{default:f(()=>{var v,y;return[m("span",{textContent:W(e.formatCurrency(((y=(v=s.invoice)==null?void 0:v.human_readable_part)==null?void 0:y.amount)/1e3,"sat"))},null,8,Av)]}),_:2},1032,["onClick"])):fe("",!0)]}),_:2},1024),c(se,null,{default:f(()=>[m("div",Ov,[s.createdAt?(S(),V("p",Ev,[m("span",{textContent:W(e.fromNow(s.createdAt))},null,8,Nv)])):fe("",!0)])]),_:2},1024)]),_:2},1024),c(ae,{side:""},{default:f(()=>[c(se,null,{default:f(()=>[c(rn,{color:s.paid?"green":"grey"},{default:f(()=>[m("span",{textContent:W(s.paid?"Paid":"Not Paid")},null,8,Lv)]),_:2},1032,["color"]),c(rn,{color:s.shipped?"green":"grey",class:"q-ml-md"},{default:f(()=>[m("span",{textContent:W(s.shipped?"Shipped":"Not Shipped")},null,8,Rv)]),_:2},1032,["color"])]),_:2},1024),c(se,null,{default:f(()=>{var u,d;return[m("div",Bv,[m("p",null,[m("span",{textContent:W((u=s.items)==null?void 0:u.length)},null,8,Vv),m("span",{textContent:W(((d=s.items)==null?void 0:d.length)===1?"product":"products")},null,8,Fv)])])]}),_:2},1024)]),_:2},1024)]),default:f(()=>[c(Ae),c(we,{class:"col-12"},{default:f(()=>[c(ae,null,{default:f(()=>[c(se,null,{default:f(()=>[Yv,oe(),m("span",{class:"ellipsis-2-lines text-wrap",textContent:W(s.id)},null,8,Uv)]),_:2},1024)]),_:2},1024)]),_:2},1024),c(Ae),c(we,{horizontal:""},{default:f(()=>[c(we,{class:"col-7"},{default:f(()=>[c(ae,{class:"q-mt-sm"},{default:f(()=>[c(se,null,{default:f(()=>[Hv]),_:1})]),_:1}),(S(!0),V(et,null,at(s.products,u=>(S(),j(nt,{key:u.id},{default:f(()=>[c(ae,{avatar:""},{default:f(()=>[c(vt,null,{default:f(()=>[u.images&&u.images[0]||u.image?(S(),V("img",{key:0,src:u.images[0]||u.image},null,8,zv)):(S(),V("img",{key:1,src:e.$q.config.staticPath+"/images/placeholder.png"},null,8,Wv))]),_:2},1024)]),_:2},1024),c(ae,{class:"q-mt-sm"},{default:f(()=>[c(se),c(se,null,{default:f(()=>[m("strong",null,W(u.orderedQuantity)+" x "+W(u.name),1)]),_:2},1024),c(se,null,{default:f(()=>[m("div",jv,[m("p",null,W(u.description),1)])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024),c(Ae,{vertical:""}),c(we,null,{default:f(()=>[c(ae,{class:"q-mt-md q-ml-sm"},{default:f(()=>[c(se,null,{default:f(()=>{var u;return[Qv,m("span",{textContent:W(((u=s.shippingZone)==null?void 0:u.name)||"")},null,8,Kv)]}),_:2},1024)]),_:2},1024),s.message?(S(),j(ae,{key:0,class:"q-mt-md q-ml-sm"},{default:f(()=>[c(se,null,{default:f(()=>[Gv,m("span",{textContent:W(s.message)},null,8,Zv)]),_:2},1024)]),_:2},1024)):fe("",!0),c(ae,{class:"q-mt-md q-ml-sm"},{default:f(()=>[c(se,null,{default:f(()=>{var u,d;return[Jv,(d=(u=s.invoice)==null?void 0:u.human_readable_part)!=null&&d.amount?(S(),j(rn,{key:0,onClick:v=>e.showInvoice(s),color:"orange",class:"cursor-pointer"},{default:f(()=>{var v,y;return[m("span",{textContent:W(e.formatCurrency(((y=(v=s.invoice)==null?void 0:v.human_readable_part)==null?void 0:y.amount)/1e3,"sat"))},null,8,Xv)]}),_:2},1032,["onClick"])):fe("",!0)]}),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024),c(Ae,{class:"q-mb-xl"})]),_:2},1024),c(Ae)]))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024)]))),128))])}var t0=_t(Mv,[["render",e0]]),n0=Se({name:"QCarouselSlide",props:{...Wo,imgSrc:String},setup(e,{slots:t}){const n=k(()=>e.imgSrc?{backgroundImage:`url("${e.imgSrc}")`}:{});return()=>_("div",{class:"q-carousel__slide",style:n.value},Ee(t.default))}});let Hn=0;const a0={fullscreen:Boolean,noRouteFullscreenExit:Boolean},i0=["update:fullscreen","fullscreen"];function l0(){const e=Fe(),{props:t,emit:n,proxy:a}=e;let i,l,o;const r=Q(!1);Ns(e)===!0&&de(()=>a.$route.fullPath,()=>{t.noRouteFullscreenExit!==!0&&d()}),de(()=>t.fullscreen,v=>{r.value!==v&&s()}),de(r,v=>{n("update:fullscreen",v),n("fullscreen",v)});function s(){r.value===!0?d():u()}function u(){r.value!==!0&&(r.value=!0,o=a.$el.parentNode,o.replaceChild(l,a.$el),document.body.appendChild(a.$el),Hn++,Hn===1&&document.body.classList.add("q-body--fullscreen-mixin"),i={handler:d},Nl.add(i))}function d(){r.value===!0&&(i!==void 0&&(Nl.remove(i),i=void 0),o.replaceChild(a.$el,l),r.value=!1,Hn=Math.max(0,Hn-1),Hn===0&&(document.body.classList.remove("q-body--fullscreen-mixin"),a.$el.scrollIntoView!==void 0&&setTimeout(()=>{a.$el.scrollIntoView()})))}return Ui(()=>{l=document.createElement("span")}),fn(()=>{t.fullscreen===!0&&u()}),Ke(d),Object.assign(a,{toggleFullscreen:s,setFullscreen:u,exitFullscreen:d}),{inFullscreen:r,toggleFullscreen:s}}const o0=["top","right","bottom","left"],r0=["regular","flat","outline","push","unelevated"];var s0=Se({name:"QCarousel",props:{...Vt,...jo,...a0,transitionPrev:{type:String,default:"fade"},transitionNext:{type:String,default:"fade"},height:String,padding:Boolean,controlColor:String,controlTextColor:String,controlType:{type:String,validator:e=>r0.includes(e),default:"flat"},autoplay:[Number,Boolean],arrows:Boolean,prevIcon:String,nextIcon:String,navigation:Boolean,navigationPosition:{type:String,validator:e=>o0.includes(e)},navigationIcon:String,navigationActiveIcon:String,thumbnails:Boolean},emits:[...i0,...Qo],setup(e,{slots:t}){const{proxy:{$q:n}}=Fe(),a=Ft(e,n);let i=null,l;const{updatePanelsList:o,getPanelContent:r,panelDirectives:s,goToPanel:u,previousPanel:d,nextPanel:v,getEnabledPanels:y,panelIndex:g}=Ko(),{inFullscreen:C}=l0(),w=k(()=>C.value!==!0&&e.height!==void 0?{height:e.height}:{}),T=k(()=>e.vertical===!0?"vertical":"horizontal"),q=k(()=>`q-carousel q-panel-parent q-carousel--with${e.padding===!0?"":"out"}-padding`+(C.value===!0?" fullscreen":"")+(a.value===!0?" q-carousel--dark q-dark":"")+(e.arrows===!0?` q-carousel--arrows-${T.value}`:"")+(e.navigation===!0?` q-carousel--navigation-${M.value}`:"")),P=k(()=>{const Z=[e.prevIcon||n.iconSet.carousel[e.vertical===!0?"up":"left"],e.nextIcon||n.iconSet.carousel[e.vertical===!0?"down":"right"]];return e.vertical===!1&&n.lang.rtl===!0?Z.reverse():Z}),p=k(()=>e.navigationIcon||n.iconSet.carousel.navigationIcon),b=k(()=>e.navigationActiveIcon||p.value),M=k(()=>e.navigationPosition||(e.vertical===!0?"right":"bottom")),B=k(()=>({color:e.controlColor,textColor:e.controlTextColor,round:!0,[e.controlType]:!0,dense:!0}));de(()=>e.modelValue,()=>{e.autoplay&&x()}),de(()=>e.autoplay,Z=>{Z?x():i!==null&&(clearTimeout(i),i=null)});function x(){const Z=Ls(e.autoplay)===!0?Math.abs(e.autoplay):5e3;i!==null&&clearTimeout(i),i=setTimeout(()=>{i=null,Z>=0?v():d()},Z)}fn(()=>{e.autoplay&&x()}),Ke(()=>{i!==null&&clearTimeout(i)});function $(Z,ce){return _("div",{class:`q-carousel__control q-carousel__navigation no-wrap absolute flex q-carousel__navigation--${Z} q-carousel__navigation--${M.value}`+(e.controlColor!==void 0?` text-${e.controlColor}`:"")},[_("div",{class:"q-carousel__navigation-inner flex flex-center no-wrap"},y().map(ce))])}function G(){const Z=[];if(e.navigation===!0){const ce=t["navigation-icon"]!==void 0?t["navigation-icon"]:E=>_(ee,{key:"nav"+E.name,class:`q-carousel__navigation-icon q-carousel__navigation-icon--${E.active===!0?"":"in"}active`,...E.btnProps,onClick:E.onClick}),$e=l-1;Z.push($("buttons",(E,le)=>{const ve=E.props.name,ke=g.value===le;return ce({index:le,maxIndex:$e,name:ve,active:ke,btnProps:{icon:ke===!0?b.value:p.value,size:"sm",...B.value},onClick:()=>{u(ve)}})}))}else if(e.thumbnails===!0){const ce=e.controlColor!==void 0?` text-${e.controlColor}`:"";Z.push($("thumbnails",$e=>{const E=$e.props;return _("img",{key:"tmb#"+E.name,class:`q-carousel__thumbnail q-carousel__thumbnail--${E.name===e.modelValue?"":"in"}active`+ce,src:E.imgSrc||E["img-src"],onClick:()=>{u(E.name)}})}))}return e.arrows===!0&&g.value>=0&&((e.infinite===!0||g.value>0)&&Z.push(_("div",{key:"prev",class:`q-carousel__control q-carousel__arrow q-carousel__prev-arrow q-carousel__prev-arrow--${T.value} absolute flex flex-center`},[_(ee,{icon:P.value[0],...B.value,onClick:d})])),(e.infinite===!0||g.value(l=o(t),_("div",{class:q.value,style:w.value},[Yi("div",{class:"q-carousel__slides-container"},r(),"sl-cont",e.swipeable,()=>s.value)].concat(G())))}});const u0=ot({name:"ProductDetail",props:["product","add-to-cart"],data:function(){return{slide:1}},computed:{},methods:{},created(){}}),c0={class:"row"},d0={class:"col-lg-5 col-md-5 col-sm-12 col-xs-12 q-mt-sm"},f0={key:0,class:"q-pr-md"},h0={key:1,class:"q-pr-md"},m0={class:"col-lg-7 col-md-7 col-sm-12 col-xs-12 q-mt-sm"},g0={class:"row"},v0={class:"text-subtitle1 q-mt-sm q-pt-xs"},y0={key:0,class:"text-subtitle1"},p0={class:"q-mt-sm text-weight-bold"},b0={key:0},_0={class:"text-h6"},w0={class:"q-ml-sm text-grey-6"},S0={key:1},k0={class:"text-h6"},C0={class:"q-ml-md text-caption text-green-8 text-weight-bolder q-mt-md"},T0={class:"q-mt-md"};function M0(e,t,n,a,i,l){return S(),V("div",c0,[m("div",d0,[e.product.images&&e.product.images[0]?(S(),V("div",f0,[c(s0,{swipeable:"",animated:"",modelValue:e.slide,"onUpdate:modelValue":t[0]||(t[0]=o=>e.slide=o),thumbnails:"",infinite:"",arrows:"","transition-prev":"slide-right","transition-next":"slide-left","navigation-icon":"radio_button_unchecked","control-type":"regular","control-color":"secondary","control-text-color":"white"},{default:f(()=>[(S(!0),V(et,null,at(e.product.images,(o,r)=>(S(),j(n0,{name:r+1,key:r,"img-src":o},null,8,["name","img-src"]))),128))]),_:1},8,["modelValue"])])):(S(),V("div",h0,[c(ji,{src:e.$q.config.staticPath+"/images/placeholder.png",ratio:16/9},null,8,["src"])]))]),m("div",m0,[c(lt,null,{default:f(()=>[c(we,null,{default:f(()=>[m("div",g0,[m("div",{class:Rs(["col-12",e.$q.platform.is.desktop?"":"q-px-md"])},[m("div",v0,W(e.product.name),1),e.product.categories?(S(),V("div",y0,[(S(!0),V(et,null,at(e.product.categories,(o,r)=>(S(),j(aa,{key:r,dense:""},{default:f(()=>[oe(W(o),1)]),_:2},1024))),128))])):fe("",!0),m("div",p0,W(e.product.description),1),m("div",null,[e.product.currency=="sat"?(S(),V("span",b0,[m("span",_0,W(e.product.price)+" sats",1),m("span",w0,"BTC "+W((e.product.price/1e8).toFixed(8)),1)])):(S(),V("span",S0,[m("span",k0,W(e.product.formatedPrice),1)])),m("span",C0,W(e.product.quantity>0?`In + stock. ${e.product.quantity} left.`:"Out of stock."),1)]),m("div",T0,[c(ee,{class:"q-mt-md",color:"primary",rounded:"",icon:"shopping_cart",label:"Add to cart",onClick:t[1]||(t[1]=o=>e.$emit("add-to-cart",e.product))})])],2)])]),_:1})]),_:1})])])}var q0=_t(u0,[["render",M0]]);const P0=ot({name:"CustomerStall",components:{ProductCard:Jo,ProductDetail:q0},props:["stall","products","product-detail"],data:function(){return{}},computed:{product(){if(this.productDetail)return this.products.find(e=>e.id==this.productDetail)}},methods:{changePageS(e,t){var n;e==="stall"&&(t==null?void 0:t.product)&&((n=document.getElementById("product-focus-area"))==null||n.scrollIntoView()),this.$emit("change-page",e,t)},addToCart(e){this.$emit("add-to-cart",e)}}}),D0=m("div",{id:"product-focus-area"},null,-1),$0={key:0,class:"row"},x0={class:"col-12 auto-width"},I0={class:"col-12 q-my-lg"},A0={class:"row q-col-gutter-md"};function O0(e,t,n,a,i,l){const o=Ci("product-detail"),r=Ci("product-card");return S(),V("div",null,[D0,e.productDetail&&e.product?(S(),V("div",$0,[m("div",x0,[c(o,{product:e.product,onAddToCart:e.addToCart},null,8,["product","onAddToCart"])]),m("div",I0,[c(Ae)])])):fe("",!0),m("div",A0,[(S(!0),V(et,null,at(e.products,(s,u)=>(S(),V("div",{class:"col-xs-12 col-sm-6 col-md-4 col-lg-3",key:u},[c(r,{product:s,onChangePage:e.changePageS,onAddToCart:e.addToCart,"is-stall":!0},null,8,["product","onChangePage","onAddToCart"])]))),128))])])}var E0=_t(P0,[["render",O0]]);const N0=ot({name:"CustomerStallList",props:["stalls"],data:function(){return{showStalls:!0}},watch:{stalls(){this.showProducts=!1,setTimeout(()=>{this.showProducts=!0},0)}},computed:{},methods:{},created(){}}),L0={key:0,class:"row q-col-gutter-md"},R0={class:"q-pa-md q-gutter-sm",style:{height:"80px"}},B0=["src"],V0={class:"row no-wrap items-center"},F0={class:"col text-subtitle2 ellipsis-2-lines"},Y0={class:"text-caption text-green-8 text-weight-bolder q-mt-md"},U0=["textContent"],H0=["textContent"],z0={key:0,class:"text-subtitle1"},W0=["textContent"],j0={key:1,class:"text-subtitle1"},Q0={class:"text-caption text-grey ellipsis-2-lines",style:{"min-height":"40px"}},K0={class:"q-ml-auto"};function G0(e,t,n,a,i,l){return e.showStalls?(S(),V("div",L0,[(S(!0),V(et,null,at(e.stalls,o=>(S(),V("div",{key:o.id,class:"col-xs-12 col-sm-6 col-md-4 col-lg-3"},[c(lt,{class:"card--product"},{default:f(()=>[c(we,{class:"q-pb-xs q-pt-md"},{default:f(()=>[m("div",R0,[(S(!0),V(et,null,at(o.images,(r,s)=>(S(),j(vt,{key:s,size:"40px",class:"overlapping",style:Bs(`left: ${s*25}px; border: 2px solid white; position: absolute`)},{default:f(()=>[m("img",{src:r},null,8,B0)]),_:2},1032,["style"]))),128))])]),_:2},1024),c(we,{class:"q-pb-xs q-pt-md"},{default:f(()=>[m("div",V0,[m("div",F0,W(o.name),1)])]),_:2},1024),c(Ae),c(we,{class:"q-pl-sm"},{default:f(()=>[m("div",null,[m("span",Y0,[m("span",{textContent:W(o.productCount)},null,8,U0),oe(" products")]),m("span",{textContent:W(o.currency),class:"float-right"},null,8,H0)])]),_:2},1024),c(we,{class:"q-pl-sm gt-sm"},{default:f(()=>[o.categories?(S(),V("div",z0,[c(Wi,{items:o.categories||[],"virtual-scroll-horizontal":""},{default:f(({item:r,index:s})=>[(S(),j(aa,{key:s,dense:""},{default:f(()=>[m("span",{textContent:W(r)},null,8,W0)]),_:2},1024))]),_:2},1032,["items"])])):(S(),V("div",j0," \xA0 ")),m("div",Q0,[m("p",null,W(o.description||""),1)])]),_:2},1024),c(Ae),c(In,null,{default:f(()=>[m("div",K0,[c(ee,{flat:"",class:"text-weight-bold text-capitalize q-ml-auto float-left",dense:"",color:"primary",onClick:r=>e.$emit("change-page","stall",{stall:o.id})},{default:f(()=>[oe(" Visit Stall ")]),_:2},1032,["onClick"])])]),_:2},1024)]),_:2},1024)]))),128))])):fe("",!0)}var Z0=_t(N0,[["render",G0]]);const J0={class:"row q-mb-md q-pa-none"},X0=["src"],ey=m("div",{id:"search-text"},null,-1),ty={class:"float-right"},ny=["textContent"],ay={key:0,class:"gt-sm"},iy=["textContent","onClick"],ly=["textContent"],oy={key:1,class:"row q-mb-sm"},ry={class:"col-12 text-center"},sy={key:0,class:"absolute-bottom text-subtitle1 text-center"},uy=["textContent"],cy={class:"row q-mb-sm"},dy={class:"col-md-10 col-sm-1 auto-width"},fy={class:"col-md-2 col-sm-1"},hy={key:9},my=m("strong",{class:"text-h4"},"Welcome to the Nostr Market!",-1),gy=m("strong",{class:"text-h5 q-mt-lg"},"In order to start you can:",-1),vy={class:"text-h6"},yy={class:"text-h6"},py={class:"text-h6"},by=m("code",null,"naddr",-1),_y={key:10},wy=m("div",{class:"text-h6"},"Account Setup",-1),Sy=m("p",null,"Enter your Nostr private key or generate a new one.",-1),ky={class:"text-center q-mb-lg"},Cy={key:0,class:"q-my-lg"},Ty=["textContent"],My=["href"],qy={key:0,ratio:1},Py={key:1},Dy={class:"row q-mt-lg"},$y=ot({name:"MarketPage",components:{MarketConfig:Zo},data:function(){return{account:null,accountMetadata:null,accountDialog:{show:!1,data:{watchOnly:!1,key:null}},markets:[],merchants:[],shoppingCarts:[],checkoutCart:null,checkoutStall:null,activePage:"market",activeOrderId:null,dmSubscriptions:{},qrCodeDialog:{data:{payment_request:null,message:null},dismissMsg:null,show:!1},filterCategories:[],groupByStall:!1,relays:new Set,stalls:[],products:[],orders:{},bannerImage:null,logoImage:null,isLoading:!1,showFilterDetails:!1,searchText:null,activeStall:null,activeProduct:null,pool:null,config:{opts:null},defaultBanner:this.$q.config.staticPath+"/images/nostr-cover.png",defaultLogo:this.$q.config.staticPath+"/images/nostr-avatar.png",defaultMarketNaddr:"naddr1qqjrqd3jv9skvwfc956rserz956xyeps94snwd3h95cn2ctr8ymrqdpe89jxzqg5waehxw309aex2mrp0yhxgctdw4eju6t0qyv8wumn8ghj7un9d3shjtnndehhyapwwdhkx6tpdsq36amnwvaz7tmwdaehgu3dwp6kytnhv4kxcmmjv3jhytnwv46qzxthwden5te0dehhxarj9eax2cn9v3jk2tnrd3hh2eqpramhxue69uhkummnw3ezuampd3kx2ar0veekzar0wd5xjtnrdaksyg96ypff6u56q9tk99qnp2kghg5ynuse3v7wdu0xxkurdlggj82gmspsgqqqw4psj5pe0p",readNotes:{merchants:!1,marketUi:!1}}},watch:{config(e,t){var n,a,i,l;(a=(n=e==null?void 0:e.opts)==null?void 0:n.ui)!=null&&a.banner?(this.bannerImage=null,setTimeout(()=>{var o,r;this.bannerImage=this.sanitizeImageSrc((r=(o=e==null?void 0:e.opts)==null?void 0:o.ui)==null?void 0:r.banner,this.defaultBanner)})):this.bannerImage=this.defaultBanner,(l=(i=e==null?void 0:e.opts)==null?void 0:i.ui)!=null&&l.picture?(this.logoImage=null,setTimeout(()=>{var o,r;this.logoImage=this.sanitizeImageSrc((r=(o=e==null?void 0:e.opts)==null?void 0:o.ui)==null?void 0:r.picture,this.defaultLogo)})):this.logoImage=this.defaultLogo},searchText(e,t){if(!!e&&e.toLowerCase().startsWith("naddr"))try{const{type:n,data:a}=NostrTools.nip19.decode(e);if(n!=="naddr"||a.kind!==30019)return;this.$q.dialog(confirm("Do you want to import this market profile?")).onOk(async()=>{await this.addMarket(e),this.searchText=""})}catch{}}},computed:{filterProducts(){let e=this.products.filter(n=>this.hasCategory(n.categories));if(this.activeStall&&(e=e.filter(n=>n.stall_id==this.activeStall)),!this.searchText||this.searchText.length<2)return e;const t=this.searchText.toLowerCase();return e.filter(n=>n.name.toLowerCase().includes(t)||n.description&&n.description.toLowerCase().includes(t)||n.categories&&n.categories.toString().toLowerCase().includes(t))},filterStalls(){const e=this.stalls.map(n=>({...n,categories:this.allStallCatgories(n.id),images:this.allStallImages(n.id).slice(0,8),productCount:this.products.filter(a=>a.stall_id===n.id).length})).filter(n=>this.hasCategory(n.categories));if(!this.searchText||this.searchText.length<2)return e;const t=this.searchText.toLowerCase();return this.stalls.filter(n=>n.name.toLowerCase().includes(t)||n.description&&n.description.toLowerCase().includes(t)||n.categories&&n.categories.toString().toLowerCase().includes(t))},stallName(){var e;return((e=this.stalls.find(t=>t.id==this.activeStall))==null?void 0:e.name)||"Stall"},productName(){var e;return((e=this.products.find(t=>t.id==this.activeProduct))==null?void 0:e.name)||"Product"},isValidAccountKey(){return isValidKey(this.accountDialog.data.key)},allCartsItemCount(){return this.shoppingCarts.map(e=>e.products).flat().reduce((e,t)=>e+t.orderedQuantity,0)},allCategories(){const t=this.products.map(n=>n.categories).flat().filter(n=>!!n).reduce((n,a)=>(n[a]=(n[a]||0)+1,n),{});return Object.keys(t).map(n=>({category:n,count:t[n],selected:this.filterCategories.indexOf(n)!==-1})).sort((n,a)=>a.count-n.count)}},async created(){this.bannerImage=this.defaultBanner,this.logoImage=this.defaultLogo,this.restoreFromStorage();const e=new URLSearchParams(window.location.search);await this.addMarket(e.get("naddr")),await this.handleQueryParams(e),await this.initNostr(),await this.listenForIncommingDms(this.merchants.map(t=>({publicKey:t.publicKey,since:this.lastDmForPubkey(t.publicKey)}))),this.isLoading=!1},methods:{async handleQueryParams(e){const t=e.get("merchant"),n=e.get("stall"),a=e.get("product");n&&(this.setActivePage("customer-stall"),a&&(this.activeProduct=a),this.activeStall=n),t&&!this.merchants.find(i=>i.publicKey===t)&&this.$q.dialog(confirm("We found a merchant pubkey in your request. Do you want to add it to the merchants list?")).onOk(async()=>{this.merchants.push({publicKey:t,profile:null})})},restoreFromStorage(){var l;this.markets=this.$q.localStorage.getItem("nostrmarket.markets")||[],this.merchants=this.$q.localStorage.getItem("nostrmarket.merchants")||[],this.shoppingCarts=this.$q.localStorage.getItem("nostrmarket.shoppingCarts")||[],this.account=this.$q.localStorage.getItem("nostrmarket.account")||null;const e=this.$q.localStorage.getItem("nostrmarket.marketplaceConfig")||{ui:{darkMode:!1}};this.config={...this.config,opts:{...this.config.opts,...e}},this.applyUiConfigs((l=this.config)==null?void 0:l.opts);const t="nostrmarket.orders.";this.$q.localStorage.getAllKeys().filter(o=>o.startsWith(t)).forEach(o=>{const r=o.substring(t.length);this.orders[r]=this.$q.localStorage.getItem(o)});const a=this.$q.localStorage.getItem("nostrmarket.relays");this.relays=new Set(a!=null&&a.length?a:defaultRelays);const i=this.$q.localStorage.getItem("nostrmarket.readNotes")||{};this.readNotes={...this.readNotes,...i}},applyUiConfigs(e={}){var i,l;const{name:t,about:n,ui:a}=e;this.$q.localStorage.set("nostrmarket.marketplaceConfig",{name:t,about:n,ui:a}),(i=e.ui)!=null&&i.theme&&document.body.setAttribute("data-theme",e.ui.theme),this.$q.dark.set(!!((l=e.ui)!=null&&l.darkMode))},async createAccount(e=!1){let t;if(e&&(await this.getFromExtension(),t=!0),isValidKey(this.accountDialog.data.key,"nsec")){let{key:n,watchOnly:a}=this.accountDialog.data;if(n.startsWith("n")){let{type:o,data:r}=NostrTools.nip19.decode(n);n=r}const i=a?null:n,l=a?n:NostrTools.getPublicKey(n);this.$q.localStorage.set("nostrmarket.account",{privkey:i,pubkey:l,nsec:NostrTools.nip19.nsecEncode(n),npub:NostrTools.nip19.npubEncode(l),useExtension:t!=null?t:!1}),this.accountDialog.data={watchOnly:!1,key:null},this.accountDialog.show=!1,this.account=this.$q.localStorage.getItem("nostrmarket.account")}this.accountDialog.show=!1},generateKeyPair(){this.accountDialog.data.key=NostrTools.generatePrivateKey(),this.accountDialog.data.watchOnly=!1},async getFromExtension(){this.accountDialog.data.key=await window.nostr.getPublicKey(),this.accountDialog.data.watchOnly=!0},openAccountDialog(){this.accountDialog.show=!0},async updateUiConfig(e){var i;const{name:t,about:n,ui:a}=e;this.config={...this.config,opts:{...this.config.opts,name:t,about:n,ui:a}},this.applyUiConfigs((i=this.config)==null?void 0:i.opts)},async updateData(e){if(console.log("### updateData",e),e.length<1){this.$q.notify({message:"No matches were found!"});return}let t=new Map,n=new Map;const a=e.filter(i=>i.kind===5).map(i=>(i.tags||[]).filter(l=>l[0]==="e")).flat().map(i=>i[1]).filter(i=>!!i);this.stalls.forEach(i=>n.set(i.id,i)),this.products.forEach(i=>t.set(i.id,i)),e.map(eventToObj).map(i=>{var l;if(i.kind==0){i.pubkey==((l=this.account)==null?void 0:l.pubkey)&&(this.accountMetadata=i.content),this.merchants.filter(o=>o.publicKey===i.pubkey).forEach(o=>o.profile=i.content);return}else i.kind==5?console.log("### delete event",i):i.kind==30018?t.set(i.d,{...i.content,pubkey:i.pubkey,id:i.d,categories:i.t,eventId:i.id}):i.kind==30017&&n.set(i.d,{...i.content,pubkey:i.pubkey,id:i.d,pubkey:i.pubkey})}),this.stalls=await Array.from(n.values()),this.products=Array.from(t.values()).map(i=>{const l=this.stalls.find(o=>o.id==i.stall_id);if(!!l)return i.stallName=l.name,i.images=i.images||[i.image],i.currency!="sat"&&(i.formatedPrice=this.getAmountFormated(i.price,i.currency)),i}).filter(i=>i&&a.indexOf(i.eventId)===-1)},async initNostr(){this.isLoading=!0,this.pool=new NostrTools.SimplePool;const e=Array.from(this.relays),t=this.merchants.map(i=>i.publicKey),n=await this.pool.list(e,[{kinds:[0,30017,30018],authors:t}]);if(!n||n.length==0)return;await this.updateData(n);const a=n.sort((i,l)=>l.created_at-i.created_at)[0];this.poolSubscribe(a.created_at),this.isLoading=!1},async poolSubscribe(e){const t=this.merchants.map(n=>n.publicKey);this.pool.sub(Array.from(this.relays),[{kinds:[0,5,30017,30018],authors:t,since:e}]).on("event",n=>{this.updateData([n])},{id:"masterSub"})},async addMarket(e){var t,n;if(!!e){try{const{type:a,data:i}=NostrTools.nip19.decode(e);if(a!=="naddr"||i.kind!==30019)return;this.config={d:i.identifier,pubkey:i.pubkey,relays:i.relays}}catch(a){console.error(a);return}try{const a=new NostrTools.SimplePool;this.config.relays.forEach(l=>this.relays.add(l));const i=await a.get(this.config.relays,{kinds:[30019],limit:1,authors:[this.config.pubkey],"#d":[this.config.d]});if(!i)return;this.config={...this.config,opts:JSON.parse(i.content)},this.addMerchants((t=this.config.opts)==null?void 0:t.merchants),this.applyUiConfigs((n=this.config)==null?void 0:n.opts)}catch(a){console.warn(a)}}},navigateTo(e,t={stall:null,product:null,pubkey:null}){var r;console.log("### navigateTo",e,t);const{stall:n,product:a,pubkey:i}=t,l=new URL(window.location),o=i||((r=this.stalls.find(s=>s.id==n))==null?void 0:r.pubkey);l.searchParams.set("merchant",o),e==="stall"||e==="product"?n&&(this.activeStall=n,this.setActivePage("customer-stall"),l.searchParams.set("stall",n),this.activeProduct=a,a?l.searchParams.set("product",a):l.searchParams.delete("product")):(this.activeStall=null,this.activeProduct=null,l.searchParams.delete("merchant"),l.searchParams.delete("stall"),l.searchParams.delete("product"),this.setActivePage("market")),window.history.pushState({},"",l)},copyUrl:function(){this.copyText(window.location)},copyText:function(e){var t=this.$q.notify;Quasar.utils.copyToClipboard(e).then(function(){t({message:"Copied to clipboard!",position:"bottom"})})},getAmountFormated(e,t="USD"){return formatCurrency(e,t)},setActivePage(e="market"){this.activePage=e},async addRelay(e){let t=String(e).trim();this.relays.add(t),this.$q.localStorage.set("nostrmarket.relays",Array.from(this.relays)),this.initNostr()},removeRelay(e){this.relays.delete(e),this.relays=new Set(Array.from(this.relays)),this.$q.localStorage.set("nostrmarket.relays",Array.from(this.relays)),this.initNostr()},addMerchant(e){this.merchants.unshift({publicKey:e,profile:null}),this.$q.localStorage.set("nostrmarket.merchants",this.merchants),this.initNostr()},addMerchants(e=[]){const t=this.merchants.map(a=>a.publicKey),n=e.filter(a=>t.indexOf(a)===-1).map(a=>({publicKey:a,profile:null}));this.merchants.unshift(...n),this.$q.localStorage.set("nostrmarket.merchants",this.merchants),this.initNostr()},removeMerchant(e){this.merchants=this.merchants.filter(t=>t.publicKey!==e),this.$q.localStorage.set("nostrmarket.merchants",this.merchants),this.products=this.products.filter(t=>t.pubkey!==e),this.stalls=this.stalls.filter(t=>t.pubkey!==e),this.initNostr()},addProductToCart(e){let t=this.shoppingCarts.find(a=>a.id===e.stall_id);t||(t={id:e.stall_id,products:[]},this.shoppingCarts.push(t)),t.merchant=this.merchants.find(a=>a.publicKey===e.pubkey);let n=t.products.find(a=>a.id===e.id);n||(n={...e,orderedQuantity:0},t.products.push(n)),n.orderedQuantity=Math.min(n.quantity,e.orderedQuantity||n.orderedQuantity+1),this.$q.localStorage.set("nostrmarket.shoppingCarts",this.shoppingCarts),this.$q.notify({type:"positive",message:"Product added to cart!"})},removeProductFromCart(e){const t=this.shoppingCarts.find(n=>n.id===e.stallId);t&&(t.products=t.products.filter(n=>n.id!==e.productId),t.products.length||(this.shoppingCarts=this.shoppingCarts.filter(n=>n.id!==e.stallId)),this.$q.localStorage.set("nostrmarket.shoppingCarts",this.shoppingCarts))},removeCart(e){this.shoppingCarts=this.shoppingCarts.filter(t=>t.id!==e),this.$q.localStorage.set("nostrmarket.shoppingCarts",this.shoppingCarts)},checkoutStallCart(e){this.checkoutCart=e,this.checkoutStall=this.stalls.find(t=>t.id===e.id),this.setActivePage("shopping-cart-checkout")},async placeOrder({event:e,order:t,cartId:n}){var a;if(!((a=this.account)!=null&&a.privkey)){this.openAccountDialog();return}try{this.activeOrderId=t.id,e.content=await NostrTools.nip04.encrypt(this.account.privkey,this.checkoutStall.pubkey,JSON.stringify(t)),e.id=NostrTools.getEventHash(e),e.sig=await NostrTools.signEvent(e,this.account.privkey),this.sendOrderEvent(e),this.persistOrderUpdate(this.checkoutStall.pubkey,e.created_at,t),this.removeCart(n),this.setActivePage("shopping-cart-list")}catch(i){console.warn(i),this.$q.notify({type:"warning",message:"Failed to place order!"})}},sendOrderEvent(e){const t=this.pool.publish(Array.from(this.relays),e);this.$q.notify({type:"positive",message:"The order has been placed!"}),this.qrCodeDialog={data:{payment_request:null,message:null},dismissMsg:null,show:!0},t.on("ok",()=>{this.qrCodeDialog.show=!0}),t.on("failed",n=>{console.error(n)})},async listenForIncommingDms(e){var t;if(!!((t=this.account)!=null&&t.privkey))try{const n=[{kinds:[4],"#p":[this.account.pubkey]},{kinds:[4],authors:[this.account.pubkey]}],a=this.pool.sub(Array.from(this.relays),n);return a.on("event",async i=>{const l=i.tags.find(([s,u])=>s==="p"&&u&&u!=="")[1],o=i.pubkey===this.account.pubkey;if(l!==this.account.pubkey&&!o){console.warn("Unexpected DM. Dropped!");return}this.persistDMEvent(i);const r=o?l:i.pubkey;await this.handleIncommingDm(i,r)}),a}catch(n){console.error(`Error: ${n}`)}},async handleIncommingDm(e,t){try{const n=await NostrTools.nip04.decrypt(this.account.privkey,t,e.content);if(console.log("### plainText",n),!isJson(n))return;const a=JSON.parse(n);[0,1,2].indexOf(a.type)!==-1&&this.persistOrderUpdate(t,e.created_at,a),a.type===1?this.handlePaymentRequest(a):a.type===2&&this.handleOrderStatusUpdate(a)}catch(n){console.warn("Unable to handle incomming DM",n)}},handlePaymentRequest(e){var n;if(e.id&&e.id!==this.activeOrderId)return;if(!((n=e.payment_options)!=null&&n.length)){this.qrCodeDialog.data.message=e.message||"Unexpected error";return}const t=e.payment_options.find(a=>a.type=="ln").link;!t||(this.qrCodeDialog.data.payment_request=t,this.qrCodeDialog.dismissMsg=this.$q.notify({timeout:1e4,message:"Waiting for payment..."}))},handleOrderStatusUpdate(e){if(e.id&&e.id!==this.activeOrderId)return;this.qrCodeDialog.dismissMsg&&this.qrCodeDialog.dismissMsg(),this.qrCodeDialog.show=!1;const t=e.shipped?"Order shipped":e.paid?"Order paid":"Order notification";this.$q.notify({type:"positive",message:t,caption:e.message||""})},persistDMEvent(e){const t=this.$q.localStorage.getItem(`nostrmarket.dm.${e.pubkey}`)||{events:[],lastCreatedAt:0};t.events.find(a=>a.id===e.id)||(t.events.push(e),t.events.sort((a,i)=>a-i),t.lastCreatedAt=t.events[t.events.length-1].created_at,this.$q.localStorage.set(`nostrmarket.dm.${e.pubkey}`,t))},lastDmForPubkey(e){const t=this.$q.localStorage.getItem(`nostrmarket.dm.${e}`);return t?t.lastCreatedAt:0},persistOrderUpdate(e,t,n){let a=this.$q.localStorage.getItem(`nostrmarket.orders.${e}`)||[];const i=a.findIndex(o=>o.id===n.id);if(i===-1){a.unshift({...n,eventCreatedAt:t,createdAt:t}),this.orders[e]=a,this.orders={...this.orders},this.$q.localStorage.set(`nostrmarket.orders.${e}`,a);return}let l=a[i];n.type===0?(l.createdAt=t,l={...l,...n,message:l.message||n.message}):l=l.eventCreatedAtn.stall_id===e).map(n=>n.categories).flat().filter(n=>!!n);return Array.from(new Set(t))},allStallImages(e){const t=this.products.filter(n=>n.stall_id===e).map(n=>n.images&&n.images[0]).filter(n=>!!n);return Array.from(new Set(t))},sanitizeImageSrc(e,t){try{if(e)return new URL(e),e}catch{}return t},async publishNaddr(){var s,u,d;if(!((s=this.account)!=null&&s.privkey)){this.openAccountDialog(),this.$q.notify({message:"Login Required!",icon:"warning"});return}const e=Array.from(this.merchants.map(v=>v.publicKey)),{name:t,about:n,ui:a}=((u=this.config)==null?void 0:u.opts)||{},i={merchants:e,name:t,about:n,ui:a},l=(d=this.config.identifier)!=null?d:crypto.randomUUID(),o={...await NostrTools.getBlankEvent(),kind:30019,content:JSON.stringify(i),created_at:Math.floor(Date.now()/1e3),tags:[["d",l]],pubkey:this.account.pubkey};o.id=NostrTools.getEventHash(o);try{o.sig=await NostrTools.signEvent(o,this.account.privkey);const v=this.pool.publish(Array.from(this.relays),o);v.on("ok",()=>{console.debug("Config event was sent")}),v.on("failed",y=>{console.error(y)})}catch(v){console.error(v),this.$q.notify({message:"Cannot publish market profile",caption:`Error: ${v}`,color:"negative"});return}const r=NostrTools.nip19.naddrEncode({pubkey:o.pubkey,kind:30019,identifier:l,relays:Array.from(this.relays)});this.copyText(r)},logout(){window.localStorage.removeItem("nostrmarket.account"),window.location.href=window.location.origin+window.location.pathname,this.account=null,this.accountMetadata=null},clearAllData(){this.$q.dialog(confirm("This will remove all information about merchants, products, relays and others. You will NOT be logged out. Do you want to proceed?")).onOk(async()=>{this.$q.localStorage.getAllKeys().filter(e=>e!=="nostrmarket.account").forEach(e=>window.localStorage.removeItem(e)),this.merchants=[],this.relays=[],this.orders=[],this.config={opts:null},this.shoppingCarts=[],this.checkoutCart=null,window.location.href=window.location.origin+window.location.pathname})},markNoteAsRead(e){this.readNotes[e]=!0,this.$q.localStorage.set("nostrmarket.readNotes",this.readNotes)},focusOnElement(e){var t;(t=document.getElementById(e))==null||t.scrollIntoView(),this.showFilterDetails=!0}}}),Ay=Object.assign($y,{setup(e){return window.$q=du(),(t,n)=>(S(),V(et,null,[c(su,null,{default:f(()=>{var a,i,l,o;return[m("div",J0,[c(ri,{class:"col-lg-1 col-md-1 col-sm-0 q-pl-none"},{default:f(()=>[c(vt,{rounded:"",size:"64px",class:"q-ma-none q-pa-none gt-sm"},{default:f(()=>[t.logoImage?(S(),V("img",{key:0,src:t.logoImage},null,8,X0)):fe("",!0)]),_:1})]),_:1}),c(ri,{class:"col-lg-6 col-md-5 col-sm-12 auto-width"},{default:f(()=>[ey,c(Xe,{class:"rounded-pill",style:{width:"100%"},rounded:"",outlined:"",clearable:"",modelValue:t.searchText,"onUpdate:modelValue":n[0]||(n[0]=r=>t.searchText=r),modelModifiers:{trim:!0},label:"Filter products, load market profile..."},_o({append:f(()=>[t.searchText?fe("",!0):(S(),j(je,{key:0,name:"search"}))]),_:2},[t.showFilterDetails?{name:"label",fn:f(()=>[oe(" Filter or paste a "),c(rn,{class:"q-px-sm text-subtitle1",color:"secondary"},{default:f(()=>[oe("naddr")]),_:1}),oe(" here ")]),key:"0"}:void 0]),1032,["modelValue"])]),_:1}),c(ri,{class:"col-lg-5 col-md-6 col-sm-12 q-ma-none"},{default:f(()=>[m("div",ty,[c(ee,{color:"gray",icon:"travel_explore",flat:"",size:"lg",onClick:n[1]||(n[1]=r=>t.setActivePage("search-nostr"))},{default:f(()=>[c(Tt,null,{default:f(()=>[oe("Search for products on Nostr")]),_:1})]),_:1}),c(ee,{color:"gray",icon:"settings",flat:"",size:"lg",onClick:n[2]||(n[2]=r=>t.setActivePage("market-config"))},{default:f(()=>[c(Tt,null,{default:f(()=>[oe(" Settings")]),_:1})]),_:1}),t.account?(S(),j(ee,{key:0,onClick:n[3]||(n[3]=r=>t.setActivePage("user-config")),color:"gray",icon:"perm_identity",flat:"",size:"lg"},{default:f(()=>[c(Tt,null,{default:f(()=>[oe("User User Config")]),_:1})]),_:1})):(S(),j(ee,{key:1,onClick:n[4]||(n[4]=r=>t.accountDialog.show=!0),color:"gray",icon:"person_add",flat:"",size:"lg"},{default:f(()=>[c(Tt,null,{default:f(()=>[oe("User Login")]),_:1})]),_:1})),c(ee,{onClick:n[5]||(n[5]=r=>t.setActivePage("user-chat")),color:"gray",icon:"chat",flat:"",size:"lg"},{default:f(()=>[c(Tt,null,{default:f(()=>[oe("Chat")]),_:1})]),_:1}),c(ee,{onClick:n[6]||(n[6]=r=>t.setActivePage("customer-orders")),color:"gray",icon:"receipt_long",flat:"",size:"lg"},{default:f(()=>[c(Tt,null,{default:f(()=>[oe("Orders")]),_:1})]),_:1}),c(ee,{color:"gray",icon:"shopping_cart",dense:"",round:"",flat:"",size:"lg",onClick:n[7]||(n[7]=r=>t.setActivePage("shopping-cart-list"))},{default:f(()=>[c(Tt,null,{default:f(()=>[oe("Shopping Cart")]),_:1}),t.allCartsItemCount?(S(),j(rn,{key:0,color:"secondary",floating:""},{default:f(()=>[m("span",{textContent:W(t.allCartsItemCount)},null,8,ny)]),_:1})):fe("",!0)]),_:1})])]),_:1})]),(a=t.products)!=null&&a.length?(S(),V("div",ay,[c(Wi,{items:t.allCategories,"virtual-scroll-horizontal":""},{default:f(({item:r,index:s})=>[(S(),j(aa,{key:s,color:r.selected?"grey":"",class:"cursor-pointer q-mb-md"},{default:f(()=>[m("span",{textContent:W(r.category),onClick:u=>t.toggleCategoryFilter(r.category)},null,8,iy),c(rn,{onClick:u=>t.toggleCategoryFilter(r.category),rounded:"",class:"q-ml-sm",color:"secondary"},{default:f(()=>[m("span",{textContent:W(r.count)},null,8,ly)]),_:2},1032,["onClick"])]),_:2},1032,["color"]))]),_:1},8,["items"])])):fe("",!0),t.isLoading?(S(),V("div",oy,[m("div",ry,[c(Do,{color:"primary",size:"xl"})])])):fe("",!0),c(lu,{class:"row q-pa-none q-mb-lg gt-sm shadow-2"},{default:f(()=>[t.bannerImage?(S(),j(ji,{key:0,src:t.bannerImage,class:"rounded-borders",style:{width:"100%",height:"250px"},cover:""},{default:f(()=>{var r,s;return[(s=(r=t.config)==null?void 0:r.opts)!=null&&s.about?(S(),V("div",sy,[m("span",{textContent:W(t.config.opts.about)},null,8,uy)])):fe("",!0)]}),_:1},8,["src"])):fe("",!0)]),_:1}),m("div",cy,[m("div",dy,[c(ru,{class:"cursor q-mt-sm q-mr-sm"},{default:f(()=>{var r,s;return[c(Wt,{label:((s=(r=t.config)==null?void 0:r.opts)==null?void 0:s.name)||"Market",icon:"home",onClick:n[9]||(n[9]=u=>t.navigateTo("market")),class:"cursor-pointer auto-width"},{default:f(()=>{var u;return[t.activePage==="market"&&((u=t.stalls)==null?void 0:u.length)?(S(),j(po,{key:0,modelValue:t.groupByStall,"onUpdate:modelValue":n[8]||(n[8]=d=>t.groupByStall=d),class:"q-pl-md float-right",size:"xs",val:"xs",label:"Group by stalls"},null,8,["modelValue"])):fe("",!0)]}),_:1},8,["label"]),t.activePage==="customer-stall"?(S(),j(Wt,{key:0,label:t.stallName,onClick:n[10]||(n[10]=u=>t.navigateTo("stall",{stall:t.activeStall})),icon:"storefront",class:"cursor-pointer"},null,8,["label"])):fe("",!0),t.activePage==="customer-stall"&&t.activeProduct?(S(),j(Wt,{key:1,label:t.productName,class:"cursor-pointer",icon:"widgets"},null,8,["label"])):fe("",!0),t.activePage==="shopping-cart-list"?(S(),j(Wt,{key:2,label:"Shoping Cart",icon:"shopping_cart"})):fe("",!0),t.activePage==="customer-orders"?(S(),j(Wt,{key:3,label:"Orders",icon:"receipt_long"})):fe("",!0),t.activePage==="market-config"?(S(),j(Wt,{key:4,label:"Settings",icon:"settings"})):fe("",!0),t.activePage==="user-config"?(S(),j(Wt,{key:5,label:"User Config",icon:"perm_identity"})):fe("",!0),t.activePage==="user-chat"?(S(),j(Wt,{key:6,label:"User Chat",icon:"chat"})):fe("",!0)]}),_:1})]),m("div",fy,[t.activePage==="customer-stall"?(S(),j(ee,{key:0,flat:"",color:"grey",icon:"content_copy",onClick:n[11]||(n[11]=r=>t.copyUrl()),class:"float-right"})):fe("",!0)])]),c(Ae,{class:"q-mt-sm q-mb-md"}),t.activePage==="market-config"?(S(),j(Zo,{key:2,merchants:t.merchants,onAddMerchant:t.addMerchant,onRemoveMerchant:t.removeMerchant,relays:t.relays,"read-notes":t.readNotes,onAddRelay:t.addRelay,onRemoveRelay:t.removeRelay,"config-ui":(i=t.config)==null?void 0:i.opts,onUiConfigUpdate:t.updateUiConfig,onPublishNaddr:t.publishNaddr,onClearAllData:t.clearAllData,onNoteRead:t.markNoteAsRead},null,8,["merchants","onAddMerchant","onRemoveMerchant","relays","read-notes","onAddRelay","onRemoveRelay","config-ui","onUiConfigUpdate","onPublishNaddr","onClearAllData","onNoteRead"])):t.activePage==="user-config"?(S(),j(Gc,{key:3,account:t.account,onLogout:t.logout,onCopyText:t.copyText},null,8,["account","onLogout","onCopyText"])):t.activePage==="user-chat"?(S(),j(ed,{key:4})):t.activePage==="shopping-cart-list"?(S(),j(fd,{key:5,carts:t.shoppingCarts,onAddToCart:t.addProductToCart,onRemoveFromCart:t.removeProductFromCart,onRemoveCart:t.removeCart,onCheckoutCart:t.checkoutStallCart},null,8,["carts","onAddToCart","onRemoveFromCart","onRemoveCart","onCheckoutCart"])):t.activePage==="shopping-cart-checkout"?(S(),j(Xd,{key:6,cart:t.checkoutCart,stall:t.checkoutStall,"customer-pubkey":(l=t.account)==null?void 0:l.pubkey,onLoginRequired:t.openAccountDialog,onPlaceOrder:t.placeOrder,onChangePage:t.navigateTo},null,8,["cart","stall","customer-pubkey","onLoginRequired","onPlaceOrder","onChangePage"])):t.activePage==="customer-orders"?(S(),j(t0,{key:7,orders:t.orders,products:t.products,stalls:t.stalls,merchants:t.merchants,onShowInvoice:t.showInvoiceQr},null,8,["orders","products","stalls","merchants","onShowInvoice"])):t.activePage==="customer-stall"?(S(),j(E0,{key:8,stall:t.stalls.find(r=>r.id==t.activeStall),products:t.filterProducts,"product-detail":t.activeProduct,onChangePage:t.navigateTo,onAddToCart:t.addProductToCart},null,8,["stall","products","product-detail","onChangePage","onAddToCart"])):(o=t.merchants)!=null&&o.length?(S(),V("div",_y,[t.groupByStall?(S(),j(Z0,{key:0,stalls:t.filterStalls,onChangePage:t.navigateTo},null,8,["stalls","onChangePage"])):(S(),j(Sf,{key:1,"filtered-products":t.filterProducts,"search-text":t.searchText,"filter-categories":t.filterCategories,onChangePage:t.navigateTo,onUpdateData:t.updateData,onAddToCart:t.addProductToCart},null,8,["filtered-products","search-text","filter-categories","onChangePage","onUpdateData","onAddToCart"]))])):(S(),V("div",hy,[c(Qt,{class:"q-mt-md",bordered:""},{default:f(()=>[c(nt,null,{default:f(()=>[c(ae,{class:"q-mt-sm q-ml-lg"},{default:f(()=>[c(se,null,{default:f(()=>[my]),_:1}),c(Ae,{class:"q-mb-xl q-mt-md"}),c(se,null,{default:f(()=>[gy]),_:1})]),_:1})]),_:1}),c(nt,null,{default:f(()=>[c(ae,{class:"q-mt-sm q-ml-lg"},{default:f(()=>[c(se,null,{default:f(()=>[m("ul",null,[m("li",null,[m("span",vy,[c(ee,{onClick:n[12]||(n[12]=r=>t.addMarket(t.defaultMarketNaddr)),size:"xl",flat:"",color:"secondary",class:"q-mb-xs"},{default:f(()=>[oe("Import")]),_:1}),oe(" a list of popular merchants, or ")])]),m("li",null,[m("span",yy,[c(ee,{onClick:n[13]||(n[13]=r=>t.setActivePage("market-config")),flat:"",size:"xl",color:"secondary",class:"q-mb-xs"},{default:f(()=>[oe("Add a merchant")]),_:1}),oe(" using its public key, or ")])]),m("li",null,[m("span",py,[c(ee,{onClick:n[14]||(n[14]=r=>t.focusOnElement("search-text")),flat:"",size:"xl",color:"secondary",class:"q-mb-xs"},{default:f(()=>[oe("Add a market profile")]),_:1}),oe(" using a shareable "),by,oe(" identifier ")])])])]),_:1})]),_:1}),c(ae,{side:""})]),_:1})]),_:1})]))]}),_:1}),c(Si,{modelValue:t.accountDialog.show,"onUpdate:modelValue":n[17]||(n[17]=a=>t.accountDialog.show=a),position:"top"},{default:f(()=>[c(lt,null,{default:f(()=>[c(we,{class:"row"},{default:f(()=>[wy,c(cu)]),_:1}),c(we,null,{default:f(()=>[Sy]),_:1}),c(we,{class:"q-pt-none"},{default:f(()=>[c(Xe,{dense:"",label:"Nsec/Hex",modelValue:t.accountDialog.data.key,"onUpdate:modelValue":n[15]||(n[15]=a=>t.accountDialog.data.key=a),autofocus:"",onKeyup:ki(t.createAccount,["enter"]),error:t.accountDialog.data.key&&!t.isValidAccountKey,hint:"Enter you private key"},null,8,["modelValue","onKeyup","error"])]),_:1}),c(In,{align:"right",class:"text-primary"},{default:f(()=>[t.isValidAccountKey?(S(),j(ee,{key:0,label:"Login",color:"primary",onClick:n[16]||(n[16]=()=>t.createAccount())})):(S(),j(ee,{key:1,flat:"",label:"Generate",onClick:t.generateKeyPair},null,8,["onClick"])),dn((S(),j(ee,{flat:"",color:"grey",class:"q-ml-auto"},{default:f(()=>[oe("Close")]),_:1})),[[Mi]])]),_:1})]),_:1})]),_:1},8,["modelValue"]),c(Si,{modelValue:t.qrCodeDialog.show,"onUpdate:modelValue":n[19]||(n[19]=a=>t.qrCodeDialog.show=a),position:"top"},{default:f(()=>[c(lt,{class:"q-pa-md q-pt-xl"},{default:f(()=>{var a;return[m("div",ky,[t.qrCodeDialog.data.message?(S(),V("div",Cy,[m("strong",null,[m("span",{textContent:W(t.qrCodeDialog.data.message)},null,8,Ty)])])):(S(),V("a",{key:1,href:"lightning:"+((a=t.qrCodeDialog.data)==null?void 0:a.payment_request)},[t.qrCodeDialog.data.payment_request?(S(),V("div",qy,[c(Vs(ac),{value:t.qrCodeDialog.data.payment_request,options:{width:340},class:"rounded-borders"},null,8,["value"])])):(S(),V("div",Py,[c(ro,{color:"primary",size:"2.55em"})]))],8,My))]),m("div",Dy,[t.qrCodeDialog.data.payment_request?(S(),j(ee,{key:0,outline:"",color:"grey",onClick:n[18]||(n[18]=i=>t.copyText(t.qrCodeDialog.data.payment_request))},{default:f(()=>[oe("Copy invoice")]),_:1})):fe("",!0),dn((S(),j(ee,{flat:"",color:"grey",class:"q-ml-auto"},{default:f(()=>[oe("Close")]),_:1})),[[Mi]])])]}),_:1})]),_:1},8,["modelValue"])],64))}});export{Ay as default}; diff --git a/static/market/assets/QResizeObserver.bcb70109.js b/static/market/assets/QResizeObserver.bcb70109.js new file mode 100644 index 0000000..f140acb --- /dev/null +++ b/static/market/assets/QResizeObserver.bcb70109.js @@ -0,0 +1 @@ +import{r as g,s as z,o as c,c as y,f,n as w,F as v,h as R,g as O,k as b}from"./index.725caa24.js";function x(){const r=g(!z.value);return r.value===!1&&c(()=>{r.value=!0}),r}const m=typeof ResizeObserver!="undefined",h=m===!0?{}:{style:"display:block;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;",url:"about:blank"};var L=y({name:"QResizeObserver",props:{debounce:{type:[String,Number],default:100}},emits:["resize"],setup(r,{emit:p}){let i=null,t,o={width:-1,height:-1};function s(e){e===!0||r.debounce===0||r.debounce==="0"?u():i===null&&(i=setTimeout(u,r.debounce))}function u(){if(i!==null&&(clearTimeout(i),i=null),t){const{offsetWidth:e,offsetHeight:n}=t;(e!==o.width||n!==o.height)&&(o={width:e,height:n},p("resize",o))}}const{proxy:a}=O();if(m===!0){let e;const n=l=>{t=a.$el.parentNode,t?(e=new ResizeObserver(s),e.observe(t),u()):l!==!0&&v(()=>{n(!0)})};return c(()=>{n()}),f(()=>{i!==null&&clearTimeout(i),e!==void 0&&(e.disconnect!==void 0?e.disconnect():t&&e.unobserve(t))}),w}else{let l=function(){i!==null&&(clearTimeout(i),i=null),n!==void 0&&(n.removeEventListener!==void 0&&n.removeEventListener("resize",s,b.passive),n=void 0)},d=function(){l(),t&&t.contentDocument&&(n=t.contentDocument.defaultView,n.addEventListener("resize",s,b.passive),u())};const e=x();let n;return c(()=>{v(()=>{t=a.$el,t&&d()})}),f(l),a.trigger=s,()=>{if(e.value===!0)return R("object",{style:h.style,tabindex:-1,type:"text/html",data:h.url,"aria-hidden":"true",onLoad:d})}}}});export{L as Q}; diff --git a/static/market/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff b/static/market/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff new file mode 100644 index 0000000000000000000000000000000000000000..88fdf4d026a999aa0e5bd310635f5c5a43e716a1 GIT binary patch literal 164912 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

)#n`FV3Cq>sHa&yvwtA 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

    n|xm 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 literal 0 HcmV?d00001 diff --git a/static/market/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 b/static/market/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f1fd22ff1c117e187f088de6746eb1f82187a992 GIT binary patch literal 128616 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