From 6bb47d4b0063749cf7ce8e7e04829ba10eb5b742 Mon Sep 17 00:00:00 2001 From: line-6000 <154492442+line-6000@users.noreply.github.com> Date: Wed, 22 Apr 2026 02:28:31 +0800 Subject: [PATCH] feat: add admin panel with multi-chain support and notification system - Add full admin REST API: auth, API keys, chains, chain tokens, wallets, orders, RPC nodes, settings, dashboard stats, notifications - Add JWT-based admin authentication and API key auth middleware - Add multi-chain listeners: BSC, ETH, Polygon, Plasma, EVM WebSocket - Add RPC node health check job with automatic failover - Add Telegram notification channel for order events - Add installer for first-run database initialization - Add new DB models: admin_user, api_key, chain, chain_token, rpc_node, settings, notification_channel - Add order statistics aggregation (daily/monthly/by-chain) - Serve built admin SPA from embedded www/ assets - Add comprehensive test coverage for all new features --- src/.env.example | 24 +- src/bootstrap/bootstrap.go | 43 + src/command/http_server.go | 43 +- src/config/config.go | 86 +- src/config/settings_bridge.go | 34 + src/controller/admin/api_key_controller.go | 310 +++++++ src/controller/admin/auth_controller.go | 157 ++++ src/controller/admin/base.go | 26 + src/controller/admin/chain_controller.go | 71 ++ .../admin/chain_token_controller.go | 181 ++++ src/controller/admin/dashboard_controller.go | 288 +++++++ .../admin/notification_controller.go | 314 +++++++ src/controller/admin/order_controller.go | 393 +++++++++ src/controller/admin/rpc_controller.go | 190 +++++ src/controller/admin/settings_controller.go | 153 ++++ src/controller/admin/wallet_controller.go | 279 ++++++ src/controller/comm/order_controller.go | 95 ++- src/controller/comm/pay_controller.go | 36 +- .../comm/supported_asset_controller.go | 156 ++-- src/controller/comm/wallet_controller.go | 98 --- src/go.mod | 9 +- src/go.sum | 16 +- src/install/installer.go | 336 ++++++++ src/install/installer_test.go | 175 ++++ src/internal/testutil/testdb.go | 35 +- src/main.go | 99 +++ src/middleware/check_jwt.go | 50 ++ src/middleware/check_sign.go | 119 ++- src/middleware/check_token.go | 24 - src/model/dao/mdb_table_init.go | 237 ++++- src/model/data/admin_user_data.go | 93 ++ src/model/data/api_key_data.go | 137 +++ src/model/data/chain_data.go | 54 ++ src/model/data/chain_token_data.go | 125 +++ src/model/data/notification_channel_data.go | 81 ++ src/model/data/order_admin_data.go | 151 ++++ src/model/data/order_data.go | 110 ++- src/model/data/order_data_stats.go | 319 +++++++ src/model/data/order_data_test.go | 62 ++ src/model/data/rpc_node_data.go | 117 +++ src/model/data/settings_data.go | 166 ++++ src/model/data/supported_asset_data.go | 123 --- src/model/data/wallet_address_data.go | 58 +- src/model/data/wallet_address_data_test.go | 83 ++ src/model/mdb/admin_user.go | 21 + src/model/mdb/api_key.go | 29 + src/model/mdb/base.go | 6 +- src/model/mdb/chain.go | 19 + src/model/mdb/chain_token.go | 24 + src/model/mdb/notification_channel.go | 36 + src/model/mdb/orders_mdb.go | 40 +- src/model/mdb/rpc_node.go | 36 + src/model/mdb/settings.go | 54 ++ src/model/mdb/supported_asset_mdb.go | 12 - src/model/mdb/wallet_address_mdb.go | 14 +- src/model/request/base.go | 8 +- src/model/request/order_request.go | 26 +- src/model/response/base.go | 11 + src/model/response/order_response.go | 56 +- src/model/response/pay_response.go | 27 +- src/model/response/support_response.go | 4 +- src/model/service/order_service.go | 95 ++- src/model/service/order_service_test.go | 340 +++++++- src/model/service/sol_task.go | 102 ++- src/model/service/task_service.go | 210 +++-- src/model/service/task_tron_test.go | 92 ++ src/mq/worker.go | 91 +- src/mq/worker_test.go | 401 +++++++++ src/notify/dispatcher.go | 70 ++ src/notify/errors.go | 8 + src/notify/telegram_sender.go | 147 ++++ src/notify/telegram_sender_test.go | 53 ++ src/route/admin_router_test.go | 806 ++++++++++++++++++ src/route/router.go | 203 +++-- src/route/router_test.go | 701 ++++++++------- src/task/listen.go | 13 +- src/task/listen_bsc.go | 54 +- src/task/listen_chain_common.go | 101 +++ src/task/listen_eth.go | 94 +- src/task/listen_evm_ws.go | 51 +- src/task/listen_plasma.go | 47 +- src/task/listen_polygon.go | 55 +- src/task/listen_sol_job.go | 4 + src/task/listen_trc20_job.go | 4 + src/task/rpc_health_job.go | 97 +++ src/task/rpc_health_job_test.go | 194 +++++ src/telegram/handle.go | 20 +- src/telegram/telegram.go | 152 ++-- src/telegram/telegram_test.go | 135 +++ src/util/constant/errno.go | 24 +- src/util/http/response.go | 15 +- src/util/http/spa.go | 30 + src/util/http/spa_test.go | 68 ++ src/util/jwt/jwt.go | 78 ++ src/www/apple-touch-icon.png | Bin 0 -> 8229 bytes src/www/assets/401-IieFK_aS.js | 1 + src/www/assets/403-BfPOIf6t.js | 1 + src/www/assets/404-VQj_aY6A.js | 1 + src/www/assets/500-DSCRAyCF.js | 1 + src/www/assets/503-BTAQ6Iri.js | 1 + src/www/assets/ClientOnly-CtYi2y5F.js | 1 + src/www/assets/Match-B8-zI9ZJ.js | 1 + src/www/assets/Matches-LuvVcyUg.js | 1 + src/www/assets/_error-DGJYkCxd.js | 2 + src/www/assets/_error-Dttamloo.js | 1 + src/www/assets/addresses-DQVKa3vf.js | 3 + src/www/assets/appearance-DJZ27An3.js | 1 + src/www/assets/arrow-left-BrKcUadm.js | 1 + src/www/assets/atom-DI1Bn-1s.js | 1 + .../assets/auth-animation-context-zwGs7ZAM.js | 1 + src/www/assets/auth-store-BpIS8RMn.js | 1 + src/www/assets/badge-BAmRBT3U.js | 1 + src/www/assets/button-DJA4fnJ8.js | 1 + src/www/assets/card-DuQAN29P.js | 1 + src/www/assets/chains-QKtNypSO.js | 1 + src/www/assets/chains-store-Dzu_Y00B.js | 1 + src/www/assets/check-gDgbfVXu.js | 1 + src/www/assets/checkbox-B_Isethe.js | 1 + src/www/assets/chevron-down-CdmvZsfI.js | 1 + src/www/assets/chevrons-up-down-iOmAu5Fh.js | 1 + src/www/assets/circle-check-Dh8WOZF0.js | 1 + src/www/assets/clock-3-BoF5rDzX.js | 1 + src/www/assets/coming-soon-dialog-DMmjLgiX.js | 1 + src/www/assets/command-BwVY_kli.js | 5 + src/www/assets/cookies-BNZcTwGc.js | 1 + src/www/assets/createLucideIcon-D28ivbfF.js | 1 + src/www/assets/dashboard-Clgehcjb.js | 42 + src/www/assets/data-table-CmcvKcj8.js | 4 + src/www/assets/display-CkSSrdk4.js | 1 + src/www/assets/dist-15n4mVGL.js | 1 + src/www/assets/dist-BEDXr2LC.js | 1 + src/www/assets/dist-BKfJQFVD.js | 1 + src/www/assets/dist-CGm-FpWw.js | 1 + src/www/assets/dist-Cp1lAGZy.js | 1 + src/www/assets/dist-D21KDGR3.js | 1 + src/www/assets/dist-DG5UMlBd.js | 1 + src/www/assets/dist-DlZiaY1y.js | 1 + src/www/assets/dist-DvAgZMq72.js | 1 + src/www/assets/download-CN4vU01G.js | 1 + src/www/assets/dropdown-menu-CUea1X0A.js | 41 + src/www/assets/ellipsis-Y4gZr59G.js | 1 + src/www/assets/empty-state-Cam-sX8U.js | 1 + src/www/assets/epay-Db0RVMXe.js | 1 + src/www/assets/eye-CDavQcLN.js | 1 + src/www/assets/eye-off-C-BF3gv3.js | 1 + src/www/assets/font-provider-DvtNHF7l.js | 1 + src/www/assets/forbidden-BEz-zjy_.js | 1 + src/www/assets/form-DdHiBYMe.js | 1 + src/www/assets/general-error-DKtbS-qh.js | 1 + src/www/assets/header-DbmR8lIc.js | 1 + src/www/assets/help-F2O9kOnX.js | 1 + src/www/assets/index-CvQvpjMM.js | 9 + src/www/assets/index-TVbhXeum.css | 2 + src/www/assets/input-DiRPHDd8.js | 1 + src/www/assets/install-BDL3tVBh.js | 1 + ...er-cyrillic-ext-wght-normal-BOeWTOD4.woff2 | Bin 0 -> 25960 bytes .../inter-cyrillic-wght-normal-DqGufNeO.woff2 | Bin 0 -> 18748 bytes ...inter-greek-ext-wght-normal-DlzME5K_.woff2 | Bin 0 -> 11232 bytes .../inter-greek-wght-normal-CkhJZR-_.woff2 | Bin 0 -> 18996 bytes ...inter-latin-ext-wght-normal-DO1Apj_S.woff2 | Bin 0 -> 85068 bytes .../inter-latin-wght-normal-Dx4kXJAl.woff2 | Bin 0 -> 48256 bytes ...nter-vietnamese-wght-normal-CBcvBZtf.woff2 | Bin 0 -> 10252 bytes src/www/assets/label-CsevXZTG.js | 1 + src/www/assets/lib-CTYwzR3w.js | 1 + src/www/assets/link-CA4H4hTz.js | 1 + src/www/assets/loader-circle-fg8-aSyl.js | 1 + src/www/assets/long-text-BXQXVuRh.js | 1 + src/www/assets/maintenance-error-PO6kK4Oj.js | 1 + ...anrope-cyrillic-wght-normal-Dvxsihut.woff2 | Bin 0 -> 14500 bytes .../manrope-greek-wght-normal-DL7QRZyv.woff2 | Bin 0 -> 9444 bytes ...nrope-latin-ext-wght-normal-Ch3YOpNY.woff2 | Bin 0 -> 15120 bytes .../manrope-latin-wght-normal-DHIcAJRg.woff2 | Bin 0 -> 24836 bytes ...rope-vietnamese-wght-normal-usUDDRr7.woff2 | Bin 0 -> 8520 bytes src/www/assets/matchContext-BcwcZvp2.js | 1 + src/www/assets/messages-BovT1T-w.js | 1 + src/www/assets/not-found-error-toRsO1Fi.js | 1 + src/www/assets/notifications-DfNeewuy.js | 1 + ...ns-cyrillic-ext-wght-normal-DSNfmdVt.woff2 | Bin 0 -> 70680 bytes ...o-sans-cyrillic-wght-normal-B2hlT84T.woff2 | Bin 0 -> 20080 bytes ...sans-devanagari-wght-normal-Cv-Vwajv.woff2 | Bin 0 -> 99236 bytes ...-sans-greek-ext-wght-normal-12T8GTDR.woff2 | Bin 0 -> 10760 bytes ...noto-sans-greek-wght-normal-Ymb6dZNd.woff2 | Bin 0 -> 21776 bytes ...-sans-latin-ext-wght-normal-W1qJv59z.woff2 | Bin 0 -> 167960 bytes ...noto-sans-latin-wght-normal-BYSzYMf3.woff2 | Bin 0 -> 35820 bytes ...sans-vietnamese-wght-normal-DLTJy58D.woff2 | Bin 0 -> 14456 bytes ...to-cyrillic-ext-wght-normal-D4X5GqEv.woff2 | Bin 0 -> 28928 bytes ...nunito-cyrillic-wght-normal-CY6AOgYE.woff2 | Bin 0 -> 20776 bytes ...unito-latin-ext-wght-normal-CXYtwYOx.woff2 | Bin 0 -> 35588 bytes .../nunito-latin-wght-normal-BzFMHfZw.woff2 | Bin 0 -> 39128 bytes ...nito-vietnamese-wght-normal-U01xdrZh.woff2 | Bin 0 -> 13096 bytes src/www/assets/orders-Bv-Izk6_.js | 1 + src/www/assets/page-header-BBJ9dE3-.js | 1 + src/www/assets/password-BmNp63ZQ.js | 1 + src/www/assets/password-input-B463LDkD.js | 1 + src/www/assets/payment-assets-DSsuCTEQ.js | 1 + src/www/assets/payments-DTD79Ztb.js | 2 + src/www/assets/popover-D5q6Hufu.js | 1 + src/www/assets/radio-group-DXVwPYJH.js | 1 + src/www/assets/rate-B9ZGMIwY.js | 1 + src/www/assets/redirect-dE0wk0WH.js | 1 + src/www/assets/route-BxpeArPd.js | 1 + src/www/assets/route-C7cw4pTD.js | 1 + src/www/assets/route-ClLiRb_H.js | 1 + src/www/assets/route-Cut38oeV.js | 1 + src/www/assets/route-jvq7ILAD.js | 1 + src/www/assets/router-Dohuf5K5.js | 2 + src/www/assets/routes-CJI6s37t.js | 1 + src/www/assets/rpc-BVbqsnlT.js | 1 + src/www/assets/search-provider-Cx1K1ilz.js | 7 + src/www/assets/select-DcStuzoT.js | 1 + src/www/assets/separator-CRLYw2cW.js | 1 + src/www/assets/settings-6L98-bwl.js | 1 + .../assets/show-submitted-data-l0RlCwTX.js | 1 + src/www/assets/sidebar-nav-DgezD6QJ.js | 1 + src/www/assets/sign-in-DGULZo5h.js | 1 + src/www/assets/switch-R6BNZUH1.js | 1 + src/www/assets/telegram-HLdihqdM.js | 1 + src/www/assets/telescope-67IWjQye.js | 1 + src/www/assets/textarea-D_TrrVtD.js | 1 + src/www/assets/theme-provider-CRKya7Cx.js | 1 + src/www/assets/theme-switch-BjXQNOij.js | 1 + src/www/assets/trash-2-Du706Ujr.js | 1 + src/www/assets/unauthorized-error-CxmfHb-a.js | 1 + .../assets/use-table-url-state-C7-IMA3_.js | 1 + src/www/assets/useNavigate-Dg8CkCoa.js | 1 + src/www/assets/useRouter-D03zSgJO.js | 1 + src/www/assets/useRouterState-DV1cSG1v.js | 1 + src/www/assets/useSearch-B5ZWp8fU.js | 1 + src/www/assets/useStore-1-QVtiLb.js | 1 + src/www/assets/wallet--XSRr4dT.js | 1 + src/www/assets/web-vitals-f_BHH8AE.js | 1 + src/www/assets/with-selector-D_dmjfol.js | 1 + src/www/assets/zod-Cymc5bS-.js | 40 + src/www/favicon-16x16.png | Bin 0 -> 371 bytes src/www/favicon-32x32.png | Bin 0 -> 1421 bytes src/www/favicon.ico | Bin 0 -> 3510 bytes src/www/images/logo.png | Bin 0 -> 50877 bytes src/www/index.html | 211 +++++ src/www/manifest.webmanifest | 1 + src/www/pwa-192x192.png | Bin 0 -> 11709 bytes src/www/pwa-512x512.png | Bin 0 -> 42229 bytes src/www/pwa-maskable-192x192.png | Bin 0 -> 4549 bytes src/www/pwa-maskable-512x512.png | Bin 0 -> 24393 bytes src/www/registerSW.js | 1 + src/www/robots.txt | 3 + src/www/sw.js | 1 + src/www/workbox-8c29f6e4.js | 1 + 247 files changed, 9933 insertions(+), 1279 deletions(-) create mode 100644 src/config/settings_bridge.go create mode 100644 src/controller/admin/api_key_controller.go create mode 100644 src/controller/admin/auth_controller.go create mode 100644 src/controller/admin/base.go create mode 100644 src/controller/admin/chain_controller.go create mode 100644 src/controller/admin/chain_token_controller.go create mode 100644 src/controller/admin/dashboard_controller.go create mode 100644 src/controller/admin/notification_controller.go create mode 100644 src/controller/admin/order_controller.go create mode 100644 src/controller/admin/rpc_controller.go create mode 100644 src/controller/admin/settings_controller.go create mode 100644 src/controller/admin/wallet_controller.go delete mode 100644 src/controller/comm/wallet_controller.go create mode 100644 src/install/installer.go create mode 100644 src/install/installer_test.go create mode 100644 src/middleware/check_jwt.go delete mode 100644 src/middleware/check_token.go create mode 100644 src/model/data/admin_user_data.go create mode 100644 src/model/data/api_key_data.go create mode 100644 src/model/data/chain_data.go create mode 100644 src/model/data/chain_token_data.go create mode 100644 src/model/data/notification_channel_data.go create mode 100644 src/model/data/order_admin_data.go create mode 100644 src/model/data/order_data_stats.go create mode 100644 src/model/data/order_data_test.go create mode 100644 src/model/data/rpc_node_data.go create mode 100644 src/model/data/settings_data.go delete mode 100644 src/model/data/supported_asset_data.go create mode 100644 src/model/data/wallet_address_data_test.go create mode 100644 src/model/mdb/admin_user.go create mode 100644 src/model/mdb/api_key.go create mode 100644 src/model/mdb/chain.go create mode 100644 src/model/mdb/chain_token.go create mode 100644 src/model/mdb/notification_channel.go create mode 100644 src/model/mdb/rpc_node.go create mode 100644 src/model/mdb/settings.go delete mode 100644 src/model/mdb/supported_asset_mdb.go create mode 100644 src/model/response/base.go create mode 100644 src/model/service/task_tron_test.go create mode 100644 src/notify/dispatcher.go create mode 100644 src/notify/errors.go create mode 100644 src/notify/telegram_sender.go create mode 100644 src/notify/telegram_sender_test.go create mode 100644 src/route/admin_router_test.go create mode 100644 src/task/listen_chain_common.go create mode 100644 src/task/rpc_health_job.go create mode 100644 src/task/rpc_health_job_test.go create mode 100644 src/telegram/telegram_test.go create mode 100644 src/util/http/spa.go create mode 100644 src/util/http/spa_test.go create mode 100644 src/util/jwt/jwt.go create mode 100644 src/www/apple-touch-icon.png create mode 100644 src/www/assets/401-IieFK_aS.js create mode 100644 src/www/assets/403-BfPOIf6t.js create mode 100644 src/www/assets/404-VQj_aY6A.js create mode 100644 src/www/assets/500-DSCRAyCF.js create mode 100644 src/www/assets/503-BTAQ6Iri.js create mode 100644 src/www/assets/ClientOnly-CtYi2y5F.js create mode 100644 src/www/assets/Match-B8-zI9ZJ.js create mode 100644 src/www/assets/Matches-LuvVcyUg.js create mode 100644 src/www/assets/_error-DGJYkCxd.js create mode 100644 src/www/assets/_error-Dttamloo.js create mode 100644 src/www/assets/addresses-DQVKa3vf.js create mode 100644 src/www/assets/appearance-DJZ27An3.js create mode 100644 src/www/assets/arrow-left-BrKcUadm.js create mode 100644 src/www/assets/atom-DI1Bn-1s.js create mode 100644 src/www/assets/auth-animation-context-zwGs7ZAM.js create mode 100644 src/www/assets/auth-store-BpIS8RMn.js create mode 100644 src/www/assets/badge-BAmRBT3U.js create mode 100644 src/www/assets/button-DJA4fnJ8.js create mode 100644 src/www/assets/card-DuQAN29P.js create mode 100644 src/www/assets/chains-QKtNypSO.js create mode 100644 src/www/assets/chains-store-Dzu_Y00B.js create mode 100644 src/www/assets/check-gDgbfVXu.js create mode 100644 src/www/assets/checkbox-B_Isethe.js create mode 100644 src/www/assets/chevron-down-CdmvZsfI.js create mode 100644 src/www/assets/chevrons-up-down-iOmAu5Fh.js create mode 100644 src/www/assets/circle-check-Dh8WOZF0.js create mode 100644 src/www/assets/clock-3-BoF5rDzX.js create mode 100644 src/www/assets/coming-soon-dialog-DMmjLgiX.js create mode 100644 src/www/assets/command-BwVY_kli.js create mode 100644 src/www/assets/cookies-BNZcTwGc.js create mode 100644 src/www/assets/createLucideIcon-D28ivbfF.js create mode 100644 src/www/assets/dashboard-Clgehcjb.js create mode 100644 src/www/assets/data-table-CmcvKcj8.js create mode 100644 src/www/assets/display-CkSSrdk4.js create mode 100644 src/www/assets/dist-15n4mVGL.js create mode 100644 src/www/assets/dist-BEDXr2LC.js create mode 100644 src/www/assets/dist-BKfJQFVD.js create mode 100644 src/www/assets/dist-CGm-FpWw.js create mode 100644 src/www/assets/dist-Cp1lAGZy.js create mode 100644 src/www/assets/dist-D21KDGR3.js create mode 100644 src/www/assets/dist-DG5UMlBd.js create mode 100644 src/www/assets/dist-DlZiaY1y.js create mode 100644 src/www/assets/dist-DvAgZMq72.js create mode 100644 src/www/assets/download-CN4vU01G.js create mode 100644 src/www/assets/dropdown-menu-CUea1X0A.js create mode 100644 src/www/assets/ellipsis-Y4gZr59G.js create mode 100644 src/www/assets/empty-state-Cam-sX8U.js create mode 100644 src/www/assets/epay-Db0RVMXe.js create mode 100644 src/www/assets/eye-CDavQcLN.js create mode 100644 src/www/assets/eye-off-C-BF3gv3.js create mode 100644 src/www/assets/font-provider-DvtNHF7l.js create mode 100644 src/www/assets/forbidden-BEz-zjy_.js create mode 100644 src/www/assets/form-DdHiBYMe.js create mode 100644 src/www/assets/general-error-DKtbS-qh.js create mode 100644 src/www/assets/header-DbmR8lIc.js create mode 100644 src/www/assets/help-F2O9kOnX.js create mode 100644 src/www/assets/index-CvQvpjMM.js create mode 100644 src/www/assets/index-TVbhXeum.css create mode 100644 src/www/assets/input-DiRPHDd8.js create mode 100644 src/www/assets/install-BDL3tVBh.js create mode 100644 src/www/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 create mode 100644 src/www/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 create mode 100644 src/www/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 create mode 100644 src/www/assets/inter-greek-wght-normal-CkhJZR-_.woff2 create mode 100644 src/www/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 create mode 100644 src/www/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 create mode 100644 src/www/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 create mode 100644 src/www/assets/label-CsevXZTG.js create mode 100644 src/www/assets/lib-CTYwzR3w.js create mode 100644 src/www/assets/link-CA4H4hTz.js create mode 100644 src/www/assets/loader-circle-fg8-aSyl.js create mode 100644 src/www/assets/long-text-BXQXVuRh.js create mode 100644 src/www/assets/maintenance-error-PO6kK4Oj.js create mode 100644 src/www/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2 create mode 100644 src/www/assets/manrope-greek-wght-normal-DL7QRZyv.woff2 create mode 100644 src/www/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 create mode 100644 src/www/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 create mode 100644 src/www/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2 create mode 100644 src/www/assets/matchContext-BcwcZvp2.js create mode 100644 src/www/assets/messages-BovT1T-w.js create mode 100644 src/www/assets/not-found-error-toRsO1Fi.js create mode 100644 src/www/assets/notifications-DfNeewuy.js create mode 100644 src/www/assets/noto-sans-cyrillic-ext-wght-normal-DSNfmdVt.woff2 create mode 100644 src/www/assets/noto-sans-cyrillic-wght-normal-B2hlT84T.woff2 create mode 100644 src/www/assets/noto-sans-devanagari-wght-normal-Cv-Vwajv.woff2 create mode 100644 src/www/assets/noto-sans-greek-ext-wght-normal-12T8GTDR.woff2 create mode 100644 src/www/assets/noto-sans-greek-wght-normal-Ymb6dZNd.woff2 create mode 100644 src/www/assets/noto-sans-latin-ext-wght-normal-W1qJv59z.woff2 create mode 100644 src/www/assets/noto-sans-latin-wght-normal-BYSzYMf3.woff2 create mode 100644 src/www/assets/noto-sans-vietnamese-wght-normal-DLTJy58D.woff2 create mode 100644 src/www/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2 create mode 100644 src/www/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2 create mode 100644 src/www/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2 create mode 100644 src/www/assets/nunito-latin-wght-normal-BzFMHfZw.woff2 create mode 100644 src/www/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2 create mode 100644 src/www/assets/orders-Bv-Izk6_.js create mode 100644 src/www/assets/page-header-BBJ9dE3-.js create mode 100644 src/www/assets/password-BmNp63ZQ.js create mode 100644 src/www/assets/password-input-B463LDkD.js create mode 100644 src/www/assets/payment-assets-DSsuCTEQ.js create mode 100644 src/www/assets/payments-DTD79Ztb.js create mode 100644 src/www/assets/popover-D5q6Hufu.js create mode 100644 src/www/assets/radio-group-DXVwPYJH.js create mode 100644 src/www/assets/rate-B9ZGMIwY.js create mode 100644 src/www/assets/redirect-dE0wk0WH.js create mode 100644 src/www/assets/route-BxpeArPd.js create mode 100644 src/www/assets/route-C7cw4pTD.js create mode 100644 src/www/assets/route-ClLiRb_H.js create mode 100644 src/www/assets/route-Cut38oeV.js create mode 100644 src/www/assets/route-jvq7ILAD.js create mode 100644 src/www/assets/router-Dohuf5K5.js create mode 100644 src/www/assets/routes-CJI6s37t.js create mode 100644 src/www/assets/rpc-BVbqsnlT.js create mode 100644 src/www/assets/search-provider-Cx1K1ilz.js create mode 100644 src/www/assets/select-DcStuzoT.js create mode 100644 src/www/assets/separator-CRLYw2cW.js create mode 100644 src/www/assets/settings-6L98-bwl.js create mode 100644 src/www/assets/show-submitted-data-l0RlCwTX.js create mode 100644 src/www/assets/sidebar-nav-DgezD6QJ.js create mode 100644 src/www/assets/sign-in-DGULZo5h.js create mode 100644 src/www/assets/switch-R6BNZUH1.js create mode 100644 src/www/assets/telegram-HLdihqdM.js create mode 100644 src/www/assets/telescope-67IWjQye.js create mode 100644 src/www/assets/textarea-D_TrrVtD.js create mode 100644 src/www/assets/theme-provider-CRKya7Cx.js create mode 100644 src/www/assets/theme-switch-BjXQNOij.js create mode 100644 src/www/assets/trash-2-Du706Ujr.js create mode 100644 src/www/assets/unauthorized-error-CxmfHb-a.js create mode 100644 src/www/assets/use-table-url-state-C7-IMA3_.js create mode 100644 src/www/assets/useNavigate-Dg8CkCoa.js create mode 100644 src/www/assets/useRouter-D03zSgJO.js create mode 100644 src/www/assets/useRouterState-DV1cSG1v.js create mode 100644 src/www/assets/useSearch-B5ZWp8fU.js create mode 100644 src/www/assets/useStore-1-QVtiLb.js create mode 100644 src/www/assets/wallet--XSRr4dT.js create mode 100644 src/www/assets/web-vitals-f_BHH8AE.js create mode 100644 src/www/assets/with-selector-D_dmjfol.js create mode 100644 src/www/assets/zod-Cymc5bS-.js create mode 100644 src/www/favicon-16x16.png create mode 100644 src/www/favicon-32x32.png create mode 100644 src/www/favicon.ico create mode 100644 src/www/images/logo.png create mode 100644 src/www/index.html create mode 100644 src/www/manifest.webmanifest create mode 100644 src/www/pwa-192x192.png create mode 100644 src/www/pwa-512x512.png create mode 100644 src/www/pwa-maskable-192x192.png create mode 100644 src/www/pwa-maskable-512x512.png create mode 100644 src/www/registerSW.js create mode 100644 src/www/robots.txt create mode 100644 src/www/sw.js create mode 100644 src/www/workbox-8c29f6e4.js diff --git a/src/.env.example b/src/.env.example index b595454..24cd47e 100644 --- a/src/.env.example +++ b/src/.env.example @@ -1,14 +1,14 @@ app_name=epusdt -app_uri=https://dujiaoka.com +app_uri=https://epusdt.com log_level=info http_access_log=false sql_debug=false http_listen=:8000 static_path=/static -runtime_root_path=/runtime +runtime_root_path=./runtime -log_save_path=/logs +log_save_path=./logs log_max_size=32 log_max_age=7 max_backups=3 @@ -50,22 +50,10 @@ queue_concurrency=10 queue_poll_interval_ms=1000 callback_retry_base_seconds=5 -tg_bot_token= -tg_proxy= -tg_manage= - -api_auth_token= - order_expiration_time=10 order_notice_max_retry=0 -forced_usdt_rate= + api_rate_url= -tron_grid_api_key= -solana_rpc_url= -ethereum_ws_url=wss://ethereum.publicnode.com - - -# epay -epay_pid= -epay_key= +# Set to true to re-run the install wizard on next startup. +install=false \ No newline at end of file diff --git a/src/bootstrap/bootstrap.go b/src/bootstrap/bootstrap.go index 5452ee3..a79acfd 100644 --- a/src/bootstrap/bootstrap.go +++ b/src/bootstrap/bootstrap.go @@ -5,10 +5,13 @@ import ( "github.com/assimon/luuu/config" "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/mq" "github.com/assimon/luuu/task" "github.com/assimon/luuu/telegram" + appjwt "github.com/assimon/luuu/util/jwt" "github.com/assimon/luuu/util/log" + "github.com/gookit/color" ) var initOnce sync.Once @@ -18,6 +21,46 @@ func InitApp() { config.Init() log.Init() dao.Init() + // Wire settings-table lookups into the config package so + // GetRateApiUrl / GetUsdtRate prefer DB-backed overrides. + config.SettingsGetString = func(key string) string { + return data.GetSettingString(key, "") + } + // Seed rate.api_url from .env into the settings table on first run + // so the admin UI can display and change it without a code restart. + // Only written if the key is not already present in the DB. + if data.GetSettingString("rate.api_url", "") == "" { + if envURL := config.GetRateApiUrlFromEnv(); envURL != "" { + if err := data.SetSetting("rate", "rate.api_url", envURL, "string"); err != nil { + color.Red.Printf("[bootstrap] seed rate.api_url err=%s\n", err) + } + } + } + // config.Init() computes RateApiUrl before SettingsGetString is + // installed, so refresh the cache once DB-backed settings are available. + config.RateApiUrl = config.GetRateApiUrl() + // Seed admin account and JWT secret so the management console is + // immediately usable on a fresh install. Both are idempotent. + adminPwd, isNew, err := data.EnsureDefaultAdmin() + if err != nil { + color.Red.Printf("[bootstrap] ensure default admin err=%s\n", err) + } + if isNew { + color.Yellow.Println("╔════════════════════════════════════════════════════════════════════════╗") + color.Yellow.Println("║ Default admin account created. Change the password via admin console! ║") + color.Yellow.Printf("║ Username: admin ║\n") + color.Yellow.Printf("║ Password: %-60s ║\n", adminPwd) + color.Yellow.Println("╚════════════════════════════════════════════════════════════════════════╝") + } + if _, err := appjwt.EnsureSecret(); err != nil { + color.Red.Printf("[bootstrap] ensure jwt secret err=%s\n", err) + } + // Seed one universal default API key on fresh installs. The seeded + // key (PID=1000) works for all three gateway flows. + _, err = data.EnsureDefaultApiKey() + if err != nil { + color.Red.Printf("[bootstrap] ensure default api key err=%s\n", err) + } mq.Start() go telegram.BotStart() go task.Start() diff --git a/src/command/http_server.go b/src/command/http_server.go index 411b06e..696d94e 100644 --- a/src/command/http_server.go +++ b/src/command/http_server.go @@ -5,10 +5,12 @@ import ( "net/http" "os" "os/signal" + "path/filepath" "time" "github.com/assimon/luuu/bootstrap" "github.com/assimon/luuu/config" + "github.com/assimon/luuu/install" "github.com/assimon/luuu/middleware" "github.com/assimon/luuu/route" "github.com/assimon/luuu/util/constant" @@ -37,6 +39,14 @@ var startCmd = &cobra.Command{ Short: "start", Long: "start http service", Run: func(cmd *cobra.Command, args []string) { + // If no config file exists, or if install=true is set in the config, + // run the first-run install API on the same port as the main server. + // The wizard writes the .env (with install=false) and shuts itself + // down so bootstrap.InitApp() can read it normally on the same port. + if config.NeedsInstall() { + envPath, _ := config.ResolveConfigPath() + install.RunInstallServer(install.DefaultInstallAddr, envPath) + } bootstrap.InitApp() printBanner() HttpServerStart() @@ -53,6 +63,20 @@ func HttpServerStart() { route.RegisterRoute(e) e.Static(config.StaticPath, config.StaticFilePath) + // Resolve www/ relative to the executable so SPA routes work regardless + // of the working directory. main.go extracts www/ next to the binary. + wwwRoot := "./www" + if exePath, err := os.Executable(); err == nil { + if exePath, err = filepath.EvalSymlinks(exePath); err == nil { + wwwRoot = filepath.Join(filepath.Dir(exePath), "www") + } + } + e.Use(echoMiddleware.StaticWithConfig(echoMiddleware.StaticConfig{ + HTML5: true, + Index: "index.html", + Root: wwwRoot, + })) + httpListen := viper.GetString("http_listen") go func() { if err = e.Start(httpListen); err != http.ErrServerClosed { @@ -86,13 +110,28 @@ func customHTTPErrorHandler(err error, e echo.Context) { Message: msg, RequestID: e.Request().Header.Get(echo.HeaderXRequestID), } + // echo.HTTPError carries a real HTTP status (401 for auth failures, + // 404 for missing routes, etc.). Propagate it instead of flattening + // everything to 200 — clients rely on the status code. if he, ok := err.(*echo.HTTPError); ok { - e.String(http.StatusOK, he.Message.(string)) + resp.StatusCode = he.Code + if s, ok := he.Message.(string); ok { + resp.Message = s + } else if he.Message != nil { + resp.Message = http.StatusText(he.Code) + } + _ = e.JSON(he.Code, resp) return } + // Internal RspError: propagate Code as both the JSON status_code and + // the real HTTP status when it maps to one (400/401/...); business + // codes (>=1000) map to HTTP 400 so clients get a proper 4xx while + // still reading the granular code from the body. if he, ok := err.(*constant.RspError); ok { resp.StatusCode = he.Code resp.Message = he.Msg + _ = e.JSON(he.HttpStatus(), resp) + return } - _ = e.JSON(http.StatusOK, resp) + _ = e.JSON(http.StatusInternalServerError, resp) } diff --git a/src/config/config.go b/src/config/config.go index fa96b18..8d1d8be 100644 --- a/src/config/config.go +++ b/src/config/config.go @@ -7,6 +7,7 @@ import ( "net/url" "os" "path/filepath" + "strconv" "strings" "time" @@ -15,6 +16,12 @@ import ( "github.com/tidwall/gjson" ) +// parseFloat is the minimal helper used by the settings bridge; kept +// here so settings_bridge.go stays import-free. +func parseFloat(s string) (float64, error) { + return strconv.ParseFloat(strings.TrimSpace(s), 64) +} + var ( HTTPAccessLog bool SQLDebug bool @@ -124,6 +131,57 @@ func resolveConfigFilePath() (string, error) { return normalizeConfiguredPath(".env") } +// NeedsInstall returns true when the first-run install wizard should run. +// It returns true if the config file does not exist yet, or if the file +// exists and contains install=true (an explicit reset flag). +// Existing installs that have no install key are NOT affected. +func NeedsInstall() bool { + envPath, exists := ResolveConfigPath() + if !exists { + return true + } + // Read just the install key without triggering full Init(). + v := viper.New() + v.SetConfigFile(envPath) + if err := v.ReadInConfig(); err != nil { + // Unreadable config → treat as needing install. + return true + } + return strings.EqualFold(strings.TrimSpace(v.GetString("install")), "true") +} + +// ResolveConfigPath returns the absolute path to the .env file and whether +// it currently exists on disk. Unlike resolveConfigFilePath it does not +// return an error when the file is absent — callers (e.g. the install +// wizard) need the target path even before the file is written. +func ResolveConfigPath() (path string, exists bool) { + candidate := explicitConfigPath + if candidate == "" { + if e := strings.TrimSpace(os.Getenv("EPUSDT_CONFIG")); e != "" { + candidate = e + } else { + candidate = ".env" + } + } + // Resolve relative paths against cwd. + p := strings.TrimSpace(candidate) + if !filepath.IsAbs(p) { + cwd, err := os.Getwd() + if err == nil { + p = filepath.Join(cwd, p) + } + } + info, err := os.Stat(p) + if err == nil && info.IsDir() { + p = filepath.Join(p, ".env") + info, err = os.Stat(p) + } + if err != nil { + return p, false + } + return p, true +} + func normalizeConfiguredPath(input string) (string, error) { path := strings.TrimSpace(input) if path == "" { @@ -178,11 +236,19 @@ func GetAppUri() string { return viper.GetString("app_uri") } -func GetApiAuthToken() string { - return viper.GetString("api_auth_token") +func GetRateApiUrl() string { + // settings table wins (admin-configurable); .env and env var remain + // as fallbacks for smooth migration from the old layout. + if db := settingsRateApiUrl(); db != "" { + return db + } + return GetRateApiUrlFromEnv() } -func GetRateApiUrl() string { +// GetRateApiUrlFromEnv returns the rate API URL read only from the +// .env / environment variables, bypassing the settings table. Used +// by bootstrap to seed the settings table from the initial .env value. +func GetRateApiUrlFromEnv() string { rateURL := viper.GetString("api_rate_url") if rateURL == "" { rateURL = os.Getenv("API_RATE_URL") @@ -190,7 +256,6 @@ func GetRateApiUrl() string { if rateURL == "" { log.Println("api_rate_url is empty") } - RateApiUrl = rateURL return rateURL } @@ -250,6 +315,11 @@ func GetRateForCoin(coin string, base string) float64 { } func GetUsdtRate() float64 { + // Prefer the DB-backed override (admin-configurable). Fall back to + // the legacy .env var, then the hardcoded 6.4 default. + if forced := settingsForcedUsdtRate(); forced > 0 { + return forced + } forcedUsdtRate := viper.GetFloat64("forced_usdt_rate") if forcedUsdtRate > 0 { return forcedUsdtRate @@ -340,11 +410,3 @@ func GetSolanaRpcUrl() string { func GetEthereumWsUrl() string { return strings.TrimSpace(viper.GetString("ethereum_ws_url")) } - -func GetEpayPid() int { - return viper.GetInt("epay_pid") -} - -func GetEpayKey() string { - return viper.GetString("epay_key") -} diff --git a/src/config/settings_bridge.go b/src/config/settings_bridge.go new file mode 100644 index 0000000..84b12e2 --- /dev/null +++ b/src/config/settings_bridge.go @@ -0,0 +1,34 @@ +package config + +// Settings lookups are injected at runtime by bootstrap (after DB init) +// to keep the config package free of a `model/data` import, which would +// create a cycle via `model/dao -> config`. +// +// If unset (e.g. during early startup or tests) the getters return the +// zero string / 0 and callers fall through to the .env / default path. + +// SettingsGetString is installed by bootstrap.Init with a closure that +// reads from the settings table. Runtime-only. +var SettingsGetString func(key string) string + +func settingsRateApiUrl() string { + if SettingsGetString == nil { + return "" + } + return SettingsGetString("rate.api_url") +} + +func settingsForcedUsdtRate() float64 { + if SettingsGetString == nil { + return 0 + } + raw := SettingsGetString("rate.forced_usdt_rate") + if raw == "" { + return 0 + } + f, err := parseFloat(raw) + if err != nil { + return 0 + } + return f +} diff --git a/src/controller/admin/api_key_controller.go b/src/controller/admin/api_key_controller.go new file mode 100644 index 0000000..d96f646 --- /dev/null +++ b/src/controller/admin/api_key_controller.go @@ -0,0 +1,310 @@ +package admin + +import ( + "crypto/rand" + "encoding/hex" + "errors" + "strconv" + "strings" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/labstack/echo/v4" +) + +// CreateApiKeyRequest is the payload for creating an API key. +// A single key is valid for both gateway flows (epay/gmpay); there is +// no gateway_type. PID is auto-generated (incrementing from 1000); +// no manual override. +type CreateApiKeyRequest struct { + Name string `json:"name" validate:"required|maxLen:128" example:"My API Key"` + IpWhitelist string `json:"ip_whitelist" example:""` + NotifyUrl string `json:"notify_url" example:"https://example.com/notify"` +} + +// CreateApiKeyResponse is the response for a newly created API key. +type CreateApiKeyResponse struct { + ID uint64 `json:"id" example:"1"` + Name string `json:"name" example:"My API Key"` + Pid string `json:"pid" example:"1003"` + // SecretKey is returned ONCE on creation. After that, fetch via + // GET /api-keys/:id/secret or rotate to generate a new one. + SecretKey string `json:"secret_key" example:"secret123abc456"` +} + +// UpdateApiKeyRequest is the payload for updating an API key. +type UpdateApiKeyRequest struct { + Name *string `json:"name" example:"Updated Key Name"` + IpWhitelist *string `json:"ip_whitelist" example:"10.0.0.1,192.168.0.0/24"` + NotifyUrl *string `json:"notify_url" example:"https://example.com/notify"` +} + +// ChangeApiKeyStatusRequest is the payload for toggling API key status. +type ChangeApiKeyStatusRequest struct { + // 状态 1=启用 2=禁用 + Status int `json:"status" validate:"required|in:1,2" enums:"1,2" example:"1"` +} + +// ListApiKeys returns all api_keys rows. SecretKey is stripped by the +// mdb.ApiKey json tag (`json:"-"`). +// @Summary List API keys +// @Description Returns all API keys +// @Tags Admin API Keys +// @Security AdminJWT +// @Produce json +// @Success 200 {object} response.ApiResponse{data=[]mdb.ApiKey} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys [get] +func (c *BaseAdminController) ListApiKeys(ctx echo.Context) error { + rows, err := data.ListApiKeys() + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// CreateApiKey mints a new universal key. PID is auto-incremented from +// the highest existing numeric PID (starting at 1000). Secret is +// randomly generated and returned once. +// @Summary Create API key +// @Description Create a new universal API key. Usable for both gateway flows (epay/gmpay). PID auto-incremented; secret returned once. +// @Tags Admin API Keys +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.CreateApiKeyRequest true "API key payload" +// @Success 200 {object} response.ApiResponse{data=admin.CreateApiKeyResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys [post] +func (c *BaseAdminController) CreateApiKey(ctx echo.Context) error { + req := new(CreateApiKeyRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + + // Retry on unique-index violation: two concurrent creates could + // both see the same max PID from NextPid() and race on INSERT. + // The loser re-reads and retries with the now-higher max. + const maxAttempts = 5 + secret := randomHex(32) + var row *mdb.ApiKey + for attempt := 0; attempt < maxAttempts; attempt++ { + pid, err := data.NextPid() + if err != nil { + return c.FailJson(ctx, err) + } + row = &mdb.ApiKey{ + Name: req.Name, + Pid: strconv.Itoa(pid), + SecretKey: secret, + IpWhitelist: req.IpWhitelist, + NotifyUrl: req.NotifyUrl, + Status: mdb.ApiKeyStatusEnable, + } + err = data.CreateApiKey(row) + if err == nil { + break + } + if attempt == maxAttempts-1 || !isUniqueViolation(err) { + return c.FailJson(ctx, err) + } + } + return c.SucJson(ctx, CreateApiKeyResponse{ + ID: row.ID, + Name: row.Name, + Pid: row.Pid, + SecretKey: secret, + }) +} + +// isUniqueViolation matches the driver-specific strings for a unique- +// index collision across SQLite / MySQL / PostgreSQL. Good enough for +// the PID retry loop; a cleaner approach would be a typed error but +// GORM doesn't surface one portably. +func isUniqueViolation(err error) bool { + if err == nil { + return false + } + msg := strings.ToLower(err.Error()) + return strings.Contains(msg, "unique") || + strings.Contains(msg, "duplicate") || + strings.Contains(msg, "constraint failed") +} + +// UpdateApiKey patches name / ip_whitelist / notify_url. Secret rotation +// and enable/disable have their own endpoints. +// @Summary Update API key +// @Description Patch API key name / ip_whitelist / notify_url +// @Tags Admin API Keys +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "API key ID" +// @Param request body admin.UpdateApiKeyRequest true "Fields to update" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys/{id} [patch] +func (c *BaseAdminController) UpdateApiKey(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + req := new(UpdateApiKeyRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + fields := map[string]interface{}{} + if req.Name != nil { + fields["name"] = *req.Name + } + if req.IpWhitelist != nil { + fields["ip_whitelist"] = *req.IpWhitelist + } + if req.NotifyUrl != nil { + fields["notify_url"] = *req.NotifyUrl + } + if err := data.UpdateApiKeyFields(id, fields); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// ChangeApiKeyStatus toggles enable/disable. +// @Summary Change API key status +// @Description Toggle enable/disable for an API key (1=enabled, 2=disabled) +// @Tags Admin API Keys +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "API key ID" +// @Param request body admin.ChangeApiKeyStatusRequest true "Status payload" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys/{id}/status [post] +func (c *BaseAdminController) ChangeApiKeyStatus(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + req := new(ChangeApiKeyStatusRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + if err := data.UpdateApiKeyFields(id, map[string]interface{}{"status": req.Status}); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// RotateApiKeySecret issues a fresh secret_key. Returned only this time. +// @Summary Rotate API key secret +// @Description Generate a new secret_key. Returned only once. +// @Tags Admin API Keys +// @Security AdminJWT +// @Produce json +// @Param id path int true "API key ID" +// @Success 200 {object} response.ApiResponse{data=admin.RotateSecretResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys/{id}/rotate-secret [post] +func (c *BaseAdminController) RotateApiKeySecret(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + secret := randomHex(32) + if err := data.UpdateApiKeyFields(id, map[string]interface{}{"secret_key": secret}); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, map[string]string{"secret_key": secret}) +} + +// DeleteApiKey soft-deletes a row. Orders created with this key will +// fail to callback (resolveOrderApiKey returns a clear error) — prefer +// disabling via /status over deletion if there are live orders. +// @Summary Delete API key +// @Description Soft-delete an API key +// @Tags Admin API Keys +// @Security AdminJWT +// @Produce json +// @Param id path int true "API key ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys/{id} [delete] +func (c *BaseAdminController) DeleteApiKey(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + if err := data.DeleteApiKeyByID(id); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// GetApiKeyStats returns usage stats for one key. Currently thin — just +// the stored call_count and last_used_at — since we don't persist per- +// call telemetry. Expanded later if/when we add a request log table. +// @Summary Get API key stats +// @Description Returns usage stats (call_count, last_used_at) for an API key +// @Tags Admin API Keys +// @Security AdminJWT +// @Produce json +// @Param id path int true "API key ID" +// @Success 200 {object} response.ApiResponse{data=admin.ApiKeyStatsResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys/{id}/stats [get] +func (c *BaseAdminController) GetApiKeyStats(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + row, err := data.GetApiKeyByID(id) + if err != nil { + return c.FailJson(ctx, err) + } + if row.ID == 0 { + return c.FailJson(ctx, errors.New("api key not found")) + } + return c.SucJson(ctx, map[string]interface{}{ + "call_count": row.CallCount, + "last_used_at": row.LastUsedAt, + }) +} + +// GetApiKeySecret returns the secret_key for one API key. Requires +// admin JWT authentication. +// @Summary View API key secret +// @Description Returns the secret_key for an API key (admin only) +// @Tags Admin API Keys +// @Security AdminJWT +// @Produce json +// @Param id path int true "API key ID" +// @Success 200 {object} response.ApiResponse{data=map[string]string} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/api-keys/{id}/secret [get] +func (c *BaseAdminController) GetApiKeySecret(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + row, err := data.GetApiKeyByID(id) + if err != nil { + return c.FailJson(ctx, err) + } + if row.ID == 0 { + return c.FailJson(ctx, errors.New("api key not found")) + } + return c.SucJson(ctx, map[string]string{"secret_key": row.SecretKey}) +} + +func randomHex(n int) string { + b := make([]byte, n) + _, _ = rand.Read(b) + return hex.EncodeToString(b) +} diff --git a/src/controller/admin/auth_controller.go b/src/controller/admin/auth_controller.go new file mode 100644 index 0000000..47d3229 --- /dev/null +++ b/src/controller/admin/auth_controller.go @@ -0,0 +1,157 @@ +package admin + +import ( + "errors" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + appjwt "github.com/assimon/luuu/util/jwt" + "github.com/labstack/echo/v4" +) + +// LoginRequest is the payload for admin login. +type LoginRequest struct { + Username string `json:"username" validate:"required" example:"admin"` + Password string `json:"password" validate:"required" example:"password123"` +} + +// LoginResponse is the response for a successful login. +type LoginResponse struct { + Token string `json:"token" example:"eyJhbGciOiJIUzI1NiIs..."` + Username string `json:"username" example:"admin"` + UserID uint64 `json:"user_id" example:"1"` +} + +// ChangePasswordRequest is the payload for changing admin password. +type ChangePasswordRequest struct { + OldPassword string `json:"old_password" validate:"required" example:"old_pass"` + NewPassword string `json:"new_password" validate:"required|minLen:6" example:"new_pass123"` +} + +// MeResponse wraps AdminUser with a default-password flag. +type MeResponse struct { + mdb.AdminUser + PasswordIsDefault bool `json:"password_is_default" example:"true"` +} + +// Login verifies credentials, stamps last_login_at, returns a signed JWT. +// @Summary Admin login +// @Description Verify credentials and return a signed JWT token +// @Tags Admin Auth +// @Accept json +// @Produce json +// @Param request body admin.LoginRequest true "Login credentials" +// @Success 200 {object} response.ApiResponse{data=admin.LoginResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/auth/login [post] +func (c *BaseAdminController) Login(ctx echo.Context) error { + req := new(LoginRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + user, err := data.GetAdminUserByUsername(req.Username) + if err != nil { + return c.FailJson(ctx, err) + } + if user.ID == 0 || !data.VerifyPassword(user.PasswordHash, req.Password) { + return c.FailJson(ctx, errors.New("invalid username or password")) + } + if user.Status != mdb.AdminUserStatusEnable { + return c.FailJson(ctx, errors.New("user disabled")) + } + token, err := appjwt.Sign(user.ID, user.Username) + if err != nil { + return c.FailJson(ctx, err) + } + err = data.TouchAdminUserLastLogin(user.ID) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, LoginResponse{ + Token: token, + Username: user.Username, + UserID: user.ID, + }) +} + +// Logout is a no-op stub — tokens are stateless and the frontend +// discards them. Kept for API symmetry with the documented spec. +// @Summary Admin logout +// @Description Logout (no-op, frontend discards token) +// @Tags Admin Auth +// @Security AdminJWT +// @Produce json +// @Success 200 {object} response.ApiResponse +// @Router /admin/api/v1/auth/logout [post] +func (c *BaseAdminController) Logout(ctx echo.Context) error { + return c.SucJson(ctx, nil) +} + +// Me returns the currently authenticated admin user profile. +// @Summary Get current admin profile +// @Description Returns the currently authenticated admin user +// @Tags Admin Auth +// @Security AdminJWT +// @Produce json +// @Success 200 {object} response.ApiResponse{data=admin.MeResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/auth/me [get] +func (c *BaseAdminController) Me(ctx echo.Context) error { + uid := currentAdminUserID(ctx) + if uid == 0 { + return c.FailJson(ctx, errors.New("unauthorized")) + } + user, err := data.GetAdminUserByID(uid) + if err != nil { + return c.FailJson(ctx, err) + } + if user.ID == 0 { + return c.FailJson(ctx, errors.New("user not found")) + } + // Warn the frontend when the operator hasn't changed the default + // password so the UI can show a prominent reminder. + isDefault := data.VerifyPassword(user.PasswordHash, "admin") + return c.SucJson(ctx, MeResponse{ + AdminUser: *user, + PasswordIsDefault: isDefault, + }) +} + +// ChangePassword requires the old password, updates to the new one. +// @Summary Change admin password +// @Description Change the current admin user's password +// @Tags Admin Auth +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.ChangePasswordRequest true "Password payload" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/auth/password [post] +func (c *BaseAdminController) ChangePassword(ctx echo.Context) error { + uid := currentAdminUserID(ctx) + if uid == 0 { + return c.FailJson(ctx, errors.New("unauthorized")) + } + req := new(ChangePasswordRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + user, err := data.GetAdminUserByID(uid) + if err != nil { + return c.FailJson(ctx, err) + } + if user.ID == 0 || !data.VerifyPassword(user.PasswordHash, req.OldPassword) { + return c.FailJson(ctx, errors.New("old password incorrect")) + } + if err := data.UpdateAdminUserPassword(uid, req.NewPassword); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} diff --git a/src/controller/admin/base.go b/src/controller/admin/base.go new file mode 100644 index 0000000..a1dc487 --- /dev/null +++ b/src/controller/admin/base.go @@ -0,0 +1,26 @@ +package admin + +import ( + "github.com/assimon/luuu/controller" + "github.com/assimon/luuu/middleware" + "github.com/labstack/echo/v4" +) + +// Ctrl is the singleton admin controller. Keeps parity with comm.Ctrl. +var Ctrl = &BaseAdminController{} + +// BaseAdminController aggregates admin-domain handlers. Split across +// *_controller.go files in this package; all receive methods hang off +// this type so a single router registration is enough. +type BaseAdminController struct { + controller.BaseController +} + +// currentAdminUserID returns the admin user id injected by CheckAdminJWT. +// Returns 0 if the middleware is missing (treat as auth bug upstream). +func currentAdminUserID(ctx echo.Context) uint64 { + if v, ok := ctx.Get(middleware.AdminUserIDKey).(uint64); ok { + return v + } + return 0 +} diff --git a/src/controller/admin/chain_controller.go b/src/controller/admin/chain_controller.go new file mode 100644 index 0000000..15bdf98 --- /dev/null +++ b/src/controller/admin/chain_controller.go @@ -0,0 +1,71 @@ +package admin + +import ( + "github.com/assimon/luuu/model/data" + "github.com/labstack/echo/v4" +) + +// UpdateChainRequest is the payload for updating chain settings. +type UpdateChainRequest struct { + Enabled *bool `json:"enabled" example:"true"` + MinConfirmations *int `json:"min_confirmations" example:"20"` + ScanIntervalSec *int `json:"scan_interval_sec" example:"5"` + DisplayName *string `json:"display_name" example:"Tron"` +} + +// ListChains returns the chains table (tron/ethereum/solana seeded; new +// networks like bsc/polygon inserted manually once supported). +// @Summary List chains +// @Description Returns all supported blockchain networks +// @Tags Admin Chains +// @Security AdminJWT +// @Produce json +// @Success 200 {object} response.ApiResponse{data=[]mdb.Chain} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/chains [get] +func (c *BaseAdminController) ListChains(ctx echo.Context) error { + rows, err := data.ListChains() + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// UpdateChain toggles enabled / tweaks scan params. Scanners re-read the +// chains table on every poll tick, so changes take effect within one +// cycle without a restart. +// @Summary Update chain +// @Description Toggle enabled / tweak scan params for a chain +// @Tags Admin Chains +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param network path string true "Network name (e.g. tron, ethereum, solana)" +// @Param request body admin.UpdateChainRequest true "Chain settings" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/chains/{network} [patch] +func (c *BaseAdminController) UpdateChain(ctx echo.Context) error { + network := ctx.Param("network") + req := new(UpdateChainRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + fields := map[string]interface{}{} + if req.Enabled != nil { + fields["enabled"] = *req.Enabled + } + if req.MinConfirmations != nil { + fields["min_confirmations"] = *req.MinConfirmations + } + if req.ScanIntervalSec != nil { + fields["scan_interval_sec"] = *req.ScanIntervalSec + } + if req.DisplayName != nil { + fields["display_name"] = *req.DisplayName + } + if err := data.UpdateChainFields(network, fields); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} diff --git a/src/controller/admin/chain_token_controller.go b/src/controller/admin/chain_token_controller.go new file mode 100644 index 0000000..b341b49 --- /dev/null +++ b/src/controller/admin/chain_token_controller.go @@ -0,0 +1,181 @@ +package admin + +import ( + "strconv" + "strings" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/labstack/echo/v4" +) + +// CreateChainTokenRequest is the payload for creating a chain token. +type CreateChainTokenRequest struct { + Network string `json:"network" validate:"required" example:"tron"` + Symbol string `json:"symbol" validate:"required|maxLen:32" example:"USDT"` + ContractAddress string `json:"contract_address" example:"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"` + Decimals int `json:"decimals" example:"6"` + Enabled *bool `json:"enabled" example:"true"` + MinAmount float64 `json:"min_amount" example:"1.0"` +} + +// UpdateChainTokenRequest is the payload for updating a chain token. +type UpdateChainTokenRequest struct { + ContractAddress *string `json:"contract_address" example:"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"` + Decimals *int `json:"decimals" example:"6"` + Enabled *bool `json:"enabled" example:"true"` + MinAmount *float64 `json:"min_amount" example:"1.0"` +} + +// ChangeChainTokenStatusRequest is the payload for toggling chain token status. +type ChangeChainTokenStatusRequest struct { + Enabled bool `json:"enabled" example:"true"` +} + +// ListChainTokens returns rows, optionally filtered by network. +// @Summary List chain tokens +// @Description Returns chain tokens, optionally filtered by network +// @Tags Admin Chain Tokens +// @Security AdminJWT +// @Produce json +// @Param network query string false "Network filter" +// @Success 200 {object} response.ApiResponse{data=[]mdb.ChainToken} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/chain-tokens [get] +func (c *BaseAdminController) ListChainTokens(ctx echo.Context) error { + network := strings.ToLower(strings.TrimSpace(ctx.QueryParam("network"))) + rows, err := data.ListChainTokens(network) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// CreateChainToken inserts a new row. Default decimals=6 when 0 passed. +// @Summary Create chain token +// @Description Create a new chain token entry +// @Tags Admin Chain Tokens +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.CreateChainTokenRequest true "Chain token payload" +// @Success 200 {object} response.ApiResponse{data=mdb.ChainToken} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/chain-tokens [post] +func (c *BaseAdminController) CreateChainToken(ctx echo.Context) error { + req := new(CreateChainTokenRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + decimals := req.Decimals + if decimals == 0 { + decimals = 6 + } + enabled := true + if req.Enabled != nil { + enabled = *req.Enabled + } + row := &mdb.ChainToken{ + Network: strings.ToLower(strings.TrimSpace(req.Network)), + Symbol: strings.ToUpper(strings.TrimSpace(req.Symbol)), + ContractAddress: strings.TrimSpace(req.ContractAddress), + Decimals: decimals, + Enabled: enabled, + MinAmount: req.MinAmount, + } + if err := data.CreateChainToken(row); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, row) +} + +// UpdateChainToken patches mutable columns. +// @Summary Update chain token +// @Description Patch chain token fields +// @Tags Admin Chain Tokens +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "Chain token ID" +// @Param request body admin.UpdateChainTokenRequest true "Fields to update" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/chain-tokens/{id} [patch] +func (c *BaseAdminController) UpdateChainToken(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + req := new(UpdateChainTokenRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + fields := map[string]interface{}{} + if req.ContractAddress != nil { + fields["contract_address"] = *req.ContractAddress + } + if req.Decimals != nil { + fields["decimals"] = *req.Decimals + } + if req.Enabled != nil { + fields["enabled"] = *req.Enabled + } + if req.MinAmount != nil { + fields["min_amount"] = *req.MinAmount + } + if err := data.UpdateChainTokenFields(id, fields); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// ChangeChainTokenStatus toggles enable/disable. +// @Summary Change chain token status +// @Description Toggle enable/disable for a chain token +// @Tags Admin Chain Tokens +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "Chain token ID" +// @Param request body admin.ChangeChainTokenStatusRequest true "Status payload" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/chain-tokens/{id}/status [post] +func (c *BaseAdminController) ChangeChainTokenStatus(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + req := new(ChangeChainTokenStatusRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := data.UpdateChainTokenFields(id, map[string]interface{}{"enabled": req.Enabled}); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// DeleteChainToken soft-deletes the row. +// @Summary Delete chain token +// @Description Soft-delete a chain token +// @Tags Admin Chain Tokens +// @Security AdminJWT +// @Produce json +// @Param id path int true "Chain token ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/chain-tokens/{id} [delete] +func (c *BaseAdminController) DeleteChainToken(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + if err := data.DeleteChainTokenByID(id); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} diff --git a/src/controller/admin/dashboard_controller.go b/src/controller/admin/dashboard_controller.go new file mode 100644 index 0000000..49af03a --- /dev/null +++ b/src/controller/admin/dashboard_controller.go @@ -0,0 +1,288 @@ +package admin + +import ( + "strconv" + "strings" + "time" + + "github.com/assimon/luuu/model/data" + "github.com/labstack/echo/v4" +) + +// OverviewResponse is the dashboard top-card response. +type OverviewResponse struct { + TotalAsset float64 `json:"total_asset" example:"12345.6789"` + Volume float64 `json:"volume" example:"100.5"` + OrderCount int64 `json:"order_count" example:"42"` + SuccessRate float64 `json:"success_rate" example:"0.85"` + SevenDayVolume float64 `json:"seven_day_volume" example:"700.25"` + ActiveAddresses int64 `json:"active_addresses" example:"5"` + OnlineChains int64 `json:"online_chains" example:"3"` +} + +// OrderStatsResponse is the order statistics response. +type OrderStatsResponse struct { + OrderCount int64 `json:"order_count" example:"100"` + SuccessCount int64 `json:"success_count" example:"85"` + SuccessRate float64 `json:"success_rate" example:"0.85"` + AvgPaymentSeconds float64 `json:"avg_payment_seconds" example:"120.5"` + ExpiredUnpaidCount int64 `json:"expired_unpaid_count" example:"10"` +} + +// RpcHealthCheckResponse is the response for a health check probe. +type RpcHealthCheckResponse struct { + // 健康状态 unknown=未知 ok=正常 down=异常 + Status string `json:"status" example:"ok" enums:"unknown,ok,down"` + LastLatencyMs int `json:"last_latency_ms" example:"120"` +} + +// ApiKeyStatsResponse is the response for API key usage stats. +type ApiKeyStatsResponse struct { + CallCount int64 `json:"call_count" example:"342"` + LastUsedAt string `json:"last_used_at" example:"2026-04-14T08:30:00+00:00"` +} + +// RotateSecretResponse is returned when rotating an API key secret. +type RotateSecretResponse struct { + SecretKey string `json:"secret_key" example:"newSecret123abc456"` +} + +// BatchImportResult is one row in the batch import response. +type BatchImportResult struct { + Address string `json:"address" example:"TTestTronAddress001"` + OK bool `json:"ok" example:"true"` + Error string `json:"error,omitempty" example:""` +} + +// SettingsUpsertResult is one row in the settings upsert response. +type SettingsUpsertResult struct { + Key string `json:"key" example:"rate.api_url"` + OK bool `json:"ok" example:"true"` + Error string `json:"error,omitempty" example:""` +} + +// Overview returns the top-card numbers for the dashboard landing page. +// All values are computed with on-demand SQL — no cache — per the design. +// The selected time range (range / start_at / end_at) is applied to +// volume, order_count, success_rate and active_addresses. +// seven_day_volume always covers the rolling past 7 days. +// total_asset and online_chains are time-independent. +// @Summary Dashboard overview +// @Description Returns top-card numbers: total asset, volume, success rate, active addresses, etc. Supports ?range= for filtering. +// @Tags Admin Dashboard +// @Security AdminJWT +// @Produce json +// @Param range query string false "Time range: today, 7d, 30d, custom" default(today) +// @Param start_at query int false "Start time (Unix seconds, for custom range)" +// @Param end_at query int false "End time (Unix seconds, for custom range)" +// @Success 200 {object} response.ApiResponse{data=admin.OverviewResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/dashboard/overview [get] +func (c *BaseAdminController) Overview(ctx echo.Context) error { + start, end := parseRange(ctx) + + now := time.Now() + sevenDaysAgo := startOfDay(now).AddDate(0, 0, -6) + + totalActual, _ := data.SumPaidActualAmount() + + orderCount, successCount, volume, _ := data.PaidStatsInRange(start, end) + var successRate float64 + if orderCount > 0 { + successRate = float64(successCount) / float64(orderCount) + } + + _, _, sevenDayActual, _ := data.PaidStatsInRange(sevenDaysAgo, now) + + activeAddr, _ := data.ActiveAddressCountInRange(start, end) + onlineChains, _ := data.CountEnabledChains() + + return c.SucJson(ctx, map[string]interface{}{ + "total_asset": totalActual, + "volume": volume, + "order_count": orderCount, + "success_rate": successRate, + "seven_day_volume": sevenDayActual, + "active_addresses": activeAddr, + "online_chains": onlineChains, + }) +} + +// isHourlyRange returns true when the time window spans ≤ 1 day, +// so callers can choose hourly vs daily granularity. +func isHourlyRange(start, end time.Time) bool { + return end.Sub(start) <= 24*time.Hour +} + +// AssetTrend returns per-day actual_amount for paid orders. group_by= +// "total" yields one series; "address" yields rows keyed by +// receive_address for the stacked chart. +// Granularity: hourly when range ≤ 1 day, daily otherwise. +// Missing buckets are always zero-filled. +// @Summary Asset trend +// @Description Returns per-period actual_amount for paid orders. Hourly for ≤1-day ranges, daily otherwise. Missing buckets are zero-filled. +// @Tags Admin Dashboard +// @Security AdminJWT +// @Produce json +// @Param range query string false "Time range: today, 7d, 30d, custom" default(today) +// @Param start_at query int false "Start time (Unix seconds, for custom range)" +// @Param end_at query int false "End time (Unix seconds, for custom range)" +// @Param group_by query string false "Group by: total or address" default(total) +// @Success 200 {object} response.ApiResponse{data=[]data.DailyStat} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/dashboard/asset-trend [get] +func (c *BaseAdminController) AssetTrend(ctx echo.Context) error { + start, end := parseRange(ctx) + groupBy := strings.ToLower(strings.TrimSpace(ctx.QueryParam("group_by"))) + hourly := isHourlyRange(start, end) + if groupBy == "address" { + var rows interface{} + var err error + if hourly { + rows, err = data.HourlyAssetByAddress(start, end) + } else { + rows, err = data.DailyAssetByAddress(start, end) + } + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) + } + var rows interface{} + var err error + if hourly { + rows, err = data.HourlyOrderStats(start, end) + } else { + rows, err = data.DailyOrderStats(start, end) + } + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// RevenueTrend mirrors the daily stats view used for revenue charts. +// Same data shape as AssetTrend(group_by=total) but kept as its own +// endpoint so the frontend can evolve each chart independently. +// Granularity: hourly when range ≤ 1 day, daily otherwise. +// Missing buckets are always zero-filled. +// @Summary Revenue trend +// @Description Returns per-period revenue stats for charts. Hourly for ≤1-day ranges, daily otherwise. Missing buckets are zero-filled. +// @Tags Admin Dashboard +// @Security AdminJWT +// @Produce json +// @Param range query string false "Time range: today, 7d, 30d, custom" default(today) +// @Param start_at query int false "Start time (Unix seconds, for custom range)" +// @Param end_at query int false "End time (Unix seconds, for custom range)" +// @Success 200 {object} response.ApiResponse{data=[]data.DailyStat} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/dashboard/revenue-trend [get] +func (c *BaseAdminController) RevenueTrend(ctx echo.Context) error { + start, end := parseRange(ctx) + var rows interface{} + var err error + if isHourlyRange(start, end) { + rows, err = data.HourlyOrderStats(start, end) + } else { + rows, err = data.DailyOrderStats(start, end) + } + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// OrderStats returns aggregate order figures for the selected window: +// total count, success rate, average payment duration (seconds), and +// expired-unpaid count. +// @Summary Order statistics +// @Description Returns aggregate order figures: count, success rate, avg payment time, expired count +// @Tags Admin Dashboard +// @Security AdminJWT +// @Produce json +// @Param range query string false "Time range: today, 7d, 30d, custom" default(today) +// @Param start_at query int false "Start time (Unix seconds, for custom range)" +// @Param end_at query int false "End time (Unix seconds, for custom range)" +// @Success 200 {object} response.ApiResponse{data=admin.OrderStatsResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/dashboard/order-stats [get] +func (c *BaseAdminController) OrderStats(ctx echo.Context) error { + start, end := parseRange(ctx) + total, success, _, err := data.PaidStatsInRange(start, end) + if err != nil { + return c.FailJson(ctx, err) + } + avg, _ := data.AveragePaymentDurationSeconds(start, end) + expired, _ := data.CountExpiredInRange(start, end) + + var rate float64 + if total > 0 { + rate = float64(success) / float64(total) + } + return c.SucJson(ctx, map[string]interface{}{ + "order_count": total, + "success_count": success, + "success_rate": rate, + "avg_payment_seconds": avg, + "expired_unpaid_count": expired, + }) +} + +// RecentOrders returns the last N orders for the dashboard list card. +// @Summary Recent orders +// @Description Returns the last N orders for the dashboard +// @Tags Admin Dashboard +// @Security AdminJWT +// @Produce json +// @Param limit query int false "Number of orders to return" default(20) +// @Success 200 {object} response.ApiResponse{data=[]mdb.Orders} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/dashboard/recent-orders [get] +func (c *BaseAdminController) RecentOrders(ctx echo.Context) error { + limit := 20 + if s := ctx.QueryParam("limit"); s != "" { + if n, err := strconv.Atoi(s); err == nil { + limit = n + } + } + rows, err := data.RecentOrders(limit) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// parseRange maps the ?range=... shorthand to a concrete [start, end]. +// Accepted: today / 7d / 30d / custom (with start_at/end_at Unix secs). +// Defaults to today. +func parseRange(ctx echo.Context) (time.Time, time.Time) { + rng := strings.ToLower(strings.TrimSpace(ctx.QueryParam("range"))) + now := time.Now() + todayStart := startOfDay(now) + switch rng { + case "7d": + return todayStart.AddDate(0, 0, -6), now + case "30d": + return todayStart.AddDate(0, 0, -29), now + case "custom": + start := todayStart + end := now + if s := ctx.QueryParam("start_at"); s != "" { + if n, err := strconv.ParseInt(s, 10, 64); err == nil { + start = time.Unix(n, 0) + } + } + if s := ctx.QueryParam("end_at"); s != "" { + if n, err := strconv.ParseInt(s, 10, 64); err == nil { + end = time.Unix(n, 0) + } + } + return start, end + default: + return todayStart, now + } +} + +func startOfDay(t time.Time) time.Time { + return time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()) +} diff --git a/src/controller/admin/notification_controller.go b/src/controller/admin/notification_controller.go new file mode 100644 index 0000000..49c66ce --- /dev/null +++ b/src/controller/admin/notification_controller.go @@ -0,0 +1,314 @@ +package admin + +import ( + "encoding/json" + "errors" + "strconv" + "strings" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/notify" + "github.com/assimon/luuu/telegram" + "github.com/labstack/echo/v4" +) + +// CreateNotificationChannelRequest is the payload for creating a notification channel. +type CreateNotificationChannelRequest struct { + Type string `json:"type" validate:"required|in:telegram,webhook,email" enums:"telegram,webhook,email" example:"telegram"` + Name string `json:"name" validate:"required|maxLen:128" example:"主通知群"` + Config map[string]interface{} `json:"config" validate:"required"` + Events interface{} `json:"events"` + Enabled *bool `json:"enabled" example:"true"` +} + +// UpdateNotificationChannelRequest is the payload for updating a notification channel. +type UpdateNotificationChannelRequest struct { + Name *string `json:"name" example:"更新后的名称"` + Config map[string]interface{} `json:"config"` + Events interface{} `json:"events"` + Enabled *bool `json:"enabled" example:"true"` +} + +// ChangeChannelStatusRequest is the payload for toggling notification channel status. +type ChangeChannelStatusRequest struct { + Enabled bool `json:"enabled" example:"true"` +} + +// ListNotificationChannels lists rows, optionally filtered by type. +// @Summary List notification channels +// @Description Returns notification channels, optionally filtered by type +// @Tags Admin Notifications +// @Security AdminJWT +// @Produce json +// @Param type query string false "Channel type: telegram, webhook, email" +// @Success 200 {object} response.ApiResponse{data=[]mdb.NotificationChannel} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/notification-channels [get] +func (c *BaseAdminController) ListNotificationChannels(ctx echo.Context) error { + channelType := strings.ToLower(strings.TrimSpace(ctx.QueryParam("type"))) + rows, err := data.ListNotificationChannels(channelType) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// CreateNotificationChannel validates Config shape per type (only +// telegram is strongly validated today) and inserts a row. +// @Summary Create notification channel +// @Description Create a new notification channel +// @Tags Admin Notifications +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.CreateNotificationChannelRequest true "Channel payload" +// @Success 200 {object} response.ApiResponse{data=mdb.NotificationChannel} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/notification-channels [post] +func (c *BaseAdminController) CreateNotificationChannel(ctx echo.Context) error { + req := new(CreateNotificationChannelRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + req.Type = strings.ToLower(strings.TrimSpace(req.Type)) + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + if err := validateChannelConfig(req.Type, req.Config); err != nil { + return c.FailJson(ctx, err) + } + eventsMap, err := normalizeChannelEvents(req.Events) + if err != nil { + return c.FailJson(ctx, err) + } + configJSON, _ := json.Marshal(req.Config) + eventsJSON, _ := json.Marshal(eventsMap) + + enabled := true + if req.Enabled != nil { + enabled = *req.Enabled + } + row := &mdb.NotificationChannel{ + Type: req.Type, + Name: req.Name, + Config: string(configJSON), + Events: string(eventsJSON), + Enabled: enabled, + } + if err := data.CreateNotificationChannel(row); err != nil { + return c.FailJson(ctx, err) + } + if strings.ToLower(strings.TrimSpace(row.Type)) == mdb.NotificationTypeTelegram { + telegram.ReloadBotAsync("admin create telegram channel") + } + return c.SucJson(ctx, row) +} + +// UpdateNotificationChannel patches name/config/events/enabled. +// @Summary Update notification channel +// @Description Patch notification channel fields +// @Tags Admin Notifications +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "Channel ID" +// @Param request body admin.UpdateNotificationChannelRequest true "Fields to update" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/notification-channels/{id} [patch] +func (c *BaseAdminController) UpdateNotificationChannel(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + existing, err := data.GetNotificationChannelByID(id) + if err != nil { + return c.FailJson(ctx, err) + } + isTelegram := existing != nil && existing.ID > 0 && strings.ToLower(strings.TrimSpace(existing.Type)) == mdb.NotificationTypeTelegram + + req := new(UpdateNotificationChannelRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + fields := map[string]interface{}{} + if req.Name != nil { + fields["name"] = *req.Name + } + if req.Config != nil { + configJSON, _ := json.Marshal(req.Config) + fields["config"] = string(configJSON) + } + if req.Events != nil { + eventsMap, err := normalizeChannelEvents(req.Events) + if err != nil { + return c.FailJson(ctx, err) + } + eventsJSON, _ := json.Marshal(eventsMap) + fields["events"] = string(eventsJSON) + } + if req.Enabled != nil { + fields["enabled"] = *req.Enabled + } + if err := data.UpdateNotificationChannelFields(id, fields); err != nil { + return c.FailJson(ctx, err) + } + if isTelegram { + telegram.ReloadBotAsync("admin update telegram channel") + } + return c.SucJson(ctx, nil) +} + +// ChangeNotificationChannelStatus toggles enabled. +// @Summary Change notification channel status +// @Description Toggle enable/disable for a notification channel +// @Tags Admin Notifications +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "Channel ID" +// @Param request body admin.ChangeChannelStatusRequest true "Status payload" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/notification-channels/{id}/status [post] +func (c *BaseAdminController) ChangeNotificationChannelStatus(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + existing, err := data.GetNotificationChannelByID(id) + if err != nil { + return c.FailJson(ctx, err) + } + isTelegram := existing != nil && existing.ID > 0 && strings.ToLower(strings.TrimSpace(existing.Type)) == mdb.NotificationTypeTelegram + + req := new(ChangeChannelStatusRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := data.UpdateNotificationChannelFields(id, map[string]interface{}{"enabled": req.Enabled}); err != nil { + return c.FailJson(ctx, err) + } + if isTelegram { + telegram.ReloadBotAsync("admin change telegram channel status") + } + return c.SucJson(ctx, nil) +} + +// DeleteNotificationChannel soft-deletes the row. +// @Summary Delete notification channel +// @Description Soft-delete a notification channel +// @Tags Admin Notifications +// @Security AdminJWT +// @Produce json +// @Param id path int true "Channel ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/notification-channels/{id} [delete] +func (c *BaseAdminController) DeleteNotificationChannel(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + existing, err := data.GetNotificationChannelByID(id) + if err != nil { + return c.FailJson(ctx, err) + } + isTelegram := existing != nil && existing.ID > 0 && strings.ToLower(strings.TrimSpace(existing.Type)) == mdb.NotificationTypeTelegram + + if err := data.DeleteNotificationChannelByID(id); err != nil { + return c.FailJson(ctx, err) + } + if isTelegram { + telegram.ReloadBotAsync("admin delete telegram channel") + } + return c.SucJson(ctx, nil) +} + +// validateChannelConfig enforces minimum shape. Telegram needs bot_token +// + chat_id; webhook/email kept loose until those senders exist. +func validateChannelConfig(channelType string, cfg map[string]interface{}) error { + if cfg == nil { + return errors.New("config required") + } + if channelType == mdb.NotificationTypeTelegram { + configJSON, _ := json.Marshal(cfg) + if _, err := notify.ParseTelegramConfig(string(configJSON)); err != nil { + return err + } + } + return nil +} + +func normalizeChannelEvents(raw interface{}) (map[string]bool, error) { + if raw == nil { + return map[string]bool{}, nil + } + + toFlag := func(v interface{}) (bool, error) { + switch t := v.(type) { + case bool: + return t, nil + case float64: + return t != 0, nil + case string: + s := strings.ToLower(strings.TrimSpace(t)) + switch s { + case "", "0", "false", "off", "no": + return false, nil + case "1", "true", "on", "yes": + return true, nil + default: + return false, errors.New("invalid boolean string") + } + default: + return false, errors.New("invalid event value type") + } + } + + trimKey := func(s string) string { + return strings.TrimSpace(s) + } + + out := make(map[string]bool) + switch t := raw.(type) { + case map[string]bool: + for k, v := range t { + k = trimKey(k) + if k == "" { + continue + } + out[k] = v + } + return out, nil + case map[string]interface{}: + for k, v := range t { + k = trimKey(k) + if k == "" { + continue + } + flag, err := toFlag(v) + if err != nil { + return nil, err + } + out[k] = flag + } + return out, nil + case []interface{}: + for _, v := range t { + s, ok := v.(string) + if !ok { + return nil, errors.New("events array must contain strings") + } + s = trimKey(s) + if s == "" { + continue + } + out[s] = true + } + return out, nil + default: + return nil, errors.New("events must be object or string array") + } +} diff --git a/src/controller/admin/order_controller.go b/src/controller/admin/order_controller.go new file mode 100644 index 0000000..65e4baa --- /dev/null +++ b/src/controller/admin/order_controller.go @@ -0,0 +1,393 @@ +package admin + +import ( + "encoding/csv" + "errors" + "fmt" + "net/http" + "strconv" + "strings" + "time" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/model/request" + "github.com/assimon/luuu/model/service" + "github.com/labstack/echo/v4" +) + +// MarkPaidRequest is the payload for manually marking an order as paid. +type MarkPaidRequest struct { + BlockTransactionId string `json:"block_transaction_id" validate:"required" example:"0xabc123def456..."` +} + +// OrderListResponse wraps the paginated order list. +type OrderListResponse struct { + List []mdb.Orders `json:"list"` + Total int64 `json:"total" example:"100"` + Page int `json:"page" example:"1"` + PageSize int `json:"page_size" example:"20"` +} + +// OrderWithSub embeds a parent order together with its child orders. +type OrderWithSub struct { + mdb.Orders + SubOrders []mdb.Orders `json:"sub_orders"` +} + +// OrderWithSubListResponse wraps the paginated list-with-sub result. +type OrderWithSubListResponse struct { + List []OrderWithSub `json:"list"` + Total int64 `json:"total" example:"100"` + Page int `json:"page" example:"1"` + PageSize int `json:"page_size" example:"20"` +} + +// ListOrders handles the admin order list with filters + pagination. +// @Summary List orders +// @Description Returns paginated orders with optional filters +// @Tags Admin Orders +// @Security AdminJWT +// @Produce json +// @Param network query string false "Network filter" +// @Param token query string false "Token filter" +// @Param address query string false "Receive address filter" +// @Param keyword query string false "Keyword search (trade_id or order_id)" +// @Param status query int false "Order status filter" +// @Param start_at query int false "Start time (Unix seconds)" +// @Param end_at query int false "End time (Unix seconds)" +// @Param page query int false "Page number" default(1) +// @Param page_size query int false "Page size" default(20) +// @Success 200 {object} response.ApiResponse{data=admin.OrderListResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders [get] +func (c *BaseAdminController) ListOrders(ctx echo.Context) error { + f := parseOrderFilter(ctx) + rows, total, err := data.ListOrders(f) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, map[string]interface{}{ + "list": rows, + "total": total, + "page": f.Page, + "page_size": f.PageSize, + }) +} + +// GetOrder returns full order detail by trade_id. +// @Summary Get order +// @Description Returns full order detail by trade_id +// @Tags Admin Orders +// @Security AdminJWT +// @Produce json +// @Param trade_id path string true "Trade ID" +// @Success 200 {object} response.ApiResponse{data=mdb.Orders} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders/{trade_id} [get] +func (c *BaseAdminController) GetOrder(ctx echo.Context) error { + tradeID := ctx.Param("trade_id") + order, err := data.GetOrderInfoByTradeId(tradeID) + if err != nil { + return c.FailJson(ctx, err) + } + if order.ID == 0 { + return c.FailJson(ctx, errors.New("order not found")) + } + return c.SucJson(ctx, order) +} + +// CloseOrder flips a waiting order to expired and releases its lock. +// @Summary Close order +// @Description Manually close a waiting order (mark as expired) +// @Tags Admin Orders +// @Security AdminJWT +// @Produce json +// @Param trade_id path string true "Trade ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders/{trade_id}/close [post] +func (c *BaseAdminController) CloseOrder(ctx echo.Context) error { + tradeID := ctx.Param("trade_id") + order, err := data.GetOrderInfoByTradeId(tradeID) + if err != nil { + return c.FailJson(ctx, err) + } + if order.ID == 0 { + return c.FailJson(ctx, errors.New("order not found")) + } + if order.Status != mdb.StatusWaitPay { + return c.FailJson(ctx, errors.New("order is not waiting payment")) + } + ok, err := data.CloseOrderManually(tradeID) + if err != nil { + return c.FailJson(ctx, err) + } + if !ok { + return c.FailJson(ctx, errors.New("close failed (concurrent state change)")) + } + // Release the transaction lock so the amount slot becomes reusable. + _ = data.UnLockTransaction(order.Network, order.ReceiveAddress, order.Token, order.ActualAmount) + return c.SucJson(ctx, nil) +} + +// MarkOrderPaid manually marks an order paid (operator补单). Uses the +// same OrderProcessing path as on-chain confirmation so downstream +// callback + notification fire normally. +// @Summary Mark order paid +// @Description Manually mark a waiting order as paid (operator补单) +// @Tags Admin Orders +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param trade_id path string true "Trade ID" +// @Param request body admin.MarkPaidRequest true "Block transaction ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders/{trade_id}/mark-paid [post] +func (c *BaseAdminController) MarkOrderPaid(ctx echo.Context) error { + tradeID := ctx.Param("trade_id") + req := new(MarkPaidRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + order, err := data.GetOrderInfoByTradeId(tradeID) + if err != nil { + return c.FailJson(ctx, err) + } + if order.ID == 0 { + return c.FailJson(ctx, errors.New("order not found")) + } + if order.Status != mdb.StatusWaitPay { + return c.FailJson(ctx, errors.New("order is not waiting payment")) + } + err = service.OrderProcessing(&request.OrderProcessingRequest{ + ReceiveAddress: order.ReceiveAddress, + Currency: order.Currency, + Token: order.Token, + Network: order.Network, + Amount: order.ActualAmount, + TradeId: order.TradeId, + BlockTransactionId: req.BlockTransactionId, + }) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// ResendCallback requeues the order callback by flipping +// callback_confirm back to NO. The mq worker will grab it on the +// next poll tick. +// @Summary Resend callback +// @Description Re-queue the order callback notification +// @Tags Admin Orders +// @Security AdminJWT +// @Produce json +// @Param trade_id path string true "Trade ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders/{trade_id}/resend-callback [post] +func (c *BaseAdminController) ResendCallback(ctx echo.Context) error { + tradeID := ctx.Param("trade_id") + ok, err := data.ReopenOrderCallback(tradeID) + if err != nil { + return c.FailJson(ctx, err) + } + if !ok { + return c.FailJson(ctx, errors.New("order is not paid (callback not applicable)")) + } + return c.SucJson(ctx, nil) +} + +// ExportOrders streams matching orders as CSV. No pagination — the +// caller drives what rows to include via filter params. Capped at +// 10k rows to keep the response bounded. +// @Summary Export orders as CSV +// @Description Stream matching orders as a CSV file (max 10k rows) +// @Tags Admin Orders +// @Security AdminJWT +// @Produce text/csv +// @Param network query string false "Network filter" +// @Param token query string false "Token filter" +// @Param address query string false "Receive address filter" +// @Param keyword query string false "Keyword search" +// @Param status query int false "Order status filter" +// @Param start_at query int false "Start time (Unix seconds)" +// @Param end_at query int false "End time (Unix seconds)" +// @Success 200 {string} string "CSV file" +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders/export [get] +func (c *BaseAdminController) ExportOrders(ctx echo.Context) error { + f := parseOrderFilter(ctx) + f.Page = 1 + f.PageSize = 10000 + rows, _, err := data.ListOrders(f) + if err != nil { + return c.FailJson(ctx, err) + } + resp := ctx.Response() + resp.Header().Set(echo.HeaderContentType, "text/csv; charset=utf-8") + resp.Header().Set(echo.HeaderContentDisposition, "attachment; filename=orders.csv") + resp.WriteHeader(http.StatusOK) + + w := csv.NewWriter(resp.Writer) + _ = w.Write([]string{"trade_id", "order_id", "amount", "actual_amount", "currency", "token", "network", "receive_address", "status", "block_transaction_id", "created_at"}) + for _, r := range rows { + _ = w.Write([]string{ + r.TradeId, + r.OrderId, + fmt.Sprintf("%.4f", r.Amount), + fmt.Sprintf("%.4f", r.ActualAmount), + r.Currency, + r.Token, + r.Network, + r.ReceiveAddress, + strconv.Itoa(r.Status), + r.BlockTransactionId, + r.CreatedAt.ToDateTimeString(), + }) + } + w.Flush() + return nil +} + +// parseOrderFilter extracts filter + pagination values from the query +// string. Time params are Unix seconds. +func parseOrderFilter(ctx echo.Context) data.OrderListFilter { + f := data.OrderListFilter{ + Network: strings.ToLower(strings.TrimSpace(ctx.QueryParam("network"))), + Token: strings.ToUpper(strings.TrimSpace(ctx.QueryParam("token"))), + Address: strings.TrimSpace(ctx.QueryParam("address")), + Keyword: strings.TrimSpace(ctx.QueryParam("keyword")), + } + if s := ctx.QueryParam("status"); s != "" { + if n, err := strconv.Atoi(s); err == nil { + f.Status = n + } + } + if s := ctx.QueryParam("start_at"); s != "" { + if n, err := strconv.ParseInt(s, 10, 64); err == nil { + t := time.Unix(n, 0) + f.StartAt = &t + } + } + if s := ctx.QueryParam("end_at"); s != "" { + if n, err := strconv.ParseInt(s, 10, 64); err == nil { + t := time.Unix(n, 0) + f.EndAt = &t + } + } + if s := ctx.QueryParam("page"); s != "" { + if n, err := strconv.Atoi(s); err == nil { + f.Page = n + } + } + if s := ctx.QueryParam("page_size"); s != "" { + if n, err := strconv.Atoi(s); err == nil { + f.PageSize = n + } + } + if f.Page < 1 { + f.Page = 1 + } + if f.PageSize < 1 { + f.PageSize = 20 + } + return f +} + +// ListOrdersWithSub returns the same paginated order list as ListOrders but +// each row has a sub_orders field containing all child orders under it. +// @Summary List orders with sub-orders +// @Description Returns paginated orders; each item embeds its child orders in sub_orders +// @Tags Admin Orders +// @Security AdminJWT +// @Produce json +// @Param network query string false "Network filter" +// @Param token query string false "Token filter" +// @Param address query string false "Receive address filter" +// @Param keyword query string false "Keyword search (trade_id or order_id)" +// @Param status query int false "Order status filter" +// @Param start_at query int false "Start time (Unix seconds)" +// @Param end_at query int false "End time (Unix seconds)" +// @Param page query int false "Page number" default(1) +// @Param page_size query int false "Page size" default(20) +// @Success 200 {object} response.ApiResponse{data=admin.OrderWithSubListResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders/list-with-sub [get] +func (c *BaseAdminController) ListOrdersWithSub(ctx echo.Context) error { + f := parseOrderFilter(ctx) + // Only parent orders at the top level; sub-orders appear nested inside sub_orders. + f.ParentOnly = true + rows, total, err := data.ListOrders(f) + if err != nil { + return c.FailJson(ctx, err) + } + + // Batch-fetch all sub-orders for the current page in one query. + tradeIds := make([]string, 0, len(rows)) + for _, r := range rows { + tradeIds = append(tradeIds, r.TradeId) + } + subs, err := data.GetSubOrdersByParentTradeIds(tradeIds) + if err != nil { + return c.FailJson(ctx, err) + } + + // Group sub-orders by parent_trade_id. + subMap := make(map[string][]mdb.Orders, len(subs)) + for _, s := range subs { + subMap[s.ParentTradeId] = append(subMap[s.ParentTradeId], s) + } + + list := make([]OrderWithSub, 0, len(rows)) + for _, r := range rows { + children := subMap[r.TradeId] + if children == nil { + children = []mdb.Orders{} + } + list = append(list, OrderWithSub{Orders: r, SubOrders: children}) + } + + return c.SucJson(ctx, OrderWithSubListResponse{ + List: list, + Total: total, + Page: f.Page, + PageSize: f.PageSize, + }) +} + +// GetOrderWithSub returns a single parent order together with all its child +// orders (any status), regardless of whether the caller passes a parent or +// child trade_id — if it is a child, the parent is resolved first. +// @Summary Get order with sub-orders +// @Description Returns an order and its child orders embedded in sub_orders +// @Tags Admin Orders +// @Security AdminJWT +// @Produce json +// @Param trade_id path string true "Trade ID" +// @Success 200 {object} response.ApiResponse{data=admin.OrderWithSub} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/orders/{trade_id}/with-sub [get] +func (c *BaseAdminController) GetOrderWithSub(ctx echo.Context) error { + tradeID := ctx.Param("trade_id") + order, err := data.GetOrderInfoByTradeId(tradeID) + if err != nil { + return c.FailJson(ctx, err) + } + if order.ID == 0 { + return c.FailJson(ctx, errors.New("order not found")) + } + subOrders, err := data.GetAllSubOrders(tradeID) + if err != nil { + return c.FailJson(ctx, err) + } + if subOrders == nil { + subOrders = []mdb.Orders{} + } + return c.SucJson(ctx, OrderWithSub{Orders: *order, SubOrders: subOrders}) +} diff --git a/src/controller/admin/rpc_controller.go b/src/controller/admin/rpc_controller.go new file mode 100644 index 0000000..19e03c4 --- /dev/null +++ b/src/controller/admin/rpc_controller.go @@ -0,0 +1,190 @@ +package admin + +import ( + "errors" + "strconv" + "strings" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/task" + "github.com/labstack/echo/v4" +) + +// CreateRpcNodeRequest is the payload for creating an RPC node. +type CreateRpcNodeRequest struct { + Network string `json:"network" validate:"required" example:"tron"` + Url string `json:"url" validate:"required" example:"https://api.trongrid.io"` + // 连接类型 http=HTTP请求 ws=WebSocket长连接 + Type string `json:"type" validate:"required|in:http,ws" enums:"http,ws" example:"http"` + Weight int `json:"weight" example:"1"` + ApiKey string `json:"api_key" example:""` + Enabled *bool `json:"enabled" example:"true"` +} + +// UpdateRpcNodeRequest is the payload for updating an RPC node. +type UpdateRpcNodeRequest struct { + Url *string `json:"url" example:"https://api.trongrid.io"` + Weight *int `json:"weight" example:"1"` + ApiKey *string `json:"api_key" example:"your-api-key"` + Enabled *bool `json:"enabled" example:"true"` +} + +// ListRpcNodes returns rows optionally filtered by network. +// @Summary List RPC nodes +// @Description Returns RPC nodes, optionally filtered by network +// @Tags Admin RPC Nodes +// @Security AdminJWT +// @Produce json +// @Param network query string false "Network filter" +// @Success 200 {object} response.ApiResponse{data=[]mdb.RpcNode} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/rpc-nodes [get] +func (c *BaseAdminController) ListRpcNodes(ctx echo.Context) error { + network := strings.ToLower(strings.TrimSpace(ctx.QueryParam("network"))) + rows, err := data.ListRpcNodes(network) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// CreateRpcNode inserts a row. Status starts as "unknown" until the +// health-check task runs. +// @Summary Create RPC node +// @Description Create a new RPC node +// @Tags Admin RPC Nodes +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.CreateRpcNodeRequest true "RPC node payload" +// @Success 200 {object} response.ApiResponse{data=mdb.RpcNode} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/rpc-nodes [post] +func (c *BaseAdminController) CreateRpcNode(ctx echo.Context) error { + req := new(CreateRpcNodeRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + weight := req.Weight + if weight < 1 { + weight = 1 + } + enabled := true + if req.Enabled != nil { + enabled = *req.Enabled + } + row := &mdb.RpcNode{ + Network: strings.ToLower(strings.TrimSpace(req.Network)), + Url: strings.TrimSpace(req.Url), + Type: strings.ToLower(strings.TrimSpace(req.Type)), + Weight: weight, + ApiKey: req.ApiKey, + Enabled: enabled, + Status: mdb.RpcNodeStatusUnknown, + LastLatencyMs: -1, + } + if err := data.CreateRpcNode(row); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, row) +} + +// UpdateRpcNode patches url/weight/api_key/enabled. +// @Summary Update RPC node +// @Description Patch RPC node fields +// @Tags Admin RPC Nodes +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "RPC node ID" +// @Param request body admin.UpdateRpcNodeRequest true "Fields to update" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/rpc-nodes/{id} [patch] +func (c *BaseAdminController) UpdateRpcNode(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + req := new(UpdateRpcNodeRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + fields := map[string]interface{}{} + if req.Url != nil { + fields["url"] = *req.Url + } + if req.Weight != nil { + fields["weight"] = *req.Weight + } + if req.ApiKey != nil { + fields["api_key"] = *req.ApiKey + } + if req.Enabled != nil { + fields["enabled"] = *req.Enabled + } + if err := data.UpdateRpcNodeFields(id, fields); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// DeleteRpcNode soft-deletes the row. +// @Summary Delete RPC node +// @Description Soft-delete an RPC node +// @Tags Admin RPC Nodes +// @Security AdminJWT +// @Produce json +// @Param id path int true "RPC node ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/rpc-nodes/{id} [delete] +func (c *BaseAdminController) DeleteRpcNode(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + if err := data.DeleteRpcNodeByID(id); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// HealthCheckRpcNode performs an on-demand probe and writes the result. +// For HTTP endpoints this is a GET to the URL with a short timeout; for +// WS we just attempt a TCP-level check via the same HTTP client (the +// handshake URL resolves the host identically). +// @Summary Health check RPC node +// @Description Perform an on-demand health probe on an RPC node +// @Tags Admin RPC Nodes +// @Security AdminJWT +// @Produce json +// @Param id path int true "RPC node ID" +// @Success 200 {object} response.ApiResponse{data=admin.RpcHealthCheckResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/rpc-nodes/{id}/health-check [post] +func (c *BaseAdminController) HealthCheckRpcNode(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + row, err := data.GetRpcNodeByID(id) + if err != nil { + return c.FailJson(ctx, err) + } + if row.ID == 0 { + return c.FailJson(ctx, errors.New("node not found")) + } + status, latency := task.ProbeNode(row.Url) + if err := data.UpdateRpcNodeHealth(id, status, latency); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, map[string]interface{}{ + "status": status, + "last_latency_ms": latency, + }) +} diff --git a/src/controller/admin/settings_controller.go b/src/controller/admin/settings_controller.go new file mode 100644 index 0000000..f03b0d1 --- /dev/null +++ b/src/controller/admin/settings_controller.go @@ -0,0 +1,153 @@ +package admin + +import ( + "strings" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/telegram" + "github.com/labstack/echo/v4" +) + +// SettingUpsertItem is a single setting entry for batch upsert. +// Supported groups and keys: +// +// - group=rate: +// rate.forced_usdt_rate (float) — override USDT exchange rate (0 = use api) +// rate.api_url (string) — external rate API URL +// rate.adjust_percent (float) — rate adjustment percentage +// rate.okx_c2c_enabled (bool) — use OKX C2C rate feed +// +// - group=epay: +// epay.default_token (string) — token for EPAY orders, e.g. "usdt" (default) +// epay.default_currency (string) — fiat currency for EPAY orders, e.g. "cny" (default) +// epay.default_network (string) — blockchain network for EPAY orders, e.g. "tron" (default) +// +// - group=brand: +// brand.site_name (string) — site display name +// brand.logo_url (string) — logo image URL +// brand.page_title (string) — payment page title +// brand.pay_success_text (string) — text shown on payment success +// brand.support_url (string) — support / help URL +// +// - group=system: +// system.order_expiration_time (int) — order expiry in minutes +type SettingUpsertItem struct { + Group string `json:"group" enums:"brand,rate,system,epay" example:"epay"` + Key string `json:"key" example:"epay.default_network"` + Value string `json:"value" example:"tron"` + Type string `json:"type" enums:"string,int,bool,json" example:"string"` +} + +// SettingsUpsertRequest is the payload for batch upserting settings. +type SettingsUpsertRequest struct { + Items []SettingUpsertItem `json:"items" validate:"required"` +} + +// ListSettings returns all rows, optionally filtered by group. +// @Summary List settings +// @Description Returns all settings, optionally filtered by group. +// @Description Available groups: brand, rate, system, epay. +// @Description See SettingUpsertItem for the full list of supported keys per group. +// @Tags Admin Settings +// @Security AdminJWT +// @Produce json +// @Param group query string false "Group filter (brand|rate|system|epay)" +// @Success 200 {object} response.ApiResponse{data=[]mdb.Setting} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/settings [get] +func (c *BaseAdminController) ListSettings(ctx echo.Context) error { + group := strings.ToLower(strings.TrimSpace(ctx.QueryParam("group"))) + rows, err := data.ListSettingsByGroup(group) + if err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, rows) +} + +// UpsertSettings batch-inserts / updates rows. Each item is treated +// independently so a malformed row in the middle doesn't drop earlier +// ones. Errors are returned per-key so the UI can surface them. +// @Summary Upsert settings +// @Description Batch insert/update settings. Returns per-key status. +// @Description Supported groups: brand, rate, system, epay. +// @Description epay group keys: epay.default_token (e.g. "usdt"), epay.default_currency (e.g. "cny"), epay.default_network (e.g. "tron"). +// @Description rate group keys: rate.forced_usdt_rate, rate.api_url, rate.adjust_percent, rate.okx_c2c_enabled. +// @Description brand group keys: brand.site_name, brand.logo_url, brand.page_title, brand.pay_success_text, brand.support_url. +// @Description system group keys: system.order_expiration_time. +// @Tags Admin Settings +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.SettingsUpsertRequest true "Settings payload" +// @Success 200 {object} response.ApiResponse{data=[]admin.SettingsUpsertResult} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/settings [put] +func (c *BaseAdminController) UpsertSettings(ctx echo.Context) error { + req := new(SettingsUpsertRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + type result struct { + Key string `json:"key"` + OK bool `json:"ok"` + Error string `json:"error,omitempty"` + } + out := make([]result, 0, len(req.Items)) + for _, item := range req.Items { + key := strings.TrimSpace(item.Key) + if key == "" { + out = append(out, result{Key: item.Key, OK: false, Error: "key required"}) + continue + } + if err := data.SetSetting(item.Group, key, item.Value, item.Type); err != nil { + out = append(out, result{Key: key, OK: false, Error: err.Error()}) + continue + } + out = append(out, result{Key: key, OK: true}) + } + + // When telegram credentials are updated via settings, reload the + // command bot so operators don't need to restart the process. + telegramKeys := map[string]bool{ + "system.telegram_bot_token": true, + "system.telegram_chat_id": true, + } + for _, item := range req.Items { + if telegramKeys[strings.TrimSpace(item.Key)] { + telegram.ReloadBotAsync("settings upsert") + break + } + } + + return c.SucJson(ctx, out) +} + +// DeleteSetting removes one row. The next read of that key will fall +// back to the hardcoded default (see settings_data.GetSetting*). +// @Summary Delete setting +// @Description Remove a setting by key (falls back to default) +// @Tags Admin Settings +// @Security AdminJWT +// @Produce json +// @Param key path string true "Setting key" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/settings/{key} [delete] +func (c *BaseAdminController) DeleteSetting(ctx echo.Context) error { + key := strings.TrimSpace(ctx.Param("key")) + if key == "" { + return c.SucJson(ctx, nil) + } + if err := data.DeleteSetting(key); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// Public helper for the rate/usdt overrides — used by config package to +// read settings-backed values without importing the controller package. +var _ = mdb.SettingKeyRateForcedUsdt // ensure key constants remain referenced diff --git a/src/controller/admin/wallet_controller.go b/src/controller/admin/wallet_controller.go new file mode 100644 index 0000000..682382d --- /dev/null +++ b/src/controller/admin/wallet_controller.go @@ -0,0 +1,279 @@ +package admin + +import ( + "errors" + "strconv" + "strings" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/labstack/echo/v4" +) + +// AdminAddWalletRequest is the payload for adding a wallet via admin. +type AdminAddWalletRequest struct { + Network string `json:"network" validate:"required" example:"tron"` + Address string `json:"address" validate:"required" example:"TTestTronAddress001"` + Remark string `json:"remark" example:"主钱包"` +} + +// AdminUpdateWalletRequest is the payload for updating a wallet remark. +type AdminUpdateWalletRequest struct { + Remark *string `json:"remark" example:"已更新的备注"` +} + +// AdminChangeWalletStatusRequest is the payload for toggling wallet status. +type AdminChangeWalletStatusRequest struct { + // 状态 1=启用 2=禁用 + Status int `json:"status" validate:"required|in:1,2" enums:"1,2" example:"1"` +} + +// AdminBatchImportRequest is the payload for batch importing wallets. +type AdminBatchImportRequest struct { + Network string `json:"network" validate:"required" example:"tron"` + // Addresses listed as observation-only wallets. Private-key import + // and API-managed modes are out of scope for v1. + Addresses []string `json:"addresses" validate:"required" example:"TAddr001,TAddr002,TAddr003"` +} + +// WalletListItem extends WalletAddress with order count. +type WalletListItem struct { + mdb.WalletAddress + OrderCount int64 `json:"order_count" example:"5"` +} + +// AdminListWallets extends the read model with per-wallet order counts +// so the UI can render the "订单数" column without an N+1 follow-up. +// @Summary List wallets (admin) +// @Description Returns wallets with per-wallet order counts +// @Tags Admin Wallets +// @Security AdminJWT +// @Produce json +// @Param network query string false "Network filter" +// @Param status query int false "Status filter (1=enabled, 2=disabled)" +// @Param keyword query string false "Search by address or remark" +// @Success 200 {object} response.ApiResponse{data=[]admin.WalletListItem} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/wallets [get] +func (c *BaseAdminController) AdminListWallets(ctx echo.Context) error { + network := strings.ToLower(strings.TrimSpace(ctx.QueryParam("network"))) + status := strings.TrimSpace(ctx.QueryParam("status")) + keyword := strings.TrimSpace(ctx.QueryParam("keyword")) + + tx := dao.Mdb.Model(&mdb.WalletAddress{}) + if network != "" { + tx = tx.Where("network = ?", network) + } + if status != "" { + if s, err := strconv.Atoi(status); err == nil { + tx = tx.Where("status = ?", s) + } + } + if keyword != "" { + kw := "%" + keyword + "%" + tx = tx.Where("address LIKE ? OR remark LIKE ?", kw, kw) + } + var rows []mdb.WalletAddress + if err := tx.Order("id DESC").Find(&rows).Error; err != nil { + return c.FailJson(ctx, err) + } + + counts, err := data.CountOrdersByAddress() + if err != nil { + return c.FailJson(ctx, err) + } + out := make([]WalletListItem, 0, len(rows)) + for _, r := range rows { + out = append(out, WalletListItem{WalletAddress: r, OrderCount: counts[r.Address]}) + } + return c.SucJson(ctx, out) +} + +// AdminAddWallet wraps the existing create with admin-exposed Remark + +// Source=manual so audit fields are populated. +// @Summary Add wallet (admin) +// @Description Create a wallet with admin-specific fields (remark, source=manual) +// @Tags Admin Wallets +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.AdminAddWalletRequest true "Wallet payload" +// @Success 200 {object} response.ApiResponse{data=mdb.WalletAddress} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/wallets [post] +func (c *BaseAdminController) AdminAddWallet(ctx echo.Context) error { + req := new(AdminAddWalletRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + row, err := data.AddWalletAddressWithNetwork(req.Network, req.Address) + if err != nil { + return c.FailJson(ctx, err) + } + // Patch remark/source separately to avoid changing the existing + // package-level AddWalletAddressWithNetwork signature (used by + // Telegram bot + legacy endpoint). + fields := map[string]interface{}{"source": mdb.WalletSourceManual} + if req.Remark != "" { + fields["remark"] = req.Remark + } + _ = dao.Mdb.Model(&mdb.WalletAddress{}).Where("id = ?", row.ID).Updates(fields).Error + row.Remark = req.Remark + row.Source = mdb.WalletSourceManual + return c.SucJson(ctx, row) +} + +// AdminGetWallet returns detail including order count for one wallet. +// @Summary Get wallet (admin) +// @Description Returns wallet detail with order count +// @Tags Admin Wallets +// @Security AdminJWT +// @Produce json +// @Param id path int true "Wallet ID" +// @Success 200 {object} response.ApiResponse{data=admin.WalletListItem} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/wallets/{id} [get] +func (c *BaseAdminController) AdminGetWallet(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + wallet, err := data.GetWalletAddressById(id) + if err != nil { + return c.FailJson(ctx, err) + } + if wallet.ID == 0 { + return c.FailJson(ctx, errors.New("wallet not found")) + } + counts, _ := data.CountOrdersByAddress() + return c.SucJson(ctx, WalletListItem{WalletAddress: *wallet, OrderCount: counts[wallet.Address]}) +} + +// AdminUpdateWallet only patches remark (status has its own endpoint). +// @Summary Update wallet (admin) +// @Description Patch wallet remark +// @Tags Admin Wallets +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "Wallet ID" +// @Param request body admin.AdminUpdateWalletRequest true "Fields to update" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/wallets/{id} [patch] +func (c *BaseAdminController) AdminUpdateWallet(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + req := new(AdminUpdateWalletRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + fields := map[string]interface{}{} + if req.Remark != nil { + fields["remark"] = *req.Remark + } + if len(fields) == 0 { + return c.SucJson(ctx, nil) + } + if err := dao.Mdb.Model(&mdb.WalletAddress{}).Where("id = ?", id).Updates(fields).Error; err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// AdminChangeWalletStatus reuses existing helper. +// @Summary Change wallet status (admin) +// @Description Toggle enable/disable for a wallet (1=enabled, 2=disabled) +// @Tags Admin Wallets +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param id path int true "Wallet ID" +// @Param request body admin.AdminChangeWalletStatusRequest true "Status payload" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/wallets/{id}/status [post] +func (c *BaseAdminController) AdminChangeWalletStatus(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + req := new(AdminChangeWalletStatusRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + if err := data.ChangeWalletAddressStatus(id, req.Status); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// AdminDeleteWallet soft-deletes the wallet. +// @Summary Delete wallet (admin) +// @Description Soft-delete a wallet +// @Tags Admin Wallets +// @Security AdminJWT +// @Produce json +// @Param id path int true "Wallet ID" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/wallets/{id} [delete] +func (c *BaseAdminController) AdminDeleteWallet(ctx echo.Context) error { + id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) + if err != nil { + return c.FailJson(ctx, err) + } + if err := data.DeleteWalletAddressById(id); err != nil { + return c.FailJson(ctx, err) + } + return c.SucJson(ctx, nil) +} + +// AdminBatchImportWallets accepts a list of addresses and creates +// them all as observation wallets. Per-row failures are collected and +// returned so the UI can surface which addresses already existed. +// @Summary Batch import wallets +// @Description Import multiple wallet addresses at once. Per-row status is returned. +// @Tags Admin Wallets +// @Security AdminJWT +// @Accept json +// @Produce json +// @Param request body admin.AdminBatchImportRequest true "Batch import payload" +// @Success 200 {object} response.ApiResponse{data=[]admin.BatchImportResult} +// @Failure 400 {object} response.ApiResponse +// @Router /admin/api/v1/wallets/batch-import [post] +func (c *BaseAdminController) AdminBatchImportWallets(ctx echo.Context) error { + req := new(AdminBatchImportRequest) + if err := ctx.Bind(req); err != nil { + return c.FailJson(ctx, err) + } + if err := c.ValidateStruct(ctx, req); err != nil { + return c.FailJson(ctx, err) + } + type result struct { + Address string `json:"address"` + OK bool `json:"ok"` + Error string `json:"error,omitempty"` + } + out := make([]result, 0, len(req.Addresses)) + for _, addr := range req.Addresses { + row, err := data.AddWalletAddressWithNetwork(req.Network, addr) + if err != nil { + out = append(out, result{Address: addr, OK: false, Error: err.Error()}) + continue + } + _ = dao.Mdb.Model(&mdb.WalletAddress{}).Where("id = ?", row.ID). + Update("source", mdb.WalletSourceImport).Error + out = append(out, result{Address: addr, OK: true}) + } + return c.SucJson(ctx, out) +} diff --git a/src/controller/comm/order_controller.go b/src/controller/comm/order_controller.go index 4c58c4d..62c150f 100644 --- a/src/controller/comm/order_controller.go +++ b/src/controller/comm/order_controller.go @@ -2,16 +2,47 @@ package comm import ( "encoding/json" - "fmt" - "log" + "net/http" + "github.com/assimon/luuu/middleware" + "github.com/assimon/luuu/model/mdb" "github.com/assimon/luuu/model/request" "github.com/assimon/luuu/model/service" "github.com/assimon/luuu/util/constant" + "github.com/assimon/luuu/util/log" "github.com/labstack/echo/v4" ) +// apiKeyFromContext returns the api_keys row stamped by CheckApiSign. +// Returns nil when the middleware didn't run (should not happen on authed routes). +func apiKeyFromContext(ctx echo.Context) *mdb.ApiKey { + if v, ok := ctx.Get(middleware.ApiKeyRowKey).(*mdb.ApiKey); ok { + return v + } + return nil +} + // CreateTransaction 创建交易 +// @Summary Create transaction +// @Description Create a payment transaction order. Accepts JSON body (application/json) or form-encoded body (application/x-www-form-urlencoded). +// @Tags Payment +// @Accept json +// @Accept x-www-form-urlencoded +// @Produce json +// @Param request body request.CreateTransactionRequest false "Transaction payload (JSON)" +// @Param order_id formData string false "Merchant order ID" +// @Param currency formData string false "Fiat currency (e.g. cny)" +// @Param token formData string false "Crypto token (e.g. usdt)" +// @Param network formData string false "Network (e.g. tron)" +// @Param amount formData number false "Amount" +// @Param notify_url formData string false "Callback URL" +// @Param signature formData string false "MD5 signature" +// @Param redirect_url formData string false "Redirect URL" +// @Param name formData string false "Order name" +// @Param payment_type formData string false "Payment type" +// @Success 200 {object} response.ApiResponse{data=response.CreateTransactionResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /payments/gmpay/v1/order/create-transaction [post] func (c *BaseCommController) CreateTransaction(ctx echo.Context) (err error) { req := new(request.CreateTransactionRequest) if err = ctx.Bind(req); err != nil { @@ -20,7 +51,7 @@ func (c *BaseCommController) CreateTransaction(ctx echo.Context) (err error) { if err = c.ValidateStruct(ctx, req); err != nil { return c.FailJson(ctx, err) } - resp, err := service.CreateTransaction(req) + resp, err := service.CreateTransaction(req, apiKeyFromContext(ctx)) if err != nil { return c.FailJson(ctx, err) } @@ -28,6 +59,15 @@ func (c *BaseCommController) CreateTransaction(ctx echo.Context) (err error) { } // SwitchNetwork 切换支付网络,创建或返回子订单 +// @Summary Switch payment network +// @Description Switch to a different payment network, creating or returning a sub-order +// @Tags Payment +// @Accept json +// @Produce json +// @Param request body request.SwitchNetworkRequest true "Switch network payload" +// @Success 200 {object} response.ApiResponse +// @Failure 400 {object} response.ApiResponse +// @Router /pay/switch-network [post] func (c *BaseCommController) SwitchNetwork(ctx echo.Context) (err error) { req := new(request.SwitchNetworkRequest) if err = ctx.Bind(req); err != nil { @@ -46,33 +86,60 @@ func (c *BaseCommController) SwitchNetwork(ctx echo.Context) (err error) { return c.FailJson(ctx, err) } - fmt.Printf("switch network response: \n%s", string(jsonBytes)) + log.Sugar.Debugf("switch network response: \n%s", string(jsonBytes)) return c.SucJson(ctx, resp) } +// CreateTransactionAndRedirect creates a transaction and redirects to +// the checkout counter. The route accepts BOTH GET (query string) and +// POST (form) per the legacy EPAY protocol; swagger documents POST as +// the canonical form — the GET variant is identical save the transport. +// @Summary Create transaction and redirect (EPAY compat) +// @Description Legacy EPAY-style endpoint. Accepts GET (querystring) and POST (form). On success, 302 redirects to /pay/checkout-counter/{trade_id}. Signature uses MD5 of sorted params + secret_key of the api_keys row matching the submitted pid. +// @Tags Payment +// @Accept x-www-form-urlencoded +// @Produce html +// @Param pid query integer false "API key PID (GET query)" +// @Param money query number false "Amount (fiat, GET query)" +// @Param out_trade_no query string false "Merchant order ID (GET query)" +// @Param notify_url query string false "Callback URL (GET query)" +// @Param return_url query string false "Redirect URL after payment (GET query)" +// @Param name query string false "Order name (GET query)" +// @Param type query string false "Payment type (e.g. alipay, GET query)" +// @Param sign query string false "MD5 signature (GET query)" +// @Param sign_type query string false "Signature type (MD5, GET query)" +// @Param pid formData integer true "API key PID" +// @Param money formData number true "Amount (fiat)" +// @Param out_trade_no formData string true "Merchant order ID" +// @Param notify_url formData string true "Callback URL" +// @Param return_url formData string false "Redirect URL after payment" +// @Param name formData string false "Order name" +// @Param type formData string false "Payment type (e.g. alipay)" +// @Param sign formData string true "MD5 signature" +// @Param sign_type formData string false "Signature type (MD5)" +// @Success 302 "Redirect to checkout counter" +// @Failure 400 {object} response.ApiResponse +// @Router /payments/epay/v1/order/create-transaction/submit.php [post] +// @Router /payments/epay/v1/order/create-transaction/submit.php [get] func (c *BaseCommController) CreateTransactionAndRedirect(ctx echo.Context) (err error) { req := new(request.CreateTransactionRequest) if err = ctx.Bind(req); err != nil { - log.Println("bind request error:", err) + log.Sugar.Errorf("bind request error: %v", err) return c.FailJson(ctx, constant.ParamsMarshalErr) } if err = c.ValidateStruct(ctx, req); err != nil { - log.Println("validate request error:", err) + log.Sugar.Errorf("validate request error: %v", err) return c.FailJson(ctx, err) } - resp, err := service.CreateTransaction(req) + resp, err := service.CreateTransaction(req, apiKeyFromContext(ctx)) if err != nil { - log.Println("create transaction error:", err) + log.Sugar.Errorf("create transaction error: %v", err) return c.FailJson(ctx, err) } - fmt.Printf("create transaction response: %+v\n", resp) + log.Sugar.Debugf("create transaction response: %+v", resp) tradeID := resp.TradeId - - ctx.Redirect(302, "/pay/checkout-counter/"+tradeID) - - return nil - + return ctx.Redirect(http.StatusFound, "/pay/checkout-counter/"+tradeID) } diff --git a/src/controller/comm/pay_controller.go b/src/controller/comm/pay_controller.go index 66e6850..fe7f7fa 100644 --- a/src/controller/comm/pay_controller.go +++ b/src/controller/comm/pay_controller.go @@ -1,8 +1,6 @@ package comm import ( - "encoding/json" - "fmt" "html/template" "net/http" "path/filepath" @@ -14,35 +12,47 @@ import ( ) // CheckoutCounter 收银台 +// @Summary Checkout counter page +// @Description Render the payment checkout counter HTML page for a given trade +// @Tags Payment +// @Produce html +// @Param trade_id path string true "Trade ID" +// @Success 200 {string} string "HTML page" +// @Router /pay/checkout-counter/{trade_id} [get] func (c *BaseCommController) CheckoutCounter(ctx echo.Context) (err error) { tradeId := ctx.Param("trade_id") resp, err := service.GetCheckoutCounterByTradeId(tradeId) if err != nil { if err == service.ErrOrder { - tmpl, err := template.ParseFiles(filepath.Join(config.StaticFilePath, "index.html")) - if err != nil { - return ctx.String(http.StatusOK, err.Error()) + // Unknown trade id: render the page with empty payload + // (client side shows a friendly "order not found" screen). + tmpl, tmplErr := template.ParseFiles(filepath.Join(config.StaticFilePath, "index.html")) + if tmplErr != nil { + return ctx.String(http.StatusInternalServerError, tmplErr.Error()) } + ctx.Response().Status = http.StatusNotFound emptyResp := response.CheckoutCounterResponse{} return tmpl.Execute(ctx.Response(), emptyResp) } - return ctx.String(http.StatusOK, err.Error()) + return ctx.String(http.StatusInternalServerError, err.Error()) } tmpl, err := template.ParseFiles(filepath.Join(config.StaticFilePath, "index.html")) if err != nil { - return ctx.String(http.StatusOK, err.Error()) + return ctx.String(http.StatusInternalServerError, err.Error()) } - jsonByte, err := json.MarshalIndent(resp, "", " ") - if err != nil { - return ctx.String(http.StatusOK, err.Error()) - } - fmt.Printf("%v\n", string(jsonByte)) - return tmpl.Execute(ctx.Response(), resp) } // CheckStatus 支付状态检测 +// @Summary Check payment status +// @Description Check the payment status of an order by trade ID +// @Tags Payment +// @Produce json +// @Param trade_id path string true "Trade ID" +// @Success 200 {object} response.ApiResponse{data=response.CheckStatusResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /pay/check-status/{trade_id} [get] func (c *BaseCommController) CheckStatus(ctx echo.Context) (err error) { tradeId := ctx.Param("trade_id") order, err := service.GetOrderInfoByTradeId(tradeId) diff --git a/src/controller/comm/supported_asset_controller.go b/src/controller/comm/supported_asset_controller.go index 72325d9..2afb5a0 100644 --- a/src/controller/comm/supported_asset_controller.go +++ b/src/controller/comm/supported_asset_controller.go @@ -3,6 +3,7 @@ package comm import ( "sort" "strconv" + "strings" "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/response" @@ -10,21 +11,21 @@ import ( "github.com/labstack/echo/v4" ) -type addSupportedAssetRequest struct { - Network string `json:"network" validate:"required"` - Token string `json:"token" validate:"required"` - Status int64 `json:"status" validate:"required|in:1,2"` -} - -type updateSupportedAssetRequest struct { - Network string `json:"network" validate:"required"` - Token string `json:"token" validate:"required"` - Status int64 `json:"status" validate:"required|in:1,2"` -} - -// GetSupportedAssets 对外公开可用链与 token 列表(无需鉴权,仅返回已启用项)。 +// GetSupportedAssets 对外公开可用链与 token 列表。数据源是管理后台 +// 的 chains + chain_tokens + wallet_address 三张表的实时查询,admin +// 启用/禁用链或代币后,这个接口在下次调用时就会反映新状态(无缓存)。 +// 仅返回:链 enabled=true、代币 enabled=true、且该链上至少有一个可用 +// 钱包地址的组合。 +// @Summary List supported (network, tokens) groupings +// @Description Public endpoint, Auth required in /admin/api/v1/supported-assets +// @Tags Supported Assets +// @Produce json +// @Success 200 {object} response.ApiResponse{data=response.SupportedAssetsResponse} +// @Failure 400 {object} response.ApiResponse +// @Router /payments/gmpay/v1/supported-assets [get] +// @Router /admin/api/v1/supported-assets [get] func (c *BaseCommController) GetSupportedAssets(ctx echo.Context) error { - list, err := data.ListEnabledSupportedAssets() + chains, err := data.ListEnabledChains() if err != nil { return c.FailJson(ctx, err) } @@ -33,32 +34,42 @@ func (c *BaseCommController) GetSupportedAssets(ctx echo.Context) error { return c.FailJson(ctx, err) } - networkSet := make(map[string]struct{}) + // A chain only qualifies if it has at least one wallet available — + // without a recipient address, payments on that chain can't be + // processed even if the chain + token config says "enabled". + networkHasWallet := make(map[string]struct{}) for _, w := range wallets { - networkSet[w.Network] = struct{}{} + networkHasWallet[strings.ToLower(w.Network)] = struct{}{} } - grouped := make(map[string][]string) - for _, item := range list { - if _, ok := networkSet[item.Network]; !ok { + supports := make([]response.NetworkTokenSupport, 0, len(chains)) + for _, ch := range chains { + network := strings.ToLower(ch.Network) + if _, ok := networkHasWallet[network]; !ok { continue } - grouped[item.Network] = append(grouped[item.Network], item.Token) - } - - networks := make([]string, 0, len(grouped)) - for network := range grouped { - networks = append(networks, network) - } - sort.Strings(networks) - - supports := make([]response.NetworkTokenSupport, 0, len(networks)) - for _, network := range networks { - tokens := grouped[network] - sort.Strings(tokens) + tokens, err := data.ListEnabledChainTokensByNetwork(network) + if err != nil { + return c.FailJson(ctx, err) + } + if len(tokens) == 0 { + continue + } + symbols := make([]string, 0, len(tokens)) + for _, t := range tokens { + sym := strings.ToUpper(strings.TrimSpace(t.Symbol)) + if sym == "" { + continue + } + symbols = append(symbols, sym) + } + if len(symbols) == 0 { + continue + } + sort.Strings(symbols) supports = append(supports, response.NetworkTokenSupport{ Network: network, - Tokens: tokens, + Tokens: symbols, }) } @@ -66,9 +77,17 @@ func (c *BaseCommController) GetSupportedAssets(ctx echo.Context) error { } // ListSupportedAssetRecords 查询支持项明细(无需鉴权)。 +// @Summary List supported asset records +// @Description Public endpoint. Returns enabled chain_tokens, optionally filtered by network. +// @Tags Supported Assets +// @Produce json +// @Param network query string false "Network filter (e.g. tron, ethereum)" +// @Success 200 {object} response.ApiResponse{data=[]mdb.ChainToken} +// @Failure 400 {object} response.ApiResponse +// @Router /payments/gmpay/v1/supported-assets/records [get] func (c *BaseCommController) ListSupportedAssetRecords(ctx echo.Context) error { network := ctx.QueryParam("network") - list, err := data.ListSupportedAssets(network) + list, err := data.ListEnabledChainTokens(network) if err != nil { return c.FailJson(ctx, err) } @@ -76,72 +95,25 @@ func (c *BaseCommController) ListSupportedAssetRecords(ctx echo.Context) error { } // GetSupportedAsset 查询单条支持项(无需鉴权)。 +// @Summary Get a supported asset +// @Description Public endpoint. Returns one chain_token row by ID. Returns 404 if the token is disabled. +// @Tags Supported Assets +// @Produce json +// @Param id path int true "ChainToken ID" +// @Success 200 {object} response.ApiResponse{data=mdb.ChainToken} +// @Failure 400 {object} response.ApiResponse +// @Router /payments/gmpay/v1/supported-assets/{id} [get] func (c *BaseCommController) GetSupportedAsset(ctx echo.Context) error { id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) if err != nil { return c.FailJson(ctx, constant.ParamsMarshalErr) } - asset, err := data.GetSupportedAssetByID(id) + token, err := data.GetChainTokenByID(id) if err != nil { return c.FailJson(ctx, err) } - if asset.ID <= 0 { + if token.ID <= 0 || !token.Enabled { return c.FailJson(ctx, constant.SupportedAssetNotFound) } - return c.SucJson(ctx, asset) -} - -// AddSupportedAsset 新增支持项(鉴权)。 -func (c *BaseCommController) AddSupportedAsset(ctx echo.Context) error { - req := new(addSupportedAssetRequest) - if err := ctx.Bind(req); err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - if err := c.ValidateStruct(ctx, req); err != nil { - return c.FailJson(ctx, err) - } - asset, err := data.AddSupportedAsset(req.Network, req.Token, req.Status) - if err != nil { - return c.FailJson(ctx, err) - } - return c.SucJson(ctx, asset) -} - -// UpdateSupportedAsset 修改支持项(鉴权)。 -func (c *BaseCommController) UpdateSupportedAsset(ctx echo.Context) error { - id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) - if err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - req := new(updateSupportedAssetRequest) - if err := ctx.Bind(req); err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - if err := c.ValidateStruct(ctx, req); err != nil { - return c.FailJson(ctx, err) - } - asset, err := data.UpdateSupportedAsset(id, req.Network, req.Token, req.Status) - if err != nil { - return c.FailJson(ctx, err) - } - return c.SucJson(ctx, asset) -} - -// DeleteSupportedAsset 删除支持项(鉴权)。 -func (c *BaseCommController) DeleteSupportedAsset(ctx echo.Context) error { - id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) - if err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - asset, err := data.GetSupportedAssetByID(id) - if err != nil { - return c.FailJson(ctx, err) - } - if asset.ID <= 0 { - return c.FailJson(ctx, constant.SupportedAssetNotFound) - } - if err := data.DeleteSupportedAssetByID(id); err != nil { - return c.FailJson(ctx, err) - } - return c.SucJson(ctx, nil) + return c.SucJson(ctx, token) } diff --git a/src/controller/comm/wallet_controller.go b/src/controller/comm/wallet_controller.go deleted file mode 100644 index 71ca5a7..0000000 --- a/src/controller/comm/wallet_controller.go +++ /dev/null @@ -1,98 +0,0 @@ -package comm - -import ( - "strconv" - - "github.com/assimon/luuu/model/data" - "github.com/assimon/luuu/model/mdb" - "github.com/assimon/luuu/util/constant" - "github.com/labstack/echo/v4" -) - -type addWalletRequest struct { - Network string `json:"network" validate:"required"` - Address string `json:"address" validate:"required"` -} - -type changeStatusRequest struct { - Status int `json:"status" validate:"required|in:1,2"` -} - -// AddWallet 添加钱包地址 -func (c *BaseCommController) AddWallet(ctx echo.Context) error { - req := new(addWalletRequest) - if err := ctx.Bind(req); err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - if err := c.ValidateStruct(ctx, req); err != nil { - return c.FailJson(ctx, err) - } - wallet, err := data.AddWalletAddressWithNetwork(req.Network, req.Address) - if err != nil { - return c.FailJson(ctx, err) - } - return c.SucJson(ctx, wallet) -} - -// ListWallets 获取钱包列表 -func (c *BaseCommController) ListWallets(ctx echo.Context) error { - network := ctx.QueryParam("network") - var wallets []mdb.WalletAddress - var err error - if network != "" { - wallets, err = data.GetAllWalletAddressByNetwork(network) - } else { - wallets, err = data.GetAllWalletAddress() - } - if err != nil { - return c.FailJson(ctx, err) - } - return c.SucJson(ctx, wallets) -} - -// GetWallet 获取单个钱包 -func (c *BaseCommController) GetWallet(ctx echo.Context) error { - id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) - if err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - wallet, err := data.GetWalletAddressById(id) - if err != nil { - return c.FailJson(ctx, err) - } - if wallet.ID <= 0 { - return c.FailJson(ctx, constant.NotAvailableWalletAddress) - } - return c.SucJson(ctx, wallet) -} - -// ChangeWalletStatus 启用/禁用钱包 -func (c *BaseCommController) ChangeWalletStatus(ctx echo.Context) error { - id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) - if err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - req := new(changeStatusRequest) - if err := ctx.Bind(req); err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - if err := c.ValidateStruct(ctx, req); err != nil { - return c.FailJson(ctx, err) - } - if err := data.ChangeWalletAddressStatus(id, req.Status); err != nil { - return c.FailJson(ctx, err) - } - return c.SucJson(ctx, nil) -} - -// DeleteWallet 删除钱包 -func (c *BaseCommController) DeleteWallet(ctx echo.Context) error { - id, err := strconv.ParseUint(ctx.Param("id"), 10, 64) - if err != nil { - return c.FailJson(ctx, constant.ParamsMarshalErr) - } - if err := data.DeleteWalletAddressById(id); err != nil { - return c.FailJson(ctx, err) - } - return c.SucJson(ctx, nil) -} diff --git a/src/go.mod b/src/go.mod index 9bb4db4..93cfa87 100644 --- a/src/go.mod +++ b/src/go.mod @@ -8,6 +8,7 @@ require ( github.com/ethereum/go-ethereum v1.15.11 github.com/gagliardetto/solana-go v1.16.0 github.com/go-resty/resty/v2 v2.11.0 + github.com/golang-jwt/jwt/v4 v4.5.1 github.com/gookit/color v1.5.0 github.com/gookit/goutil v0.4.6 github.com/gookit/validate v1.3.1 @@ -23,6 +24,7 @@ require ( github.com/spf13/viper v1.20.1 github.com/tidwall/gjson v1.18.0 go.uber.org/zap v1.27.0 + golang.org/x/crypto v0.48.0 gopkg.in/telebot.v3 v3.0.0 gorm.io/driver/mysql v1.5.1 gorm.io/driver/postgres v1.5.2 @@ -99,12 +101,11 @@ require ( github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect go.mongodb.org/mongo-driver v1.17.3 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.47.0 // indirect - golang.org/x/net v0.49.0 // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sync v0.19.0 // indirect golang.org/x/sys v0.42.0 // indirect - golang.org/x/term v0.39.0 // indirect - golang.org/x/text v0.33.0 // indirect + golang.org/x/term v0.40.0 // indirect + golang.org/x/text v0.34.0 // indirect golang.org/x/time v0.14.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.70.0 // indirect diff --git a/src/go.sum b/src/go.sum index e8a5339..e30804d 100644 --- a/src/go.sum +++ b/src/go.sum @@ -375,8 +375,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= -golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY= golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -397,8 +397,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -440,8 +440,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= -golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= +golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= +golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -450,8 +450,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= diff --git a/src/install/installer.go b/src/install/installer.go new file mode 100644 index 0000000..52c828d --- /dev/null +++ b/src/install/installer.go @@ -0,0 +1,336 @@ +// Package install provides a first-run setup REST API. +// +// When the .env config file is absent (or has install=true) the HTTP start +// command calls RunInstallServer, which listens on the same address the main +// server will eventually use (default :8000) and mounts two JSON endpoints +// under /install consumed by the frontend install UI: +// +// GET /install/defaults — default field values for the form +// POST /install — validate + write .env, then shut down +// +// The HTTP listen address is submitted as two separate fields (http_bind_addr +// and http_bind_port) and combined internally as "ADDR:PORT" before writing +// the http_listen key in .env. This makes the form easier for users who only +// want to change the port without touching the bind address. +// +// Once the .env is written the install server stops and normal bootstrap +// proceeds on the same port without a restart. +package install + +import ( + "bytes" + "context" + "fmt" + "net/http" + "os" + "path/filepath" + "strings" + "text/template" + "time" + + "github.com/gookit/color" + "github.com/labstack/echo/v4" + "github.com/labstack/echo/v4/middleware" +) + +// DefaultInstallAddr is the listen address used by the install API. +// Matches the default http_listen so no extra port is needed. +const DefaultInstallAddr = ":8000" + +// InstallRequest is the payload submitted by the install form. +// All fields are optional except AppURI; omitted fields fall back to InstallDefaults(). +type InstallRequest struct { + // Application display name (default: epusdt) + AppName string `json:"app_name" form:"app_name" example:"epusdt"` + // Public base URL of the service, e.g. https://pay.example.com (required) + AppURI string `json:"app_uri" form:"app_uri" example:"https://pay.example.com"` + // Bind address for the HTTP server (default: 127.0.0.1) + HttpBindAddr string `json:"http_bind_addr" form:"http_bind_addr" example:"127.0.0.1"` + // Bind port for the HTTP server (default: 8000) + HttpBindPort int `json:"http_bind_port" form:"http_bind_port" example:"8000"` + // Runtime directory for SQLite DB and temp files (default: ./runtime) + RuntimeRootPath string `json:"runtime_root_path" form:"runtime_root_path" example:"./runtime"` + // Directory for application log files (default: ./logs) + LogSavePath string `json:"log_save_path" form:"log_save_path" example:"./logs"` + // Minutes before an unpaid order expires (default: 10) + OrderExpirationTime int `json:"order_expiration_time" form:"order_expiration_time" example:"10"` + // Maximum webhook retry attempts (default: 1) + OrderNoticeMaxRetry int `json:"order_notice_max_retry" form:"order_notice_max_retry" example:"1"` +} + +// InstallDefaults returns sensible default values for the install form. +func InstallDefaults() InstallRequest { + return InstallRequest{ + AppName: "epusdt", + AppURI: "", + HttpBindAddr: "127.0.0.1", + HttpBindPort: 8000, + RuntimeRootPath: "./runtime", + LogSavePath: "./logs", + OrderExpirationTime: 10, + OrderNoticeMaxRetry: 1, + } +} + +// installHandler holds the per-invocation state shared between handlers. +type installHandler struct { + envFilePath string + done chan struct{} +} + +// GetDefaults returns default values for the install form. +// +// @Summary Install — get default values +// @Description Returns sensible default field values for the first-run install form. +// +// Available only before the .env config file has been written. +// After installation completes this route is no longer served. +// +// @Tags Install +// @Produce json +// @Success 200 {object} InstallRequest "Default install values" +// @Router /api/install/defaults [get] +func (h *installHandler) GetDefaults(c echo.Context) error { + return c.JSON(http.StatusOK, InstallDefaults()) +} + +// Submit validates the install payload, writes the .env file, and signals +// the install server to shut down so the main bootstrap can proceed. +// http_bind_addr and http_bind_port are combined as "ADDR:PORT" to produce +// the http_listen config key (e.g. 0.0.0.0:8000). +// +// @Summary Install — submit configuration +// @Description Validates the submitted configuration and writes the .env file. +// +// http_bind_addr + http_bind_port are joined internally as "ADDR:PORT" for +// the http_listen config key (defaults: 127.0.0.1 and 8000 respectively). +// http_bind_port must be in the range 1–65535 if provided. +// app_uri is required. All other fields are optional and fall back to +// the defaults returned by GET /api/install/defaults. +// Sets install=false in the written .env, then shuts down the install +// server so that normal application bootstrap starts on the same port. +// After installation completes this route is no longer served. +// +// @Tags Install +// @Accept json +// @Produce json +// @Param body body InstallRequest true "Install configuration" +// @Success 200 {object} map[string]string "message" +// @Failure 400 {object} map[string]string "error" +// @Failure 500 {object} map[string]string "error" +// @Router /api/install [post] +func (h *installHandler) Submit(c echo.Context) error { + req := new(InstallRequest) + if err := c.Bind(req); err != nil { + return c.JSON(http.StatusBadRequest, map[string]interface{}{"error": err.Error()}) + } + + req.AppURI = strings.TrimSpace(req.AppURI) + if req.AppURI == "" { + return c.JSON(http.StatusBadRequest, map[string]interface{}{"error": "app_uri is required"}) + } + if req.HttpBindPort != 0 && (req.HttpBindPort < 1 || req.HttpBindPort > 65535) { + return c.JSON(http.StatusBadRequest, map[string]interface{}{"error": "http_bind_port must be between 1 and 65535"}) + } + d := InstallDefaults() + if strings.TrimSpace(req.AppName) == "" { + req.AppName = d.AppName + } + if strings.TrimSpace(req.HttpBindAddr) == "" { + req.HttpBindAddr = d.HttpBindAddr + } + if req.HttpBindPort <= 0 { + req.HttpBindPort = d.HttpBindPort + } + if strings.TrimSpace(req.RuntimeRootPath) == "" { + req.RuntimeRootPath = d.RuntimeRootPath + } + if strings.TrimSpace(req.LogSavePath) == "" { + req.LogSavePath = d.LogSavePath + } + if req.OrderExpirationTime <= 0 { + req.OrderExpirationTime = d.OrderExpirationTime + } + if req.OrderNoticeMaxRetry < 0 { + req.OrderNoticeMaxRetry = d.OrderNoticeMaxRetry + } + + if err := writeEnvFile(h.envFilePath, req); err != nil { + return c.JSON(http.StatusInternalServerError, map[string]interface{}{"error": err.Error()}) + } + + go func() { close(h.done) }() + return c.JSON(http.StatusOK, map[string]interface{}{"message": "install complete, starting server…"}) +} + +// RunInstallServer starts the install REST API on listenAddr (default :8000) +// under the /install path and blocks until the .env file has been written. +// The caller should then proceed with normal app initialisation (bootstrap.InitApp). +func RunInstallServer(listenAddr, envFilePath string) { + if listenAddr == "" { + listenAddr = DefaultInstallAddr + } + + h := &installHandler{ + envFilePath: envFilePath, + done: make(chan struct{}), + } + + e := echo.New() + e.HideBanner = true + e.HidePort = true + + // api routes for the install frontend + api := e.Group("/api") + + api.GET("/install/defaults", h.GetDefaults) + api.POST("/install", h.Submit) + + // Resolve www/ relative to the executable so SPA routes work regardless + // of the working directory. main.go extracts www/ next to the binary. + wwwRoot := "./www" + if exePath, err := os.Executable(); err == nil { + if exePath, err = filepath.EvalSymlinks(exePath); err == nil { + wwwRoot = filepath.Join(filepath.Dir(exePath), "www") + } + } + e.Use(middleware.StaticWithConfig(middleware.StaticConfig{ + HTML5: true, + Index: "index.html", + Root: wwwRoot, + })) + + // Build a human-readable URL for the console hint. + installHost := listenAddr + if strings.HasPrefix(installHost, ":") { + installHost = "localhost" + installHost + } + color.Green.Printf("[install] no config found — install API available at http://%s/install\n", installHost) + + go func() { + <-h.done + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + _ = e.Shutdown(ctx) + }() + + if err := e.Start(listenAddr); err != nil && err != http.ErrServerClosed { + color.Red.Printf("[install] server error: %s\n", err) + os.Exit(1) + } + + color.Green.Printf("[install] configuration saved to %s, starting…\n", envFilePath) +} + +// formControlledKeys are keys whose values always come from the install form +// (or are set unconditionally by the template). Existing config values for +// these keys must NOT be preserved — the form submission takes precedence. +var formControlledKeys = map[string]bool{ + "app_name": true, + "app_uri": true, + "http_listen": true, + "runtime_root_path": true, + "log_save_path": true, + "order_expiration_time": true, + "order_notice_max_retry": true, + "install": true, +} + +// writeEnvFile renders and writes a minimal .env file. +// If the file already exists, values for keys that are NOT controlled by the +// install form are preserved from the existing file so that operator-specific +// settings (tg_bot_token, db_type, etc.) survive a re-install. +// Keys that the form controls (app_uri, http_listen, …) always use the +// submitted values. +func writeEnvFile(path string, r *InstallRequest) error { + // Collect existing non-empty key→value pairs for non-form keys. + existingValues := map[string]string{} + if data, err := os.ReadFile(path); err == nil { + for _, line := range strings.Split(string(data), "\n") { + line = strings.TrimSpace(line) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + if idx := strings.IndexByte(line, '='); idx >= 0 { + k := strings.TrimSpace(line[:idx]) + v := strings.TrimSpace(line[idx+1:]) + if v != "" && !formControlledKeys[k] { + existingValues[k] = v + } + } + } + } + + if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { + return fmt.Errorf("create config directory: %w", err) + } + + // Render the template into a buffer first. + var buf bytes.Buffer + if err := envTemplate.Execute(&buf, r); err != nil { + return fmt.Errorf("render env template: %w", err) + } + + // For non-form keys that already had a value, substitute the existing value + // so the template default does not clobber operator configuration. + lines := strings.Split(buf.String(), "\n") + for i, line := range lines { + trimmed := strings.TrimSpace(line) + if trimmed == "" || strings.HasPrefix(trimmed, "#") { + continue + } + if idx := strings.IndexByte(trimmed, '='); idx >= 0 { + k := strings.TrimSpace(trimmed[:idx]) + if existing, ok := existingValues[k]; ok { + lines[i] = k + "=" + existing + } + } + } + + f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0o600) + if err != nil { + return fmt.Errorf("open config file: %w", err) + } + defer f.Close() + _, err = fmt.Fprint(f, strings.Join(lines, "\n")) + return err +} + +var envTemplate = template.Must(template.New("env").Parse(`app_name={{.AppName}} +app_uri={{.AppURI}} +log_level=info +http_access_log=false +sql_debug=false +http_listen={{.HttpBindAddr}}:{{.HttpBindPort}} + +static_path=/static +runtime_root_path={{.RuntimeRootPath}} + +log_save_path={{.LogSavePath}} +log_max_size=32 +log_max_age=7 +max_backups=3 + +# supported values: postgres,mysql,sqlite +db_type=sqlite + +# sqlite primary database config +sqlite_database_filename= +sqlite_table_prefix= + +# sqlite runtime store config +runtime_sqlite_filename=epusdt-runtime.db + +# background scheduler config +queue_concurrency=10 +queue_poll_interval_ms=1000 +callback_retry_base_seconds=5 + +order_expiration_time={{.OrderExpirationTime}} +order_notice_max_retry={{.OrderNoticeMaxRetry}} + +api_rate_url= + +# Set to true to re-run the install wizard on next startup. +install=false +`)) diff --git a/src/install/installer_test.go b/src/install/installer_test.go new file mode 100644 index 0000000..81ec224 --- /dev/null +++ b/src/install/installer_test.go @@ -0,0 +1,175 @@ +package install + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" + "time" + + "github.com/labstack/echo/v4" +) + +func TestInstallDefaults(t *testing.T) { + d := InstallDefaults() + if d.AppName != "epusdt" { + t.Errorf("AppName = %q, want epusdt", d.AppName) + } + if d.HttpBindAddr != "127.0.0.1" { + t.Errorf("HttpBindAddr = %q, want 127.0.0.1", d.HttpBindAddr) + } + if d.HttpBindPort != 8000 { + t.Errorf("HttpBindPort = %d, want 8000", d.HttpBindPort) + } + if d.OrderExpirationTime != 10 { + t.Errorf("OrderExpirationTime = %d, want 10", d.OrderExpirationTime) + } +} + +func TestWriteEnvFile(t *testing.T) { + dir := t.TempDir() + path := filepath.Join(dir, ".env") + + req := &InstallRequest{ + AppName: "myapp", + AppURI: "http://1.2.3.4:8000", + HttpBindAddr: "0.0.0.0", + HttpBindPort: 9000, + RuntimeRootPath: "./runtime", + LogSavePath: "./logs", + OrderExpirationTime: 15, + OrderNoticeMaxRetry: 3, + } + if err := writeEnvFile(path, req); err != nil { + t.Fatalf("writeEnvFile: %v", err) + } + + data, err := os.ReadFile(path) + if err != nil { + t.Fatalf("read env: %v", err) + } + content := string(data) + + for _, want := range []string{ + "app_name=myapp", + "app_uri=http://1.2.3.4:8000", + "http_listen=0.0.0.0:9000", + "order_expiration_time=15", + "order_notice_max_retry=3", + "db_type=sqlite", + "install=false", + } { + if !strings.Contains(content, want) { + t.Errorf("env file missing %q\ncontent:\n%s", want, content) + } + } +} + +func TestInstallAPIDefaults(t *testing.T) { + h := &installHandler{done: make(chan struct{})} + e := echo.New() + e.GET("/install/defaults", h.GetDefaults) + + req := httptest.NewRequest(http.MethodGet, "/install/defaults", nil) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + + if rec.Code != http.StatusOK { + t.Fatalf("status = %d, want 200", rec.Code) + } + var body map[string]interface{} + if err := json.Unmarshal(rec.Body.Bytes(), &body); err != nil { + t.Fatalf("decode body: %v", err) + } + if body["app_name"] != "epusdt" { + t.Errorf("app_name = %v, want epusdt", body["app_name"]) + } + if body["http_bind_addr"] != "127.0.0.1" { + t.Errorf("http_bind_addr = %v, want 127.0.0.1", body["http_bind_addr"]) + } + if body["http_bind_port"] != float64(8000) { + t.Errorf("http_bind_port = %v, want 8000", body["http_bind_port"]) + } +} + +func TestInstallAPISubmit(t *testing.T) { + dir := t.TempDir() + envPath := filepath.Join(dir, ".env") + + h := &installHandler{envFilePath: envPath, done: make(chan struct{})} + e := echo.New() + e.POST("/install", h.Submit) + + payload := `{"app_name":"testapp","app_uri":"http://10.0.0.1:8000","http_bind_addr":"0.0.0.0","http_bind_port":8000,"order_expiration_time":10,"order_notice_max_retry":1}` + req := httptest.NewRequest(http.MethodPost, "/install", strings.NewReader(payload)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + + if rec.Code != http.StatusOK { + t.Fatalf("status = %d, want 200; body: %s", rec.Code, rec.Body.String()) + } + // done channel should be closed after successful submit + select { + case <-h.done: + case <-time.After(500 * time.Millisecond): + t.Fatal("handler did not close done channel within timeout") + } + data, err := os.ReadFile(envPath) + if err != nil { + t.Fatalf("env file not written: %v", err) + } + content := string(data) + if !strings.Contains(content, "app_uri=http://10.0.0.1:8000") { + t.Errorf("env file missing app_uri; content:\n%s", content) + } + if !strings.Contains(content, "http_listen=0.0.0.0:8000") { + t.Errorf("env file missing http_listen; content:\n%s", content) + } +} + +func TestInstallAPISubmitMissingURI(t *testing.T) { + dir := t.TempDir() + envPath := filepath.Join(dir, ".env") + + h := &installHandler{envFilePath: envPath, done: make(chan struct{})} + e := echo.New() + e.POST("/install", h.Submit) + + req := httptest.NewRequest(http.MethodPost, "/install", strings.NewReader(`{"app_name":"x"}`)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + + if rec.Code != http.StatusBadRequest { + t.Fatalf("status = %d, want 400", rec.Code) + } + if _, err := os.Stat(envPath); err == nil { + t.Error("env file should not have been written for invalid request") + } +} + +func TestInstallAPISubmitInvalidPort(t *testing.T) { + dir := t.TempDir() + envPath := filepath.Join(dir, ".env") + + h := &installHandler{envFilePath: envPath, done: make(chan struct{})} + e := echo.New() + e.POST("/install", h.Submit) + + payload := `{"app_uri":"http://example.com","http_bind_port":99999}` + req := httptest.NewRequest(http.MethodPost, "/install", strings.NewReader(payload)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + + if rec.Code != http.StatusBadRequest { + t.Fatalf("status = %d, want 400; body: %s", rec.Code, rec.Body.String()) + } + if _, err := os.Stat(envPath); err == nil { + t.Error("env file should not have been written for invalid port") + } +} diff --git a/src/internal/testutil/testdb.go b/src/internal/testutil/testdb.go index 7c68ea2..6e5e07e 100644 --- a/src/internal/testutil/testdb.go +++ b/src/internal/testutil/testdb.go @@ -27,7 +27,6 @@ func SetupTestDatabases(t testing.TB) func() { viper.Set("callback_retry_base_seconds", 1) viper.Set("queue_concurrency", 4) viper.Set("queue_poll_interval_ms", 50) - viper.Set("api_auth_token", "test-token") config.HTTPAccessLog = false config.SQLDebug = false @@ -38,12 +37,44 @@ func SetupTestDatabases(t testing.TB) func() { mainDB := mustOpenSQLite(t, filepath.Join(t.TempDir(), "main.db")) runtimeDB := mustOpenSQLite(t, filepath.Join(t.TempDir(), "runtime.db")) - mustMigrate(t, mainDB, &mdb.Orders{}, &mdb.WalletAddress{}) + mustMigrate(t, mainDB, + &mdb.Orders{}, + &mdb.WalletAddress{}, + &mdb.ApiKey{}, + &mdb.Setting{}, + &mdb.NotificationChannel{}, + &mdb.Chain{}, + &mdb.ChainToken{}, + &mdb.RpcNode{}, + &mdb.AdminUser{}, + ) mustMigrate(t, runtimeDB, &mdb.TransactionLock{}) dao.Mdb = mainDB dao.RuntimeDB = runtimeDB + // Seed all standard chains as enabled so IsChainEnabled checks pass. + for _, network := range []string{ + mdb.NetworkTron, mdb.NetworkSolana, mdb.NetworkEthereum, + mdb.NetworkBsc, mdb.NetworkPolygon, mdb.NetworkPlasma, + } { + mainDB.Create(&mdb.Chain{Network: network, Enabled: true}) + } + + // Seed two universal api_keys rows. Both usable for EPAY/GMPAY + // flows; the numeric PID 1001 row lets legacy tests that submit + // `pid=1001` still match. + mainDB.Create(&mdb.ApiKey{ + Name: "test-default", + Pid: "test-token", SecretKey: "test-token", + Status: mdb.ApiKeyStatusEnable, + }) + mainDB.Create(&mdb.ApiKey{ + Name: "test-pid-1001", + Pid: "1001", SecretKey: "test-token", + Status: mdb.ApiKeyStatusEnable, + }) + return func() { closeDB(t, runtimeDB) closeDB(t, mainDB) diff --git a/src/main.go b/src/main.go index 522e672..71b95b1 100644 --- a/src/main.go +++ b/src/main.go @@ -1,11 +1,110 @@ package main import ( + "embed" + "fmt" + "io" + "io/fs" + "os" + "path/filepath" + "github.com/assimon/luuu/command" "github.com/gookit/color" ) +//go:embed all:static +var staticDir embed.FS + +//go:embed all:www +var wwwDir embed.FS + +func executableDir() (string, error) { + exePath, err := os.Executable() + if err != nil { + return "", err + } + exePath, err = filepath.EvalSymlinks(exePath) + if err != nil { + return "", err + } + return filepath.Dir(exePath), nil +} + +func extractEmbeddedDir(src embed.FS, embeddedRoot, dstRoot string) error { + sub, err := fs.Sub(src, embeddedRoot) + if err != nil { + return err + } + + return fs.WalkDir(sub, ".", func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + + dstPath := filepath.Join(dstRoot, path) + + if d.IsDir() { + return os.MkdirAll(dstPath, 0o755) + } + + if err := os.MkdirAll(filepath.Dir(dstPath), 0o755); err != nil { + return err + } + + in, err := sub.Open(path) + if err != nil { + return err + } + defer in.Close() + + out, err := os.OpenFile(dstPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0o644) + if err != nil { + return err + } + defer out.Close() + + _, err = io.Copy(out, in) + return err + }) +} + +func releaseStatic(fs embed.FS, target string) (string, error) { + baseDir, err := executableDir() + if err != nil { + return "", err + } + + targetDir := filepath.Join(baseDir, target) + + if err := os.RemoveAll(targetDir); err != nil { + return "", err + } + + if err := os.MkdirAll(targetDir, 0o755); err != nil { + return "", err + } + + if err := extractEmbeddedDir(fs, target, targetDir); err != nil { + return "", err + } + + return targetDir, nil +} + func main() { + staticPath, err := releaseStatic(staticDir, "static") + if err != nil { + panic(err) + } + fmt.Println("static released to:", staticPath) + + wwwwPath, err := releaseStatic(wwwDir, "www") + if err != nil { + panic(err) + } + + fmt.Println("www released to:", wwwwPath) + defer func() { if err := recover(); err != nil { color.Error.Println("[Start Server Err!!!] ", err) diff --git a/src/middleware/check_jwt.go b/src/middleware/check_jwt.go new file mode 100644 index 0000000..7e11931 --- /dev/null +++ b/src/middleware/check_jwt.go @@ -0,0 +1,50 @@ +package middleware + +import ( + "net/http" + "strings" + + appjwt "github.com/assimon/luuu/util/jwt" + "github.com/labstack/echo/v4" +) + +const ( + // AdminUserIDKey is the echo.Context key holding the authenticated + // admin user's ID after successful JWT validation. + AdminUserIDKey = "admin_user_id" + // AdminUsernameKey mirrors the username for convenience. + AdminUsernameKey = "admin_username" +) + +// CheckAdminJWT validates an Authorization: Bearer header against +// the HS256 secret stored in system.jwt_secret. On success it injects +// the admin user ID and username into the echo context. +// +// Accepts both "Authorization: Bearer " and a bare "" for +// developer convenience (curl / postman). The token itself is always +// cryptographically validated — the relaxed header parsing doesn't +// widen the trust surface. +func CheckAdminJWT() echo.MiddlewareFunc { + return func(next echo.HandlerFunc) echo.HandlerFunc { + return func(ctx echo.Context) error { + raw := strings.TrimSpace(ctx.Request().Header.Get("Authorization")) + if raw == "" { + return echo.NewHTTPError(http.StatusUnauthorized, "missing authorization header") + } + if !strings.HasPrefix(raw, "Bearer ") { + return echo.NewHTTPError(http.StatusUnauthorized, "authorization header must use Bearer scheme") + } + token := strings.TrimSpace(raw[len("Bearer "):]) + if token == "" { + return echo.NewHTTPError(http.StatusUnauthorized, "empty token") + } + claims, err := appjwt.Parse(token) + if err != nil { + return echo.NewHTTPError(http.StatusUnauthorized, "invalid token") + } + ctx.Set(AdminUserIDKey, claims.AdminUserID) + ctx.Set(AdminUsernameKey, claims.Username) + return next(ctx) + } + } +} diff --git a/src/middleware/check_sign.go b/src/middleware/check_sign.go index af562f9..d615a48 100644 --- a/src/middleware/check_sign.go +++ b/src/middleware/check_sign.go @@ -2,37 +2,142 @@ package middleware import ( "bytes" - "io/ioutil" + "crypto/subtle" + "io" + "net" + "net/url" + "strconv" + "strings" - "github.com/assimon/luuu/config" + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/util/constant" "github.com/assimon/luuu/util/json" "github.com/assimon/luuu/util/sign" "github.com/labstack/echo/v4" ) +// Context keys populated by CheckApiSign after successful verification. +// Handlers (pay/order creation) pull ApiKeyIDKey to stamp order.api_key_id. +const ( + ApiKeyIDKey = "api_key_id" + ApiKeyRowKey = "api_key_row" +) + +// CheckApiSign validates the body signature against the secret_key of +// the api_keys row matching the submitted "pid" field. A single row is +// valid for all gateway flows — identification is always by pid. +// +// Flow: +// 1. Extract the pid from the request body. +// 2. Look up the enabled row by pid; if missing, return signature error. +// 3. Verify signature == MD5(sorted_params + secret_key). +// 4. Enforce IP whitelist (empty = allow any). +// 5. Bump call_count / last_used_at (best-effort). +// 6. Stash api_key_id + row in context and rewind the body. func CheckApiSign() echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(ctx echo.Context) error { - params, err := ioutil.ReadAll(ctx.Request().Body) + params, err := io.ReadAll(ctx.Request().Body) if err != nil { return constant.SignatureErr } + // Rewind the body for downstream bindings regardless of outcome. + ctx.Request().Body = io.NopCloser(bytes.NewBuffer(params)) + m := make(map[string]interface{}) - err = json.Cjson.Unmarshal(params, &m) + contentType := ctx.Request().Header.Get("Content-Type") + if strings.Contains(contentType, "application/x-www-form-urlencoded") { + values, parseErr := url.ParseQuery(string(params)) + if parseErr != nil { + return constant.SignatureErr + } + for k, vs := range values { + if len(vs) > 0 { + m[k] = vs[0] + } + } + } else { + if err = json.Cjson.Unmarshal(params, &m); err != nil { + return constant.SignatureErr + } + } signature, ok := m["signature"] if !ok { return constant.SignatureErr } - checkSignature, err := sign.Get(m, config.GetApiAuthToken()) + identifier := extractPid(m) + if identifier == "" { + return constant.SignatureErr + } + + row, err := data.GetEnabledApiKey(identifier) + if err != nil || row.ID == 0 { + return constant.SignatureErr + } + + checkSignature, err := sign.Get(m, row.SecretKey) if err != nil { return constant.SignatureErr } - if checkSignature != signature { + signatureStr, _ := signature.(string) + if subtle.ConstantTimeCompare([]byte(checkSignature), []byte(signatureStr)) != 1 { return constant.SignatureErr } - ctx.Request().Body = ioutil.NopCloser(bytes.NewBuffer(params)) + + if !IsIPWhitelisted(row.IpWhitelist, ctx.RealIP()) { + return constant.SignatureErr + } + + _ = data.TouchApiKeyUsage(row.ID) + + ctx.Set(ApiKeyIDKey, row.ID) + ctx.Set(ApiKeyRowKey, row) return next(ctx) } } } + +// extractPid reads the "pid" field from the request body. JSON numbers +// unmarshal to float64 (EPAY merchants typically send numeric pid); we +// format with -1 precision to drop trailing zeros so "1000" matches +// regardless of whether the client sent a string or a number. +func extractPid(m map[string]interface{}) string { + v, ok := m["pid"] + if !ok || v == nil { + return "" + } + switch t := v.(type) { + case string: + return strings.TrimSpace(t) + case float64: + return strconv.FormatFloat(t, 'f', -1, 64) + } + return "" +} + +// IsIPWhitelisted checks the CSV IP list. Empty list = open. +// Entries may be single IPs or CIDR blocks. +func IsIPWhitelisted(csv, remote string) bool { + csv = strings.TrimSpace(csv) + if csv == "" { + return true + } + remoteIP := net.ParseIP(remote) + for _, raw := range strings.Split(csv, ",") { + entry := strings.TrimSpace(raw) + if entry == "" { + continue + } + if strings.Contains(entry, "/") { + _, cidr, err := net.ParseCIDR(entry) + if err == nil && remoteIP != nil && cidr.Contains(remoteIP) { + return true + } + continue + } + if entry == remote { + return true + } + } + return false +} diff --git a/src/middleware/check_token.go b/src/middleware/check_token.go deleted file mode 100644 index a679736..0000000 --- a/src/middleware/check_token.go +++ /dev/null @@ -1,24 +0,0 @@ -package middleware - -import ( - "github.com/assimon/luuu/config" - "github.com/assimon/luuu/util/constant" - "github.com/labstack/echo/v4" -) - -// CheckApiToken validates the Authorization header against the configured api_auth_token. -// Use this for management APIs (GET/POST) where body-based signature is not practical. -func CheckApiToken() echo.MiddlewareFunc { - return func(next echo.HandlerFunc) echo.HandlerFunc { - return func(ctx echo.Context) error { - token := ctx.Request().Header.Get("Authorization") - if token == "" { - token = ctx.QueryParam("api_token") - } - if token == "" || token != config.GetApiAuthToken() { - return constant.SignatureErr - } - return next(ctx) - } - } -} diff --git a/src/model/dao/mdb_table_init.go b/src/model/dao/mdb_table_init.go index c63bdec..644ebf6 100644 --- a/src/model/dao/mdb_table_init.go +++ b/src/model/dao/mdb_table_init.go @@ -1,60 +1,221 @@ package dao import ( + "encoding/json" + "strconv" + "strings" "sync" "github.com/assimon/luuu/model/mdb" "github.com/gookit/color" + "gorm.io/gorm/clause" ) var once sync.Once -// 自动建表 +// MdbTableInit performs AutoMigrate for all primary DB tables and seeds +// the minimum static rows: chains, chain tokens, default settings, and +// a Telegram notification channel migrated from legacy settings keys. +// Called by dao.Init (via bootstrap.InitApp) after the DB connection is +// established. The install wizard (see install/installer.go) writes the +// .env file before bootstrap runs, so this function always finds the DB +// available. func MdbTableInit() { once.Do(func() { - if err := Mdb.AutoMigrate(&mdb.Orders{}); err != nil { - color.Red.Printf("[store_db] AutoMigrate DB(Orders),err=%s\n", err) - // panic(err) - return + migrations := []struct { + name string + model interface{} + }{ + {"Orders", &mdb.Orders{}}, + {"WalletAddress", &mdb.WalletAddress{}}, + {"AdminUser", &mdb.AdminUser{}}, + {"ApiKey", &mdb.ApiKey{}}, + {"Setting", &mdb.Setting{}}, + {"NotificationChannel", &mdb.NotificationChannel{}}, + {"Chain", &mdb.Chain{}}, + {"ChainToken", &mdb.ChainToken{}}, + {"RpcNode", &mdb.RpcNode{}}, } - if err := Mdb.AutoMigrate(&mdb.WalletAddress{}); err != nil { - color.Red.Printf("[store_db] AutoMigrate DB(Orders),err=%s\n", err) - // panic(err) - return - } - if err := Mdb.AutoMigrate(&mdb.SupportedAsset{}); err != nil { - color.Red.Printf("[store_db] AutoMigrate DB(SupportedAsset),err=%s\n", err) - return + for _, m := range migrations { + if err := Mdb.AutoMigrate(m.model); err != nil { + color.Red.Printf("[store_db] AutoMigrate DB(%s),err=%s\n", m.name, err) + return + } } - seedSupportedAssets() + seedChains() + seedRpcNodes() + seedChainTokens() + seedDefaultSettings() + seedTelegramChannelFromSettings() }) } -func seedSupportedAssets() { - var cnt int64 - if err := Mdb.Model(&mdb.SupportedAsset{}).Count(&cnt).Error; err != nil { - color.Red.Printf("[store_db] Count SupportedAsset,err=%s\n", err) - return +// seedChains inserts the built-in networks as enabled rows. Uses +// ON CONFLICT DO NOTHING so re-runs are no-ops and admin edits persist. +func seedChains() { + defaults := []mdb.Chain{ + {Network: mdb.NetworkTron, DisplayName: "TRON", Enabled: true, MinConfirmations: 1, ScanIntervalSec: 5}, + {Network: mdb.NetworkEthereum, DisplayName: "Ethereum", Enabled: true, MinConfirmations: 3, ScanIntervalSec: 5}, + {Network: mdb.NetworkSolana, DisplayName: "Solana", Enabled: true, MinConfirmations: 1, ScanIntervalSec: 5}, + {Network: mdb.NetworkBsc, DisplayName: "BSC", Enabled: true, MinConfirmations: 3, ScanIntervalSec: 5}, + {Network: mdb.NetworkPolygon, DisplayName: "Polygon", Enabled: true, MinConfirmations: 3, ScanIntervalSec: 5}, + {Network: mdb.NetworkPlasma, DisplayName: "Plasma", Enabled: true, MinConfirmations: 1, ScanIntervalSec: 5}, } - if cnt > 0 { - return - } - defaults := []mdb.SupportedAsset{ - {Network: mdb.NetworkTron, Token: "TRX", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkTron, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkSolana, Token: "SOL", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkSolana, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkSolana, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkEthereum, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkEthereum, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkBsc, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkBsc, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkPolygon, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkPolygon, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkPlasma, Token: "USDT", Status: mdb.TokenStatusEnable}, - } - if err := Mdb.Create(&defaults).Error; err != nil { - color.Red.Printf("[store_db] Seed SupportedAsset,err=%s\n", err) + if err := Mdb.Clauses(clause.OnConflict{DoNothing: true}).Create(&defaults).Error; err != nil { + color.Red.Printf("[store_db] seed chains err=%s\n", err) + } +} + +// seedChainTokens inserts default token configurations for each chain. +// ON CONFLICT DO NOTHING on the (network, symbol) unique index so +// re-runs are no-ops and admin edits to contract_address / decimals / +// min_amount persist across restarts. +func seedChainTokens() { + // Contract-address rows are matched by scanners via exact contract + // lookup. Native-token rows (empty contract_address) are matched by + // symbol — these act as admin toggles for the native payment path. + defaults := []mdb.ChainToken{ + // TRON + {Network: mdb.NetworkTron, Symbol: "USDT", ContractAddress: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkTron, Symbol: "TRX", ContractAddress: "", Decimals: 6, Enabled: true}, + // Ethereum + {Network: mdb.NetworkEthereum, Symbol: "USDT", ContractAddress: "0xdAC17F958D2ee523a2206206994597C13D831ec7", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkEthereum, Symbol: "USDC", ContractAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", Decimals: 6, Enabled: true}, + // Solana + {Network: mdb.NetworkSolana, Symbol: "USDT", ContractAddress: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkSolana, Symbol: "USDC", ContractAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkSolana, Symbol: "SOL", ContractAddress: "", Decimals: 9, Enabled: true}, + // BSC (BEP20 USDT/USDC are 18 decimals, unlike their Ethereum counterparts) + {Network: mdb.NetworkBsc, Symbol: "USDT", ContractAddress: "0x55d398326f99059fF775485246999027B3197955", Decimals: 18, Enabled: true}, + {Network: mdb.NetworkBsc, Symbol: "USDC", ContractAddress: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", Decimals: 18, Enabled: true}, + // Polygon + {Network: mdb.NetworkPolygon, Symbol: "USDT", ContractAddress: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkPolygon, Symbol: "USDC", ContractAddress: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkPolygon, Symbol: "USDC.e", ContractAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", Decimals: 6, Enabled: true}, + // Plasma + {Network: mdb.NetworkPlasma, Symbol: "USDT", ContractAddress: "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb", Decimals: 6, Enabled: true}, + } + if err := Mdb.Clauses(clause.OnConflict{DoNothing: true}).Create(&defaults).Error; err != nil { + color.Red.Printf("[store_db] seed chain_tokens err=%s\n", err) + } +} + +// seedRpcNodes inserts default RPC endpoints for each chain. Checks per +// (network, url) so re-runs are idempotent and admin edits persist. +func seedRpcNodes() { + defaults := []mdb.RpcNode{ + {Network: mdb.NetworkTron, Url: "https://api.trongrid.io", Type: mdb.RpcNodeTypeHttp, Weight: 1, Enabled: true, Status: mdb.RpcNodeStatusUnknown}, + {Network: mdb.NetworkEthereum, Url: "wss://ethereum.publicnode.com", Type: mdb.RpcNodeTypeWs, Weight: 1, Enabled: true, Status: mdb.RpcNodeStatusUnknown}, + {Network: mdb.NetworkSolana, Url: "https://api.mainnet-beta.solana.com", Type: mdb.RpcNodeTypeHttp, Weight: 1, Enabled: true, Status: mdb.RpcNodeStatusUnknown}, + {Network: mdb.NetworkBsc, Url: "wss://bsc.drpc.org", Type: mdb.RpcNodeTypeWs, Weight: 1, Enabled: true, Status: mdb.RpcNodeStatusUnknown}, + {Network: mdb.NetworkPolygon, Url: "wss://polygon-bor-rpc.publicnode.com", Type: mdb.RpcNodeTypeWs, Weight: 1, Enabled: true, Status: mdb.RpcNodeStatusUnknown}, + {Network: mdb.NetworkPlasma, Url: "wss://rpc.plasma.to", Type: mdb.RpcNodeTypeWs, Weight: 1, Enabled: true, Status: mdb.RpcNodeStatusUnknown}, + } + for _, d := range defaults { + var count int64 + if err := Mdb.Model(&mdb.RpcNode{}). + Where("network = ? AND url = ?", d.Network, d.Url). + Count(&count).Error; err != nil { + color.Red.Printf("[store_db] seed rpc_nodes check err=%s\n", err) + continue + } + if count > 0 { + continue + } + if err := Mdb.Create(&d).Error; err != nil { + color.Red.Printf("[store_db] seed rpc_nodes err=%s\n", err) + } + } +} + +// seedDefaultSettings inserts built-in default settings. +// Uses ON CONFLICT DO NOTHING so admin edits persist across restarts. +func seedDefaultSettings() { + defaults := []mdb.Setting{ + {Group: mdb.SettingGroupEpay, Key: mdb.SettingKeyEpayDefaultToken, Value: "usdt", Type: mdb.SettingTypeString}, + {Group: mdb.SettingGroupEpay, Key: mdb.SettingKeyEpayDefaultCurrency, Value: "cny", Type: mdb.SettingTypeString}, + {Group: mdb.SettingGroupEpay, Key: mdb.SettingKeyEpayDefaultNetwork, Value: "tron", Type: mdb.SettingTypeString}, + } + if err := Mdb.Clauses(clause.OnConflict{DoNothing: true}).Create(&defaults).Error; err != nil { + color.Red.Printf("[store_db] seed default settings err=%s\n", err) + } +} + +// seedTelegramChannelFromSettings auto-migrates the legacy settings-table +// Telegram config into a notification_channels row so the notify dispatcher +// can use it. Idempotent: no-op when any telegram channel already exists. +// +// Legacy keys read from settings: +// +// system.telegram_bot_token → TelegramConfig.BotToken +// system.telegram_chat_id → TelegramConfig.ChatID +// system.telegram_payment_notice_enabled → events.pay_success +// system.telegram_abnormal_notice_enabled → events.order_expired +func seedTelegramChannelFromSettings() { + var count int64 + if err := Mdb.Model(&mdb.NotificationChannel{}). + Where("type = ?", mdb.NotificationTypeTelegram). + Count(&count).Error; err != nil { + color.Red.Printf("[store_db] seed telegram channel check err=%s\n", err) + return + } + if count > 0 { + return + } + + keys := []string{ + "system.telegram_bot_token", + "system.telegram_chat_id", + "system.telegram_payment_notice_enabled", + "system.telegram_abnormal_notice_enabled", + } + var rows []mdb.Setting + if err := Mdb.Where("key IN ?", keys).Find(&rows).Error; err != nil { + color.Red.Printf("[store_db] seed telegram channel: read settings err=%s\n", err) + return + } + m := make(map[string]string, len(rows)) + for _, r := range rows { + m[r.Key] = r.Value + } + + botToken := strings.TrimSpace(m["system.telegram_bot_token"]) + chatIDStr := strings.TrimSpace(m["system.telegram_chat_id"]) + if botToken == "" || chatIDStr == "" { + return // No legacy telegram config to migrate. + } + + chatID, err := strconv.ParseInt(chatIDStr, 10, 64) + if err != nil { + color.Red.Printf("[store_db] seed telegram channel: invalid chat_id=%q\n", chatIDStr) + return + } + + paymentEnabled, _ := strconv.ParseBool(m["system.telegram_payment_notice_enabled"]) + abnormalEnabled, _ := strconv.ParseBool(m["system.telegram_abnormal_notice_enabled"]) + + configJSON, _ := json.Marshal(map[string]interface{}{ + "bot_token": botToken, + "chat_id": chatID, + "proxy": "", + }) + eventsJSON, _ := json.Marshal(map[string]bool{ + mdb.NotifyEventPaySuccess: paymentEnabled, + mdb.NotifyEventOrderExpired: abnormalEnabled, + mdb.NotifyEventDailyReport: false, + }) + + ch := mdb.NotificationChannel{ + Type: mdb.NotificationTypeTelegram, + Name: "Telegram", + Config: string(configJSON), + Events: string(eventsJSON), + Enabled: true, + } + if err := Mdb.Create(&ch).Error; err != nil { + color.Red.Printf("[store_db] seed telegram channel err=%s\n", err) + } else { + color.Green.Printf("[store_db] migrated legacy telegram settings to notification_channels (id=%d)\n", ch.ID) } } diff --git a/src/model/data/admin_user_data.go b/src/model/data/admin_user_data.go new file mode 100644 index 0000000..3abe918 --- /dev/null +++ b/src/model/data/admin_user_data.go @@ -0,0 +1,93 @@ +package data + +import ( + "crypto/rand" + "encoding/hex" + "strings" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" + "github.com/dromara/carbon/v2" + "golang.org/x/crypto/bcrypt" +) + +const defaultAdminUsername = "admin" + +// EnsureDefaultAdmin seeds an initial admin account when no admin user +// exists. The password is randomly generated and returned so the caller +// can print it to the console. Idempotent — subsequent calls return +// ("", false, nil). +func EnsureDefaultAdmin() (password string, created bool, err error) { + var count int64 + if err := dao.Mdb.Model(&mdb.AdminUser{}).Count(&count).Error; err != nil { + return "", false, err + } + if count > 0 { + return "", false, nil + } + password = randomAdminPassword() + hash, err := HashPassword(password) + if err != nil { + return "", false, err + } + user := &mdb.AdminUser{ + Username: defaultAdminUsername, + PasswordHash: hash, + Status: mdb.AdminUserStatusEnable, + } + return password, true, dao.Mdb.Create(user).Error +} + +func randomAdminPassword() string { + b := make([]byte, 16) + _, _ = rand.Read(b) + return hex.EncodeToString(b) +} + +// HashPassword bcrypts a plaintext password. +func HashPassword(plain string) (string, error) { + b, err := bcrypt.GenerateFromPassword([]byte(plain), bcrypt.DefaultCost) + if err != nil { + return "", err + } + return string(b), nil +} + +// VerifyPassword compares a plaintext password against a bcrypt hash. +func VerifyPassword(hash, plain string) bool { + return bcrypt.CompareHashAndPassword([]byte(hash), []byte(plain)) == nil +} + +// GetAdminUserByUsername returns the row for a username (case-insensitive). +func GetAdminUserByUsername(username string) (*mdb.AdminUser, error) { + u := new(mdb.AdminUser) + err := dao.Mdb.Model(u). + Where("username = ?", strings.ToLower(strings.TrimSpace(username))). + Limit(1).Find(u).Error + return u, err +} + +// GetAdminUserByID returns the row for an ID. +func GetAdminUserByID(id uint64) (*mdb.AdminUser, error) { + u := new(mdb.AdminUser) + err := dao.Mdb.Model(u).Limit(1).Find(u, id).Error + return u, err +} + +// UpdateAdminUserPassword rehashes and persists a new password. +func UpdateAdminUserPassword(id uint64, newPlain string) error { + hash, err := HashPassword(newPlain) + if err != nil { + return err + } + return dao.Mdb.Model(&mdb.AdminUser{}). + Where("id = ?", id). + Update("password_hash", hash).Error +} + +// TouchAdminUserLastLogin stamps last_login_at to now. +func TouchAdminUserLastLogin(id uint64) error { + return dao.Mdb.Model(&mdb.AdminUser{}). + Where("id = ?", id). + Update("last_login_at", carbon.Now().StdTime()).Error +} diff --git a/src/model/data/api_key_data.go b/src/model/data/api_key_data.go new file mode 100644 index 0000000..9d9e23f --- /dev/null +++ b/src/model/data/api_key_data.go @@ -0,0 +1,137 @@ +package data + +import ( + "crypto/rand" + "encoding/hex" + "strconv" + "strings" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" + "github.com/dromara/carbon/v2" + "gorm.io/gorm" +) + +// GetEnabledApiKey looks up an enabled merchant credential row by PID. +// A single row is valid for both EPAY and GMPAY flows; the route +// determines the flow. Returns (row, nil) on success; (zero row, nil) +// when no match; error only on true DB failure. +func GetEnabledApiKey(pid string) (*mdb.ApiKey, error) { + row := new(mdb.ApiKey) + err := dao.Mdb.Model(row). + Where("pid = ?", strings.TrimSpace(pid)). + Where("status = ?", mdb.ApiKeyStatusEnable). + Limit(1).Find(row).Error + return row, err +} + +// GetApiKeyByID fetches a row by primary key (including disabled). +func GetApiKeyByID(id uint64) (*mdb.ApiKey, error) { + row := new(mdb.ApiKey) + err := dao.Mdb.Model(row).Limit(1).Find(row, id).Error + return row, err +} + +// ListApiKeys returns all rows ordered by ID descending. +func ListApiKeys() ([]mdb.ApiKey, error) { + var rows []mdb.ApiKey + err := dao.Mdb.Model(&mdb.ApiKey{}).Order("id DESC").Find(&rows).Error + return rows, err +} + +// CreateApiKey persists a new row. +func CreateApiKey(row *mdb.ApiKey) error { + return dao.Mdb.Create(row).Error +} + +// UpdateApiKeyFields updates a whitelist of mutable fields on a row. +func UpdateApiKeyFields(id uint64, fields map[string]interface{}) error { + if len(fields) == 0 { + return nil + } + return dao.Mdb.Model(&mdb.ApiKey{}).Where("id = ?", id).Updates(fields).Error +} + +// DeleteApiKeyByID removes (soft-deletes) a row. +func DeleteApiKeyByID(id uint64) error { + return dao.Mdb.Where("id = ?", id).Delete(&mdb.ApiKey{}).Error +} + +// TouchApiKeyUsage increments call_count and stamps last_used_at. +// Called from the signature middleware after a successful verify. +func TouchApiKeyUsage(id uint64) error { + return dao.Mdb.Model(&mdb.ApiKey{}). + Where("id = ?", id). + Updates(map[string]interface{}{ + "call_count": gorm.Expr("call_count + 1"), + "last_used_at": carbon.Now().StdTime(), + }).Error +} + +// basePid is the starting PID value for api_keys. +const basePid = 1000 + +// NextPid returns the next available numeric PID for api_keys. Scans +// ALL rows (including soft-deleted) to avoid reusing a PID whose row +// is still in the table with a non-null deleted_at — the unique index +// on pid doesn't know about soft deletes, so reuse would trigger a +// DB-level unique violation on Create. +func NextPid() (int, error) { + var rows []mdb.ApiKey + err := dao.Mdb.Unscoped().Model(&mdb.ApiKey{}).Select("pid").Find(&rows).Error + if err != nil { + return basePid, err + } + maxPid := basePid - 1 + for _, r := range rows { + if pid, err := strconv.Atoi(strings.TrimSpace(r.Pid)); err == nil && pid > maxPid { + maxPid = pid + } + } + return maxPid + 1, nil +} + +// SeededApiKey carries the details of a newly created default key so +// the caller can print them to the console (secret is never surfaced +// again via the admin API — it has to be viewed via /api-keys/:id/secret +// after login). +type SeededApiKey struct { + Pid string + Name string + SecretKey string +} + +// EnsureDefaultApiKey seeds ONE universal API key on a fresh install. +// The seeded key is valid for all three gateway flows — the admin can +// create additional keys later, each also universal. Idempotent: if +// any api_keys row already exists, returns nil without seeding. +func EnsureDefaultApiKey() (*SeededApiKey, error) { + var count int64 + if err := dao.Mdb.Model(&mdb.ApiKey{}).Count(&count).Error; err != nil { + return nil, err + } + if count > 0 { + return nil, nil + } + secret := generateHex(32) + row := &mdb.ApiKey{ + Name: "default", + Pid: strconv.Itoa(basePid), + SecretKey: secret, + Status: mdb.ApiKeyStatusEnable, + } + if err := dao.Mdb.Create(row).Error; err != nil { + return nil, err + } + return &SeededApiKey{ + Pid: row.Pid, + Name: row.Name, + SecretKey: secret, + }, nil +} + +func generateHex(n int) string { + b := make([]byte, n) + _, _ = rand.Read(b) + return hex.EncodeToString(b) +} diff --git a/src/model/data/chain_data.go b/src/model/data/chain_data.go new file mode 100644 index 0000000..002f319 --- /dev/null +++ b/src/model/data/chain_data.go @@ -0,0 +1,54 @@ +package data + +import ( + "strings" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" +) + +// ListChains returns all chain rows ordered by id. +func ListChains() ([]mdb.Chain, error) { + var rows []mdb.Chain + err := dao.Mdb.Model(&mdb.Chain{}).Order("id ASC").Find(&rows).Error + return rows, err +} + +// ListEnabledChains returns only rows with Enabled=true. +func ListEnabledChains() ([]mdb.Chain, error) { + var rows []mdb.Chain + err := dao.Mdb.Model(&mdb.Chain{}). + Where("enabled = ?", true). + Order("id ASC").Find(&rows).Error + return rows, err +} + +// GetChainByNetwork fetches one row by network key. +func GetChainByNetwork(network string) (*mdb.Chain, error) { + row := new(mdb.Chain) + err := dao.Mdb.Model(row). + Where("network = ?", strings.ToLower(strings.TrimSpace(network))). + Limit(1).Find(row).Error + return row, err +} + +// IsChainEnabled returns whether the row exists and Enabled=true. A +// missing row is treated as disabled — scanners must be able to +// short-circuit even before the admin creates the chain entry. +func IsChainEnabled(network string) bool { + row, err := GetChainByNetwork(network) + if err != nil || row.ID == 0 { + return false + } + return row.Enabled +} + +// UpdateChainFields patches mutable columns. +func UpdateChainFields(network string, fields map[string]interface{}) error { + if len(fields) == 0 { + return nil + } + return dao.Mdb.Model(&mdb.Chain{}). + Where("network = ?", strings.ToLower(strings.TrimSpace(network))). + Updates(fields).Error +} diff --git a/src/model/data/chain_token_data.go b/src/model/data/chain_token_data.go new file mode 100644 index 0000000..fd83946 --- /dev/null +++ b/src/model/data/chain_token_data.go @@ -0,0 +1,125 @@ +package data + +import ( + "strings" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" +) + +// ListEnabledChainTokens returns enabled tokens, optionally filtered by network. +// An empty network returns all enabled tokens across all networks. +func ListEnabledChainTokens(network string) ([]mdb.ChainToken, error) { + var rows []mdb.ChainToken + tx := dao.Mdb.Model(&mdb.ChainToken{}).Where("enabled = ?", true) + if n := strings.ToLower(strings.TrimSpace(network)); n != "" { + tx = tx.Where("network = ?", n) + } + err := tx.Order("network ASC, id ASC").Find(&rows).Error + return rows, err +} + +// ListChainTokens returns rows optionally filtered by network. +func ListChainTokens(network string) ([]mdb.ChainToken, error) { + var rows []mdb.ChainToken + tx := dao.Mdb.Model(&mdb.ChainToken{}) + if network != "" { + tx = tx.Where("network = ?", strings.ToLower(network)) + } + err := tx.Order("id ASC").Find(&rows).Error + return rows, err +} + +// ListEnabledChainTokensByNetwork returns the enabled tokens for a network. +// Scanners call this to learn which contract addresses to subscribe to. +func ListEnabledChainTokensByNetwork(network string) ([]mdb.ChainToken, error) { + var rows []mdb.ChainToken + err := dao.Mdb.Model(&mdb.ChainToken{}). + Where("network = ?", strings.ToLower(network)). + Where("enabled = ?", true). + Find(&rows).Error + return rows, err +} + +// GetEnabledChainTokenByContract finds one enabled token by (network, +// contract_address). Used by EVM/TRON scanners to resolve the symbol +// and decimals of an incoming transfer. Returns (zero row, nil) if no +// match. The contract address match is case-insensitive. +func GetEnabledChainTokenByContract(network, contractAddress string) (*mdb.ChainToken, error) { + row := new(mdb.ChainToken) + addr := strings.TrimSpace(contractAddress) + if addr == "" { + return row, nil + } + err := dao.Mdb.Model(row). + Where("network = ?", strings.ToLower(strings.TrimSpace(network))). + Where("enabled = ?", true). + Where("LOWER(contract_address) = ?", strings.ToLower(addr)). + Limit(1).Find(row).Error + return row, err +} + +// GetEnabledChainTokenBySymbol finds one enabled token by (network, symbol). +// Used by Solana native-SOL path where there's no contract address. +func GetEnabledChainTokenBySymbol(network, symbol string) (*mdb.ChainToken, error) { + row := new(mdb.ChainToken) + sym := strings.TrimSpace(symbol) + if sym == "" { + return row, nil + } + err := dao.Mdb.Model(row). + Where("network = ?", strings.ToLower(strings.TrimSpace(network))). + Where("enabled = ?", true). + Where("UPPER(symbol) = ?", strings.ToUpper(sym)). + Limit(1).Find(row).Error + return row, err +} + +// GetChainTokenByID fetches by primary key. +func GetChainTokenByID(id uint64) (*mdb.ChainToken, error) { + row := new(mdb.ChainToken) + err := dao.Mdb.Model(row).Limit(1).Find(row, id).Error + return row, err +} + +// CreateChainToken inserts a row. +// If a soft-deleted row with the same (network, symbol) exists it is +// restored with the incoming field values rather than creating a duplicate +// that would violate the unique index. +func CreateChainToken(row *mdb.ChainToken) error { + deleted := new(mdb.ChainToken) + err := dao.Mdb.Unscoped(). + Where("network = ? AND symbol = ? AND deleted_at IS NOT NULL", row.Network, row.Symbol). + Limit(1).Find(deleted).Error + if err != nil { + return err + } + if deleted.ID > 0 { + err = dao.Mdb.Unscoped().Model(deleted).Updates(map[string]interface{}{ + "deleted_at": nil, + "contract_address": row.ContractAddress, + "decimals": row.Decimals, + "enabled": row.Enabled, + "min_amount": row.MinAmount, + }).Error + if err != nil { + return err + } + row.ID = deleted.ID + return nil + } + return dao.Mdb.Create(row).Error +} + +// UpdateChainTokenFields patches mutable columns. +func UpdateChainTokenFields(id uint64, fields map[string]interface{}) error { + if len(fields) == 0 { + return nil + } + return dao.Mdb.Model(&mdb.ChainToken{}).Where("id = ?", id).Updates(fields).Error +} + +// DeleteChainTokenByID soft-deletes the row. +func DeleteChainTokenByID(id uint64) error { + return dao.Mdb.Where("id = ?", id).Delete(&mdb.ChainToken{}).Error +} diff --git a/src/model/data/notification_channel_data.go b/src/model/data/notification_channel_data.go new file mode 100644 index 0000000..ce2edb6 --- /dev/null +++ b/src/model/data/notification_channel_data.go @@ -0,0 +1,81 @@ +package data + +import ( + "encoding/json" + "strings" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" +) + +// ListNotificationChannels returns all rows, optionally filtered by type. +func ListNotificationChannels(channelType string) ([]mdb.NotificationChannel, error) { + var rows []mdb.NotificationChannel + tx := dao.Mdb.Model(&mdb.NotificationChannel{}) + if channelType != "" { + tx = tx.Where("type = ?", strings.ToLower(channelType)) + } + err := tx.Order("id DESC").Find(&rows).Error + return rows, err +} + +// ListEnabledChannelsByEvent returns enabled rows whose Events JSON has +// the named event key set to true. Done in Go (rather than JSON_EXTRACT) +// because the runtime DB is DB-agnostic (MySQL/Postgres/SQLite). +func ListEnabledChannelsByEvent(event string) ([]mdb.NotificationChannel, error) { + var rows []mdb.NotificationChannel + if err := dao.Mdb.Model(&mdb.NotificationChannel{}). + Where("enabled = ?", true). + Find(&rows).Error; err != nil { + return nil, err + } + out := rows[:0] + for _, r := range rows { + events := map[string]bool{} + if r.Events != "" { + _ = json.Unmarshal([]byte(r.Events), &events) + } + if events[event] { + out = append(out, r) + } + } + return out, nil +} + +// GetFirstEnabledTelegramChannel returns the oldest enabled telegram +// row, or nil ID if none. Telegram bot startup uses this as the primary +// instance backing /start and command handlers. +func GetFirstEnabledTelegramChannel() (*mdb.NotificationChannel, error) { + row := new(mdb.NotificationChannel) + err := dao.Mdb.Model(row). + Where("type = ?", mdb.NotificationTypeTelegram). + Where("enabled = ?", true). + Order("id ASC"). + Limit(1).Find(row).Error + return row, err +} + +// GetNotificationChannelByID fetches by PK. +func GetNotificationChannelByID(id uint64) (*mdb.NotificationChannel, error) { + row := new(mdb.NotificationChannel) + err := dao.Mdb.Model(row).Limit(1).Find(row, id).Error + return row, err +} + +// CreateNotificationChannel inserts a new row. +func CreateNotificationChannel(row *mdb.NotificationChannel) error { + return dao.Mdb.Create(row).Error +} + +// UpdateNotificationChannelFields patches mutable columns. +func UpdateNotificationChannelFields(id uint64, fields map[string]interface{}) error { + if len(fields) == 0 { + return nil + } + return dao.Mdb.Model(&mdb.NotificationChannel{}).Where("id = ?", id).Updates(fields).Error +} + +// DeleteNotificationChannelByID soft-deletes a row. +func DeleteNotificationChannelByID(id uint64) error { + return dao.Mdb.Where("id = ?", id).Delete(&mdb.NotificationChannel{}).Error +} diff --git a/src/model/data/order_admin_data.go b/src/model/data/order_admin_data.go new file mode 100644 index 0000000..190a63f --- /dev/null +++ b/src/model/data/order_admin_data.go @@ -0,0 +1,151 @@ +package data + +import ( + "strings" + "time" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" + "gorm.io/gorm" +) + +// OrderListFilter bundles every filter supported by the admin orders +// list page. Zero values are ignored so callers can pass only what the +// user actually filtered on. +type OrderListFilter struct { + Status int + Network string + Token string + Address string + Keyword string // matches trade_id / order_id / block_transaction_id + StartAt *time.Time + EndAt *time.Time + Page int + PageSize int + // ParentOnly restricts the result to top-level orders only + // (parent_trade_id = ''). Sub-orders are excluded from the listing. + ParentOnly bool +} + +// ListOrders returns a paginated order slice plus the total count under +// the same filter (for the UI pagination bar). +func ListOrders(f OrderListFilter) ([]mdb.Orders, int64, error) { + tx := buildOrderListQuery(f) + var total int64 + if err := tx.Count(&total).Error; err != nil { + return nil, 0, err + } + page := f.Page + if page < 1 { + page = 1 + } + size := f.PageSize + if size < 1 { + size = 20 + } + if size > 200 { + size = 200 + } + var rows []mdb.Orders + err := tx.Order("id DESC"). + Offset((page - 1) * size).Limit(size). + Find(&rows).Error + return rows, total, err +} + +func buildOrderListQuery(f OrderListFilter) *gorm.DB { + tx := dao.Mdb.Model(&mdb.Orders{}) + if f.ParentOnly { + tx = tx.Where("parent_trade_id = ?", "") + } + if f.Status > 0 { + tx = tx.Where("status = ?", f.Status) + } + if f.Network != "" { + tx = tx.Where("network = ?", strings.ToLower(f.Network)) + } + if f.Token != "" { + tx = tx.Where("token = ?", strings.ToUpper(f.Token)) + } + if f.Address != "" { + tx = tx.Where("receive_address = ?", f.Address) + } + if f.Keyword != "" { + kw := "%" + strings.TrimSpace(f.Keyword) + "%" + tx = tx.Where("trade_id LIKE ? OR order_id LIKE ? OR block_transaction_id LIKE ?", kw, kw, kw) + } + if f.StartAt != nil { + tx = tx.Where("created_at >= ?", *f.StartAt) + } + if f.EndAt != nil { + tx = tx.Where("created_at <= ?", *f.EndAt) + } + return tx +} + +// CountOrdersByStatus returns how many orders exist in each status. +// Used by the dashboard overview card. +func CountOrdersByStatus() (map[int]int64, error) { + type row struct { + Status int + Total int64 + } + var rows []row + err := dao.Mdb.Model(&mdb.Orders{}). + Select("status, COUNT(*) AS total"). + Group("status"). + Scan(&rows).Error + if err != nil { + return nil, err + } + out := map[int]int64{} + for _, r := range rows { + out[r.Status] = r.Total + } + return out, nil +} + +// CloseOrderManually transitions a pending order to expired. Only +// touches rows currently in StatusWaitPay so idempotent / safe. +func CloseOrderManually(tradeID string) (bool, error) { + result := dao.Mdb.Model(&mdb.Orders{}). + Where("trade_id = ?", tradeID). + Where("status = ?", mdb.StatusWaitPay). + Update("status", mdb.StatusExpired) + return result.RowsAffected > 0, result.Error +} + +// ReopenOrderCallback flips callback_confirm back to NO so the mq +// worker picks it up on the next tick. Used by "resend callback". +func ReopenOrderCallback(tradeID string) (bool, error) { + result := dao.Mdb.Model(&mdb.Orders{}). + Where("trade_id = ?", tradeID). + Where("status = ?", mdb.StatusPaySuccess). + Updates(map[string]interface{}{ + "callback_confirm": mdb.CallBackConfirmNo, + "callback_num": 0, + }) + return result.RowsAffected > 0, result.Error +} + +// CountOrdersByAddress returns order counts grouped by receive_address. +// The admin wallet list annotates each wallet row with this number. +func CountOrdersByAddress() (map[string]int64, error) { + type row struct { + Address string `gorm:"column:receive_address"` + Total int64 + } + var rows []row + err := dao.Mdb.Model(&mdb.Orders{}). + Select("receive_address, COUNT(*) AS total"). + Group("receive_address"). + Scan(&rows).Error + if err != nil { + return nil, err + } + out := map[string]int64{} + for _, r := range rows { + out[r.Address] = r.Total + } + return out, nil +} diff --git a/src/model/data/order_data.go b/src/model/data/order_data.go index 430264b..32760ba 100644 --- a/src/model/data/order_data.go +++ b/src/model/data/order_data.go @@ -28,10 +28,31 @@ func normalizeLockAmount(amount float64) (int64, string) { return value.Shift(2).IntPart(), value.StringFixed(2) } +func normalizeLockNetwork(network string) string { + return strings.ToLower(strings.TrimSpace(network)) +} + +func normalizeLockAddress(network, address string) string { + address = strings.TrimSpace(address) + if isEVMNetwork(normalizeLockNetwork(network)) { + return strings.ToLower(address) + } + return address +} + func normalizeLockToken(token string) string { return strings.ToUpper(strings.TrimSpace(token)) } +func applyLockAddressFilter(tx *gorm.DB, network, address string) *gorm.DB { + network = normalizeLockNetwork(network) + address = normalizeLockAddress(network, address) + if isEVMNetwork(network) { + return tx.Where("lower(address) = ?", address) + } + return tx.Where("address = ?", address) +} + // GetOrderInfoByOrderId fetches an order by merchant order id. func GetOrderInfoByOrderId(orderId string) (*mdb.Orders, error) { order := new(mdb.Orders) @@ -142,22 +163,38 @@ func GetSiblingSubOrders(parentTradeId string, excludeTradeId string) ([]mdb.Ord return orders, err } -// MarkParentOrderSuccess updates the parent order with the sub-order's payment details. -// Token and network are NOT overwritten — the parent keeps its original values. +// MarkParentOrderSuccess marks the parent order as paid and records which sub-order +// settled it. Only the status, callback_confirm, and pay_by_sub_id fields are updated; +// the parent's own block_transaction_id, actual_amount, and receive_address are +// intentionally left unchanged because the parent was not directly paid. func MarkParentOrderSuccess(parentTradeId string, sub *mdb.Orders) (bool, error) { - result := dao.Mdb.Model(&mdb.Orders{}). + return MarkParentOrderSuccessWithTransaction(dao.Mdb, parentTradeId, sub) +} + +// MarkParentOrderSuccessWithTransaction is the transactional variant of +// MarkParentOrderSuccess. +func MarkParentOrderSuccessWithTransaction(tx *gorm.DB, parentTradeId string, sub *mdb.Orders) (bool, error) { + result := tx.Model(&mdb.Orders{}). Where("trade_id = ?", parentTradeId). Where("status = ?", mdb.StatusWaitPay). Updates(map[string]interface{}{ - "status": mdb.StatusPaySuccess, - "block_transaction_id": sub.BlockTransactionId, - "callback_confirm": mdb.CallBackConfirmNo, - "actual_amount": sub.ActualAmount, - "receive_address": sub.ReceiveAddress, + "status": mdb.StatusPaySuccess, + "callback_confirm": mdb.CallBackConfirmNo, + "pay_by_sub_id": sub.ID, }) return result.RowsAffected > 0, result.Error } +// ExpireSiblingSubOrdersWithTransaction expires all waiting sibling +// sub-orders under the same parent in one statement. +func ExpireSiblingSubOrdersWithTransaction(tx *gorm.DB, parentTradeId string, excludeTradeId string) error { + return tx.Model(&mdb.Orders{}). + Where("parent_trade_id = ?", parentTradeId). + Where("trade_id != ?", excludeTradeId). + Where("status = ?", mdb.StatusWaitPay). + Update("status", mdb.StatusExpired).Error +} + // MarkOrderSelected sets is_selected=true for the given trade_id. func MarkOrderSelected(tradeId string) error { return dao.Mdb.Model(&mdb.Orders{}). @@ -191,6 +228,32 @@ func GetActiveSubOrders(parentTradeId string) ([]mdb.Orders, error) { return orders, err } +// GetAllSubOrders returns all sub-orders (any status) under a parent order, +// ordered by creation time ascending. +func GetAllSubOrders(parentTradeId string) ([]mdb.Orders, error) { + var orders []mdb.Orders + err := dao.Mdb.Model(&mdb.Orders{}). + Where("parent_trade_id = ?", parentTradeId). + Order("created_at ASC"). + Find(&orders).Error + return orders, err +} + +// GetSubOrdersByParentTradeIds batch-fetches all sub-orders (any status) +// whose parent_trade_id is in the given set. Ordered by parent_trade_id +// then created_at ASC so callers can build a grouped map in one pass. +func GetSubOrdersByParentTradeIds(parentTradeIds []string) ([]mdb.Orders, error) { + if len(parentTradeIds) == 0 { + return nil, nil + } + var orders []mdb.Orders + err := dao.Mdb.Model(&mdb.Orders{}). + Where("parent_trade_id IN ?", parentTradeIds). + Order("parent_trade_id ASC, created_at ASC"). + Find(&orders).Error + return orders, err +} + // ExpireOrderByTradeId marks a single order as expired if still waiting. func ExpireOrderByTradeId(tradeId string) error { return dao.Mdb.Model(&mdb.Orders{}). @@ -201,16 +264,17 @@ func ExpireOrderByTradeId(tradeId string) error { // GetTradeIdByWalletAddressAndAmountAndToken resolves the reserved trade id by network, address, token and amount. func GetTradeIdByWalletAddressAndAmountAndToken(network string, address string, token string, amount float64) (string, error) { + network = normalizeLockNetwork(network) + address = normalizeLockAddress(network, address) scaledAmount, _ := normalizeLockAmount(amount) var lock mdb.TransactionLock - err := dao.RuntimeDB.Model(&mdb.TransactionLock{}). + query := dao.RuntimeDB.Model(&mdb.TransactionLock{}). Where("network = ?", network). - Where("address = ?", address). Where("token = ?", normalizeLockToken(token)). Where("amount_scaled = ?", scaledAmount). - Where("expires_at > ?", time.Now()). - Limit(1). - Find(&lock).Error + Where("expires_at > ?", time.Now()) + query = applyLockAddressFilter(query, network, address) + err := query.Limit(1).Find(&lock).Error if err != nil { return "", err } @@ -222,6 +286,8 @@ func GetTradeIdByWalletAddressAndAmountAndToken(network string, address string, // LockTransaction reserves a network+address+token+amount pair in sqlite until expiration. func LockTransaction(network, address, token, tradeID string, amount float64, expirationTime time.Duration) error { + network = normalizeLockNetwork(network) + address = normalizeLockAddress(network, address) scaledAmount, amountText := normalizeLockAmount(amount) normalizedToken := normalizeLockToken(token) now := time.Now() @@ -236,12 +302,12 @@ func LockTransaction(network, address, token, tradeID string, amount float64, ex } return dao.RuntimeDB.Transaction(func(tx *gorm.DB) error { - if err := tx.Where("network = ?", network). - Where("address = ?", address). + expiredQuery := tx.Where("network = ?", network). Where("token = ?", normalizedToken). Where("amount_scaled = ?", scaledAmount). - Where("expires_at <= ?", now). - Delete(&mdb.TransactionLock{}).Error; err != nil { + Where("expires_at <= ?", now) + expiredQuery = applyLockAddressFilter(expiredQuery, network, address) + if err := expiredQuery.Delete(&mdb.TransactionLock{}).Error; err != nil { return err } if err := tx.Where("trade_id = ?", tradeID).Delete(&mdb.TransactionLock{}).Error; err != nil { @@ -261,13 +327,15 @@ func LockTransaction(network, address, token, tradeID string, amount float64, ex // UnLockTransaction releases the reservation for network+address+token+amount. func UnLockTransaction(network string, address string, token string, amount float64) error { + network = normalizeLockNetwork(network) + address = normalizeLockAddress(network, address) scaledAmount, _ := normalizeLockAmount(amount) - return dao.RuntimeDB. + query := dao.RuntimeDB. Where("network = ?", network). - Where("address = ?", address). Where("token = ?", normalizeLockToken(token)). - Where("amount_scaled = ?", scaledAmount). - Delete(&mdb.TransactionLock{}).Error + Where("amount_scaled = ?", scaledAmount) + query = applyLockAddressFilter(query, network, address) + return query.Delete(&mdb.TransactionLock{}).Error } func UnLockTransactionByTradeId(tradeID string) error { diff --git a/src/model/data/order_data_stats.go b/src/model/data/order_data_stats.go new file mode 100644 index 0000000..1db8f37 --- /dev/null +++ b/src/model/data/order_data_stats.go @@ -0,0 +1,319 @@ +package data + +import ( + "time" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" +) + +// DailyStat is one bucket of day-level aggregation used by the +// dashboard trend charts. +// Field "Day" holds "YYYY-MM-DD" for daily buckets and +// "YYYY-MM-DD HH:00" for hourly buckets. +type DailyStat struct { + Day string `json:"day"` // "YYYY-MM-DD" (daily) or "YYYY-MM-DD HH:00" (hourly) + OrderCount int64 `json:"order_count"` + SuccessCount int64 `json:"success_count"` + TotalAmount float64 `json:"total_amount"` // sum of amount (fiat) + ActualAmount float64 `json:"actual_amount"` // sum of actual_amount (token) +} + +// AddressDailyStat buckets actual_amount by (day, receive_address) for +// the stacked asset-trend chart. +// Field "Day" holds "YYYY-MM-DD" (daily) or "YYYY-MM-DD HH:00" (hourly). +type AddressDailyStat struct { + Day string `json:"day"` + Address string `json:"address"` + ActualAmount float64 `json:"actual_amount"` +} + +// DailyOrderStats returns per-day counts/amounts within [start, end], +// zero-filling any days in the range that have no orders. +// Only orders in StatusPaySuccess contribute to Amount sums — that's +// what the user means by "流水". Pending orders count toward OrderCount +// to keep成交率 computable. +func DailyOrderStats(start, end time.Time) ([]DailyStat, error) { + var rows []DailyStat + err := dao.Mdb.Model(&mdb.Orders{}). + Select(`DATE(created_at) AS day, + COUNT(*) AS order_count, + SUM(CASE WHEN status = ? THEN 1 ELSE 0 END) AS success_count, + SUM(CASE WHEN status = ? THEN amount ELSE 0 END) AS total_amount, + SUM(CASE WHEN status = ? THEN actual_amount ELSE 0 END) AS actual_amount`, + mdb.StatusPaySuccess, mdb.StatusPaySuccess, mdb.StatusPaySuccess). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Group("DATE(created_at)"). + Order("day ASC"). + Scan(&rows).Error + if err != nil { + return nil, err + } + return fillDailyStats(start, end, rows), nil +} + +// HourlyOrderStats returns per-hour counts/amounts within [start, end], +// zero-filling any hours that have no orders. +func HourlyOrderStats(start, end time.Time) ([]DailyStat, error) { + var rows []DailyStat + err := dao.Mdb.Model(&mdb.Orders{}). + Select(`strftime('%Y-%m-%d %H:00', created_at) AS day, + COUNT(*) AS order_count, + SUM(CASE WHEN status = ? THEN 1 ELSE 0 END) AS success_count, + SUM(CASE WHEN status = ? THEN amount ELSE 0 END) AS total_amount, + SUM(CASE WHEN status = ? THEN actual_amount ELSE 0 END) AS actual_amount`, + mdb.StatusPaySuccess, mdb.StatusPaySuccess, mdb.StatusPaySuccess). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Group("strftime('%Y-%m-%d %H:00', created_at)"). + Order("day ASC"). + Scan(&rows).Error + if err != nil { + return nil, err + } + return fillHourlyStats(start, end, rows), nil +} + +// fillDailyStats generates a zero-filled slice covering every calendar +// day in [start, end]. Days present in rows overwrite the zero entries. +func fillDailyStats(start, end time.Time, rows []DailyStat) []DailyStat { + byDay := make(map[string]DailyStat, len(rows)) + for _, r := range rows { + byDay[r.Day] = r + } + var out []DailyStat + cur := time.Date(start.Year(), start.Month(), start.Day(), 0, 0, 0, 0, start.Location()) + last := time.Date(end.Year(), end.Month(), end.Day(), 0, 0, 0, 0, end.Location()) + for !cur.After(last) { + key := cur.Format("2006-01-02") + if r, ok := byDay[key]; ok { + out = append(out, r) + } else { + out = append(out, DailyStat{Day: key}) + } + cur = cur.AddDate(0, 0, 1) + } + return out +} + +// fillHourlyStats generates a zero-filled slice covering every whole +// hour in [start, end]. Hours present in rows overwrite the zero entries. +func fillHourlyStats(start, end time.Time, rows []DailyStat) []DailyStat { + byHour := make(map[string]DailyStat, len(rows)) + for _, r := range rows { + byHour[r.Day] = r + } + var out []DailyStat + cur := time.Date(start.Year(), start.Month(), start.Day(), start.Hour(), 0, 0, 0, start.Location()) + endHour := time.Date(end.Year(), end.Month(), end.Day(), end.Hour(), 0, 0, 0, end.Location()) + for !cur.After(endHour) { + key := cur.Format("2006-01-02 15:00") + if r, ok := byHour[key]; ok { + out = append(out, r) + } else { + out = append(out, DailyStat{Day: key}) + } + cur = cur.Add(time.Hour) + } + return out +} + +// DailyAssetByAddress groups paid actual_amount by (day, receive_address) +// for the per-address stacked chart, zero-filling missing days. +func DailyAssetByAddress(start, end time.Time) ([]AddressDailyStat, error) { + var rows []AddressDailyStat + err := dao.Mdb.Model(&mdb.Orders{}). + Select("DATE(created_at) AS day, receive_address AS address, SUM(actual_amount) AS actual_amount"). + Where("status = ?", mdb.StatusPaySuccess). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Group("DATE(created_at), receive_address"). + Order("day ASC"). + Scan(&rows).Error + if err != nil { + return nil, err + } + return fillAddressDailyStats(start, end, rows), nil +} + +// HourlyAssetByAddress groups paid actual_amount by (hour, receive_address) +// for the per-address stacked chart, zero-filling missing hours. +func HourlyAssetByAddress(start, end time.Time) ([]AddressDailyStat, error) { + var rows []AddressDailyStat + err := dao.Mdb.Model(&mdb.Orders{}). + Select("strftime('%Y-%m-%d %H:00', created_at) AS day, receive_address AS address, SUM(actual_amount) AS actual_amount"). + Where("status = ?", mdb.StatusPaySuccess). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Group("strftime('%Y-%m-%d %H:00', created_at), receive_address"). + Order("day ASC"). + Scan(&rows).Error + if err != nil { + return nil, err + } + return fillAddressHourlyStats(start, end, rows), nil +} + +// fillAddressDailyStats zero-fills missing day×address combinations. +// All addresses that appear in rows are represented for every day in range. +func fillAddressDailyStats(start, end time.Time, rows []AddressDailyStat) []AddressDailyStat { + return fillAddressStats(start, end, rows, false) +} + +// fillAddressHourlyStats zero-fills missing hour×address combinations. +func fillAddressHourlyStats(start, end time.Time, rows []AddressDailyStat) []AddressDailyStat { + return fillAddressStats(start, end, rows, true) +} + +func fillAddressStats(start, end time.Time, rows []AddressDailyStat, hourly bool) []AddressDailyStat { + type key struct{ day, addr string } + byKey := make(map[key]float64, len(rows)) + addrSet := make(map[string]struct{}, 4) + for _, r := range rows { + byKey[key{r.Day, r.Address}] = r.ActualAmount + addrSet[r.Address] = struct{}{} + } + if len(addrSet) == 0 { + return rows + } + var periods []string + if hourly { + cur := time.Date(start.Year(), start.Month(), start.Day(), start.Hour(), 0, 0, 0, start.Location()) + endH := time.Date(end.Year(), end.Month(), end.Day(), end.Hour(), 0, 0, 0, end.Location()) + for !cur.After(endH) { + periods = append(periods, cur.Format("2006-01-02 15:00")) + cur = cur.Add(time.Hour) + } + } else { + cur := time.Date(start.Year(), start.Month(), start.Day(), 0, 0, 0, 0, start.Location()) + last := time.Date(end.Year(), end.Month(), end.Day(), 0, 0, 0, 0, end.Location()) + for !cur.After(last) { + periods = append(periods, cur.Format("2006-01-02")) + cur = cur.AddDate(0, 0, 1) + } + } + var out []AddressDailyStat + for _, day := range periods { + for addr := range addrSet { + out = append(out, AddressDailyStat{ + Day: day, + Address: addr, + ActualAmount: byKey[key{day, addr}], + }) + } + } + return out +} + +// SumPaidActualAmount returns the total paid actual_amount across all +// time. Used by the overview "total asset" card. +func SumPaidActualAmount() (float64, error) { + var sum float64 + err := dao.Mdb.Model(&mdb.Orders{}). + Select("COALESCE(SUM(actual_amount), 0)"). + Where("status = ?", mdb.StatusPaySuccess). + Scan(&sum).Error + return sum, err +} + +// PaidStatsInRange returns (order_count, success_count, actual_sum) for +// a given time range. Caller chooses the range (today / last 7 days). +func PaidStatsInRange(start, end time.Time) (int64, int64, float64, error) { + type row struct { + OrderCount int64 + SuccessCount int64 + ActualSum float64 + } + var r row + err := dao.Mdb.Model(&mdb.Orders{}). + Select(`COUNT(*) AS order_count, + SUM(CASE WHEN status = ? THEN 1 ELSE 0 END) AS success_count, + SUM(CASE WHEN status = ? THEN actual_amount ELSE 0 END) AS actual_sum`, + mdb.StatusPaySuccess, mdb.StatusPaySuccess). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Scan(&r).Error + return r.OrderCount, r.SuccessCount, r.ActualSum, err +} + +// ActiveAddressCountInRange returns the number of distinct wallet addresses +// that appear in at least one order within [start, end]. +func ActiveAddressCountInRange(start, end time.Time) (int64, error) { + var count int64 + err := dao.Mdb.Model(&mdb.Orders{}). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Distinct("receive_address"). + Count(&count).Error + return count, err +} + +// AveragePaymentDurationSeconds returns the mean elapsed time between +// created_at and updated_at for orders that reached StatusPaySuccess +// in the given range. Zero-safe when no rows match. +func AveragePaymentDurationSeconds(start, end time.Time) (float64, error) { + type row struct { + Avg float64 + } + var r row + // Using TIMESTAMPDIFF would be MySQL-specific. Fetch the raw + // columns and compute in Go — trend windows are small enough. + type pair struct { + CreatedAt time.Time + UpdatedAt time.Time + } + var pairs []pair + err := dao.Mdb.Model(&mdb.Orders{}). + Select("created_at, updated_at"). + Where("status = ?", mdb.StatusPaySuccess). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Scan(&pairs).Error + if err != nil { + return 0, err + } + if len(pairs) == 0 { + return 0, nil + } + total := 0.0 + for _, p := range pairs { + total += p.UpdatedAt.Sub(p.CreatedAt).Seconds() + } + r.Avg = total / float64(len(pairs)) + return r.Avg, nil +} + +// CountExpiredInRange returns the number of StatusExpired orders in range. +func CountExpiredInRange(start, end time.Time) (int64, error) { + var n int64 + err := dao.Mdb.Model(&mdb.Orders{}). + Where("status = ?", mdb.StatusExpired). + Where("created_at >= ?", start). + Where("created_at <= ?", end). + Count(&n).Error + return n, err +} + +// RecentOrders returns the latest N orders regardless of status. +func RecentOrders(limit int) ([]mdb.Orders, error) { + if limit < 1 { + limit = 20 + } + if limit > 100 { + limit = 100 + } + var rows []mdb.Orders + err := dao.Mdb.Model(&mdb.Orders{}). + Order("id DESC"). + Limit(limit). + Find(&rows).Error + return rows, err +} + +// CountEnabledChains counts chains where Enabled=true. +func CountEnabledChains() (int64, error) { + var n int64 + err := dao.Mdb.Model(&mdb.Chain{}).Where("enabled = ?", true).Count(&n).Error + return n, err +} diff --git a/src/model/data/order_data_test.go b/src/model/data/order_data_test.go new file mode 100644 index 0000000..0da602f --- /dev/null +++ b/src/model/data/order_data_test.go @@ -0,0 +1,62 @@ +package data + +import ( + "strings" + "testing" + "time" + + "github.com/assimon/luuu/internal/testutil" + "github.com/assimon/luuu/model/mdb" +) + +func TestEvmTransactionLockAddressIsCaseInsensitive(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + tradeID := "trade-evm-case" + address := "0xA1B2c3D4e5F60718293aBcDeF001122334455667" + + if err := LockTransaction("Ethereum", address, "usdt", tradeID, 1.23, time.Hour); err != nil { + t.Fatalf("lock transaction: %v", err) + } + + gotTradeID, err := GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkEthereum, strings.ToLower(address), "USDT", 1.23) + if err != nil { + t.Fatalf("lookup transaction lock: %v", err) + } + if gotTradeID != tradeID { + t.Fatalf("trade id = %q, want %q", gotTradeID, tradeID) + } + + if err := UnLockTransaction(mdb.NetworkEthereum, strings.ToUpper(address), "USDT", 1.23); err != nil { + t.Fatalf("unlock transaction: %v", err) + } + + gotTradeID, err = GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkEthereum, address, "USDT", 1.23) + if err != nil { + t.Fatalf("lookup after unlock: %v", err) + } + if gotTradeID != "" { + t.Fatalf("expected lock to be released, got trade id %q", gotTradeID) + } +} + +func TestNonEvmTransactionLockAddressRemainsCaseSensitive(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + tradeID := "trade-tron-case" + address := "TCaseSensitiveAddress001" + + if err := LockTransaction(mdb.NetworkTron, address, "USDT", tradeID, 1.00, time.Hour); err != nil { + t.Fatalf("lock transaction: %v", err) + } + + gotTradeID, err := GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkTron, strings.ToLower(address), "USDT", 1.00) + if err != nil { + t.Fatalf("lookup transaction lock: %v", err) + } + if gotTradeID != "" { + t.Fatalf("tron address lookup should remain case-sensitive, got trade id %q", gotTradeID) + } +} diff --git a/src/model/data/rpc_node_data.go b/src/model/data/rpc_node_data.go new file mode 100644 index 0000000..701b105 --- /dev/null +++ b/src/model/data/rpc_node_data.go @@ -0,0 +1,117 @@ +package data + +import ( + "math/rand" + "strings" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" + "github.com/dromara/carbon/v2" +) + +// ListRpcNodes returns rows optionally filtered by network. +func ListRpcNodes(network string) ([]mdb.RpcNode, error) { + var rows []mdb.RpcNode + tx := dao.Mdb.Model(&mdb.RpcNode{}) + if network != "" { + tx = tx.Where("network = ?", strings.ToLower(network)) + } + err := tx.Order("id ASC").Find(&rows).Error + return rows, err +} + +// GetRpcNodeByID fetches one row. +func GetRpcNodeByID(id uint64) (*mdb.RpcNode, error) { + row := new(mdb.RpcNode) + err := dao.Mdb.Model(row).Limit(1).Find(row, id).Error + return row, err +} + +// CreateRpcNode inserts a row. +func CreateRpcNode(row *mdb.RpcNode) error { + return dao.Mdb.Create(row).Error +} + +// UpdateRpcNodeFields patches mutable columns. +func UpdateRpcNodeFields(id uint64, fields map[string]interface{}) error { + if len(fields) == 0 { + return nil + } + return dao.Mdb.Model(&mdb.RpcNode{}).Where("id = ?", id).Updates(fields).Error +} + +// DeleteRpcNodeByID soft-deletes the row. +func DeleteRpcNodeByID(id uint64) error { + return dao.Mdb.Where("id = ?", id).Delete(&mdb.RpcNode{}).Error +} + +// SelectRpcNode picks a healthy RPC endpoint for a (network, type) pair. +// Strategy: weighted random among rows where enabled=true AND status=ok. +// Falls back to any enabled row when none are healthy yet (bootstrap case +// where the health check hasn't run). Returns nil if nothing is defined. +func SelectRpcNode(network, nodeType string) (*mdb.RpcNode, error) { + var rows []mdb.RpcNode + err := dao.Mdb.Model(&mdb.RpcNode{}). + Where("network = ?", strings.ToLower(network)). + Where("type = ?", strings.ToLower(nodeType)). + Where("enabled = ?", true). + Find(&rows).Error + if err != nil { + return nil, err + } + if len(rows) == 0 { + return nil, nil + } + healthy := rows[:0] + for _, r := range rows { + if r.Status == mdb.RpcNodeStatusOk { + healthy = append(healthy, r) + } + } + candidates := healthy + if len(candidates) == 0 { + candidates = rows // bootstrap: no health check has run yet + } + return pickWeighted(candidates), nil +} + +// pickWeighted chooses one row using the Weight column. Weights < 1 are +// coerced to 1 so an admin-zeroed row still has a chance (use Enabled=false +// to truly disable). +func pickWeighted(rows []mdb.RpcNode) *mdb.RpcNode { + total := 0 + for i := range rows { + w := rows[i].Weight + if w < 1 { + w = 1 + } + total += w + } + if total <= 0 { + return &rows[0] + } + pick := rand.Intn(total) + acc := 0 + for i := range rows { + w := rows[i].Weight + if w < 1 { + w = 1 + } + acc += w + if pick < acc { + return &rows[i] + } + } + return &rows[len(rows)-1] +} + +// UpdateRpcNodeHealth stamps status/latency + last_checked_at. +func UpdateRpcNodeHealth(id uint64, status string, latencyMs int) error { + return dao.Mdb.Model(&mdb.RpcNode{}). + Where("id = ?", id). + Updates(map[string]interface{}{ + "status": status, + "last_latency_ms": latencyMs, + "last_checked_at": carbon.Now().StdTime(), + }).Error +} diff --git a/src/model/data/settings_data.go b/src/model/data/settings_data.go new file mode 100644 index 0000000..a448665 --- /dev/null +++ b/src/model/data/settings_data.go @@ -0,0 +1,166 @@ +package data + +import ( + "strconv" + "strings" + "sync" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" + "gorm.io/gorm/clause" +) + +// Simple in-process cache. Settings are read frequently (on every order +// create, every scanner tick, etc.); the DB round-trip isn't free. Cache +// is invalidated explicitly via SetString/Delete and expires on process +// restart — that's enough for admin-edit semantics without TTL complexity. +var ( + settingsCache = map[string]string{} + settingsCacheMu sync.RWMutex + settingsLoadMu sync.Mutex // serializes the lazy bootstrap load + settingsLoaded bool +) + +func loadAllSettings() error { + var rows []mdb.Setting + if err := dao.Mdb.Find(&rows).Error; err != nil { + return err + } + settingsCacheMu.Lock() + defer settingsCacheMu.Unlock() + settingsCache = make(map[string]string, len(rows)) + for _, r := range rows { + settingsCache[r.Key] = r.Value + } + settingsLoaded = true + return nil +} + +// ensureLoaded performs a thread-safe lazy bootstrap of the cache. Uses +// a dedicated mutex + double-checked flag so two concurrent callers +// don't both hit the DB. Can't use sync.Once because ReloadSettings +// needs to be able to rebuild after a failed initial load. +func ensureLoaded() { + settingsCacheMu.RLock() + loaded := settingsLoaded + settingsCacheMu.RUnlock() + if loaded { + return + } + settingsLoadMu.Lock() + defer settingsLoadMu.Unlock() + // Recheck under the load mutex — another goroutine may have loaded + // while we were blocked. + settingsCacheMu.RLock() + loaded = settingsLoaded + settingsCacheMu.RUnlock() + if loaded { + return + } + _ = loadAllSettings() +} + +// ReloadSettings forces a refresh from DB. Call after external writes. +func ReloadSettings() error { + settingsLoadMu.Lock() + defer settingsLoadMu.Unlock() + return loadAllSettings() +} + +// GetSettingString returns the string value for key, or fallback if unset. +func GetSettingString(key, fallback string) string { + ensureLoaded() + settingsCacheMu.RLock() + defer settingsCacheMu.RUnlock() + v, ok := settingsCache[key] + if !ok || strings.TrimSpace(v) == "" { + return fallback + } + return v +} + +// GetSettingInt returns the int value for key, or fallback on miss/parse fail. +func GetSettingInt(key string, fallback int) int { + v := GetSettingString(key, "") + if v == "" { + return fallback + } + n, err := strconv.Atoi(v) + if err != nil { + return fallback + } + return n +} + +// GetSettingFloat returns the float value for key, or fallback on miss/parse fail. +func GetSettingFloat(key string, fallback float64) float64 { + v := GetSettingString(key, "") + if v == "" { + return fallback + } + f, err := strconv.ParseFloat(v, 64) + if err != nil { + return fallback + } + return f +} + +// GetSettingBool returns the bool value for key, or fallback on miss/parse fail. +func GetSettingBool(key string, fallback bool) bool { + v := GetSettingString(key, "") + if v == "" { + return fallback + } + b, err := strconv.ParseBool(v) + if err != nil { + return fallback + } + return b +} + +// SetSetting upserts a setting row and refreshes the cache entry. +func SetSetting(group, key, value, valueType string) error { + if valueType == "" { + valueType = mdb.SettingTypeString + } + row := mdb.Setting{Group: group, Key: key, Value: value, Type: valueType} + err := dao.Mdb.Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "key"}}, + DoUpdates: clause.AssignmentColumns([]string{"group", "value", "type", "updated_at"}), + }).Create(&row).Error + if err != nil { + return err + } + settingsCacheMu.Lock() + settingsCache[key] = value + settingsCacheMu.Unlock() + return nil +} + +// DeleteSetting removes a setting row and drops the cache entry. +func DeleteSetting(key string) error { + if err := dao.Mdb.Where("key = ?", key).Delete(&mdb.Setting{}).Error; err != nil { + return err + } + settingsCacheMu.Lock() + delete(settingsCache, key) + settingsCacheMu.Unlock() + return nil +} + +// sensitiveSettingKeys lists keys that must never be returned to API callers. +var sensitiveSettingKeys = []string{ + mdb.SettingKeyJwtSecret, +} + +// ListSettingsByGroup returns all rows for a given group (empty group = all), +// excluding any keys in sensitiveSettingKeys. +func ListSettingsByGroup(group string) ([]mdb.Setting, error) { + var rows []mdb.Setting + tx := dao.Mdb.Model(&mdb.Setting{}).Not("`key`", sensitiveSettingKeys) + if group != "" { + tx = tx.Where("`group` = ?", group) + } + err := tx.Order("`key` ASC").Find(&rows).Error + return rows, err +} diff --git a/src/model/data/supported_asset_data.go b/src/model/data/supported_asset_data.go deleted file mode 100644 index e691fba..0000000 --- a/src/model/data/supported_asset_data.go +++ /dev/null @@ -1,123 +0,0 @@ -package data - -import ( - "strings" - - "github.com/assimon/luuu/model/dao" - "github.com/assimon/luuu/model/mdb" - "github.com/assimon/luuu/util/constant" -) - -func normalizeNetworkToken(network, token string) (string, string) { - return strings.ToLower(strings.TrimSpace(network)), strings.ToUpper(strings.TrimSpace(token)) -} - -func AddSupportedAsset(network, token string, status int64) (*mdb.SupportedAsset, error) { - network, token = normalizeNetworkToken(network, token) - exist, err := GetSupportedAssetByNetworkAndToken(network, token) - if err != nil { - return nil, err - } - if exist.ID > 0 { - return nil, constant.SupportedAssetAlreadyExists - } - - deleted, err := getSupportedAssetByNetworkAndTokenUnscoped(network, token) - if err != nil { - return nil, err - } - if deleted.ID > 0 && deleted.DeletedAt.Valid { - deleted.Status = status - deleted.DeletedAt.Valid = false - if err := dao.Mdb.Unscoped().Save(deleted).Error; err != nil { - return nil, err - } - return deleted, nil - } - - asset := &mdb.SupportedAsset{ - Network: network, - Token: token, - Status: status, - } - err = dao.Mdb.Create(asset).Error - return asset, err -} - -func getSupportedAssetByNetworkAndTokenUnscoped(network, token string) (*mdb.SupportedAsset, error) { - network, token = normalizeNetworkToken(network, token) - asset := new(mdb.SupportedAsset) - err := dao.Mdb.Unscoped().Model(asset). - Where("network = ?", network). - Where("token = ?", token). - Limit(1).Find(asset).Error - return asset, err -} - -func GetSupportedAssetByNetworkAndToken(network, token string) (*mdb.SupportedAsset, error) { - network, token = normalizeNetworkToken(network, token) - asset := new(mdb.SupportedAsset) - err := dao.Mdb.Model(asset). - Where("network = ?", network). - Where("token = ?", token). - Limit(1).Find(asset).Error - return asset, err -} - -func GetSupportedAssetByID(id uint64) (*mdb.SupportedAsset, error) { - asset := new(mdb.SupportedAsset) - err := dao.Mdb.Model(asset).Limit(1).Find(asset, id).Error - return asset, err -} - -func UpdateSupportedAsset(id uint64, network, token string, status int64) (*mdb.SupportedAsset, error) { - network, token = normalizeNetworkToken(network, token) - - asset, err := GetSupportedAssetByID(id) - if err != nil { - return nil, err - } - if asset.ID <= 0 { - return nil, constant.SupportedAssetNotFound - } - - exist, err := GetSupportedAssetByNetworkAndToken(network, token) - if err != nil { - return nil, err - } - if exist.ID > 0 && exist.ID != id { - return nil, constant.SupportedAssetAlreadyExists - } - - asset.Network = network - asset.Token = token - asset.Status = status - if err := dao.Mdb.Save(asset).Error; err != nil { - return nil, err - } - return asset, nil -} - -func DeleteSupportedAssetByID(id uint64) error { - return dao.Mdb.Where("id = ?", id).Delete(&mdb.SupportedAsset{}).Error -} - -func ListSupportedAssets(network string) ([]mdb.SupportedAsset, error) { - network = strings.ToLower(strings.TrimSpace(network)) - var list []mdb.SupportedAsset - tx := dao.Mdb.Model(&mdb.SupportedAsset{}) - if network != "" { - tx = tx.Where("network = ?", network) - } - err := tx.Order("network asc, token asc").Find(&list).Error - return list, err -} - -func ListEnabledSupportedAssets() ([]mdb.SupportedAsset, error) { - var list []mdb.SupportedAsset - err := dao.Mdb.Model(&mdb.SupportedAsset{}). - Where("status = ?", mdb.TokenStatusEnable). - Order("network asc, token asc"). - Find(&list).Error - return list, err -} diff --git a/src/model/data/wallet_address_data.go b/src/model/data/wallet_address_data.go index add0a83..4f146b6 100644 --- a/src/model/data/wallet_address_data.go +++ b/src/model/data/wallet_address_data.go @@ -22,15 +22,22 @@ func isEVMNetwork(network string) bool { return false } +func normalizeWalletNetwork(network string) string { + return strings.ToLower(strings.TrimSpace(network)) +} + +func normalizeWalletAddressByNetwork(network, address string) string { + address = strings.TrimSpace(address) + if isEVMNetwork(normalizeWalletNetwork(network)) { + return strings.ToLower(address) + } + return address +} + // AddWalletAddressWithNetwork 创建指定网络的钱包地址 func AddWalletAddressWithNetwork(network, address string) (*mdb.WalletAddress, error) { - network = strings.ToLower(strings.TrimSpace(network)) - address = strings.TrimSpace(address) - - // evm 网络地址统一小写,tron 和 solana 保持原样 - if isEVMNetwork(network) { - address = strings.ToLower(address) - } + network = normalizeWalletNetwork(network) + address = normalizeWalletAddressByNetwork(network, address) exist, err := GetWalletAddressByNetworkAndAddress(network, address) if err != nil { @@ -39,6 +46,23 @@ func AddWalletAddressWithNetwork(network, address string) (*mdb.WalletAddress, e if exist.ID > 0 { return nil, constant.WalletAddressAlreadyExists } + + // Check for a soft-deleted record with the same (network, address) and restore it. + deleted := new(mdb.WalletAddress) + err = dao.Mdb.Unscoped(). + Where("network = ? AND address = ? AND deleted_at IS NOT NULL", network, address). + Limit(1).Find(deleted).Error + if err != nil { + return nil, err + } + if deleted.ID > 0 { + err = dao.Mdb.Unscoped().Model(deleted).Updates(map[string]interface{}{ + "deleted_at": nil, + "status": mdb.TokenStatusEnable, + }).Error + return deleted, err + } + walletAddress := &mdb.WalletAddress{ Network: network, Address: address, @@ -50,6 +74,8 @@ func AddWalletAddressWithNetwork(network, address string) (*mdb.WalletAddress, e // GetWalletAddressByNetworkAndAddress 通过网络和地址查询 func GetWalletAddressByNetworkAndAddress(network, address string) (*mdb.WalletAddress, error) { + network = normalizeWalletNetwork(network) + address = normalizeWalletAddressByNetwork(network, address) walletAddress := new(mdb.WalletAddress) err := dao.Mdb.Model(walletAddress). Where("network = ?", network). @@ -87,11 +113,20 @@ func GetAvailableWalletAddress() ([]mdb.WalletAddress, error) { // GetAvailableWalletAddressByNetwork 获得指定网络的所有可用钱包地址 func GetAvailableWalletAddressByNetwork(network string) ([]mdb.WalletAddress, error) { + network = normalizeWalletNetwork(network) var list []mdb.WalletAddress err := dao.Mdb.Model(list). Where("status = ?", mdb.TokenStatusEnable). Where("network = ?", network). Find(&list).Error + if err != nil { + return nil, err + } + if isEVMNetwork(network) { + for i := range list { + list[i].Address = strings.ToLower(strings.TrimSpace(list[i].Address)) + } + } return list, err } @@ -104,8 +139,17 @@ func GetAllWalletAddress() ([]mdb.WalletAddress, error) { // GetAllWalletAddressByNetwork 获得指定网络的所有钱包地址 func GetAllWalletAddressByNetwork(network string) ([]mdb.WalletAddress, error) { + network = normalizeWalletNetwork(network) var list []mdb.WalletAddress err := dao.Mdb.Model(list).Where("network = ?", network).Find(&list).Error + if err != nil { + return nil, err + } + if isEVMNetwork(network) { + for i := range list { + list[i].Address = strings.ToLower(strings.TrimSpace(list[i].Address)) + } + } return list, err } diff --git a/src/model/data/wallet_address_data_test.go b/src/model/data/wallet_address_data_test.go new file mode 100644 index 0000000..673efdd --- /dev/null +++ b/src/model/data/wallet_address_data_test.go @@ -0,0 +1,83 @@ +package data + +import ( + "strings" + "testing" + + "github.com/assimon/luuu/internal/testutil" + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" +) + +func TestAddWalletAddressWithNetworkNormalizesEvmAddressToLowercase(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + input := "0xA1B2c3D4e5F60718293aBcDeF001122334455667" + row, err := AddWalletAddressWithNetwork(mdb.NetworkEthereum, input) + if err != nil { + t.Fatalf("add wallet: %v", err) + } + if row.Address != strings.ToLower(input) { + t.Fatalf("wallet address = %q, want %q", row.Address, strings.ToLower(input)) + } + + loaded, err := GetWalletAddressByNetworkAndAddress(mdb.NetworkEthereum, strings.ToUpper(input)) + if err != nil { + t.Fatalf("load wallet by mixed-case address: %v", err) + } + if loaded.ID == 0 { + t.Fatal("expected to find wallet by mixed-case query") + } + if loaded.Address != strings.ToLower(input) { + t.Fatalf("stored wallet address = %q, want lowercase", loaded.Address) + } +} + +func TestGetAvailableWalletAddressByNetworkReturnsLowercaseForEvm(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + mixed := "0xA1B2c3D4e5F60718293aBcDeF001122334455667" + if err := dao.Mdb.Create(&mdb.WalletAddress{ + Network: mdb.NetworkEthereum, + Address: mixed, + Status: mdb.TokenStatusEnable, + }).Error; err != nil { + t.Fatalf("seed mixed-case wallet: %v", err) + } + + rows, err := GetAvailableWalletAddressByNetwork("Ethereum") + if err != nil { + t.Fatalf("list wallets: %v", err) + } + if len(rows) != 1 { + t.Fatalf("wallet count = %d, want 1", len(rows)) + } + if rows[0].Address != strings.ToLower(mixed) { + t.Fatalf("listed wallet address = %q, want %q", rows[0].Address, strings.ToLower(mixed)) + } +} + +func TestAddWalletAddressWithNetworkKeepsOriginalCaseForNonEvm(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + tronAddress := "TCaseSensitiveTronAddress001" + tronRow, err := AddWalletAddressWithNetwork(mdb.NetworkTron, tronAddress) + if err != nil { + t.Fatalf("add tron wallet: %v", err) + } + if tronRow.Address != tronAddress { + t.Fatalf("tron wallet address = %q, want %q", tronRow.Address, tronAddress) + } + + solAddress := "SoLAnACaseSensitiveAddress111111111111111111" + solRow, err := AddWalletAddressWithNetwork(mdb.NetworkSolana, solAddress) + if err != nil { + t.Fatalf("add solana wallet: %v", err) + } + if solRow.Address != solAddress { + t.Fatalf("solana wallet address = %q, want %q", solRow.Address, solAddress) + } +} diff --git a/src/model/mdb/admin_user.go b/src/model/mdb/admin_user.go new file mode 100644 index 0000000..f695e96 --- /dev/null +++ b/src/model/mdb/admin_user.go @@ -0,0 +1,21 @@ +package mdb + +import "github.com/dromara/carbon/v2" + +const ( + AdminUserStatusEnable = 1 + AdminUserStatusDisable = 2 +) + +type AdminUser struct { + Username string `gorm:"column:username;uniqueIndex:admin_users_username_uindex;size:64" json:"username" example:"admin"` + PasswordHash string `gorm:"column:password_hash;size:255" json:"-"` + // 状态 1=启用 2=禁用 + Status int `gorm:"column:status;default:1" json:"status" enums:"1,2" example:"1"` + LastLoginAt carbon.Time `gorm:"column:last_login_at" json:"last_login_at" example:"2026-04-16 12:00:00"` + BaseModel +} + +func (a *AdminUser) TableName() string { + return "admin_users" +} diff --git a/src/model/mdb/api_key.go b/src/model/mdb/api_key.go new file mode 100644 index 0000000..30c5a61 --- /dev/null +++ b/src/model/mdb/api_key.go @@ -0,0 +1,29 @@ +package mdb + +import "github.com/dromara/carbon/v2" + +const ( + ApiKeyStatusEnable = 1 + ApiKeyStatusDisable = 2 +) + +// ApiKey stores a universal merchant credential (PID + secret) that is +// valid for both EPAY and GMPAY payment flows. Identification at +// request time is always by PID; the gateway flow is chosen by the +// route (not by any property of the row). +type ApiKey struct { + Name string `gorm:"column:name;size:128" json:"name" example:"My API Key"` + Pid string `gorm:"column:pid;size:128;uniqueIndex:api_keys_pid_uindex" json:"pid" example:"1000"` + SecretKey string `gorm:"column:secret_key;size:255" json:"-"` + IpWhitelist string `gorm:"column:ip_whitelist;type:text" json:"ip_whitelist" example:"192.168.1.0/24,10.0.0.1"` + NotifyUrl string `gorm:"column:notify_url;size:512" json:"notify_url" example:"https://example.com/notify"` + // 状态 1=启用 2=禁用 + Status int `gorm:"column:status;default:1" json:"status" enums:"1,2" example:"1"` + CallCount int64 `gorm:"column:call_count;default:0" json:"call_count" example:"342"` + LastUsedAt carbon.Time `gorm:"column:last_used_at" json:"last_used_at" example:"2026-04-16 12:00:00"` + BaseModel +} + +func (a *ApiKey) TableName() string { + return "api_keys" +} diff --git a/src/model/mdb/base.go b/src/model/mdb/base.go index 0de7992..3fe1391 100644 --- a/src/model/mdb/base.go +++ b/src/model/mdb/base.go @@ -6,8 +6,8 @@ import ( ) type BaseModel struct { - ID uint64 `gorm:"column:id;primary_key;autoIncrement" json:"id"` - CreatedAt carbon.Time `gorm:"column:created_at" json:"created_at"` - UpdatedAt carbon.Time `gorm:"column:updated_at" json:"updated_at"` + ID uint64 `gorm:"column:id;primary_key;autoIncrement" json:"id" example:"1"` + CreatedAt carbon.Time `gorm:"column:created_at" json:"created_at" example:"2026-04-16 12:00:00"` + UpdatedAt carbon.Time `gorm:"column:updated_at" json:"updated_at" example:"2026-04-16 12:00:00"` DeletedAt gorm.DeletedAt `gorm:"index" json:"deleted_at"` } diff --git a/src/model/mdb/chain.go b/src/model/mdb/chain.go new file mode 100644 index 0000000..c98ce20 --- /dev/null +++ b/src/model/mdb/chain.go @@ -0,0 +1,19 @@ +package mdb + +// Chain represents an enabled blockchain network. +// Scanner tasks read this table on each polling tick to decide whether to +// process the network. When Enabled=false the scanner skips the chain +// entirely without restarting. +type Chain struct { + Network string `gorm:"column:network;uniqueIndex:chains_network_uindex;size:32" json:"network" example:"tron"` + DisplayName string `gorm:"column:display_name;size:64" json:"display_name" example:"Tron"` + Enabled bool `gorm:"column:enabled;default:true" json:"enabled" example:"true"` + MinConfirmations int `gorm:"column:min_confirmations;default:1" json:"min_confirmations" example:"20"` + ScanIntervalSec int `gorm:"column:scan_interval_sec;default:5" json:"scan_interval_sec" example:"5"` + Extra string `gorm:"column:extra;type:text" json:"extra" example:"{}"` + BaseModel +} + +func (c *Chain) TableName() string { + return "chains" +} diff --git a/src/model/mdb/chain_token.go b/src/model/mdb/chain_token.go new file mode 100644 index 0000000..5698563 --- /dev/null +++ b/src/model/mdb/chain_token.go @@ -0,0 +1,24 @@ +package mdb + +const ( + ChainTokenStatusEnable = 1 + ChainTokenStatusDisable = 2 +) + +// ChainToken describes a token to watch on a given chain. Replaces the +// hardcoded USDT/USDC contract addresses in task/listen_eth.go. Scanners +// load this table on startup (and refresh periodically) to learn which +// contracts to subscribe to. +type ChainToken struct { + Network string `gorm:"column:network;size:32;uniqueIndex:chain_tokens_network_symbol_uindex,priority:1" json:"network" example:"tron"` + Symbol string `gorm:"column:symbol;size:32;uniqueIndex:chain_tokens_network_symbol_uindex,priority:2" json:"symbol" example:"USDT"` + ContractAddress string `gorm:"column:contract_address;size:128" json:"contract_address" example:"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"` + Decimals int `gorm:"column:decimals;default:6" json:"decimals" example:"6"` + Enabled bool `gorm:"column:enabled;default:true" json:"enabled" example:"true"` + MinAmount float64 `gorm:"column:min_amount;default:0" json:"min_amount" example:"1.0"` + BaseModel +} + +func (c *ChainToken) TableName() string { + return "chain_tokens" +} diff --git a/src/model/mdb/notification_channel.go b/src/model/mdb/notification_channel.go new file mode 100644 index 0000000..d4a6f77 --- /dev/null +++ b/src/model/mdb/notification_channel.go @@ -0,0 +1,36 @@ +package mdb + +const ( + NotificationTypeTelegram = "telegram" + NotificationTypeWebhook = "webhook" + NotificationTypeEmail = "email" +) + +const ( + NotificationStatusEnable = 1 + NotificationStatusDisable = 2 +) + +// Notification events (JSON keys in Events column). +const ( + NotifyEventPaySuccess = "pay_success" + NotifyEventOrderExpired = "order_expired" + NotifyEventDailyReport = "daily_report" +) + +// NotificationChannel represents one push target instance. +// Config/Events are JSON strings consumed by the notify dispatcher. +// For telegram, Config = {"bot_token":"...","chat_id":"...","proxy":"..."}. +// For webhook, Config = {"url":"...","headers":{...},"secret":"..."}. +type NotificationChannel struct { + Type string `gorm:"column:type;size:32;index:notification_channels_type_enabled_index,priority:1" json:"type" enums:"telegram,webhook,email" example:"telegram"` + Name string `gorm:"column:name;size:128" json:"name" example:"主通知群"` + Config string `gorm:"column:config;type:text" json:"config" example:"{\"bot_token\":\"123:ABC\",\"chat_id\":\"456\"}"` + Events string `gorm:"column:events;type:text" json:"events" example:"{\"pay_success\":true,\"order_expired\":true}"` + Enabled bool `gorm:"column:enabled;default:true;index:notification_channels_type_enabled_index,priority:2" json:"enabled" example:"true"` + BaseModel +} + +func (n *NotificationChannel) TableName() string { + return "notification_channels" +} diff --git a/src/model/mdb/orders_mdb.go b/src/model/mdb/orders_mdb.go index 9350b2c..afa87e7 100644 --- a/src/model/mdb/orders_mdb.go +++ b/src/model/mdb/orders_mdb.go @@ -13,24 +13,30 @@ const ( ) type Orders struct { - TradeId string `gorm:"column:trade_id;uniqueIndex:orders_trade_id_uindex" json:"trade_id"` - OrderId string `gorm:"column:order_id;uniqueIndex:orders_order_id_uindex" json:"order_id"` // the order id is generated by client, and will notify client when order is paid + TradeId string `gorm:"column:trade_id;uniqueIndex:orders_trade_id_uindex" json:"trade_id" example:"T2026041612345678"` + OrderId string `gorm:"column:order_id;uniqueIndex:orders_order_id_uindex" json:"order_id" example:"ORD20260416001"` ParentTradeId string `gorm:"column:parent_trade_id;index:idx_orders_parent_trade_id;default:''" json:"parent_trade_id"` - BlockTransactionId string `gorm:"index:orders_block_transaction_id_index;column:block_transaction_id" json:"block_transaction_id"` - Amount float64 `gorm:"column:amount" json:"amount"` - Currency string `gorm:"column:currency" json:"currency"` - ActualAmount float64 `gorm:"column:actual_amount" json:"actual_amount"` - ReceiveAddress string `gorm:"column:receive_address" json:"receive_address"` - Token string `gorm:"column:token" json:"token"` - Network string `gorm:"column:network" json:"network"` - Status int `gorm:"column:status;default:1" json:"status"` - NotifyUrl string `gorm:"column:notify_url" json:"notify_url"` - RedirectUrl string `gorm:"column:redirect_url" json:"redirect_url"` - Name string `gorm:"column:name" json:"name"` - CallbackNum int `gorm:"column:callback_num;default:0" json:"callback_num"` - CallBackConfirm int `gorm:"column:callback_confirm;default:2" json:"callback_confirm"` - IsSelected bool `gorm:"column:is_selected;default:false" json:"is_selected"` - PaymentType string `gorm:"column:payment_type" json:"payment_type"` + BlockTransactionId string `gorm:"index:orders_block_transaction_id_index;column:block_transaction_id" json:"block_transaction_id" example:"0xabc123..."` + Amount float64 `gorm:"column:amount" json:"amount" example:"100.0000"` + Currency string `gorm:"column:currency" json:"currency" example:"CNY"` + ActualAmount float64 `gorm:"column:actual_amount" json:"actual_amount" example:"14.2857"` + ReceiveAddress string `gorm:"column:receive_address" json:"receive_address" example:"TTestTronAddress001"` + Token string `gorm:"column:token" json:"token" example:"USDT"` + Network string `gorm:"column:network" json:"network" example:"tron"` + // 订单状态 1=等待支付 2=支付成功 3=已过期 + Status int `gorm:"column:status;default:1" json:"status" enums:"1,2,3" example:"1"` + NotifyUrl string `gorm:"column:notify_url" json:"notify_url" example:"https://example.com/notify"` + RedirectUrl string `gorm:"column:redirect_url" json:"redirect_url" example:"https://example.com/success"` + Name string `gorm:"column:name" json:"name" example:"VIP月卡"` + CallbackNum int `gorm:"column:callback_num;default:0" json:"callback_num" example:"0"` + // 回调确认状态 1=回调成功 2=未回调/回调失败 + CallBackConfirm int `gorm:"column:callback_confirm;default:2" json:"callback_confirm" enums:"1,2" example:"2"` + IsSelected bool `gorm:"column:is_selected;default:false" json:"is_selected" example:"false"` + PaymentType string `gorm:"column:payment_type" json:"payment_type" example:"Epay"` + ApiKeyID uint64 `gorm:"column:api_key_id;default:0;index:orders_api_key_id_index" json:"api_key_id" example:"1"` + // PayBySubId holds the primary-key ID of the sub-order that settled this parent order. + // Zero when the parent order was paid directly (no sub-order involved). + PayBySubId uint64 `gorm:"column:pay_by_sub_id;default:0" json:"pay_by_sub_id" example:"0"` BaseModel } diff --git a/src/model/mdb/rpc_node.go b/src/model/mdb/rpc_node.go new file mode 100644 index 0000000..51ec7f7 --- /dev/null +++ b/src/model/mdb/rpc_node.go @@ -0,0 +1,36 @@ +package mdb + +import "github.com/dromara/carbon/v2" + +const ( + RpcNodeTypeHttp = "http" + RpcNodeTypeWs = "ws" +) + +const ( + RpcNodeStatusUnknown = "unknown" + RpcNodeStatusOk = "ok" + RpcNodeStatusDown = "down" +) + +// RpcNode records one RPC endpoint for a network. Clients select a node +// by weight among rows where Enabled=true AND Status=ok. A periodic +// task/rpc_health_job writes Status/LastLatencyMs/LastCheckedAt. +type RpcNode struct { + Network string `gorm:"column:network;size:32;index:rpc_nodes_network_status_index,priority:1" json:"network" example:"tron"` + Url string `gorm:"column:url;size:512" json:"url" example:"https://api.trongrid.io"` + // 连接类型 http=HTTP请求 ws=WebSocket长连接 + Type string `gorm:"column:type;size:16" json:"type" enums:"http,ws" example:"http"` + Weight int `gorm:"column:weight;default:1" json:"weight" example:"1"` + ApiKey string `gorm:"column:api_key;size:255" json:"api_key" example:"your-api-key"` + Enabled bool `gorm:"column:enabled;default:true" json:"enabled" example:"true"` + // 健康状态 unknown=未知 ok=正常 down=异常 + Status string `gorm:"column:status;size:16;default:unknown;index:rpc_nodes_network_status_index,priority:2" json:"status" enums:"unknown,ok,down" example:"ok"` + LastLatencyMs int `gorm:"column:last_latency_ms;default:-1" json:"last_latency_ms" example:"120"` + LastCheckedAt carbon.Time `gorm:"column:last_checked_at" json:"last_checked_at" example:"2026-04-16 12:00:00"` + BaseModel +} + +func (r *RpcNode) TableName() string { + return "rpc_nodes" +} diff --git a/src/model/mdb/settings.go b/src/model/mdb/settings.go new file mode 100644 index 0000000..49d3a6c --- /dev/null +++ b/src/model/mdb/settings.go @@ -0,0 +1,54 @@ +package mdb + +// Setting stores non-credential runtime configuration as key/value pairs. +// Groups: brand, rate, system, epay. Merchant credentials (pid + secret_key) +// live in the api_keys table; notification configs live in NotificationChannel. +// Default rows for the epay group are seeded on first startup (see +// model/dao/mdb_table_init.go seedDefaultSettings). All other groups start +// empty and fall back to hardcoded defaults until an admin sets them. +// Only exception: system.jwt_secret is auto-generated on first startup. +const ( + SettingGroupBrand = "brand" + SettingGroupRate = "rate" + SettingGroupSystem = "system" + SettingGroupEpay = "epay" +) + +const ( + SettingTypeString = "string" + SettingTypeInt = "int" + SettingTypeBool = "bool" + SettingTypeJSON = "json" +) + +const ( + SettingKeyJwtSecret = "system.jwt_secret" + SettingKeyOrderExpiration = "system.order_expiration_time" + SettingKeyBrandSiteName = "brand.site_name" + SettingKeyBrandLogoUrl = "brand.logo_url" + SettingKeyBrandPageTitle = "brand.page_title" + SettingKeyBrandPaySuccess = "brand.pay_success_text" + SettingKeyBrandSupportUrl = "brand.support_url" + SettingKeyRateForcedUsdt = "rate.forced_usdt_rate" + SettingKeyRateAdjustPercent = "rate.adjust_percent" + SettingKeyRateOkxC2cEnabled = "rate.okx_c2c_enabled" + SettingKeyRateApiUrl = "rate.api_url" + + // EPAY route defaults — can be overridden via admin settings. + SettingKeyEpayDefaultToken = "epay.default_token" + SettingKeyEpayDefaultCurrency = "epay.default_currency" + SettingKeyEpayDefaultNetwork = "epay.default_network" +) + +type Setting struct { + Group string `gorm:"column:group;size:32;index:settings_group_index" json:"group" enums:"brand,rate,system" example:"rate"` + Key string `gorm:"column:key;uniqueIndex:settings_key_uindex;size:128" json:"key" example:"rate.forced_usdt_rate"` + Value string `gorm:"column:value;type:text" json:"value" example:"7.2"` + Type string `gorm:"column:type;size:16;default:string" json:"type" enums:"string,int,bool,json" example:"string"` + Description string `gorm:"column:description;size:255" json:"description" example:"强制USDT汇率"` + BaseModel +} + +func (s *Setting) TableName() string { + return "settings" +} diff --git a/src/model/mdb/supported_asset_mdb.go b/src/model/mdb/supported_asset_mdb.go deleted file mode 100644 index 1698a67..0000000 --- a/src/model/mdb/supported_asset_mdb.go +++ /dev/null @@ -1,12 +0,0 @@ -package mdb - -type SupportedAsset struct { - Network string `gorm:"column:network;uniqueIndex:supported_asset_network_token_uindex,priority:1" json:"network"` - Token string `gorm:"column:token;uniqueIndex:supported_asset_network_token_uindex,priority:2" json:"token"` - Status int64 `gorm:"column:status;default:1" json:"status"` - BaseModel -} - -func (s *SupportedAsset) TableName() string { - return "supported_asset" -} diff --git a/src/model/mdb/wallet_address_mdb.go b/src/model/mdb/wallet_address_mdb.go index c9a7dc1..23c2fea 100644 --- a/src/model/mdb/wallet_address_mdb.go +++ b/src/model/mdb/wallet_address_mdb.go @@ -14,10 +14,18 @@ const ( NetworkPlasma = "plasma" ) +const ( + WalletSourceManual = "manual" + WalletSourceImport = "import" +) + type WalletAddress struct { - Network string `gorm:"column:network;uniqueIndex:wallet_address_network_address_uindex" json:"network"` - Address string `gorm:"column:address;uniqueIndex:wallet_address_network_address_uindex" json:"address"` - Status int64 `gorm:"column:status;default:1" json:"status"` + Network string `gorm:"column:network;uniqueIndex:wallet_address_network_address_uindex" json:"network" example:"tron"` + Address string `gorm:"column:address;uniqueIndex:wallet_address_network_address_uindex" json:"address" example:"TTestTronAddress001"` + // 状态 1=启用 2=禁用 + Status int64 `gorm:"column:status;default:1" json:"status" enums:"1,2" example:"1"` + Remark string `gorm:"column:remark;size:255" json:"remark" example:"主钱包"` + Source string `gorm:"column:source;size:16;default:manual" json:"source" enums:"manual,import" example:"manual"` BaseModel } diff --git a/src/model/request/base.go b/src/model/request/base.go index d49c51e..733abb4 100644 --- a/src/model/request/base.go +++ b/src/model/request/base.go @@ -8,8 +8,8 @@ const ( var OrderByFuncList = []string{OrderByFuncDesc, OrderByFuncAsc} type BaseRequest struct { - Page int `json:"page"` // 页数 - PageSize int `json:"page_size"` // 每页条数 - OrderField string `json:"order_field"` // 排序字段 - OrderFunc string `json:"order_func"` // 排序方法 + Page int `json:"page" example:"1"` // 页数 + PageSize int `json:"page_size" example:"20"` // 每页条数 + OrderField string `json:"order_field" example:"created_at"` // 排序字段 + OrderFunc string `json:"order_func" enums:"DESC,ASC" example:"DESC"` // 排序方法 } diff --git a/src/model/request/order_request.go b/src/model/request/order_request.go index b42e38e..37d3766 100644 --- a/src/model/request/order_request.go +++ b/src/model/request/order_request.go @@ -4,16 +4,16 @@ import "github.com/gookit/validate" // CreateTransactionRequest 创建交易请求 type CreateTransactionRequest struct { - OrderId string `json:"order_id" validate:"required|maxLen:32"` - Currency string `json:"currency" validate:"required"` // 法币 如:cny - Token string `json:"token" validate:"required"` // 币种 如:usdt - Network string `json:"network" validate:"required"` // 网络 如:TRON - Amount float64 `json:"amount" validate:"required|isFloat|gt:0.01"` - NotifyUrl string `json:"notify_url" validate:"required"` - Signature string `json:"signature" validate:"required"` - RedirectUrl string `json:"redirect_url"` - Name string `json:"name"` - PaymentType string `json:"payment_type"` + OrderId string `json:"order_id" form:"order_id" validate:"required|maxLen:32" example:"ORD20260416001"` + Currency string `json:"currency" form:"currency" validate:"required" example:"cny"` // 法币 如:cny + Token string `json:"token" form:"token" validate:"required" example:"usdt"` // 币种 如:usdt + Network string `json:"network" form:"network" validate:"required" example:"tron"` // 网络 如:tron + Amount float64 `json:"amount" form:"amount" validate:"required|isFloat|gt:0.01" example:"100.00"` + NotifyUrl string `json:"notify_url" form:"notify_url" validate:"required" example:"https://example.com/notify"` + Signature string `json:"signature" form:"signature" validate:"required" example:"a1b2c3d4e5f6..."` + RedirectUrl string `json:"redirect_url" form:"redirect_url" example:"https://example.com/success"` + Name string `json:"name" form:"name" example:"VIP月卡"` + PaymentType string `json:"payment_type" form:"payment_type" example:"Epay"` } func (r CreateTransactionRequest) Translates() map[string]string { @@ -41,9 +41,9 @@ type OrderProcessingRequest struct { // SwitchNetworkRequest 切换支付网络 type SwitchNetworkRequest struct { - TradeId string `json:"trade_id" validate:"required"` - Token string `json:"token" validate:"required"` - Network string `json:"network" validate:"required"` + TradeId string `json:"trade_id" validate:"required" example:"T2026041612345678"` + Token string `json:"token" validate:"required" example:"USDT"` + Network string `json:"network" validate:"required" example:"ethereum"` } func (r SwitchNetworkRequest) Translates() map[string]string { diff --git a/src/model/response/base.go b/src/model/response/base.go new file mode 100644 index 0000000..9fbdfac --- /dev/null +++ b/src/model/response/base.go @@ -0,0 +1,11 @@ +package response + +// ApiResponse is the standard JSON envelope used by all API endpoints. +// Used for swagger documentation only — the actual response is built +// by util/http.Resp. +type ApiResponse struct { + StatusCode int `json:"status_code" example:"200"` + Message string `json:"message" example:"success"` + Data interface{} `json:"data"` + RequestID string `json:"request_id" example:"req-123456"` +} diff --git a/src/model/response/order_response.go b/src/model/response/order_response.go index 729ab7d..8522eef 100644 --- a/src/model/response/order_response.go +++ b/src/model/response/order_response.go @@ -2,39 +2,41 @@ package response // CreateTransactionResponse 创建订单成功返回 type CreateTransactionResponse struct { - TradeId string `json:"trade_id"` // epusdt订单号 - OrderId string `json:"order_id"` // 客户交易id - Amount float64 `json:"amount"` // 订单金额,保留4位小数 - Currency string `json:"currency"` // 订单货币类型 CNY USD...... - ActualAmount float64 `json:"actual_amount"` // 订单实际需要支付的金额,保留4位小数 - ReceiveAddress string `json:"receive_address"` // 收款钱包地址 - Token string `json:"token"` // 所属币种 TRX USDT...... - ExpirationTime int64 `json:"expiration_time"` // 过期时间 时间戳 - PaymentUrl string `json:"payment_url"` // 收银台地址 + TradeId string `json:"trade_id" example:"T2026041612345678"` // epusdt订单号 + OrderId string `json:"order_id" example:"ORD20260416001"` // 客户交易id + Amount float64 `json:"amount" example:"100.0000"` // 订单金额,保留4位小数 + Currency string `json:"currency" example:"CNY"` // 订单货币类型 CNY USD...... + ActualAmount float64 `json:"actual_amount" example:"14.2857"` // 订单实际需要支付的金额,保留4位小数 + ReceiveAddress string `json:"receive_address" example:"TTestTronAddress001"` // 收款钱包地址 + Token string `json:"token" example:"USDT"` // 所属币种 TRX USDT...... + ExpirationTime int64 `json:"expiration_time" example:"1713264600"` // 过期时间 时间戳 + PaymentUrl string `json:"payment_url" example:"https://pay.example.com/checkout/T2026041612345678"` // 收银台地址 } // OrderNotifyResponse 订单异步回调结构体 type OrderNotifyResponse struct { - TradeId string `json:"trade_id"` // epusdt订单号 - OrderId string `json:"order_id"` // 客户交易id - Amount float64 `json:"amount"` // 订单金额,保留4位小数 - ActualAmount float64 `json:"actual_amount"` // 订单实际需要支付的金额,保留4位小数 - ReceiveAddress string `json:"receive_address"` // 收款钱包地址 - Token string `json:"token"` // 所属币种 TRX USDT...... - BlockTransactionId string `json:"block_transaction_id"` // 区块id - Signature string `json:"signature"` // 签名 - Status int `json:"status"` // 1:等待支付,2:支付成功,3:已过期 + Pid string `json:"pid" example:"1000"` // 签名使用的商户 PID,商户据此查本地 secret 验签 + TradeId string `json:"trade_id" example:"T2026041612345678"` // epusdt订单号 + OrderId string `json:"order_id" example:"ORD20260416001"` // 客户交易id + Amount float64 `json:"amount" example:"100.0000"` // 订单金额,保留4位小数 + ActualAmount float64 `json:"actual_amount" example:"14.2857"` // 订单实际需要支付的金额,保留4位小数 + ReceiveAddress string `json:"receive_address" example:"TTestTronAddress001"` // 收款钱包地址 + Token string `json:"token" example:"USDT"` // 所属币种 TRX USDT...... + BlockTransactionId string `json:"block_transaction_id" example:"0xabc123..."` // 区块id + Signature string `json:"signature" example:"a1b2c3d4e5f6..."` // 签名 MD5(sorted_params + secret_key) + // 订单状态 1=等待支付 2=支付成功 3=已过期 + Status int `json:"status" enums:"1,2,3" example:"2"` } // OrderNotifyResponseEpay epay订单异步回调结构体 type OrderNotifyResponseEpay struct { - PID int `json:"pid"` // 商户ID - TradeNo string `json:"trade_no"` // 平台订单号 - OutTradeNo string `json:"out_trade_no"` // 商户订单号 - Type string `json:"type"` // 订单类型 - Name string `json:"name"` // 商品名称 - Money string `json:"money"` // 订单金额,保留4位小数 - Sign string `json:"sign"` // 签名 - SignType string `json:"sign_type"` // 签名类型 // MD5 - TradeStatus string `json:"trade_status"` // 订单状态 // only has "TRADE_SUCCESS" for now + PID int `json:"pid" example:"1001"` // 商户ID + TradeNo string `json:"trade_no" example:"T2026041612345678"` // 平台订单号 + OutTradeNo string `json:"out_trade_no" example:"ORD20260416001"` // 商户订单号 + Type string `json:"type" example:"usdt"` // 订单类型 + Name string `json:"name" example:"VIP月卡"` // 商品名称 + Money string `json:"money" example:"100.0000"` // 订单金额,保留4位小数 + Sign string `json:"sign" example:"a1b2c3d4..."` // 签名 + SignType string `json:"sign_type" example:"MD5"` // 签名类型 + TradeStatus string `json:"trade_status" example:"TRADE_SUCCESS"` // 订单状态 } diff --git a/src/model/response/pay_response.go b/src/model/response/pay_response.go index 190194e..4432f59 100644 --- a/src/model/response/pay_response.go +++ b/src/model/response/pay_response.go @@ -1,20 +1,21 @@ package response type CheckoutCounterResponse struct { - TradeId string `json:"trade_id"` // epusdt订单号 - Amount float64 `json:"amount"` // 订单金额,保留4位小数 法币金额 - ActualAmount float64 `json:"actual_amount"` // 订单实际需要支付的金额,保留4位小数 加密货币金额 - Token string `json:"token"` // 所属币种 TRX USDT...... - Currency string `json:"currency"` // 法币币种 CNY USD ... - ReceiveAddress string `json:"receive_address"` // 收款钱包地址 - Network string `json:"network"` // 网络 TRON ETH ... - ExpirationTime int64 `json:"expiration_time"` // 过期时间 时间戳 - RedirectUrl string `json:"redirect_url"` - CreatedAt int64 `json:"created_at"` // 订单创建时间 时间戳 - IsSelected bool `json:"is_selected"` + TradeId string `json:"trade_id" example:"T2026041612345678"` // epusdt订单号 + Amount float64 `json:"amount" example:"100.0000"` // 订单金额,保留4位小数 法币金额 + ActualAmount float64 `json:"actual_amount" example:"14.2857"` // 订单实际需要支付的金额,保留4位小数 加密货币金额 + Token string `json:"token" example:"USDT"` // 所属币种 TRX USDT...... + Currency string `json:"currency" example:"CNY"` // 法币币种 CNY USD ... + ReceiveAddress string `json:"receive_address" example:"TTestTronAddress001"` // 收款钱包地址 + Network string `json:"network" example:"tron"` // 网络 TRON ETH ... + ExpirationTime int64 `json:"expiration_time" example:"1713264600"` // 过期时间 时间戳 + RedirectUrl string `json:"redirect_url" example:"https://example.com/success"` + CreatedAt int64 `json:"created_at" example:"1713264000"` // 订单创建时间 时间戳 + IsSelected bool `json:"is_selected" example:"false"` } type CheckStatusResponse struct { - TradeId string `json:"trade_id"` // epusdt订单号 - Status int `json:"status"` + TradeId string `json:"trade_id" example:"T2026041612345678"` // epusdt订单号 + // 订单状态 1=等待支付 2=支付成功 3=已过期 + Status int `json:"status" enums:"1,2,3" example:"1"` } diff --git a/src/model/response/support_response.go b/src/model/response/support_response.go index b78855d..1317aa9 100644 --- a/src/model/response/support_response.go +++ b/src/model/response/support_response.go @@ -1,8 +1,8 @@ package response type NetworkTokenSupport struct { - Network string `json:"network"` - Tokens []string `json:"tokens"` + Network string `json:"network" example:"tron"` + Tokens []string `json:"tokens" example:"USDT,USDC"` } type SupportedAssetsResponse struct { diff --git a/src/model/service/order_service.go b/src/model/service/order_service.go index 27aced1..ea143d2 100644 --- a/src/model/service/order_service.go +++ b/src/model/service/order_service.go @@ -33,8 +33,28 @@ var ( gOrderProcessingLock sync.Mutex ) +// apiKeyID safely extracts the primary key from an ApiKey row. +// Returns 0 when apiKey is nil (middleware didn't run — shouldn't happen on authed routes). +func apiKeyID(apiKey *mdb.ApiKey) uint64 { + if apiKey == nil { + return 0 + } + return apiKey.ID +} + +func normalizeOrderAddressByNetwork(network, address string) string { + network = strings.ToLower(strings.TrimSpace(network)) + address = strings.TrimSpace(address) + switch network { + case mdb.NetworkEthereum, mdb.NetworkBsc, mdb.NetworkPolygon, mdb.NetworkPlasma: + return strings.ToLower(address) + default: + return address + } +} + // CreateTransaction creates a new payment order. -func CreateTransaction(req *request.CreateTransactionRequest) (*response.CreateTransactionResponse, error) { +func CreateTransaction(req *request.CreateTransactionRequest, apiKey *mdb.ApiKey) (*response.CreateTransactionResponse, error) { gCreateTransactionLock.Lock() defer gCreateTransactionLock.Unlock() @@ -64,6 +84,9 @@ func CreateTransaction(req *request.CreateTransactionRequest) (*response.CreateT return nil, constant.OrderAlreadyExists } + if !data.IsChainEnabled(network) { + return nil, constant.ChainNotEnabled + } walletAddress, err := data.GetAvailableWalletAddressByNetwork(network) if err != nil { return nil, err @@ -97,6 +120,7 @@ func CreateTransaction(req *request.CreateTransactionRequest) (*response.CreateT RedirectUrl: req.RedirectUrl, Name: req.Name, PaymentType: req.PaymentType, + ApiKeyID: apiKeyID(apiKey), } if err = data.CreateOrderWithTransaction(tx, order); err != nil { tx.Rollback() @@ -161,7 +185,7 @@ func OrderProcessing(req *request.OrderProcessingRequest) error { // Load order to check parent-child relationship order, err := data.GetOrderInfoByTradeId(req.TradeId) if err != nil { - return nil + return fmt.Errorf("load paid order failed, trade_id=%s: %w", req.TradeId, err) } // Parent order paid directly: expire all sub-orders and release their locks @@ -169,7 +193,7 @@ func OrderProcessing(req *request.OrderProcessingRequest) error { subs, subErr := data.GetActiveSubOrders(order.TradeId) if subErr != nil { log.Sugar.Errorf("[order] get sub-orders for parent failed, trade_id=%s, err=%v", order.TradeId, subErr) - return nil + return fmt.Errorf("load sub-orders failed, parent_trade_id=%s: %w", order.TradeId, subErr) } for _, sub := range subs { if err = data.ExpireOrderByTradeId(sub.TradeId); err != nil { @@ -182,22 +206,48 @@ func OrderProcessing(req *request.OrderProcessingRequest) error { return nil } - // Sub-order should not trigger its own callback (notify_url is empty). - // OrderSuccessWithTransaction unconditionally sets callback_confirm=No, - // reset it here to prevent the callback worker from retrying an empty URL. - if err = data.ResetCallbackConfirmOk(order.TradeId); err != nil { - log.Sugar.Warnf("[order] reset sub-order callback_confirm failed, trade_id=%s, err=%v", order.TradeId, err) - } - parent, err := data.GetOrderInfoByTradeId(order.ParentTradeId) if err != nil { log.Sugar.Errorf("[order] load parent order failed, parent_trade_id=%s, err=%v", order.ParentTradeId, err) - return nil + return fmt.Errorf("load parent order failed, parent_trade_id=%s: %w", order.ParentTradeId, err) } + // Snapshot siblings for lock release after DB state transition commits. + siblings, err := data.GetSiblingSubOrders(parent.TradeId, order.TradeId) + if err != nil { + log.Sugar.Errorf("[order] get sibling sub-orders failed, parent_trade_id=%s, err=%v", parent.TradeId, err) + return fmt.Errorf("load sibling sub-orders failed, parent_trade_id=%s: %w", parent.TradeId, err) + } + + finalizeTx := dao.Mdb.Begin() + // Mark parent as paid with sub-order's payment details - if _, err = data.MarkParentOrderSuccess(parent.TradeId, order); err != nil { - log.Sugar.Errorf("[order] mark parent success failed, parent_trade_id=%s, err=%v", parent.TradeId, err) + updatedParent, markErr := data.MarkParentOrderSuccessWithTransaction(finalizeTx, parent.TradeId, order) + if markErr != nil { + finalizeTx.Rollback() + log.Sugar.Errorf("[order] mark parent success failed, parent_trade_id=%s, err=%v", parent.TradeId, markErr) + return fmt.Errorf("mark parent success failed, parent_trade_id=%s: %w", parent.TradeId, markErr) + } + if !updatedParent { + finalizeTx.Rollback() + return fmt.Errorf("parent order not updated, trade_id=%s is not in wait-pay status", parent.TradeId) + } + + if err = data.ExpireSiblingSubOrdersWithTransaction(finalizeTx, parent.TradeId, order.TradeId); err != nil { + finalizeTx.Rollback() + return fmt.Errorf("expire sibling sub-orders failed, parent_trade_id=%s: %w", parent.TradeId, err) + } + + if err = finalizeTx.Commit().Error; err != nil { + finalizeTx.Rollback() + return fmt.Errorf("commit parent finalize tx failed, parent_trade_id=%s: %w", parent.TradeId, err) + } + + // Sub-order should not trigger its own callback (notify_url is empty). + // OrderSuccessWithTransaction unconditionally sets callback_confirm=No, + // reset it only after the parent order is successfully finalized. + if err = data.ResetCallbackConfirmOk(order.TradeId); err != nil { + log.Sugar.Warnf("[order] reset sub-order callback_confirm failed, trade_id=%s, err=%v", order.TradeId, err) } // Release parent's own wallet lock @@ -205,16 +255,8 @@ func OrderProcessing(req *request.OrderProcessingRequest) error { log.Sugar.Warnf("[order] unlock parent transaction failed, parent_trade_id=%s, err=%v", parent.TradeId, err) } - // Expire sibling sub-orders and release their locks - siblings, err := data.GetSiblingSubOrders(parent.TradeId, order.TradeId) - if err != nil { - log.Sugar.Errorf("[order] get sibling sub-orders failed, parent_trade_id=%s, err=%v", parent.TradeId, err) - return nil - } + // Release sibling locks after their status transitions commit. for _, sib := range siblings { - if err = data.ExpireOrderByTradeId(sib.TradeId); err != nil { - log.Sugar.Warnf("[order] expire sibling failed, trade_id=%s, err=%v", sib.TradeId, err) - } if err = data.UnLockTransaction(sib.Network, sib.ReceiveAddress, sib.Token, sib.ActualAmount); err != nil { log.Sugar.Warnf("[order] unlock sibling transaction failed, trade_id=%s, err=%v", sib.TradeId, err) } @@ -230,9 +272,10 @@ func ReserveAvailableWalletAndAmount(tradeID string, network string, token strin tryLockWalletFunc := func(targetAmount float64) (string, error) { for _, address := range walletAddress { - err := data.LockTransaction(network, address.Address, token, tradeID, targetAmount, config.GetOrderExpirationTimeDuration()) + normalizedAddress := normalizeOrderAddressByNetwork(network, address.Address) + err := data.LockTransaction(network, normalizedAddress, token, tradeID, targetAmount, config.GetOrderExpirationTimeDuration()) if err == nil { - return address.Address, nil + return normalizedAddress, nil } if errors.Is(err, data.ErrTransactionLocked) { continue @@ -344,6 +387,9 @@ func SwitchNetwork(req *request.SwitchNetworkRequest) (*response.CheckoutCounter } // 6. Find and lock wallet + if !data.IsChainEnabled(network) { + return nil, constant.ChainNotEnabled + } walletAddress, err := data.GetAvailableWalletAddressByNetwork(network) if err != nil { return nil, err @@ -381,6 +427,7 @@ func SwitchNetwork(req *request.SwitchNetworkRequest) (*response.CheckoutCounter Name: parent.Name, CallBackConfirm: mdb.CallBackConfirmOk, // don't trigger callback on sub-order PaymentType: parent.PaymentType, + ApiKeyID: parent.ApiKeyID, // inherit from parent so resolveOrderApiKey never fails } if err = data.CreateOrderWithTransaction(tx, subOrder); err != nil { tx.Rollback() diff --git a/src/model/service/order_service_test.go b/src/model/service/order_service_test.go index 99d73b3..2bdebd9 100644 --- a/src/model/service/order_service_test.go +++ b/src/model/service/order_service_test.go @@ -2,6 +2,7 @@ package service import ( "fmt" + "strings" "sync" "testing" @@ -32,11 +33,11 @@ func TestCreateTransactionAssignsIncrementedAmountsAndLocks(t *testing.T) { t.Fatalf("add wallet: %v", err) } - resp1, err := CreateTransaction(newCreateTransactionRequest("order_1", 1)) + resp1, err := CreateTransaction(newCreateTransactionRequest("order_1", 1), nil) if err != nil { t.Fatalf("create first transaction: %v", err) } - resp2, err := CreateTransaction(newCreateTransactionRequest("order_2", 1)) + resp2, err := CreateTransaction(newCreateTransactionRequest("order_2", 1), nil) if err != nil { t.Fatalf("create second transaction: %v", err) } @@ -71,6 +72,49 @@ func TestCreateTransactionAssignsIncrementedAmountsAndLocks(t *testing.T) { } } +func TestCreateTransactionNormalizesEvmReceiveAddressToLowercase(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + mixedAddress := "0xA1B2c3D4e5F60718293aBcDeF001122334455667" + if err := dao.Mdb.Create(&mdb.WalletAddress{ + Network: mdb.NetworkEthereum, + Address: mixedAddress, + Status: mdb.TokenStatusEnable, + }).Error; err != nil { + t.Fatalf("seed mixed-case wallet: %v", err) + } + + req := newCreateTransactionRequest("order_evm_1", 1) + req.Network = mdb.NetworkEthereum + + resp, err := CreateTransaction(req, nil) + if err != nil { + t.Fatalf("create transaction: %v", err) + } + + expectedAddress := strings.ToLower(mixedAddress) + if resp.ReceiveAddress != expectedAddress { + t.Fatalf("receive address = %q, want %q", resp.ReceiveAddress, expectedAddress) + } + + order, err := data.GetOrderInfoByTradeId(resp.TradeId) + if err != nil { + t.Fatalf("load order: %v", err) + } + if order.ReceiveAddress != expectedAddress { + t.Fatalf("stored order address = %q, want %q", order.ReceiveAddress, expectedAddress) + } + + tradeID, err := data.GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkEthereum, strings.ToUpper(mixedAddress), resp.Token, resp.ActualAmount) + if err != nil { + t.Fatalf("lookup runtime lock: %v", err) + } + if tradeID != resp.TradeId { + t.Fatalf("runtime lock trade_id = %q, want %q", tradeID, resp.TradeId) + } +} + func TestOrderProcessingMarksPaidAndReleasesLock(t *testing.T) { cleanup := testutil.SetupTestDatabases(t) defer cleanup() @@ -79,7 +123,7 @@ func TestOrderProcessingMarksPaidAndReleasesLock(t *testing.T) { t.Fatalf("add wallet: %v", err) } - resp, err := CreateTransaction(newCreateTransactionRequest("order_1", 1)) + resp, err := CreateTransaction(newCreateTransactionRequest("order_1", 1), nil) if err != nil { t.Fatalf("create transaction: %v", err) } @@ -127,7 +171,7 @@ func TestOrderProcessingRejectsDuplicateBlockForSameOrder(t *testing.T) { t.Fatalf("add wallet: %v", err) } - resp, err := CreateTransaction(newCreateTransactionRequest("order_1", 1)) + resp, err := CreateTransaction(newCreateTransactionRequest("order_1", 1), nil) if err != nil { t.Fatalf("create transaction: %v", err) } @@ -169,7 +213,7 @@ func TestOrderProcessingDoesNotReviveExpiredOrder(t *testing.T) { t.Fatalf("add wallet: %v", err) } - resp, err := CreateTransaction(newCreateTransactionRequest("order_1", 1)) + resp, err := CreateTransaction(newCreateTransactionRequest("order_1", 1), nil) if err != nil { t.Fatalf("create transaction: %v", err) } @@ -215,11 +259,11 @@ func TestOrderProcessingOnlyOneOrderClaimsABlockTransaction(t *testing.T) { t.Fatalf("add wallet: %v", err) } - resp1, err := CreateTransaction(newCreateTransactionRequest("order_1", 1)) + resp1, err := CreateTransaction(newCreateTransactionRequest("order_1", 1), nil) if err != nil { t.Fatalf("create first transaction: %v", err) } - resp2, err := CreateTransaction(newCreateTransactionRequest("order_2", 2)) + resp2, err := CreateTransaction(newCreateTransactionRequest("order_2", 2), nil) if err != nil { t.Fatalf("create second transaction: %v", err) } @@ -303,3 +347,285 @@ func TestOrderProcessingOnlyOneOrderClaimsABlockTransaction(t *testing.T) { t.Fatalf("paid=%d pending=%d, want 1 and 1", paidCount, pendingCount) } } + +func TestOrderProcessingSubOrderReturnsErrorWhenParentNotWaitPay(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + if _, err := data.AddWalletAddress("TTestTronAddress001"); err != nil { + t.Fatalf("add tron wallet: %v", err) + } + if _, err := data.AddWalletAddressWithNetwork(mdb.NetworkEthereum, "0xA1B2c3D4e5F60718293aBcDeF001122334455667"); err != nil { + t.Fatalf("add ethereum wallet: %v", err) + } + + parentReq := newCreateTransactionRequest("order_parent_for_sub", 1) + parentReq.Network = mdb.NetworkTron + parentResp, err := CreateTransaction(parentReq, nil) + if err != nil { + t.Fatalf("create parent order: %v", err) + } + + subResp, err := SwitchNetwork(&request.SwitchNetworkRequest{ + TradeId: parentResp.TradeId, + Token: "usdt", + Network: mdb.NetworkEthereum, + }) + if err != nil { + t.Fatalf("switch network create sub-order: %v", err) + } + + if err := dao.Mdb.Model(&mdb.Orders{}). + Where("trade_id = ?", parentResp.TradeId). + Update("status", mdb.StatusExpired).Error; err != nil { + t.Fatalf("force parent expired: %v", err) + } + + err = OrderProcessing(&request.OrderProcessingRequest{ + ReceiveAddress: subResp.ReceiveAddress, + Token: strings.ToUpper(subResp.Token), + Network: strings.ToLower(subResp.Network), + TradeId: subResp.TradeId, + Amount: subResp.ActualAmount, + BlockTransactionId: "block_sub_parent_not_wait", + }) + if err == nil { + t.Fatal("expected error when parent order is not wait-pay") + } +} + +func TestOrderProcessingSubOrderReturnsErrorWhenParentMissing(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + if _, err := data.AddWalletAddress("TTestTronAddress001"); err != nil { + t.Fatalf("add tron wallet: %v", err) + } + if _, err := data.AddWalletAddressWithNetwork(mdb.NetworkEthereum, "0xA1B2c3D4e5F60718293aBcDeF001122334455667"); err != nil { + t.Fatalf("add ethereum wallet: %v", err) + } + + parentReq := newCreateTransactionRequest("order_parent_missing", 1) + parentReq.Network = mdb.NetworkTron + parentResp, err := CreateTransaction(parentReq, nil) + if err != nil { + t.Fatalf("create parent order: %v", err) + } + + subResp, err := SwitchNetwork(&request.SwitchNetworkRequest{ + TradeId: parentResp.TradeId, + Token: "usdt", + Network: mdb.NetworkEthereum, + }) + if err != nil { + t.Fatalf("switch network create sub-order: %v", err) + } + + if err := dao.Mdb.Where("trade_id = ?", parentResp.TradeId).Delete(&mdb.Orders{}).Error; err != nil { + t.Fatalf("delete parent order: %v", err) + } + + err = OrderProcessing(&request.OrderProcessingRequest{ + ReceiveAddress: subResp.ReceiveAddress, + Token: strings.ToUpper(subResp.Token), + Network: strings.ToLower(subResp.Network), + TradeId: subResp.TradeId, + Amount: subResp.ActualAmount, + BlockTransactionId: "block_sub_parent_missing", + }) + if err == nil { + t.Fatal("expected error when parent order is missing") + } +} + +// TestOrderProcessingSubOrderPaidParentKeepsOwnFields verifies the new behavior: +// when a sub-order is paid, the parent order is marked as paid but its own +// block_transaction_id, actual_amount, and receive_address are NOT overwritten. +// The sub-order's primary-key ID is recorded in the parent's pay_by_sub_id field. +// Also verifies: parent callback_confirm=No (callback queued), sub-order callback_confirm=Ok. +func TestOrderProcessingSubOrderPaidParentKeepsOwnFields(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + if _, err := data.AddWalletAddress("TTestTronAddress001"); err != nil { + t.Fatalf("add tron wallet: %v", err) + } + if _, err := data.AddWalletAddressWithNetwork(mdb.NetworkEthereum, "0xA1B2c3D4e5F60718293aBcDeF001122334455667"); err != nil { + t.Fatalf("add ethereum wallet: %v", err) + } + + parentReq := newCreateTransactionRequest("order_sub_pay_test", 1) + parentReq.Network = mdb.NetworkTron + parentResp, err := CreateTransaction(parentReq, nil) + if err != nil { + t.Fatalf("create parent order: %v", err) + } + + // Snapshot the parent's original fields before any payment. + originalParent, err := data.GetOrderInfoByTradeId(parentResp.TradeId) + if err != nil { + t.Fatalf("load original parent: %v", err) + } + + subResp, err := SwitchNetwork(&request.SwitchNetworkRequest{ + TradeId: parentResp.TradeId, + Token: "usdt", + Network: mdb.NetworkEthereum, + }) + if err != nil { + t.Fatalf("switch network create sub-order: %v", err) + } + + // Load the sub-order to get its DB primary-key ID. + subOrder, err := data.GetOrderInfoByTradeId(subResp.TradeId) + if err != nil { + t.Fatalf("load sub-order: %v", err) + } + + err = OrderProcessing(&request.OrderProcessingRequest{ + ReceiveAddress: subResp.ReceiveAddress, + Token: strings.ToUpper(subResp.Token), + Network: strings.ToLower(subResp.Network), + TradeId: subResp.TradeId, + Amount: subResp.ActualAmount, + BlockTransactionId: "block_sub_paid", + }) + if err != nil { + t.Fatalf("order processing sub-order: %v", err) + } + + // Sub-order must be paid with the block hash and no pending callback. + sub, err := data.GetOrderInfoByTradeId(subResp.TradeId) + if err != nil { + t.Fatalf("reload sub-order: %v", err) + } + if sub.Status != mdb.StatusPaySuccess { + t.Fatalf("sub-order status = %d, want %d", sub.Status, mdb.StatusPaySuccess) + } + if sub.BlockTransactionId != "block_sub_paid" { + t.Fatalf("sub-order block_transaction_id = %q, want %q", sub.BlockTransactionId, "block_sub_paid") + } + if sub.CallBackConfirm != mdb.CallBackConfirmOk { + t.Fatalf("sub-order callback_confirm = %d, want %d (no callback for sub-order)", sub.CallBackConfirm, mdb.CallBackConfirmOk) + } + + // Parent must be paid but its own fields must be unchanged. + parent, err := data.GetOrderInfoByTradeId(parentResp.TradeId) + if err != nil { + t.Fatalf("reload parent order: %v", err) + } + if parent.Status != mdb.StatusPaySuccess { + t.Fatalf("parent status = %d, want %d", parent.Status, mdb.StatusPaySuccess) + } + if parent.BlockTransactionId != "" { + t.Fatalf("parent block_transaction_id = %q, want empty (parent was not directly paid)", parent.BlockTransactionId) + } + if parent.ReceiveAddress != originalParent.ReceiveAddress { + t.Fatalf("parent receive_address changed: got %q, want %q", parent.ReceiveAddress, originalParent.ReceiveAddress) + } + if parent.ActualAmount != originalParent.ActualAmount { + t.Fatalf("parent actual_amount changed: got %v, want %v", parent.ActualAmount, originalParent.ActualAmount) + } + if parent.PayBySubId != subOrder.ID { + t.Fatalf("parent pay_by_sub_id = %d, want %d (sub-order ID)", parent.PayBySubId, subOrder.ID) + } + if parent.CallBackConfirm != mdb.CallBackConfirmNo { + t.Fatalf("parent callback_confirm = %d, want %d (callback must be queued)", parent.CallBackConfirm, mdb.CallBackConfirmNo) + } +} + +// TestOrderProcessingSubOrderExpiresSiblingsAndReleasesLocks verifies that when one +// sub-order is paid all sibling sub-orders are expired and their runtime locks (as +// well as the parent's lock) are released. +func TestOrderProcessingSubOrderExpiresSiblingsAndReleasesLocks(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + if _, err := data.AddWalletAddress("TTestTronAddress001"); err != nil { + t.Fatalf("add tron wallet: %v", err) + } + if _, err := data.AddWalletAddressWithNetwork(mdb.NetworkEthereum, "0xA1B2c3D4e5F60718293aBcDeF001122334455667"); err != nil { + t.Fatalf("add ethereum wallet: %v", err) + } + if _, err := data.AddWalletAddressWithNetwork(mdb.NetworkBsc, "0xBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"); err != nil { + t.Fatalf("add bsc wallet: %v", err) + } + + parentReq := newCreateTransactionRequest("order_sib_expiry_test", 1) + parentReq.Network = mdb.NetworkTron + parentResp, err := CreateTransaction(parentReq, nil) + if err != nil { + t.Fatalf("create parent order: %v", err) + } + + // Create two sub-orders on different networks. + subEthResp, err := SwitchNetwork(&request.SwitchNetworkRequest{ + TradeId: parentResp.TradeId, + Token: "usdt", + Network: mdb.NetworkEthereum, + }) + if err != nil { + t.Fatalf("switch to ethereum sub-order: %v", err) + } + + subBscResp, err := SwitchNetwork(&request.SwitchNetworkRequest{ + TradeId: parentResp.TradeId, + Token: "usdt", + Network: mdb.NetworkBsc, + }) + if err != nil { + t.Fatalf("switch to bsc sub-order: %v", err) + } + + // Pay the Ethereum sub-order. + err = OrderProcessing(&request.OrderProcessingRequest{ + ReceiveAddress: subEthResp.ReceiveAddress, + Token: strings.ToUpper(subEthResp.Token), + Network: strings.ToLower(subEthResp.Network), + TradeId: subEthResp.TradeId, + Amount: subEthResp.ActualAmount, + BlockTransactionId: "block_sib_eth", + }) + if err != nil { + t.Fatalf("order processing eth sub-order: %v", err) + } + + // BSC sibling must be expired. + subBsc, err := data.GetOrderInfoByTradeId(subBscResp.TradeId) + if err != nil { + t.Fatalf("reload bsc sub-order: %v", err) + } + if subBsc.Status != mdb.StatusExpired { + t.Fatalf("bsc sibling status = %d, want %d (expired)", subBsc.Status, mdb.StatusExpired) + } + + // Parent runtime lock must be released. + parentLock, err := data.GetTradeIdByWalletAddressAndAmountAndToken( + mdb.NetworkTron, parentResp.ReceiveAddress, parentResp.Token, parentResp.ActualAmount) + if err != nil { + t.Fatalf("check parent runtime lock: %v", err) + } + if parentLock != "" { + t.Fatalf("parent runtime lock still held: trade_id=%s", parentLock) + } + + // BSC sibling runtime lock must be released. + sibLock, err := data.GetTradeIdByWalletAddressAndAmountAndToken( + mdb.NetworkBsc, subBscResp.ReceiveAddress, subBscResp.Token, subBscResp.ActualAmount) + if err != nil { + t.Fatalf("check bsc sibling runtime lock: %v", err) + } + if sibLock != "" { + t.Fatalf("bsc sibling runtime lock still held: trade_id=%s", sibLock) + } + + // Ethereum sub-order runtime lock must also be released. + ethLock, err := data.GetTradeIdByWalletAddressAndAmountAndToken( + mdb.NetworkEthereum, subEthResp.ReceiveAddress, subEthResp.Token, subEthResp.ActualAmount) + if err != nil { + t.Fatalf("check eth sub-order runtime lock: %v", err) + } + if ethLock != "" { + t.Fatalf("eth sub-order runtime lock still held: trade_id=%s", ethLock) + } +} diff --git a/src/model/service/sol_task.go b/src/model/service/sol_task.go index 06731f9..68a996c 100644 --- a/src/model/service/sol_task.go +++ b/src/model/service/sol_task.go @@ -45,6 +45,33 @@ func SolCallBack(address string, wg *sync.WaitGroup) { } }() + // Load enabled Solana tokens from chain_tokens. The contract_address + // column holds the mint for SPL tokens; a special entry with + // symbol=SOL and empty contract_address enables native SOL payments. + tokens, err := data.ListEnabledChainTokensByNetwork(mdb.NetworkSolana) + if err != nil { + log.Sugar.Errorf("[SOL][%s] load chain_tokens err=%v", address, err) + return + } + if len(tokens) == 0 { + log.Sugar.Debugf("[SOL][%s] no enabled chain_tokens, skipping", address) + return + } + mintTokens := make(map[string]*mdb.ChainToken, len(tokens)) + var nativeSolToken *mdb.ChainToken + for i := range tokens { + sym := strings.ToUpper(strings.TrimSpace(tokens[i].Symbol)) + mint := strings.TrimSpace(tokens[i].ContractAddress) + if sym == "SOL" && mint == "" { + nativeSolToken = &tokens[i] + continue + } + if mint == "" { + continue + } + mintTokens[mint] = &tokens[i] + } + // Clean up old entries from processed cache (older than 1 hour) cleanupCutoff := time.Now().Add(-1 * time.Hour).Unix() gProcessedSignatures.Range(func(key, value interface{}) bool { @@ -56,17 +83,15 @@ func SolCallBack(address string, wg *sync.WaitGroup) { limit := 1000 - // 查询钱包地址 + USDT ATA + USDC ATA 三个地址的签名 + // 查询钱包地址 + 每个已启用 SPL 代币 ATA 的签名 queryAddrs := []string{address} - if usdtAta, err := FindATAAddress(address, USDT_Mint); err == nil { - queryAddrs = append(queryAddrs, usdtAta) - } else { - log.Sugar.Errorf("[SOL][%s] failed to derive USDT ATA: %v", address, err) - } - if usdcAta, err := FindATAAddress(address, USDC_Mint); err == nil { - queryAddrs = append(queryAddrs, usdcAta) - } else { - log.Sugar.Errorf("[SOL][%s] failed to derive USDC ATA: %v", address, err) + for mint := range mintTokens { + ata, err := FindATAAddress(address, mint) + if err != nil { + log.Sugar.Errorf("[SOL][%s] failed to derive ATA for mint %s: %v", address, mint, err) + continue + } + queryAddrs = append(queryAddrs, ata) } // 拉取签名并去重 @@ -177,7 +202,7 @@ func SolCallBack(address string, wg *sync.WaitGroup) { continue } - token, amount := getTokenTypeAndAmount(transferInfo) + token, amount := resolveSolTokenAndAmount(transferInfo, mintTokens, nativeSolToken) if token == "" || amount <= 0 { continue } @@ -363,35 +388,42 @@ func isTransferToAddress(transfer *TransferInfo, targetAddress string) bool { return MatchAtaAddress(targetAddress, transfer.Mint, transfer.Destination) } -// getTokenTypeAndAmount 根据 mint 识别代币类型并计算可读金额 -func getTokenTypeAndAmount(transfer *TransferInfo) (string, float64) { +// resolveSolTokenAndAmount identifies the token from a transfer using +// the admin-configured chain_tokens list. mintTokens maps SPL mint +// addresses to their ChainToken config; nativeSolToken is non-nil when a +// native SOL entry exists in chain_tokens. Returns ("", 0) for +// transfers whose mint is not configured or below min_amount. +func resolveSolTokenAndAmount(transfer *TransferInfo, mintTokens map[string]*mdb.ChainToken, nativeSolToken *mdb.ChainToken) (string, float64) { mint := transfer.Mint // Native SOL if mint == "SOL" { - return "SOL", transfer.Amount + if nativeSolToken == nil { + return "", 0 + } + amount := transfer.Amount + if nativeSolToken.MinAmount > 0 && amount < nativeSolToken.MinAmount { + return "", 0 + } + return strings.ToUpper(strings.TrimSpace(nativeSolToken.Symbol)), amount } - // SPL Tokens - switch mint { - case USDT_Mint: - decimals := USDT_Decimals - if transfer.Decimals != nil { - decimals = int(*transfer.Decimals) - } - return "USDT", ADJustAmount(transfer.RawAmount, decimals) - - case USDC_Mint: - decimals := USDC_Decimals - if transfer.Decimals != nil { - decimals = int(*transfer.Decimals) - } - return "USDC", ADJustAmount(transfer.RawAmount, decimals) - - default: - // Unsupported token + cfg, ok := mintTokens[mint] + if !ok || cfg == nil { return "", 0 } + decimals := cfg.Decimals + if transfer.Decimals != nil { + decimals = int(*transfer.Decimals) + } + if decimals <= 0 { + decimals = 6 + } + amount := ADJustAmount(transfer.RawAmount, decimals) + if cfg.MinAmount > 0 && amount < cfg.MinAmount { + return "", 0 + } + return strings.ToUpper(strings.TrimSpace(cfg.Symbol)), amount } const ( @@ -437,7 +469,7 @@ func ADJustAmount(amount uint64, decimals int) float64 { func MatchUsdtAtaAddress(address string, ataTo string) bool { ata, err := FindATAAddress(address, USDT_Mint) if err != nil { - fmt.Printf("FindATAAddress failed: %v\n", err) + log.Sugar.Errorf("FindATAAddress failed: %v", err) return false } @@ -447,7 +479,7 @@ func MatchUsdtAtaAddress(address string, ataTo string) bool { func MatchUsdcAtaAddress(address string, ataTo string) bool { ata, err := FindATAAddress(address, USDC_Mint) if err != nil { - fmt.Printf("FindATAAddress failed: %v\n", err) + log.Sugar.Errorf("FindATAAddress failed: %v", err) return false } @@ -457,7 +489,7 @@ func MatchUsdcAtaAddress(address string, ataTo string) bool { func MatchAtaAddress(address string, mint string, ataTo string) bool { ata, err := FindATAAddress(address, mint) if err != nil { - fmt.Printf("FindATAAddress failed: %v\n", err) + log.Sugar.Errorf("FindATAAddress failed: %v", err) return false } diff --git a/src/model/service/task_service.go b/src/model/service/task_service.go index 131da67..71eeb85 100644 --- a/src/model/service/task_service.go +++ b/src/model/service/task_service.go @@ -14,7 +14,7 @@ import ( "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/mdb" "github.com/assimon/luuu/model/request" - "github.com/assimon/luuu/telegram" + "github.com/assimon/luuu/notify" "github.com/assimon/luuu/util/constant" "github.com/assimon/luuu/util/http_client" "github.com/assimon/luuu/util/log" @@ -26,7 +26,20 @@ import ( "github.com/tidwall/gjson" ) -const TRC20_USDT_ID = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" +// tronNodeDefault is the fallback when no rpc_nodes row exists for TRON. +const tronNodeDefault = "https://api.trongrid.io" + +// resolveTronNode returns (baseURL, apiKey) for the TRON HTTP RPC node. +// It reads the first healthy (or any enabled) row from the rpc_nodes table; +// if none exists it falls back to the hard-coded default URL and the +// tron_grid_api_key value from .env (config.TRON_GRID_API_KEY). +func resolveTronNode() (string, string) { + node, err := data.SelectRpcNode(mdb.NetworkTron, mdb.RpcNodeTypeHttp) + if err == nil && node != nil && node.ID > 0 { + return strings.TrimRight(node.Url, "/"), node.ApiKey + } + return tronNodeDefault, config.TRON_GRID_API_KEY +} func Trc20CallBack(address string, wg *sync.WaitGroup) { defer wg.Done() @@ -45,16 +58,29 @@ func Trc20CallBack(address string, wg *sync.WaitGroup) { func checkTrxTransfers(address string, wg *sync.WaitGroup) { defer wg.Done() - defer func() { - if err := recover(); err != nil { - log.Sugar.Errorf("[TRX][%s] panic recovered: %v", address, err) - } - }() + + // Native TRX is gated by a chain_tokens row with empty + // contract_address and symbol=TRX. Admin can disable this row to + // stop scanning native transfers without touching the chain toggle. + trxCfg, err := data.GetEnabledChainTokenBySymbol(mdb.NetworkTron, "TRX") + if err != nil { + log.Sugar.Errorf("[TRX][%s] load chain_tokens err=%v", address, err) + return + } + if trxCfg == nil || trxCfg.ID == 0 { + log.Sugar.Debugf("[TRX][%s] native TRX disabled in chain_tokens, skipping", address) + return + } + trxDecimals := trxCfg.Decimals + if trxDecimals <= 0 { + trxDecimals = 6 + } client := http_client.GetHttpClient() startTime := carbon.Now().AddHours(-24).TimestampMilli() endTime := carbon.Now().TimestampMilli() - url := fmt.Sprintf("https://api.trongrid.io/v1/accounts/%s/transactions", address) + tronBaseURL, tronAPIKey := resolveTronNode() + url := fmt.Sprintf("%s/v1/accounts/%s/transactions", tronBaseURL, address) resp, err := client.R().SetQueryParams(map[string]string{ "order_by": "block_timestamp,desc", @@ -62,17 +88,20 @@ func checkTrxTransfers(address string, wg *sync.WaitGroup) { "only_to": "true", "min_timestamp": stdutil.ToString(startTime), "max_timestamp": stdutil.ToString(endTime), - }).SetHeader("TRON-PRO-API-KEY", config.TRON_GRID_API_KEY).Get(url) + }).SetHeader("TRON-PRO-API-KEY", tronAPIKey).Get(url) if err != nil { - panic(err) + log.Sugar.Errorf("[TRX][%s] HTTP request failed: %v", address, err) + return } if resp.StatusCode() != http.StatusOK { - panic(fmt.Sprintf("TRX API returned status %d", resp.StatusCode())) + log.Sugar.Errorf("[TRX][%s] API returned status %d", address, resp.StatusCode()) + return } success := gjson.GetBytes(resp.Body(), "success").Bool() if !success { - panic("TRX API response indicates failure") + log.Sugar.Errorf("[TRX][%s] API response indicates failure", address) + return } transfers := gjson.GetBytes(resp.Body(), "data").Array() @@ -106,15 +135,19 @@ func checkTrxTransfers(address string, wg *sync.WaitGroup) { log.Sugar.Errorf("[TRX][%s] parse amount failed on tx #%d: %v", address, i, err) continue } - amount := math.MustParsePrecFloat64(decimalQuant.Div(decimal.NewFromInt(1000000)).InexactFloat64(), 2) + amount := math.MustParsePrecFloat64(decimalQuant.Div(decimal.New(1, int32(trxDecimals))).InexactFloat64(), 2) + if trxCfg.MinAmount > 0 && amount < trxCfg.MinAmount { + continue + } if amount <= 0 { continue } txID := transfer.Get("txID").String() - tradeID, err := data.GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkTron, address, "TRX", amount) + tradeID, err := data.GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkTron, address, strings.ToUpper(strings.TrimSpace(trxCfg.Symbol)), amount) if err != nil { - panic(err) + log.Sugar.Errorf("[TRX][%s] lookup trade_id failed hash=%s err=%v", address, txID, err) + continue } if tradeID == "" { log.Sugar.Debugf("[TRX][%s] skip unmatched tx hash=%s amount=%.2f", address, txID, amount) @@ -124,7 +157,8 @@ func checkTrxTransfers(address string, wg *sync.WaitGroup) { order, err := data.GetOrderInfoByTradeId(tradeID) if err != nil { - panic(err) + log.Sugar.Errorf("[TRX][%s] get order failed trade_id=%s err=%v", address, tradeID, err) + continue } blockTimestamp := transfer.Get("block_timestamp").Int() createTime := order.CreatedAt.TimestampMilli() @@ -135,7 +169,7 @@ func checkTrxTransfers(address string, wg *sync.WaitGroup) { req := &request.OrderProcessingRequest{ ReceiveAddress: address, - Token: "TRX", + Token: strings.ToUpper(strings.TrimSpace(trxCfg.Symbol)), Network: mdb.NetworkTron, TradeId: tradeID, Amount: amount, @@ -147,7 +181,8 @@ func checkTrxTransfers(address string, wg *sync.WaitGroup) { log.Sugar.Infof("[TRX][%s] skip resolved transfer trade_id=%s hash=%s err=%v", address, tradeID, txID, err) continue } - panic(err) + log.Sugar.Errorf("[TRX][%s] order processing failed trade_id=%s hash=%s err=%v", address, tradeID, txID, err) + continue } sendPaymentNotification(order) @@ -157,16 +192,33 @@ func checkTrxTransfers(address string, wg *sync.WaitGroup) { func checkTrc20Transfers(address string, wg *sync.WaitGroup) { defer wg.Done() - defer func() { - if err := recover(); err != nil { - log.Sugar.Errorf("[TRC20][%s] panic recovered: %v", address, err) + + // Build contract -> token map for the TRON network. If nothing is + // configured, skip — preserves the previous behavior of only watching + // admin-approved tokens. + tokens, err := data.ListEnabledChainTokensByNetwork(mdb.NetworkTron) + if err != nil { + log.Sugar.Errorf("[TRC20][%s] load chain_tokens err=%v", address, err) + return + } + if len(tokens) == 0 { + log.Sugar.Debugf("[TRC20][%s] no enabled chain_tokens, skipping", address) + return + } + contractTokens := make(map[string]*mdb.ChainToken, len(tokens)) + for i := range tokens { + c := strings.TrimSpace(tokens[i].ContractAddress) + if c == "" { + continue } - }() + contractTokens[c] = &tokens[i] + } client := http_client.GetHttpClient() startTime := carbon.Now().AddHours(-24).TimestampMilli() endTime := carbon.Now().TimestampMilli() - url := fmt.Sprintf("https://api.trongrid.io/v1/accounts/%s/transactions/trc20", address) + tronBaseURL, tronAPIKey := resolveTronNode() + url := fmt.Sprintf("%s/v1/accounts/%s/transactions/trc20", tronBaseURL, address) resp, err := client.R().SetQueryParams(map[string]string{ "order_by": "block_timestamp,desc", @@ -174,17 +226,20 @@ func checkTrc20Transfers(address string, wg *sync.WaitGroup) { "only_to": "true", "min_timestamp": stdutil.ToString(startTime), "max_timestamp": stdutil.ToString(endTime), - }).SetHeader("TRON-PRO-API-KEY", config.TRON_GRID_API_KEY).Get(url) + }).SetHeader("TRON-PRO-API-KEY", tronAPIKey).Get(url) if err != nil { - panic(err) + log.Sugar.Errorf("[TRC20][%s] HTTP request failed: %v", address, err) + return } if resp.StatusCode() != http.StatusOK { - panic(fmt.Sprintf("TRC20 API returned status %d", resp.StatusCode())) + log.Sugar.Errorf("[TRC20][%s] API returned status %d", address, resp.StatusCode()) + return } success := gjson.GetBytes(resp.Body(), "success").Bool() if !success { - panic("TRC20 API response indicates failure") + log.Sugar.Errorf("[TRC20][%s] API response indicates failure", address) + return } transfers := gjson.GetBytes(resp.Body(), "data").Array() @@ -195,12 +250,15 @@ func checkTrc20Transfers(address string, wg *sync.WaitGroup) { log.Sugar.Debugf("[TRC20][%s] fetched %d transfer records", address, len(transfers)) for i, transfer := range transfers { - if transfer.Get("token_info.address").String() != TRC20_USDT_ID { + contractAddr := transfer.Get("token_info.address").String() + cfg, ok := contractTokens[contractAddr] + if !ok { continue } if transfer.Get("to").String() != address { continue } + tokenSym := strings.ToUpper(strings.TrimSpace(cfg.Symbol)) valueStr := transfer.Get("value").String() decimalQuant, err := decimal.NewFromString(valueStr) @@ -209,25 +267,33 @@ func checkTrc20Transfers(address string, wg *sync.WaitGroup) { continue } tokenDecimals := transfer.Get("token_info.decimals").Int() + if tokenDecimals <= 0 { + tokenDecimals = int64(cfg.Decimals) + } amount := math.MustParsePrecFloat64(decimalQuant.Div(decimal.New(1, int32(tokenDecimals))).InexactFloat64(), 2) + if cfg.MinAmount > 0 && amount < cfg.MinAmount { + continue + } if amount <= 0 { continue } txID := transfer.Get("transaction_id").String() - tradeID, err := data.GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkTron, address, "USDT", amount) + tradeID, err := data.GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkTron, address, tokenSym, amount) if err != nil { - panic(err) - } - if tradeID == "" { - log.Sugar.Debugf("[TRC20][%s] skip unmatched tx hash=%s amount=%.2f", address, txID, amount) + log.Sugar.Errorf("[TRC20][%s] lookup trade_id failed hash=%s err=%v", address, txID, err) continue } - log.Sugar.Infof("[TRC20][%s] matched trade_id=%s hash=%s amount=%.2f", address, tradeID, txID, amount) + if tradeID == "" { + log.Sugar.Debugf("[TRC20][%s] skip unmatched %s tx hash=%s amount=%.2f", address, tokenSym, txID, amount) + continue + } + log.Sugar.Infof("[TRC20][%s] matched %s trade_id=%s hash=%s amount=%.2f", address, tokenSym, tradeID, txID, amount) order, err := data.GetOrderInfoByTradeId(tradeID) if err != nil { - panic(err) + log.Sugar.Errorf("[TRC20][%s] get order failed trade_id=%s err=%v", address, tradeID, err) + continue } blockTimestamp := transfer.Get("block_timestamp").Int() createTime := order.CreatedAt.TimestampMilli() @@ -238,7 +304,7 @@ func checkTrc20Transfers(address string, wg *sync.WaitGroup) { req := &request.OrderProcessingRequest{ ReceiveAddress: address, - Token: "USDT", + Token: tokenSym, Network: mdb.NetworkTron, TradeId: tradeID, Amount: amount, @@ -250,7 +316,8 @@ func checkTrc20Transfers(address string, wg *sync.WaitGroup) { log.Sugar.Infof("[TRC20][%s] skip resolved transfer trade_id=%s hash=%s err=%v", address, tradeID, txID, err) continue } - panic(err) + log.Sugar.Errorf("[TRC20][%s] order processing failed trade_id=%s hash=%s err=%v", address, tradeID, txID, err) + continue } sendPaymentNotification(order) @@ -273,7 +340,9 @@ func evmChainLogLabel(chainNetwork string) string { } } -// TryProcessEvmERC20Transfer 处理各 EVM 链上 USDT/USDC(及 Polygon USDC.e)的 Transfer 入账(合约与 network 需一致)。 +// TryProcessEvmERC20Transfer 处理各 EVM 链上代币的 Transfer 入账。 +// 代币识别、符号和 decimals 全部从 chain_tokens 表动态查询 — +// 管理后台新增 token 即可立即生效,无需代码改动。 func TryProcessEvmERC20Transfer(chainNetwork string, contract common.Address, toAddr common.Address, rawValue *big.Int, txHash string, blockTsMs int64) { defer func() { if err := recover(); err != nil { @@ -281,46 +350,38 @@ func TryProcessEvmERC20Transfer(chainNetwork string, contract common.Address, to } }() - var usdt, usdc common.Address - var polygonUsdcE common.Address - switch chainNetwork { - case mdb.NetworkEthereum: - usdt = common.HexToAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7") - usdc = common.HexToAddress("0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48") - case mdb.NetworkBsc: - usdt = common.HexToAddress("0x55d398326f99059fF775485246999027B3197955") - usdc = common.HexToAddress("0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d") - case mdb.NetworkPolygon: - usdt = common.HexToAddress("0xc2132D05D31c914a87C6611C10748AEb04B58e8F") - usdc = common.HexToAddress("0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359") - polygonUsdcE = common.HexToAddress("0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174") - case mdb.NetworkPlasma: - // USDT0(官方),6 decimals;链上暂无与 ETH 同级的 Circle USDC 部署,仅匹配 USDT 订单 - usdt = common.HexToAddress("0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb") - default: - return - } - - var tokenSym string - switch { - case contract == usdt: - tokenSym = "USDT" - case contract == usdc || (polygonUsdcE != (common.Address{}) && contract == polygonUsdcE): - tokenSym = "USDC" - default: - net := evmChainLogLabel(chainNetwork) - log.Sugar.Warnf("[%s-WS] skip unsupported contract %s", net, contract.Hex()) - return - } - net := evmChainLogLabel(chainNetwork) + token, err := data.GetEnabledChainTokenByContract(chainNetwork, contract.Hex()) + if err != nil { + log.Sugar.Warnf("[%s-WS] chain_tokens lookup err=%v contract=%s", net, err, contract.Hex()) + return + } + if token == nil || token.ID == 0 { + log.Sugar.Debugf("[%s-WS] skip unconfigured contract %s", net, contract.Hex()) + return + } + tokenSym := strings.ToUpper(strings.TrimSpace(token.Symbol)) + if tokenSym == "" { + log.Sugar.Warnf("[%s-WS] chain_token id=%d has empty symbol", net, token.ID) + return + } + decimals := token.Decimals + if decimals <= 0 { + decimals = 6 + } + walletAddr := strings.ToLower(toAddr.Hex()) if rawValue == nil || rawValue.Sign() <= 0 { log.Sugar.Infof("[%s-%s][%s] skip non-positive or nil amount", net, tokenSym, walletAddr) return } + divisor := decimal.New(1, int32(decimals)) decimalQuant := decimal.NewFromBigInt(rawValue, 0) - amount := math.MustParsePrecFloat64(decimalQuant.Div(decimal.NewFromInt(1_000_000)).InexactFloat64(), 2) + amount := math.MustParsePrecFloat64(decimalQuant.Div(divisor).InexactFloat64(), 2) + if token.MinAmount > 0 && amount < token.MinAmount { + log.Sugar.Debugf("[%s-%s][%s] skip amount %.2f below min_amount %.2f", net, tokenSym, walletAddr, amount, token.MinAmount) + return + } if amount <= 0 { log.Sugar.Warnf("[%s-%s][%s] skip non-positive amount %.2f", net, tokenSym, walletAddr, amount) return @@ -351,6 +412,11 @@ func TryProcessEvmERC20Transfer(chainNetwork string, contract common.Address, to log.Sugar.Warnf("[%s-%s][%s] skip trade_id=%s token mismatch order=%s", net, tokenSym, walletAddr, tradeID, order.Token) return } + if blockTsMs > 0 && blockTsMs < order.CreatedAt.TimestampMilli() { + log.Sugar.Warnf("[%s-%s][%s] skip tx %s because block_time_ms=%d is before order created_ms=%d", + net, tokenSym, walletAddr, txHash, blockTsMs, order.CreatedAt.TimestampMilli()) + return + } req := &request.OrderProcessingRequest{ ReceiveAddress: walletAddr, @@ -399,7 +465,7 @@ func sendPaymentNotification(order *mdb.Orders) { order.CreatedAt.ToDateTimeString(), carbon.Now().ToDateTimeString(), ) - telegram.SendToBot(msg) + notify.Dispatch(mdb.NotifyEventPaySuccess, msg) } func networkDisplay(n string) string { diff --git a/src/model/service/task_tron_test.go b/src/model/service/task_tron_test.go new file mode 100644 index 0000000..b526b58 --- /dev/null +++ b/src/model/service/task_tron_test.go @@ -0,0 +1,92 @@ +package service + +import ( + "testing" + + "github.com/assimon/luuu/config" + "github.com/assimon/luuu/internal/testutil" + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/mdb" +) + +// TestResolveTronNode_NoRow verifies that resolveTronNode falls back to the +// hard-coded default when the rpc_nodes table has no TRON row. +func TestResolveTronNode_NoRow(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + config.TRON_GRID_API_KEY = "fallback-key" + + gotURL, gotKey := resolveTronNode() + if gotURL != tronNodeDefault { + t.Errorf("url = %q, want %q", gotURL, tronNodeDefault) + } + if gotKey != "fallback-key" { + t.Errorf("apiKey = %q, want \"fallback-key\"", gotKey) + } +} + +// TestResolveTronNode_WithRow verifies that resolveTronNode uses the DB row +// when an enabled TRON HTTP node is present. +func TestResolveTronNode_WithRow(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + config.TRON_GRID_API_KEY = "fallback-key" + + // Insert an enabled TRON http node. + node := &mdb.RpcNode{ + Network: mdb.NetworkTron, + Url: "https://custom-tron.example.com", + Type: mdb.RpcNodeTypeHttp, + ApiKey: "db-api-key", + Weight: 1, + Enabled: true, + Status: mdb.RpcNodeStatusOk, + } + if err := dao.Mdb.Create(node).Error; err != nil { + t.Fatalf("seed rpc_node: %v", err) + } + + gotURL, gotKey := resolveTronNode() + if gotURL != "https://custom-tron.example.com" { + t.Errorf("url = %q, want https://custom-tron.example.com", gotURL) + } + if gotKey != "db-api-key" { + t.Errorf("apiKey = %q, want \"db-api-key\"", gotKey) + } +} + +// TestResolveTronNode_DisabledRow verifies that a disabled row is ignored and +// the fallback is used. +func TestResolveTronNode_DisabledRow(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + config.TRON_GRID_API_KEY = "fallback-key" + + node := &mdb.RpcNode{ + Network: mdb.NetworkTron, + Url: "https://disabled-tron.example.com", + Type: mdb.RpcNodeTypeHttp, + ApiKey: "disabled-key", + Weight: 1, + Enabled: true, // start enabled, then disable below + Status: mdb.RpcNodeStatusOk, + } + if err := dao.Mdb.Create(node).Error; err != nil { + t.Fatalf("seed rpc_node: %v", err) + } + // Explicitly disable — GORM does not save bool zero-value on Create. + if err := dao.Mdb.Model(node).Update("enabled", false).Error; err != nil { + t.Fatalf("disable rpc_node: %v", err) + } + + gotURL, gotKey := resolveTronNode() + if gotURL != tronNodeDefault { + t.Errorf("url = %q, want %q (disabled row should be ignored)", gotURL, tronNodeDefault) + } + if gotKey != "fallback-key" { + t.Errorf("apiKey = %q, want \"fallback-key\"", gotKey) + } +} diff --git a/src/mq/worker.go b/src/mq/worker.go index 3797c92..ede7fb9 100644 --- a/src/mq/worker.go +++ b/src/mq/worker.go @@ -3,9 +3,8 @@ package mq import ( "errors" "fmt" - "io" "net/http" - "net/url" + "strconv" "strings" "time" @@ -19,6 +18,29 @@ import ( "github.com/assimon/luuu/util/sign" ) +// resolveOrderApiKey returns the api_keys row that signed the order. +// Every order must carry an ApiKeyID (the default key is always seeded +// at bootstrap, and the middleware/EPAY inline flow always stamps it). +// If the row is missing or disabled, we return an error — using any +// other secret would produce a signature the merchant can't verify. +// The admin can resend the callback after fixing the key. +func resolveOrderApiKey(order *mdb.Orders) (*mdb.ApiKey, error) { + if order.ApiKeyID == 0 { + return nil, fmt.Errorf("order trade_id=%s has no api_key_id", order.TradeId) + } + row, err := data.GetApiKeyByID(order.ApiKeyID) + if err != nil { + return nil, fmt.Errorf("lookup api_key_id=%d: %w", order.ApiKeyID, err) + } + if row.ID == 0 { + return nil, fmt.Errorf("api_key_id=%d not found (deleted?)", order.ApiKeyID) + } + if row.Status != mdb.ApiKeyStatusEnable { + return nil, fmt.Errorf("api_key_id=%d is disabled", order.ApiKeyID) + } + return row, nil +} + const batchSize = 100 const sqliteBusyRetryAttempts = 3 @@ -165,56 +187,62 @@ func processCallback(tradeID string) { } func sendOrderCallback(order *mdb.Orders) error { + apiKeyRow, err := resolveOrderApiKey(order) + if err != nil || apiKeyRow == nil || apiKeyRow.ID == 0 { + return errors.New("no api key row available for callback") + } switch order.PaymentType { case mdb.PaymentTypeEpay: - // 构造 EPay 标准回调参数 + // EPAY uses pid (integer) and secret_key as "key". + pidInt, convErr := strconv.Atoi(apiKeyRow.Pid) + if convErr != nil { + return fmt.Errorf("epay pid not numeric: %s", apiKeyRow.Pid) + } notifyData := response.OrderNotifyResponseEpay{ - PID: config.GetEpayPid(), - TradeNo: order.TradeId, // epusdt 订单号作为 EPay 平台订单号 - OutTradeNo: order.OrderId, // 注意:EPay 回调要求商户订单号使用 out_trade_no 参数 - + PID: pidInt, + TradeNo: order.TradeId, + OutTradeNo: order.OrderId, Type: "alipay", Name: order.Name, Money: fmt.Sprintf("%.4f", order.Amount), TradeStatus: "TRADE_SUCCESS", } - signstr2, err := sign.Get(notifyData, config.GetEpayKey()) + signstr2, err := sign.Get(notifyData, apiKeyRow.SecretKey) if err != nil { return err } - // 使用 form-encoded POST(EPay 标准协议格式) - formData := url.Values{ - "pid": {fmt.Sprintf("%d", notifyData.PID)}, - "trade_no": {notifyData.TradeNo}, - "out_trade_no": {notifyData.OutTradeNo}, - "type": {notifyData.Type}, - "name": {notifyData.Name}, - "money": {notifyData.Money}, - "trade_status": {notifyData.TradeStatus}, - "sign": {signstr2}, - "sign_type": {"MD5"}, + formData := map[string]string{ + "pid": fmt.Sprintf("%d", notifyData.PID), + "trade_no": notifyData.TradeNo, + "out_trade_no": notifyData.OutTradeNo, + "type": notifyData.Type, + "name": notifyData.Name, + "money": notifyData.Money, + "trade_status": notifyData.TradeStatus, + "sign": signstr2, + "sign_type": "MD5", } - resp, err := http.PostForm(order.NotifyUrl, formData) + epayResp, err := http_client.GetHttpClient().R().SetQueryParams(formData).Get(order.NotifyUrl) if err != nil { return err } - defer resp.Body.Close() - - responseBody, err := io.ReadAll(resp.Body) - if err != nil { - return err + log.Sugar.Infof("[mq] epay notify_url response status: %d, body: %s", epayResp.StatusCode(), string(epayResp.Body())) + if epayResp.StatusCode() != http.StatusOK { + return errors.New(epayResp.Status()) + } + if !isCallbackAck(epayResp.Body()) { + return errors.New("not ok") } - - fmt.Printf("notify_url response status: %d, body: %s\n", resp.StatusCode, string(responseBody)) default: client := http_client.GetHttpClient() orderResp := response.OrderNotifyResponse{ + Pid: apiKeyRow.Pid, TradeId: order.TradeId, OrderId: order.OrderId, Amount: order.Amount, @@ -224,7 +252,7 @@ func sendOrderCallback(order *mdb.Orders) error { BlockTransactionId: order.BlockTransactionId, Status: mdb.StatusPaySuccess, } - signature, err := sign.Get(orderResp, config.GetApiAuthToken()) + signature, err := sign.Get(orderResp, apiKeyRow.SecretKey) if err != nil { return err } @@ -240,7 +268,7 @@ func sendOrderCallback(order *mdb.Orders) error { if resp.StatusCode() != http.StatusOK { return errors.New(resp.Status()) } - if string(resp.Body()) != "ok" { + if !isCallbackAck(resp.Body()) { return errors.New("not ok") } } @@ -248,6 +276,11 @@ func sendOrderCallback(order *mdb.Orders) error { return nil } +func isCallbackAck(body []byte) bool { + ack := strings.ToLower(strings.TrimSpace(string(body))) + return ack == "ok" || ack == "success" +} + func cleanupExpiredTransactionLocks() { if err := data.CleanupExpiredTransactionLocks(); err != nil { log.Sugar.Errorf("[mq] cleanup expired transaction locks failed: %v", err) diff --git a/src/mq/worker_test.go b/src/mq/worker_test.go index e3813c9..e21f07e 100644 --- a/src/mq/worker_test.go +++ b/src/mq/worker_test.go @@ -1,6 +1,7 @@ package mq import ( + "encoding/json" "io" "net/http" "net/http/httptest" @@ -13,6 +14,7 @@ import ( "github.com/assimon/luuu/model/dao" "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/util/sign" ) func TestProcessExpiredOrdersExpiresWaitingOrdersAndReleasesLocks(t *testing.T) { @@ -158,6 +160,7 @@ func TestDispatchPendingCallbacksHonorsBackoffAndPersistsSuccess(t *testing.T) { BlockTransactionId: "block_callback", CallbackNum: 1, CallBackConfirm: mdb.CallBackConfirmNo, + ApiKeyID: 1, // seeded by testutil.SetupTestDatabases } if err := dao.Mdb.Create(order).Error; err != nil { t.Fatalf("create callback order: %v", err) @@ -218,6 +221,7 @@ func TestDispatchPendingCallbacksResumesRetryAfterRestart(t *testing.T) { BlockTransactionId: "block_callback_restart", CallbackNum: 0, CallBackConfirm: mdb.CallBackConfirmNo, + ApiKeyID: 1, // seeded by testutil.SetupTestDatabases } if err := dao.Mdb.Create(order).Error; err != nil { t.Fatalf("create callback order: %v", err) @@ -259,6 +263,403 @@ func TestDispatchPendingCallbacksResumesRetryAfterRestart(t *testing.T) { } } +func TestDispatchPendingCallbacksEpayRequiresAck(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + callbackLimiter = make(chan struct{}, 1) + callbackInflight = sync.Map{} + + epayKey, err := data.GetEnabledApiKey("1001") + if err != nil || epayKey == nil || epayKey.ID == 0 { + t.Fatalf("load epay key: %v", err) + } + + var requestCount int32 + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + atomic.AddInt32(&requestCount, 1) + http.Error(w, "fail", http.StatusInternalServerError) + })) + defer server.Close() + + order := &mdb.Orders{ + TradeId: "trade_callback_epay_fail", + OrderId: "order_callback_epay_fail", + Amount: 1, + Currency: "CNY", + ActualAmount: 1, + ReceiveAddress: "wallet_epay_fail", + Token: "USDT", + Status: mdb.StatusPaySuccess, + NotifyUrl: server.URL, + BlockTransactionId: "block_callback_epay_fail", + CallbackNum: 0, + CallBackConfirm: mdb.CallBackConfirmNo, + PaymentType: mdb.PaymentTypeEpay, + ApiKeyID: epayKey.ID, + } + if err := dao.Mdb.Create(order).Error; err != nil { + t.Fatalf("create callback order: %v", err) + } + + dispatchPendingCallbacks() + + waitFor(t, 3*time.Second, func() bool { + current, innerErr := data.GetOrderInfoByTradeId(order.TradeId) + if innerErr != nil || current.ID <= 0 { + return false + } + return current.CallBackConfirm == mdb.CallBackConfirmNo && current.CallbackNum == 1 + }) + + if got := atomic.LoadInt32(&requestCount); got != 1 { + t.Fatalf("callback request count = %d, want 1", got) + } +} + +func TestDispatchPendingCallbacksEpayAcceptsTrimmedOk(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + callbackLimiter = make(chan struct{}, 1) + callbackInflight = sync.Map{} + + epayKey, err := data.GetEnabledApiKey("1001") + if err != nil || epayKey == nil || epayKey.ID == 0 { + t.Fatalf("load epay key: %v", err) + } + + var requestCount int32 + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + atomic.AddInt32(&requestCount, 1) + _, _ = io.WriteString(w, " ok\n") + })) + defer server.Close() + + order := &mdb.Orders{ + TradeId: "trade_callback_epay_ok", + OrderId: "order_callback_epay_ok", + Amount: 1, + Currency: "CNY", + ActualAmount: 1, + ReceiveAddress: "wallet_epay_ok", + Token: "USDT", + Status: mdb.StatusPaySuccess, + NotifyUrl: server.URL, + BlockTransactionId: "block_callback_epay_ok", + CallbackNum: 0, + CallBackConfirm: mdb.CallBackConfirmNo, + PaymentType: mdb.PaymentTypeEpay, + ApiKeyID: epayKey.ID, + } + if err := dao.Mdb.Create(order).Error; err != nil { + t.Fatalf("create callback order: %v", err) + } + + dispatchPendingCallbacks() + + waitFor(t, 3*time.Second, func() bool { + current, innerErr := data.GetOrderInfoByTradeId(order.TradeId) + if innerErr != nil || current.ID <= 0 { + return false + } + return current.CallBackConfirm == mdb.CallBackConfirmOk && current.CallbackNum == 1 + }) + + if got := atomic.LoadInt32(&requestCount); got != 1 { + t.Fatalf("callback request count = %d, want 1", got) + } +} + +// Orders must always carry an ApiKeyID (the default key is seeded at +// bootstrap and the signing middleware / EPAY inline flow always +// stamps it). If ApiKeyID is 0, resolveOrderApiKey returns an error — +// the callback won't sign with a guess. +func TestResolveOrderApiKeyRejectsZeroApiKeyID(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + order := &mdb.Orders{ + TradeId: "no-api-key-id", + ApiKeyID: 0, + } + if _, err := resolveOrderApiKey(order); err == nil { + t.Fatal("expected error for ApiKeyID=0") + } +} + +// Happy path: when ApiKeyID points at an enabled row, resolveOrderApiKey +// returns it. +func TestResolveOrderApiKeyReturnsEnabledRow(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + row := &mdb.ApiKey{ + Name: "target", + Pid: "target-key", + SecretKey: "target-secret", + Status: mdb.ApiKeyStatusEnable, + } + if err := dao.Mdb.Create(row).Error; err != nil { + t.Fatalf("create api key: %v", err) + } + order := &mdb.Orders{ + TradeId: "happy-path", + ApiKeyID: row.ID, + } + got, err := resolveOrderApiKey(order) + if err != nil { + t.Fatalf("resolve: %v", err) + } + if got == nil || got.ID != row.ID { + t.Fatalf("resolved row = %+v, want id=%d", got, row.ID) + } +} + +func TestSendOrderCallbackGmpayUsesApiKeySecretByPid(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + key := &mdb.ApiKey{ + Name: "gmpay-key", + Pid: "9001", + SecretKey: "gmpay-secret-9001", + Status: mdb.ApiKeyStatusEnable, + } + if err := dao.Mdb.Create(key).Error; err != nil { + t.Fatalf("create gmpay api key: %v", err) + } + + warningKey := &mdb.ApiKey{ + Name: "wrong-key", + Pid: "9002", + SecretKey: "wrong-secret-9002", + Status: mdb.ApiKeyStatusEnable, + } + if err := dao.Mdb.Create(warningKey).Error; err != nil { + t.Fatalf("create wrong api key: %v", err) + } + + var received map[string]interface{} + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + defer r.Body.Close() + body, _ := io.ReadAll(r.Body) + _ = json.Unmarshal(body, &received) + _, _ = io.WriteString(w, "ok") + })) + defer server.Close() + + order := &mdb.Orders{ + TradeId: "trade_gmpay_sign", + OrderId: "order_gmpay_sign", + Amount: 1, + Currency: "CNY", + ActualAmount: 1, + ReceiveAddress: "wallet_gmpay", + Token: "USDT", + Status: mdb.StatusPaySuccess, + NotifyUrl: server.URL, + BlockTransactionId: "block_gmpay_sign", + ApiKeyID: key.ID, + } + + if err := sendOrderCallback(order); err != nil { + t.Fatalf("send callback: %v", err) + } + + if received == nil { + t.Fatal("expected callback payload") + } + if gotPid, _ := received["pid"].(string); gotPid != key.Pid { + t.Fatalf("payload pid = %q, want %q", gotPid, key.Pid) + } + + recvSig, _ := received["signature"].(string) + if recvSig == "" { + t.Fatal("payload signature is empty") + } + delete(received, "signature") + + calcSig, err := sign.Get(received, key.SecretKey) + if err != nil { + t.Fatalf("calc signature with target secret: %v", err) + } + if recvSig != calcSig { + t.Fatalf("signature mismatch: got %q want %q", recvSig, calcSig) + } + + wrongSig, err := sign.Get(received, warningKey.SecretKey) + if err != nil { + t.Fatalf("calc signature with wrong secret: %v", err) + } + if recvSig == wrongSig { + t.Fatal("signature should not match wrong api key secret") + } +} + +func TestSendOrderCallbackEpayUsesApiKeySecretByPid(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + key := &mdb.ApiKey{ + Name: "epay-key", + Pid: "9101", + SecretKey: "epay-secret-9101", + Status: mdb.ApiKeyStatusEnable, + } + if err := dao.Mdb.Create(key).Error; err != nil { + t.Fatalf("create epay api key: %v", err) + } + + warningKey := &mdb.ApiKey{ + Name: "wrong-epay-key", + Pid: "9102", + SecretKey: "wrong-epay-secret-9102", + Status: mdb.ApiKeyStatusEnable, + } + if err := dao.Mdb.Create(warningKey).Error; err != nil { + t.Fatalf("create wrong epay api key: %v", err) + } + + formPayload := map[string]string{} + callbackMethod := "" + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + callbackMethod = r.Method + if err := r.ParseForm(); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + for k, v := range r.Form { + if len(v) > 0 { + formPayload[k] = v[0] + } + } + _, _ = io.WriteString(w, "ok") + })) + defer server.Close() + + order := &mdb.Orders{ + TradeId: "trade_epay_sign", + OrderId: "order_epay_sign", + Amount: 1, + Currency: "CNY", + ActualAmount: 1, + ReceiveAddress: "wallet_epay", + Token: "USDT", + Name: "VIP", + Status: mdb.StatusPaySuccess, + NotifyUrl: server.URL, + BlockTransactionId: "block_epay_sign", + PaymentType: mdb.PaymentTypeEpay, + ApiKeyID: key.ID, + } + + if err := sendOrderCallback(order); err != nil { + t.Fatalf("send epay callback: %v", err) + } + + if callbackMethod != http.MethodGet { + t.Fatalf("callback method = %s, want %s", callbackMethod, http.MethodGet) + } + if formPayload["sign_type"] != "MD5" { + t.Fatalf("sign_type = %q, want MD5", formPayload["sign_type"]) + } + if formPayload["type"] != "alipay" { + t.Fatalf("type = %q, want alipay", formPayload["type"]) + } + if formPayload["trade_status"] != "TRADE_SUCCESS" { + t.Fatalf("trade_status = %q, want TRADE_SUCCESS", formPayload["trade_status"]) + } + + if formPayload["pid"] != key.Pid { + t.Fatalf("form pid = %q, want %q", formPayload["pid"], key.Pid) + } + recvSig := formPayload["sign"] + if recvSig == "" { + t.Fatal("epay sign is empty") + } + + signParams := map[string]interface{}{ + "pid": formPayload["pid"], + "trade_no": formPayload["trade_no"], + "out_trade_no": formPayload["out_trade_no"], + "type": formPayload["type"], + "name": formPayload["name"], + "money": formPayload["money"], + "trade_status": formPayload["trade_status"], + } + + calcSig, err := sign.Get(signParams, key.SecretKey) + if err != nil { + t.Fatalf("calc epay signature with target secret: %v", err) + } + if recvSig != calcSig { + t.Fatalf("epay signature mismatch: got %q want %q", recvSig, calcSig) + } + + wrongSig, err := sign.Get(signParams, warningKey.SecretKey) + if err != nil { + t.Fatalf("calc epay signature with wrong secret: %v", err) + } + if recvSig == wrongSig { + t.Fatal("epay signature should not match wrong api key secret") + } +} + +func TestDispatchPendingCallbacksEpayAcceptsSuccessAck(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + callbackLimiter = make(chan struct{}, 1) + callbackInflight = sync.Map{} + + epayKey, err := data.GetEnabledApiKey("1001") + if err != nil || epayKey == nil || epayKey.ID == 0 { + t.Fatalf("load epay key: %v", err) + } + + var requestCount int32 + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + atomic.AddInt32(&requestCount, 1) + _, _ = io.WriteString(w, "success") + })) + defer server.Close() + + order := &mdb.Orders{ + TradeId: "trade_callback_epay_success", + OrderId: "order_callback_epay_success", + Amount: 1, + Currency: "CNY", + ActualAmount: 1, + ReceiveAddress: "wallet_epay_success", + Token: "USDT", + Status: mdb.StatusPaySuccess, + NotifyUrl: server.URL, + BlockTransactionId: "block_callback_epay_success", + CallbackNum: 0, + CallBackConfirm: mdb.CallBackConfirmNo, + PaymentType: mdb.PaymentTypeEpay, + ApiKeyID: epayKey.ID, + } + if err := dao.Mdb.Create(order).Error; err != nil { + t.Fatalf("create callback order: %v", err) + } + + dispatchPendingCallbacks() + + waitFor(t, 3*time.Second, func() bool { + current, innerErr := data.GetOrderInfoByTradeId(order.TradeId) + if innerErr != nil || current.ID <= 0 { + return false + } + return current.CallBackConfirm == mdb.CallBackConfirmOk && current.CallbackNum == 1 + }) + + if got := atomic.LoadInt32(&requestCount); got != 1 { + t.Fatalf("callback request count = %d, want 1", got) + } +} + func waitFor(t *testing.T, timeout time.Duration, fn func() bool) { t.Helper() diff --git a/src/notify/dispatcher.go b/src/notify/dispatcher.go new file mode 100644 index 0000000..5e5e8ca --- /dev/null +++ b/src/notify/dispatcher.go @@ -0,0 +1,70 @@ +// Package notify fans out domain events (order paid, order expired, +// etc.) to every NotificationChannel subscribed to the event. Senders +// are type-keyed (telegram/webhook/email/...) so adding a new push +// method means registering one function; no callers change. +package notify + +import ( + "encoding/json" + "sync" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/util/log" +) + +// Sender delivers an already-rendered text message via a channel row. +// Config is the channel's Config JSON string (type-specific shape). +type Sender func(config, text string) error + +var ( + sendersMu sync.RWMutex + senders = map[string]Sender{} +) + +// RegisterSender wires a Sender for a channel type. Called once at +// package init of each sender file (e.g. telegram_sender.go). +func RegisterSender(channelType string, s Sender) { + sendersMu.Lock() + senders[channelType] = s + sendersMu.Unlock() +} + +func getSender(channelType string) (Sender, bool) { + sendersMu.RLock() + defer sendersMu.RUnlock() + s, ok := senders[channelType] + return s, ok +} + +// Dispatch delivers text to every enabled channel subscribed to event. +// Per-channel failures are logged but don't abort the fan-out — one +// broken TG token shouldn't prevent webhook delivery. +func Dispatch(event, text string) { + channels, err := data.ListEnabledChannelsByEvent(event) + if err != nil { + log.Sugar.Errorf("[notify] list channels failed: %v", err) + return + } + for _, ch := range channels { + sender, ok := getSender(ch.Type) + if !ok { + log.Sugar.Warnf("[notify] no sender registered for type=%s (channel_id=%d)", ch.Type, ch.ID) + continue + } + go func(c mdb.NotificationChannel) { + if err := sender(c.Config, text); err != nil { + log.Sugar.Errorf("[notify] send failed type=%s channel_id=%d: %v", c.Type, c.ID, err) + } + }(ch) + } +} + +// ParseConfig helper for senders: unmarshal channel Config JSON into +// an arbitrary struct, returning a typed error on invalid JSON. +func ParseConfig(raw string, out interface{}) error { + if raw == "" { + return ErrEmptyConfig + } + return json.Unmarshal([]byte(raw), out) +} diff --git a/src/notify/errors.go b/src/notify/errors.go new file mode 100644 index 0000000..d05a1b6 --- /dev/null +++ b/src/notify/errors.go @@ -0,0 +1,8 @@ +package notify + +import "errors" + +var ( + ErrNoSender = errors.New("no sender registered for channel type") + ErrEmptyConfig = errors.New("channel config is empty") +) diff --git a/src/notify/telegram_sender.go b/src/notify/telegram_sender.go new file mode 100644 index 0000000..3397af9 --- /dev/null +++ b/src/notify/telegram_sender.go @@ -0,0 +1,147 @@ +package notify + +import ( + "encoding/json" + "fmt" + "strconv" + "strings" + "sync" + "time" + + tb "gopkg.in/telebot.v3" +) + +// TelegramConfig mirrors the Config JSON of a telegram channel row. +type TelegramConfig struct { + BotToken string `json:"bot_token"` + ChatID int64 `json:"chat_id"` + Proxy string `json:"proxy"` +} + +func init() { + RegisterSender("telegram", sendTelegram) +} + +// botCache caches *tb.Bot instances keyed by bot_token so we don't +// create a new Bot (and call getMe) on every notification. +var ( + botCacheMu sync.RWMutex + botCache = map[string]*tb.Bot{} +) + +func getOrCreateBot(cfg *TelegramConfig) (*tb.Bot, error) { + botCacheMu.RLock() + bot, ok := botCache[cfg.BotToken] + botCacheMu.RUnlock() + if ok { + return bot, nil + } + + settings := tb.Settings{ + Token: cfg.BotToken, + Poller: &tb.LongPoller{Timeout: 1 * time.Second}, + Synchronous: true, + Offline: true, + } + if cfg.Proxy != "" { + settings.URL = cfg.Proxy + } + bot, err := tb.NewBot(settings) + if err != nil { + return nil, err + } + + botCacheMu.Lock() + botCache[cfg.BotToken] = bot + botCacheMu.Unlock() + return bot, nil +} + +// ParseTelegramConfig decodes telegram channel config and supports +// chat_id in either numeric or string form so API clients can send +// both JSON number and quoted text. +func ParseTelegramConfig(raw string) (*TelegramConfig, error) { + if strings.TrimSpace(raw) == "" { + return nil, ErrEmptyConfig + } + + var payload map[string]interface{} + if err := json.Unmarshal([]byte(raw), &payload); err != nil { + return nil, err + } + + cfg := &TelegramConfig{} + cfg.BotToken = pickFirstString(payload, "bot_token", "botToken", "bot-token") + if cfg.BotToken == "" { + return nil, fmt.Errorf("telegram config.bot_token required") + } + + chatRaw, ok := pickFirstValue(payload, "chat_id", "chatId", "chat-id") + if !ok { + return nil, fmt.Errorf("telegram config.chat_id required") + } + chatID, err := parseTelegramChatID(chatRaw) + if err != nil { + return nil, err + } + cfg.ChatID = chatID + + cfg.Proxy = pickFirstString(payload, "proxy", "proxy_url", "proxyUrl") + + return cfg, nil +} + +func pickFirstString(payload map[string]interface{}, keys ...string) string { + for _, k := range keys { + if v, ok := payload[k].(string); ok { + s := strings.TrimSpace(v) + if s != "" { + return s + } + } + } + return "" +} + +func pickFirstValue(payload map[string]interface{}, keys ...string) (interface{}, bool) { + for _, k := range keys { + if v, ok := payload[k]; ok { + return v, true + } + } + return nil, false +} + +func parseTelegramChatID(v interface{}) (int64, error) { + switch t := v.(type) { + case float64: + return int64(t), nil + case json.Number: + return t.Int64() + case string: + s := strings.TrimSpace(t) + if s == "" { + return 0, fmt.Errorf("telegram config.chat_id required") + } + id, err := strconv.ParseInt(s, 10, 64) + if err != nil { + return 0, fmt.Errorf("telegram config.chat_id invalid: %w", err) + } + return id, nil + default: + return 0, fmt.Errorf("telegram config.chat_id invalid type") + } +} + +func sendTelegram(configJSON, text string) error { + cfg, err := ParseTelegramConfig(configJSON) + if err != nil { + return err + } + bot, err := getOrCreateBot(cfg) + if err != nil { + return err + } + _, err = bot.Send(&tb.User{ID: cfg.ChatID}, text, &tb.SendOptions{ParseMode: tb.ModeHTML}) + return err +} diff --git a/src/notify/telegram_sender_test.go b/src/notify/telegram_sender_test.go new file mode 100644 index 0000000..111a553 --- /dev/null +++ b/src/notify/telegram_sender_test.go @@ -0,0 +1,53 @@ +package notify + +import "testing" + +func TestParseTelegramConfigAcceptsNumericChatID(t *testing.T) { + raw := `{"bot_token":"123:ABC","chat_id":123456789}` + cfg, err := ParseTelegramConfig(raw) + if err != nil { + t.Fatalf("parse config: %v", err) + } + if cfg.BotToken != "123:ABC" { + t.Fatalf("bot token = %q, want %q", cfg.BotToken, "123:ABC") + } + if cfg.ChatID != 123456789 { + t.Fatalf("chat id = %d, want %d", cfg.ChatID, 123456789) + } +} + +func TestParseTelegramConfigAcceptsStringChatID(t *testing.T) { + raw := `{"bot_token":"123:ABC","chat_id":"-1001234567890"}` + cfg, err := ParseTelegramConfig(raw) + if err != nil { + t.Fatalf("parse config: %v", err) + } + if cfg.ChatID != -1001234567890 { + t.Fatalf("chat id = %d, want %d", cfg.ChatID, int64(-1001234567890)) + } +} + +func TestParseTelegramConfigRejectsInvalidChatID(t *testing.T) { + raw := `{"bot_token":"123:ABC","chat_id":"not-a-number"}` + _, err := ParseTelegramConfig(raw) + if err == nil { + t.Fatal("expected parse error for invalid chat_id") + } +} + +func TestParseTelegramConfigAcceptsCamelCaseKeys(t *testing.T) { + raw := `{"botToken":"123:ABC","chatId":"-1001234567890","proxyUrl":"http://127.0.0.1:7890"}` + cfg, err := ParseTelegramConfig(raw) + if err != nil { + t.Fatalf("parse config: %v", err) + } + if cfg.BotToken != "123:ABC" { + t.Fatalf("bot token = %q, want %q", cfg.BotToken, "123:ABC") + } + if cfg.ChatID != -1001234567890 { + t.Fatalf("chat id = %d, want %d", cfg.ChatID, int64(-1001234567890)) + } + if cfg.Proxy != "http://127.0.0.1:7890" { + t.Fatalf("proxy = %q, want %q", cfg.Proxy, "http://127.0.0.1:7890") + } +} diff --git a/src/route/admin_router_test.go b/src/route/admin_router_test.go new file mode 100644 index 0000000..0db6130 --- /dev/null +++ b/src/route/admin_router_test.go @@ -0,0 +1,806 @@ +package route + +import ( + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/labstack/echo/v4" +) + +const ( + testAdminUsername = "admin" + testAdminPassword = "test-admin-pass-123" +) + +// setupAdminTestEnv sets up the test environment with a seeded admin user +// and returns the echo instance and a valid JWT token. +func setupAdminTestEnv(t *testing.T) (*echo.Echo, string) { + t.Helper() + e := setupTestEnv(t) + + // Seed admin user with a known password. + hash, err := data.HashPassword(testAdminPassword) + if err != nil { + t.Fatalf("HashPassword: %v", err) + } + dao.Mdb.Create(&mdb.AdminUser{ + Username: testAdminUsername, + PasswordHash: hash, + Status: mdb.AdminUserStatusEnable, + }) + + // Login to obtain a JWT for subsequent authenticated requests. + token := adminLogin(t, e, testAdminUsername, testAdminPassword) + return e, token +} + +// adminLogin performs a login request and returns the JWT token. +func adminLogin(t *testing.T, e *echo.Echo, username, password string) string { + t.Helper() + body := map[string]interface{}{ + "username": username, + "password": password, + } + rec := doPost(e, "/admin/api/v1/auth/login", body) + if rec.Code != http.StatusOK { + t.Fatalf("login failed: status=%d body=%s", rec.Code, rec.Body.String()) + } + var resp map[string]interface{} + if err := json.Unmarshal(rec.Body.Bytes(), &resp); err != nil { + t.Fatalf("login unmarshal: %v", err) + } + dataObj, ok := resp["data"].(map[string]interface{}) + if !ok { + t.Fatalf("login response missing data field: %s", rec.Body.String()) + } + token, ok := dataObj["token"].(string) + if !ok || token == "" { + t.Fatalf("login response missing token: %s", rec.Body.String()) + } + return token +} + +// doGetAdmin sends an authenticated GET request with a Bearer JWT. +func doGetAdmin(e *echo.Echo, path, token string) *httptest.ResponseRecorder { + req := httptest.NewRequest(http.MethodGet, path, nil) + req.Header.Set(echo.HeaderAuthorization, "Bearer "+token) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + return rec +} + +// doPostAdmin sends an authenticated POST request with a Bearer JWT. +func doPostAdmin(e *echo.Echo, path string, body map[string]interface{}, token string) *httptest.ResponseRecorder { + jsonBytes, _ := json.Marshal(body) + req := httptest.NewRequest(http.MethodPost, path, strings.NewReader(string(jsonBytes))) + req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON) + req.Header.Set(echo.HeaderAuthorization, "Bearer "+token) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + return rec +} + +// doPatchAdmin sends an authenticated PATCH request with a Bearer JWT. +func doPatchAdmin(e *echo.Echo, path string, body map[string]interface{}, token string) *httptest.ResponseRecorder { + jsonBytes, _ := json.Marshal(body) + req := httptest.NewRequest(http.MethodPatch, path, strings.NewReader(string(jsonBytes))) + req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON) + req.Header.Set(echo.HeaderAuthorization, "Bearer "+token) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + return rec +} + +// doDeleteAdmin sends an authenticated DELETE request with a Bearer JWT. +func doDeleteAdmin(e *echo.Echo, path, token string) *httptest.ResponseRecorder { + req := httptest.NewRequest(http.MethodDelete, path, nil) + req.Header.Set(echo.HeaderAuthorization, "Bearer "+token) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + return rec +} + +// doPutAdmin sends an authenticated PUT request with a Bearer JWT. +func doPutAdmin(e *echo.Echo, path string, body map[string]interface{}, token string) *httptest.ResponseRecorder { + jsonBytes, _ := json.Marshal(body) + req := httptest.NewRequest(http.MethodPut, path, strings.NewReader(string(jsonBytes))) + req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON) + req.Header.Set(echo.HeaderAuthorization, "Bearer "+token) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + return rec +} + +// assertOK asserts the response status is 200 and the status_code field is 200. +func assertOK(t *testing.T, rec *httptest.ResponseRecorder) map[string]interface{} { + t.Helper() + if rec.Code != http.StatusOK { + t.Fatalf("expected 200, got %d: %s", rec.Code, rec.Body.String()) + } + var resp map[string]interface{} + if err := json.Unmarshal(rec.Body.Bytes(), &resp); err != nil { + t.Fatalf("unmarshal response: %v", err) + } + code, _ := resp["status_code"].(float64) + if code != 200 { + t.Fatalf("expected status_code=200, got %v: %s", code, rec.Body.String()) + } + return resp +} + +// assertUnauthorized asserts that a request without a valid JWT returns 401. +func assertUnauthorized(t *testing.T, rec *httptest.ResponseRecorder) { + t.Helper() + if rec.Code != http.StatusUnauthorized { + t.Fatalf("expected 401, got %d: %s", rec.Code, rec.Body.String()) + } +} + +// TestAdminLogin_Success verifies correct credentials return 200 + JWT. +func TestAdminLogin_Success(t *testing.T) { + e := setupTestEnv(t) + hash, _ := data.HashPassword(testAdminPassword) + dao.Mdb.Create(&mdb.AdminUser{ + Username: testAdminUsername, + PasswordHash: hash, + Status: mdb.AdminUserStatusEnable, + }) + + rec := doPost(e, "/admin/api/v1/auth/login", map[string]interface{}{ + "username": testAdminUsername, + "password": testAdminPassword, + }) + t.Logf("Login response: %s", rec.Body.String()) + + resp := assertOK(t, rec) + dataObj, _ := resp["data"].(map[string]interface{}) + if dataObj["token"] == "" || dataObj["token"] == nil { + t.Fatal("expected non-empty token in login response") + } +} + +// TestAdminLogin_WrongPassword verifies wrong credentials return 4xx. +func TestAdminLogin_WrongPassword(t *testing.T) { + e := setupTestEnv(t) + hash, _ := data.HashPassword(testAdminPassword) + dao.Mdb.Create(&mdb.AdminUser{ + Username: testAdminUsername, + PasswordHash: hash, + Status: mdb.AdminUserStatusEnable, + }) + + rec := doPost(e, "/admin/api/v1/auth/login", map[string]interface{}{ + "username": testAdminUsername, + "password": "wrong-password", + }) + t.Logf("Login wrong-password response: status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code == http.StatusOK { + var resp map[string]interface{} + json.Unmarshal(rec.Body.Bytes(), &resp) + if code, _ := resp["code"].(float64); code == 200 { + t.Fatal("expected failure for wrong password, got 200") + } + } +} + +// TestAdminLogin_MissingFields verifies missing required fields return 4xx. +func TestAdminLogin_MissingFields(t *testing.T) { + e := setupTestEnv(t) + rec := doPost(e, "/admin/api/v1/auth/login", map[string]interface{}{ + "username": testAdminUsername, + // password missing + }) + t.Logf("Login missing-fields response: status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code == http.StatusOK { + var resp map[string]interface{} + json.Unmarshal(rec.Body.Bytes(), &resp) + if code, _ := resp["code"].(float64); code == 200 { + t.Fatal("expected validation failure, got code=200") + } + } +} + +// TestAdminProtectedRoute_NoToken verifies protected routes reject unauthenticated requests. +func TestAdminProtectedRoute_NoToken(t *testing.T) { + e := setupTestEnv(t) + protectedRoutes := []string{ + "/admin/api/v1/auth/me", + "/admin/api/v1/api-keys", + "/admin/api/v1/chains", + "/admin/api/v1/wallets", + "/admin/api/v1/orders", + "/admin/api/v1/dashboard/overview", + "/admin/api/v1/settings", + "/admin/api/v1/rpc-nodes", + "/admin/api/v1/notification-channels", + } + for _, path := range protectedRoutes { + req := httptest.NewRequest(http.MethodGet, path, nil) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + t.Logf("GET %s → %d", path, rec.Code) + assertUnauthorized(t, rec) + } +} + +// TestAdminMe verifies the /auth/me route returns current user info. +func TestAdminMe(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doGetAdmin(e, "/admin/api/v1/auth/me", token) + t.Logf("Me response: %s", rec.Body.String()) + resp := assertOK(t, rec) + dataObj, _ := resp["data"].(map[string]interface{}) + if dataObj["username"] != testAdminUsername { + t.Fatalf("expected username=%s, got %v", testAdminUsername, dataObj["username"]) + } +} + +// TestAdminLogout verifies the /auth/logout route succeeds with a valid token. +func TestAdminLogout(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doPostAdmin(e, "/admin/api/v1/auth/logout", nil, token) + t.Logf("Logout response: %s", rec.Body.String()) + assertOK(t, rec) +} + +// TestAdminChangePassword verifies the change-password route works correctly. +func TestAdminChangePassword(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doPostAdmin(e, "/admin/api/v1/auth/password", map[string]interface{}{ + "old_password": testAdminPassword, + "new_password": "new-pass-456", + }, token) + t.Logf("ChangePassword response: %s", rec.Body.String()) + assertOK(t, rec) + + // Verify old password no longer works. + rec2 := doPost(e, "/admin/api/v1/auth/login", map[string]interface{}{ + "username": testAdminUsername, + "password": testAdminPassword, + }) + var resp2 map[string]interface{} + json.Unmarshal(rec2.Body.Bytes(), &resp2) + code2, _ := resp2["code"].(float64) + if code2 == 200 { + t.Fatal("old password should no longer work after change") + } +} + +// ─── API Keys ──────────────────────────────────────────────────────────────── + +// TestAdminApiKeys_CRUD verifies list, create, update, status change, secret, +// stats, rotate, and delete for API keys. +func TestAdminApiKeys_CRUD(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // List — should contain seeded keys from setupTestEnv. + rec := doGetAdmin(e, "/admin/api/v1/api-keys", token) + t.Logf("ListApiKeys: %s", rec.Body.String()) + assertOK(t, rec) + + // Create a new key. + rec = doPostAdmin(e, "/admin/api/v1/api-keys", map[string]interface{}{ + "name": "test-created-key", + }, token) + t.Logf("CreateApiKey: %s", rec.Body.String()) + resp := assertOK(t, rec) + dataObj, _ := resp["data"].(map[string]interface{}) + keyID := dataObj["id"] + if keyID == nil { + t.Fatal("CreateApiKey response missing id") + } + keyIDStr := fmt.Sprintf("%.0f", keyID.(float64)) + + // Update. + rec = doPatchAdmin(e, "/admin/api/v1/api-keys/"+keyIDStr, map[string]interface{}{ + "name": "renamed-key", + }, token) + t.Logf("UpdateApiKey: %s", rec.Body.String()) + assertOK(t, rec) + + // Get secret. + rec = doGetAdmin(e, "/admin/api/v1/api-keys/"+keyIDStr+"/secret", token) + t.Logf("GetApiKeySecret: %s", rec.Body.String()) + assertOK(t, rec) + + // Get stats. + rec = doGetAdmin(e, "/admin/api/v1/api-keys/"+keyIDStr+"/stats", token) + t.Logf("GetApiKeyStats: %s", rec.Body.String()) + assertOK(t, rec) + + // Change status. + rec = doPostAdmin(e, "/admin/api/v1/api-keys/"+keyIDStr+"/status", map[string]interface{}{ + "status": 2, // disable + }, token) + t.Logf("ChangeApiKeyStatus: %s", rec.Body.String()) + assertOK(t, rec) + + // Rotate secret. + rec = doPostAdmin(e, "/admin/api/v1/api-keys/"+keyIDStr+"/rotate-secret", nil, token) + t.Logf("RotateApiKeySecret: %s", rec.Body.String()) + assertOK(t, rec) + + // Delete. + rec = doDeleteAdmin(e, "/admin/api/v1/api-keys/"+keyIDStr, token) + t.Logf("DeleteApiKey: %s", rec.Body.String()) + assertOK(t, rec) +} + +// ─── Chains ────────────────────────────────────────────────────────────────── + +// TestAdminChains_ListAndUpdate verifies listing and updating chains. +func TestAdminChains_ListAndUpdate(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // List chains — seeded in setupTestEnv. + rec := doGetAdmin(e, "/admin/api/v1/chains", token) + t.Logf("ListChains: %s", rec.Body.String()) + assertOK(t, rec) + + // Update the tron chain display name. + rec = doPatchAdmin(e, "/admin/api/v1/chains/tron", map[string]interface{}{ + "display_name": "TRON Updated", + }, token) + t.Logf("UpdateChain: %s", rec.Body.String()) + assertOK(t, rec) +} + +// ─── Chain Tokens ───────────────────────────────────────────────────────────── + +// TestAdminChainTokens_CRUD verifies CRUD operations for chain tokens. +func TestAdminChainTokens_CRUD(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // List — seeded chain tokens. + rec := doGetAdmin(e, "/admin/api/v1/chain-tokens", token) + t.Logf("ListChainTokens: %s", rec.Body.String()) + assertOK(t, rec) + + // Create. + rec = doPostAdmin(e, "/admin/api/v1/chain-tokens", map[string]interface{}{ + "network": "ethereum", + "symbol": "TEST", + "contract_address": "0xTESTADDRESS", + "decimals": 18, + }, token) + t.Logf("CreateChainToken: %s", rec.Body.String()) + resp := assertOK(t, rec) + dataObj, _ := resp["data"].(map[string]interface{}) + tokenID := dataObj["id"] + if tokenID == nil { + t.Fatal("CreateChainToken missing id") + } + tokenIDStr := fmt.Sprintf("%.0f", tokenID.(float64)) + + // Update. + rec = doPatchAdmin(e, "/admin/api/v1/chain-tokens/"+tokenIDStr, map[string]interface{}{ + "symbol": "TEST2", + }, token) + t.Logf("UpdateChainToken: %s", rec.Body.String()) + assertOK(t, rec) + + // Change status. + rec = doPostAdmin(e, "/admin/api/v1/chain-tokens/"+tokenIDStr+"/status", map[string]interface{}{ + "enabled": false, + }, token) + t.Logf("ChangeChainTokenStatus: %s", rec.Body.String()) + assertOK(t, rec) + + // Delete. + rec = doDeleteAdmin(e, "/admin/api/v1/chain-tokens/"+tokenIDStr, token) + t.Logf("DeleteChainToken: %s", rec.Body.String()) + assertOK(t, rec) +} + +// ─── RPC Nodes ──────────────────────────────────────────────────────────────── + +// TestAdminRpcNodes_CRUD verifies CRUD operations for RPC nodes. +func TestAdminRpcNodes_CRUD(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // List — empty initially. + rec := doGetAdmin(e, "/admin/api/v1/rpc-nodes", token) + t.Logf("ListRpcNodes: %s", rec.Body.String()) + assertOK(t, rec) + + // Create. + rec = doPostAdmin(e, "/admin/api/v1/rpc-nodes", map[string]interface{}{ + "network": "ethereum", + "url": "https://eth-mainnet.example.com", + "type": "http", + }, token) + t.Logf("CreateRpcNode: %s", rec.Body.String()) + resp := assertOK(t, rec) + dataObj, _ := resp["data"].(map[string]interface{}) + nodeID := dataObj["id"] + if nodeID == nil { + t.Fatal("CreateRpcNode missing id") + } + nodeIDStr := fmt.Sprintf("%.0f", nodeID.(float64)) + + // Update. + rec = doPatchAdmin(e, "/admin/api/v1/rpc-nodes/"+nodeIDStr, map[string]interface{}{ + "url": "https://eth-mainnet2.example.com", + }, token) + t.Logf("UpdateRpcNode: %s", rec.Body.String()) + assertOK(t, rec) + + // Health check — network likely unreachable in test, but route must not 404/500. + rec = doPostAdmin(e, "/admin/api/v1/rpc-nodes/"+nodeIDStr+"/health-check", nil, token) + t.Logf("HealthCheckRpcNode: status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code == http.StatusNotFound { + t.Fatalf("health-check route returned 404") + } + + // Delete. + rec = doDeleteAdmin(e, "/admin/api/v1/rpc-nodes/"+nodeIDStr, token) + t.Logf("DeleteRpcNode: %s", rec.Body.String()) + assertOK(t, rec) +} + +// ─── Wallets ───────────────────────────────────────────────────────────────── + +// TestAdminWallets_CRUD verifies wallet management routes. +func TestAdminWallets_CRUD(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // List — two wallets seeded in setupTestEnv. + rec := doGetAdmin(e, "/admin/api/v1/wallets", token) + t.Logf("ListWallets: %s", rec.Body.String()) + resp := assertOK(t, rec) + _ = resp + + // Add a new wallet. + rec = doPostAdmin(e, "/admin/api/v1/wallets", map[string]interface{}{ + "network": "ethereum", + "address": "0xTestEthAddress001", + }, token) + t.Logf("AddWallet: %s", rec.Body.String()) + resp2 := assertOK(t, rec) + dataObj, _ := resp2["data"].(map[string]interface{}) + walletID := dataObj["id"] + if walletID == nil { + t.Fatal("AddWallet missing id") + } + walletIDStr := fmt.Sprintf("%.0f", walletID.(float64)) + + // Get single wallet. + rec = doGetAdmin(e, "/admin/api/v1/wallets/"+walletIDStr, token) + t.Logf("GetWallet: %s", rec.Body.String()) + assertOK(t, rec) + + // Update. + rec = doPatchAdmin(e, "/admin/api/v1/wallets/"+walletIDStr, map[string]interface{}{ + "address": "0xTestEthAddress002", + }, token) + t.Logf("UpdateWallet: %s", rec.Body.String()) + assertOK(t, rec) + + // Change status. + rec = doPostAdmin(e, "/admin/api/v1/wallets/"+walletIDStr+"/status", map[string]interface{}{ + "status": 2, // disable + }, token) + t.Logf("ChangeWalletStatus: %s", rec.Body.String()) + assertOK(t, rec) + + // Delete. + rec = doDeleteAdmin(e, "/admin/api/v1/wallets/"+walletIDStr, token) + t.Logf("DeleteWallet: %s", rec.Body.String()) + assertOK(t, rec) +} + +// TestAdminWallets_BatchImport verifies batch wallet import. +func TestAdminWallets_BatchImport(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doPostAdmin(e, "/admin/api/v1/wallets/batch-import", map[string]interface{}{ + "network": "ethereum", + "addresses": []string{"0xBatchAddr001", "0xBatchAddr002"}, + }, token) + t.Logf("BatchImportWallets: %s", rec.Body.String()) + assertOK(t, rec) +} + +// ─── Orders ────────────────────────────────────────────────────────────────── + +// TestAdminOrders_List verifies listing orders (empty initially). +func TestAdminOrders_List(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doGetAdmin(e, "/admin/api/v1/orders", token) + t.Logf("ListOrders: %s", rec.Body.String()) + assertOK(t, rec) +} + +// TestAdminOrders_Export verifies the export endpoint is accessible. +func TestAdminOrders_Export(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doGetAdmin(e, "/admin/api/v1/orders/export", token) + t.Logf("ExportOrders: status=%d", rec.Code) + // Should return 200 (even with empty result set). + if rec.Code != http.StatusOK { + t.Fatalf("expected 200, got %d: %s", rec.Code, rec.Body.String()) + } +} + +// TestAdminOrders_GetNotFound verifies a non-existent trade_id returns a +// non-200 business code (not a 404 or 500 HTTP error). +func TestAdminOrders_GetNotFound(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doGetAdmin(e, "/admin/api/v1/orders/nonexistent-trade-id", token) + t.Logf("GetOrder (not found): status=%d body=%s", rec.Code, rec.Body.String()) + // Should not be a server error. + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } +} + +// TestAdminOrders_CloseNotFound verifies closing a non-existent order returns +// a graceful error (not 500). +func TestAdminOrders_CloseNotFound(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doPostAdmin(e, "/admin/api/v1/orders/nonexistent-trade-id/close", nil, token) + t.Logf("CloseOrder (not found): status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } +} + +// TestAdminOrders_MarkPaidNotFound verifies mark-paid on non-existent order. +func TestAdminOrders_MarkPaidNotFound(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doPostAdmin(e, "/admin/api/v1/orders/nonexistent-trade-id/mark-paid", nil, token) + t.Logf("MarkOrderPaid (not found): status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } +} + +// TestAdminOrders_ResendCallbackNotFound verifies resend-callback graceful error. +func TestAdminOrders_ResendCallbackNotFound(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doPostAdmin(e, "/admin/api/v1/orders/nonexistent-trade-id/resend-callback", nil, token) + t.Logf("ResendCallback (not found): status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } +} + +// ─── Dashboard ─────────────────────────────────────────────────────────────── + +// TestAdminDashboard_AllRoutes verifies all dashboard endpoints return 200. +func TestAdminDashboard_AllRoutes(t *testing.T) { + e, token := setupAdminTestEnv(t) + routes := []string{ + "/admin/api/v1/dashboard/overview", + "/admin/api/v1/dashboard/asset-trend", + "/admin/api/v1/dashboard/revenue-trend", + "/admin/api/v1/dashboard/order-stats", + "/admin/api/v1/dashboard/recent-orders", + } + for _, path := range routes { + rec := doGetAdmin(e, path, token) + t.Logf("GET %s → %d: %s", path, rec.Code, rec.Body.String()) + assertOK(t, rec) + } +} + +// ─── Settings ──────────────────────────────────────────────────────────────── + +// TestAdminSettings_ListAndUpsert verifies listing and upserting settings. +func TestAdminSettings_ListAndUpsert(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // List settings. + rec := doGetAdmin(e, "/admin/api/v1/settings", token) + t.Logf("ListSettings: %s", rec.Body.String()) + assertOK(t, rec) + + // Upsert a setting. + rec = doPutAdmin(e, "/admin/api/v1/settings", map[string]interface{}{ + "items": []map[string]interface{}{ + {"group": "rate", "key": "rate.forced_usdt_rate", "value": "7.5", "type": "string"}, + }, + }, token) + t.Logf("UpsertSettings: %s", rec.Body.String()) + assertOK(t, rec) +} + +// TestAdminSettings_DeleteNonExistent verifies deleting a non-existent setting. +func TestAdminSettings_DeleteNonExistent(t *testing.T) { + e, token := setupAdminTestEnv(t) + rec := doDeleteAdmin(e, "/admin/api/v1/settings/nonexistent.key", token) + t.Logf("DeleteSetting (nonexistent): status=%d body=%s", rec.Code, rec.Body.String()) + // Should not be a server error. + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } +} + +// ─── Notification Channels ─────────────────────────────────────────────────── + +// TestAdminNotificationChannels_CRUD verifies notification channel routes. +func TestAdminNotificationChannels_CRUD(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // List — empty initially. + rec := doGetAdmin(e, "/admin/api/v1/notification-channels", token) + t.Logf("ListNotificationChannels: %s", rec.Body.String()) + assertOK(t, rec) + + // Create a webhook channel. + rec = doPostAdmin(e, "/admin/api/v1/notification-channels", map[string]interface{}{ + "name": "test-webhook", + "type": "webhook", + "config": map[string]interface{}{"url": "http://localhost/webhook"}, + "events": map[string]bool{"order.paid": true}, + }, token) + t.Logf("CreateNotificationChannel: %s", rec.Body.String()) + resp := assertOK(t, rec) + dataObj, _ := resp["data"].(map[string]interface{}) + chanID := dataObj["id"] + if chanID == nil { + t.Fatal("CreateNotificationChannel missing id") + } + chanIDStr := fmt.Sprintf("%.0f", chanID.(float64)) + + // Update. + rec = doPatchAdmin(e, "/admin/api/v1/notification-channels/"+chanIDStr, map[string]interface{}{ + "name": "renamed-webhook", + }, token) + t.Logf("UpdateNotificationChannel: %s", rec.Body.String()) + assertOK(t, rec) + + // Change status. + rec = doPostAdmin(e, "/admin/api/v1/notification-channels/"+chanIDStr+"/status", map[string]interface{}{ + "enabled": false, + }, token) + t.Logf("ChangeNotificationChannelStatus: %s", rec.Body.String()) + assertOK(t, rec) + + // Delete. + rec = doDeleteAdmin(e, "/admin/api/v1/notification-channels/"+chanIDStr, token) + t.Logf("DeleteNotificationChannel: %s", rec.Body.String()) + assertOK(t, rec) +} + +// TestAdminNotificationChannels_TelegramFrontendPayloadCompatibility verifies +// the admin API accepts common frontend telegram payload variants: +// - type in mixed case ("Telegram") +// - config in camelCase keys (botToken/chatId) +// - events as string array +func TestAdminNotificationChannels_TelegramFrontendPayloadCompatibility(t *testing.T) { + e, token := setupAdminTestEnv(t) + + rec := doPostAdmin(e, "/admin/api/v1/notification-channels", map[string]interface{}{ + "name": "frontend-telegram", + "type": "Telegram", + "config": map[string]interface{}{ + "botToken": "123:ABC", + "chatId": "-1001234567890", + }, + "events": []string{"order.paid", "order.expired"}, + }, token) + t.Logf("CreateFrontendStyleTelegramChannel: %s", rec.Body.String()) + resp := assertOK(t, rec) + + dataObj, ok := resp["data"].(map[string]interface{}) + if !ok { + t.Fatalf("missing data object: %s", rec.Body.String()) + } + + eventsRaw, _ := dataObj["events"].(string) + if eventsRaw == "" { + t.Fatalf("missing events json in response data: %s", rec.Body.String()) + } + var events map[string]bool + if err := json.Unmarshal([]byte(eventsRaw), &events); err != nil { + t.Fatalf("unmarshal events: %v", err) + } + if !events["order.paid"] || !events["order.expired"] { + t.Fatalf("events not normalized as expected: %+v", events) + } +} + +// ─── Orders list-with-sub ───────────────────────────────────────────────────── + +// TestAdminOrders_ListWithSubExcludesSubOrdersFromTopLevel verifies that +// sub-orders do NOT appear at the top level of /orders/list-with-sub and are +// instead nested inside their parent's sub_orders array. +func TestAdminOrders_ListWithSubExcludesSubOrdersFromTopLevel(t *testing.T) { + e, token := setupAdminTestEnv(t) + + // Seed Ethereum wallet and chain_token so SwitchNetwork can allocate + // a sub-order on that network. The chain record is already seeded by + // MdbTableInit; only the wallet address and token are needed here. + dao.Mdb.Create(&mdb.WalletAddress{ + Network: mdb.NetworkEthereum, + Address: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + Status: mdb.TokenStatusEnable, + }) + if err := dao.Mdb.Where(mdb.ChainToken{Network: mdb.NetworkEthereum, Symbol: "USDT"}). + FirstOrCreate(&mdb.ChainToken{ + Network: mdb.NetworkEthereum, Symbol: "USDT", + ContractAddress: "0xdAC17F958D2ee523a2206206994597C13D831ec7", + Decimals: 6, Enabled: true, + }).Error; err != nil { + t.Fatalf("seed ethereum USDT token: %v", err) + } + + // Create a parent order via the gmpay API. + parentBody := signBody(map[string]interface{}{ + "order_id": "listsubtest-parent", + "amount": 5.0, + "currency": "CNY", + "token": "USDT", + "network": "tron", + "notify_url": "https://merchant.example/callback", + "redirect_url": "https://merchant.example/redirect", + }) + rec := doPost(e, "/payments/gmpay/v1/order/create-transaction", parentBody) + t.Logf("CreateParent: %s", rec.Body.String()) + if rec.Code != http.StatusOK { + t.Fatalf("create parent: got %d: %s", rec.Code, rec.Body.String()) + } + var parentResp map[string]interface{} + json.Unmarshal(rec.Body.Bytes(), &parentResp) + parentTradeId := parentResp["data"].(map[string]interface{})["trade_id"].(string) + + // Switch to Ethereum to create a sub-order (no signature required). + rec = doPost(e, "/pay/switch-network", map[string]interface{}{ + "trade_id": parentTradeId, + "token": "USDT", + "network": "ethereum", + }) + t.Logf("SwitchNetwork: %s", rec.Body.String()) + if rec.Code != http.StatusOK { + t.Fatalf("switch network: got %d: %s", rec.Code, rec.Body.String()) + } + var switchResp map[string]interface{} + json.Unmarshal(rec.Body.Bytes(), &switchResp) + subTradeId := switchResp["data"].(map[string]interface{})["trade_id"].(string) + + // Fetch list-with-sub. + rec = doGetAdmin(e, "/admin/api/v1/orders/list-with-sub", token) + t.Logf("ListWithSub: %s", rec.Body.String()) + resp := assertOK(t, rec) + + dataObj, ok := resp["data"].(map[string]interface{}) + if !ok { + t.Fatalf("missing data object: %s", rec.Body.String()) + } + listRaw, _ := dataObj["list"].([]interface{}) + + // Collect all trade_ids at the top level and in sub_orders. + topLevelIds := map[string]bool{} + subOrderIds := map[string]bool{} + for _, item := range listRaw { + entry := item.(map[string]interface{}) + tradeId := entry["trade_id"].(string) + topLevelIds[tradeId] = true + if subs, ok := entry["sub_orders"].([]interface{}); ok { + for _, s := range subs { + sub := s.(map[string]interface{}) + subOrderIds[sub["trade_id"].(string)] = true + } + } + } + + // Sub-order must NOT appear at the top level. + if topLevelIds[subTradeId] { + t.Fatalf("sub-order trade_id=%s appears at top level — should be nested only", subTradeId) + } + // Parent must appear at the top level. + if !topLevelIds[parentTradeId] { + t.Fatalf("parent trade_id=%s missing from top level", parentTradeId) + } + // Sub-order must appear under the parent's sub_orders. + if !subOrderIds[subTradeId] { + t.Fatalf("sub-order trade_id=%s not found in any sub_orders array", subTradeId) + } +} diff --git a/src/route/router.go b/src/route/router.go index d332acc..fbb1937 100644 --- a/src/route/router.go +++ b/src/route/router.go @@ -2,19 +2,22 @@ package route import ( "bytes" + "crypto/subtle" "encoding/json" "fmt" "io" "net/http" "strconv" - "github.com/assimon/luuu/config" + "github.com/assimon/luuu/controller/admin" "github.com/assimon/luuu/controller/comm" "github.com/assimon/luuu/middleware" + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/mdb" "github.com/assimon/luuu/util/constant" "github.com/assimon/luuu/util/sign" "github.com/labstack/echo/v4" + echoMiddleware "github.com/labstack/echo/v4/middleware" ) // RegisterRoute 路由注册 @@ -31,55 +34,20 @@ func RegisterRoute(e *echo.Echo) { // payment routes paymentRoute := e.Group("/payments") - // for epusdt - epusdtV1 := paymentRoute.Group("/epusdt/v1") - epusdtV1.POST("/order/create-transaction", func(ctx echo.Context) error { - // add default token and currency for old plugin - - body := make(map[string]interface{}) - if err := ctx.Bind(&body); err != nil { - return comm.Ctrl.FailJson(ctx, err) - } - if _, ok := body["token"]; !ok { - body["token"] = "usdt" - } - if _, ok := body["currency"]; !ok { - body["currency"] = "cny" - } - if _, ok := body["network"]; !ok { - body["network"] = "tron" - } - ctx.Set("request_body", body) - - jsonBytes, err := json.Marshal(body) - if err != nil { - return comm.Ctrl.FailJson(ctx, err) - } - ctx.Request().Body = io.NopCloser(bytes.NewBuffer(jsonBytes)) - ctx.Request().ContentLength = int64(len(jsonBytes)) - - return comm.Ctrl.CreateTransaction(ctx) - }, middleware.CheckApiSign()) - // gmpay v1 routes gmpayV1 := paymentRoute.Group("/gmpay/v1") gmpayV1.POST("/order/create-transaction", comm.Ctrl.CreateTransaction, middleware.CheckApiSign()) gmpayV1.GET("/supported-assets", comm.Ctrl.GetSupportedAssets) - gmpayV1.GET("/supported-assets/records", comm.Ctrl.ListSupportedAssetRecords) - gmpayV1.GET("/supported-assets/:id", comm.Ctrl.GetSupportedAsset) - gmpayV1.POST("/supported-assets/add", comm.Ctrl.AddSupportedAsset, middleware.CheckApiToken()) - gmpayV1.POST("/supported-assets/:id/update", comm.Ctrl.UpdateSupportedAsset, middleware.CheckApiToken()) - gmpayV1.POST("/supported-assets/:id/delete", comm.Ctrl.DeleteSupportedAsset, middleware.CheckApiToken()) - - // wallet management routes - walletV1 := gmpayV1.Group("/wallet", middleware.CheckApiToken()) - walletV1.POST("/add", comm.Ctrl.AddWallet) - walletV1.GET("/list", comm.Ctrl.ListWallets) - walletV1.GET("/:id", comm.Ctrl.GetWallet) - walletV1.POST("/:id/status", comm.Ctrl.ChangeWalletStatus) - walletV1.POST("/:id/delete", comm.Ctrl.DeleteWallet) + // gmpayV1.GET("/supported-assets/records", comm.Ctrl.ListSupportedAssetRecords) + // gmpayV1.GET("/supported-assets/:id", comm.Ctrl.GetSupportedAsset) // epay v1 routes + // + // Signature uses the pid from the request as the api_keys lookup + // key; the matching row's secret_key plays the role of the legacy + // EPAY "key" value. Env-based (EPAY_PID/EPAY_KEY) fallback was + // removed — the default seeded api_key is always available, and + // having two sources of truth led to inbound/outbound sig mismatch. epayV1 := paymentRoute.Group("/epay/v1") epayV1.Match([]string{http.MethodPost, http.MethodGet}, "/order/create-transaction/submit.php", func(ctx echo.Context) error { params := make(map[string]interface{}) @@ -107,11 +75,11 @@ func RegisterRoute(e *echo.Echo) { if !ok { return "" } - s, ok := v.(string) - if !ok { - return "" + switch t := v.(type) { + case string: + return t } - return s + return "" } signstr := getString(params, "sign") @@ -122,17 +90,29 @@ func RegisterRoute(e *echo.Echo) { delete(params, "sign") delete(params, "sign_type") - // we need to add pid to params for signature verification - params["pid"] = config.GetEpayPid() + pidStr := getString(params, "pid") + if pidStr == "" { + return constant.SignatureErr + } + apiKeyRow, err := data.GetEnabledApiKey(pidStr) + if err != nil || apiKeyRow == nil || apiKeyRow.ID == 0 { + return constant.SignatureErr + } - checkSignature, err := sign.Get(params, config.GetApiAuthToken()) + checkSignature, err := sign.Get(params, apiKeyRow.SecretKey) if err != nil { return constant.SignatureErr } - if checkSignature != signstr { + if subtle.ConstantTimeCompare([]byte(checkSignature), []byte(signstr)) != 1 { return constant.SignatureErr } + if !middleware.IsIPWhitelisted(apiKeyRow.IpWhitelist, ctx.RealIP()) { + return constant.SignatureErr + } + + _ = data.TouchApiKeyUsage(apiKeyRow.ID) + money := getString(params, "money") name := getString(params, "name") notifyURL := getString(params, "notify_url") @@ -145,9 +125,9 @@ func RegisterRoute(e *echo.Echo) { } body := map[string]interface{}{ - "token": "usdt", - "currency": "cny", - "network": "tron", + "token": data.GetSettingString(mdb.SettingKeyEpayDefaultToken, "usdt"), + "currency": data.GetSettingString(mdb.SettingKeyEpayDefaultCurrency, "cny"), + "network": data.GetSettingString(mdb.SettingKeyEpayDefaultNetwork, "tron"), "amount": amountFloat, "notify_url": notifyURL, "order_id": outTradeNo, @@ -158,6 +138,8 @@ func RegisterRoute(e *echo.Echo) { } ctx.Set("request_body", body) + ctx.Set(middleware.ApiKeyIDKey, apiKeyRow.ID) + ctx.Set(middleware.ApiKeyRowKey, apiKeyRow) jsonBytes, err := json.Marshal(body) if err != nil { @@ -170,6 +152,115 @@ func RegisterRoute(e *echo.Echo) { ctx.Request().Header.Set("Content-Type", "application/json") return comm.Ctrl.CreateTransactionAndRedirect(ctx) - }) + + registerAdminRoutes(e) +} + +// registerAdminRoutes wires the management console API surface under +// /admin/api/v1. Everything except /auth/login requires a valid JWT. +func registerAdminRoutes(e *echo.Echo) { + // CORS for the management console. The admin SPA is commonly served + // from a different origin (local dev, CDN, etc.), so allow any origin + // but require explicit echoing — browsers refuse wildcard + credentials. + adminCORS := echoMiddleware.CORSWithConfig(echoMiddleware.CORSConfig{ + AllowOriginFunc: func(origin string) (bool, error) { return true, nil }, + AllowMethods: []string{ + http.MethodGet, + http.MethodPost, + http.MethodPatch, + http.MethodPut, + http.MethodDelete, + http.MethodOptions, + }, + AllowHeaders: []string{ + echo.HeaderOrigin, + echo.HeaderContentType, + echo.HeaderAuthorization, + echo.HeaderAccept, + echo.HeaderXRequestedWith, + }, + AllowCredentials: true, + MaxAge: 86400, + }) + + adminV1 := e.Group("/admin/api/v1", adminCORS) + + // Public (no JWT) + adminV1.POST("/auth/login", admin.Ctrl.Login) + + // Authenticated + authed := adminV1.Group("", middleware.CheckAdminJWT()) + authed.POST("/auth/logout", admin.Ctrl.Logout) + authed.GET("/auth/me", admin.Ctrl.Me) + authed.POST("/auth/password", admin.Ctrl.ChangePassword) + + // API key management + authed.GET("/api-keys", admin.Ctrl.ListApiKeys) + authed.POST("/api-keys", admin.Ctrl.CreateApiKey) + authed.PATCH("/api-keys/:id", admin.Ctrl.UpdateApiKey) + authed.POST("/api-keys/:id/status", admin.Ctrl.ChangeApiKeyStatus) + authed.POST("/api-keys/:id/rotate-secret", admin.Ctrl.RotateApiKeySecret) + authed.DELETE("/api-keys/:id", admin.Ctrl.DeleteApiKey) + authed.GET("/api-keys/:id/stats", admin.Ctrl.GetApiKeyStats) + authed.GET("/api-keys/:id/secret", admin.Ctrl.GetApiKeySecret) + + // Notification channels + authed.GET("/notification-channels", admin.Ctrl.ListNotificationChannels) + authed.POST("/notification-channels", admin.Ctrl.CreateNotificationChannel) + authed.PATCH("/notification-channels/:id", admin.Ctrl.UpdateNotificationChannel) + authed.POST("/notification-channels/:id/status", admin.Ctrl.ChangeNotificationChannelStatus) + authed.DELETE("/notification-channels/:id", admin.Ctrl.DeleteNotificationChannel) + + // gmpayV1.GET("/supported-assets", comm.Ctrl.GetSupportedAssets) + authed.GET("/supported-assets", comm.Ctrl.GetSupportedAssets) // wrap for admin console, same handler as public endpoint + + // Chains + authed.GET("/chains", admin.Ctrl.ListChains) + authed.PATCH("/chains/:network", admin.Ctrl.UpdateChain) + + // Chain tokens (per-chain token catalog) + authed.GET("/chain-tokens", admin.Ctrl.ListChainTokens) + authed.POST("/chain-tokens", admin.Ctrl.CreateChainToken) + authed.PATCH("/chain-tokens/:id", admin.Ctrl.UpdateChainToken) + authed.POST("/chain-tokens/:id/status", admin.Ctrl.ChangeChainTokenStatus) + authed.DELETE("/chain-tokens/:id", admin.Ctrl.DeleteChainToken) + + // RPC nodes + authed.GET("/rpc-nodes", admin.Ctrl.ListRpcNodes) + authed.POST("/rpc-nodes", admin.Ctrl.CreateRpcNode) + authed.PATCH("/rpc-nodes/:id", admin.Ctrl.UpdateRpcNode) + authed.DELETE("/rpc-nodes/:id", admin.Ctrl.DeleteRpcNode) + authed.POST("/rpc-nodes/:id/health-check", admin.Ctrl.HealthCheckRpcNode) + + // Wallet (address) management + authed.GET("/wallets", admin.Ctrl.AdminListWallets) + authed.POST("/wallets", admin.Ctrl.AdminAddWallet) + authed.GET("/wallets/:id", admin.Ctrl.AdminGetWallet) + authed.PATCH("/wallets/:id", admin.Ctrl.AdminUpdateWallet) + authed.POST("/wallets/:id/status", admin.Ctrl.AdminChangeWalletStatus) + authed.DELETE("/wallets/:id", admin.Ctrl.AdminDeleteWallet) + authed.POST("/wallets/batch-import", admin.Ctrl.AdminBatchImportWallets) + + // Orders + authed.GET("/orders", admin.Ctrl.ListOrders) + authed.GET("/orders/export", admin.Ctrl.ExportOrders) + authed.GET("/orders/list-with-sub", admin.Ctrl.ListOrdersWithSub) + authed.GET("/orders/:trade_id", admin.Ctrl.GetOrder) + authed.GET("/orders/:trade_id/with-sub", admin.Ctrl.GetOrderWithSub) + authed.POST("/orders/:trade_id/close", admin.Ctrl.CloseOrder) + authed.POST("/orders/:trade_id/mark-paid", admin.Ctrl.MarkOrderPaid) + authed.POST("/orders/:trade_id/resend-callback", admin.Ctrl.ResendCallback) + + // Dashboard + authed.GET("/dashboard/overview", admin.Ctrl.Overview) + authed.GET("/dashboard/asset-trend", admin.Ctrl.AssetTrend) + authed.GET("/dashboard/revenue-trend", admin.Ctrl.RevenueTrend) + authed.GET("/dashboard/order-stats", admin.Ctrl.OrderStats) + authed.GET("/dashboard/recent-orders", admin.Ctrl.RecentOrders) + + // Settings + authed.GET("/settings", admin.Ctrl.ListSettings) + authed.PUT("/settings", admin.Ctrl.UpsertSettings) + authed.DELETE("/settings/:key", admin.Ctrl.DeleteSetting) } diff --git a/src/route/router_test.go b/src/route/router_test.go index 350d098..950b41e 100644 --- a/src/route/router_test.go +++ b/src/route/router_test.go @@ -11,11 +11,13 @@ import ( "testing" "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/mdb" "github.com/assimon/luuu/util/log" "github.com/assimon/luuu/util/sign" "github.com/labstack/echo/v4" "github.com/spf13/viper" + "gorm.io/gorm/clause" ) const testAPIToken = "test-secret-token" @@ -28,8 +30,6 @@ func setupTestEnv(t *testing.T) *echo.Echo { // minimal viper config viper.Reset() viper.Set("db_type", "sqlite") - viper.Set("api_auth_token", testAPIToken) - viper.Set("epay_pid", 1) viper.Set("app_uri", "http://localhost:8080") viper.Set("order_expiration_time", 10) viper.Set("api_rate_url", "") @@ -54,30 +54,62 @@ func setupTestEnv(t *testing.T) *echo.Echo { } // ensure tables exist (MdbTableInit uses sync.Once, so migrate directly) - dao.Mdb.AutoMigrate(&mdb.Orders{}, &mdb.WalletAddress{}, &mdb.SupportedAsset{}) + dao.Mdb.AutoMigrate( + &mdb.Orders{}, + &mdb.WalletAddress{}, + &mdb.AdminUser{}, + &mdb.ApiKey{}, + &mdb.Setting{}, + &mdb.NotificationChannel{}, + &mdb.Chain{}, + &mdb.ChainToken{}, + &mdb.RpcNode{}, + ) + + // reset the settings cache so stale entries from a prior test don't leak + _ = data.ReloadSettings() // seed wallet addresses dao.Mdb.Create(&mdb.WalletAddress{Network: mdb.NetworkTron, Address: "TTestTronAddress001", Status: mdb.TokenStatusEnable}) dao.Mdb.Create(&mdb.WalletAddress{Network: mdb.NetworkSolana, Address: "SolTestAddress001", Status: mdb.TokenStatusEnable}) - // seed supported assets if empty - var supportCnt int64 - dao.Mdb.Model(&mdb.SupportedAsset{}).Count(&supportCnt) - if supportCnt == 0 { - dao.Mdb.Create(&[]mdb.SupportedAsset{ - {Network: mdb.NetworkTron, Token: "TRX", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkTron, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkSolana, Token: "SOL", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkSolana, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkSolana, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkEthereum, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkEthereum, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkBsc, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkBsc, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkPolygon, Token: "USDT", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkPolygon, Token: "USDC", Status: mdb.TokenStatusEnable}, - {Network: mdb.NetworkPlasma, Token: "USDT", Status: mdb.TokenStatusEnable}, - }) - } + // seed chains so scanners know the test networks are "enabled". + // Use ON CONFLICT DO NOTHING: MdbTableInit (called via DBInit) uses sync.Once + // and may have already seeded these rows into this DB on the first test run. + dao.Mdb.Clauses(clause.OnConflict{DoNothing: true}).Create(&[]mdb.Chain{ + {Network: mdb.NetworkTron, DisplayName: "TRON", Enabled: true}, + {Network: mdb.NetworkSolana, DisplayName: "Solana", Enabled: true}, + {Network: mdb.NetworkEthereum, DisplayName: "Ethereum", Enabled: true}, + {Network: mdb.NetworkBsc, DisplayName: "BSC", Enabled: true}, + {Network: mdb.NetworkPolygon, DisplayName: "Polygon", Enabled: true}, + {Network: mdb.NetworkPlasma, DisplayName: "Plasma", Enabled: true}, + }) + + // seed chain_tokens — GetSupportedAssets now reads from this table. + // Same idempotency rationale as above. + dao.Mdb.Clauses(clause.OnConflict{DoNothing: true}).Create(&[]mdb.ChainToken{ + {Network: mdb.NetworkTron, Symbol: "USDT", ContractAddress: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkTron, Symbol: "TRX", ContractAddress: "", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkSolana, Symbol: "USDT", ContractAddress: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkSolana, Symbol: "USDC", ContractAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", Decimals: 6, Enabled: true}, + {Network: mdb.NetworkSolana, Symbol: "SOL", ContractAddress: "", Decimals: 9, Enabled: true}, + }) + + // Seed one universal api_keys row. The test's testAPIToken doubles + // as both pid and secret_key so sign.Get(body, testAPIToken) calls + // stay valid. + dao.Mdb.Create(&mdb.ApiKey{ + Name: "test-universal", + Pid: testAPIToken, + SecretKey: testAPIToken, + Status: mdb.ApiKeyStatusEnable, + }) + // Additional numeric-PID row for EPAY tests (EPAY pid must be numeric). + dao.Mdb.Create(&mdb.ApiKey{ + Name: "test-epay-pid-1", + Pid: "1", + SecretKey: testAPIToken, + Status: mdb.ApiKeyStatusEnable, + }) e := echo.New() RegisterRoute(e) @@ -85,6 +117,11 @@ func setupTestEnv(t *testing.T) *echo.Echo { } func signBody(body map[string]interface{}) map[string]interface{} { + // Signature middleware looks up api_keys by the "pid" field and + // uses that row's secret_key as the signing bizKey. + if _, ok := body["pid"]; !ok { + body["pid"] = testAPIToken + } sig, _ := sign.Get(body, testAPIToken) body["signature"] = sig return body @@ -121,42 +158,6 @@ func doFormPost(e *echo.Echo, path string, values url.Values) *httptest.Response return rec } -// TestCreateOrderEpusdtDefaultTron tests the epusdt compatibility route defaults to tron network. -func TestCreateOrderEpusdtDefaultTron(t *testing.T) { - e := setupTestEnv(t) - - body := signBody(map[string]interface{}{ - "order_id": "test-tron-001", - "amount": 1.00, - "notify_url": "http://localhost/notify", - }) - - rec := doPost(e, "/payments/epusdt/v1/order/create-transaction", body) - t.Logf("Status: %d, Body: %s", rec.Code, rec.Body.String()) - - if rec.Code != http.StatusOK { - t.Fatalf("expected 200, got %d", rec.Code) - } - - var resp map[string]interface{} - if err := json.Unmarshal(rec.Body.Bytes(), &resp); err != nil { - t.Fatalf("unmarshal: %v", err) - } - - data, ok := resp["data"].(map[string]interface{}) - if !ok { - t.Fatalf("expected data in response, got: %v", resp) - } - - if data["trade_id"] == nil || data["trade_id"] == "" { - t.Error("expected trade_id in response") - } - if data["receive_address"] != "TTestTronAddress001" { - t.Errorf("expected tron address, got: %v", data["receive_address"]) - } - t.Logf("Order created: trade_id=%v address=%v amount=%v", data["trade_id"], data["receive_address"], data["actual_amount"]) -} - // TestCreateOrderGmpayV1Solana tests the gmpay route with solana network. func TestCreateOrderGmpayV1Solana(t *testing.T) { e := setupTestEnv(t) @@ -223,24 +224,6 @@ func TestCreateOrderGmpayV1SolNative(t *testing.T) { } } -func doGet(e *echo.Echo, path string) *httptest.ResponseRecorder { - req := httptest.NewRequest(http.MethodGet, path, nil) - req.Header.Set("Authorization", testAPIToken) - rec := httptest.NewRecorder() - e.ServeHTTP(rec, req) - return rec -} - -func doPostWithToken(e *echo.Echo, path string, body map[string]interface{}) *httptest.ResponseRecorder { - jsonBytes, _ := json.Marshal(body) - req := httptest.NewRequest(http.MethodPost, path, strings.NewReader(string(jsonBytes))) - req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON) - req.Header.Set("Authorization", testAPIToken) - rec := httptest.NewRecorder() - e.ServeHTTP(rec, req) - return rec -} - func parseResp(t *testing.T, rec *httptest.ResponseRecorder) map[string]interface{} { t.Helper() var resp map[string]interface{} @@ -250,6 +233,183 @@ func parseResp(t *testing.T, rec *httptest.ResponseRecorder) map[string]interfac return resp } +// signGmpayFormValues builds a signed url.Values for the GMPAY create-transaction endpoint. +// The GMPAY middleware uses "signature" (not "sign") and "pid" (not numeric pid from EPAY). +func signGmpayFormValues(values url.Values) url.Values { + if values.Get("pid") == "" { + values.Set("pid", testAPIToken) + } + params := make(map[string]interface{}) + for k, vs := range values { + if k == "signature" || len(vs) == 0 { + continue + } + params[k] = vs[0] + } + sig, _ := sign.Get(params, testAPIToken) + values.Set("signature", sig) + return values +} + +// TestCreateOrderGmpayV1FormData verifies that the GMPAY create-transaction endpoint +// accepts application/x-www-form-urlencoded in addition to JSON. +func TestCreateOrderGmpayV1FormData(t *testing.T) { + e := setupTestEnv(t) + + values := signGmpayFormValues(url.Values{ + "order_id": {"test-form-001"}, + "amount": {"1.00"}, + "token": {"usdt"}, + "currency": {"cny"}, + "network": {"solana"}, + "notify_url": {"http://localhost/notify"}, + }) + + rec := doFormPost(e, "/payments/gmpay/v1/order/create-transaction", values) + t.Logf("Status: %d, Body: %s", rec.Code, rec.Body.String()) + + if rec.Code != http.StatusOK { + t.Fatalf("expected 200, got %d: %s", rec.Code, rec.Body.String()) + } + + var resp map[string]interface{} + if err := json.Unmarshal(rec.Body.Bytes(), &resp); err != nil { + t.Fatalf("unmarshal: %v", err) + } + + data, ok := resp["data"].(map[string]interface{}) + if !ok { + t.Fatalf("expected data in response, got: %v", resp) + } + if data["trade_id"] == nil || data["trade_id"] == "" { + t.Error("expected trade_id in response") + } + t.Logf("Form-data order created: trade_id=%v", data["trade_id"]) +} + +// getSupportedNetworks is a helper that calls GET /payments/gmpay/v1/supported-assets +// and returns a map of network → []token for easy assertions. +func getSupportedNetworks(t *testing.T, e *echo.Echo) map[string][]string { + t.Helper() + req := httptest.NewRequest(http.MethodGet, "/payments/gmpay/v1/supported-assets", nil) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + if rec.Code != http.StatusOK { + t.Fatalf("getSupportedNetworks: status=%d body=%s", rec.Code, rec.Body.String()) + } + resp := parseResp(t, rec) + rawData, _ := resp["data"].(map[string]interface{}) + rawSupports, _ := rawData["supports"].([]interface{}) + result := make(map[string][]string, len(rawSupports)) + for _, item := range rawSupports { + row := item.(map[string]interface{}) + network := row["network"].(string) + rawTokens, _ := row["tokens"].([]interface{}) + tokens := make([]string, 0, len(rawTokens)) + for _, tok := range rawTokens { + tokens = append(tokens, tok.(string)) + } + result[network] = tokens + } + return result +} + +// TestGetSupportedAssets_ChainTokenToggle verifies that: +// - disabling a chain_token removes that token (and possibly the whole network) +// from the /supported-assets response +// - re-enabling it brings it back +func TestGetSupportedAssets_ChainTokenToggle(t *testing.T) { + e := setupTestEnv(t) + + // Baseline: tron should appear with USDT and TRX. + before := getSupportedNetworks(t, e) + if _, ok := before["tron"]; !ok { + t.Fatal("expected tron in baseline supported-assets") + } + + // Disable the tron USDT chain_token. + dao.Mdb.Model(&mdb.ChainToken{}). + Where("network = ? AND symbol = ?", "tron", "USDT"). + Update("enabled", false) + + after := getSupportedNetworks(t, e) + tronTokens := after["tron"] + for _, tok := range tronTokens { + if tok == "USDT" { + t.Fatal("USDT should be absent after disabling tron USDT chain_token") + } + } + t.Logf("After disabling tron USDT: tron tokens = %v", tronTokens) + + // Disable the tron TRX chain_token as well — now tron has no tokens → network disappears. + dao.Mdb.Model(&mdb.ChainToken{}). + Where("network = ? AND symbol = ?", "tron", "TRX"). + Update("enabled", false) + + afterAllDisabled := getSupportedNetworks(t, e) + if _, ok := afterAllDisabled["tron"]; ok { + t.Fatal("tron should disappear from supported-assets when all its chain_tokens are disabled") + } + t.Logf("After disabling all tron tokens: networks = %v", afterAllDisabled) + + // Re-enable tron USDT — tron reappears with only USDT. + dao.Mdb.Model(&mdb.ChainToken{}). + Where("network = ? AND symbol = ?", "tron", "USDT"). + Update("enabled", true) + + restored := getSupportedNetworks(t, e) + tronRestored, ok := restored["tron"] + if !ok { + t.Fatal("tron should reappear after re-enabling USDT chain_token") + } + found := false + for _, tok := range tronRestored { + if tok == "USDT" { + found = true + } + } + if !found { + t.Fatalf("expected USDT in restored tron tokens, got %v", tronRestored) + } + t.Logf("After re-enabling tron USDT: tron tokens = %v", tronRestored) +} + +// TestGetSupportedAssets_WalletAddressToggle verifies that: +// - disabling ALL wallet addresses for a network removes that network from +// the /supported-assets response (even if chain + tokens are still enabled) +// - re-enabling any address brings the network back +func TestGetSupportedAssets_WalletAddressToggle(t *testing.T) { + e := setupTestEnv(t) + + // Baseline: solana should be present. + before := getSupportedNetworks(t, e) + if _, ok := before["solana"]; !ok { + t.Fatal("expected solana in baseline supported-assets") + } + + // Disable the only solana wallet address. + dao.Mdb.Model(&mdb.WalletAddress{}). + Where("network = ?", mdb.NetworkSolana). + Update("status", mdb.TokenStatusDisable) + + after := getSupportedNetworks(t, e) + if _, ok := after["solana"]; ok { + t.Fatal("solana should disappear from supported-assets when all its wallet addresses are disabled") + } + t.Logf("After disabling solana wallets: networks = %v", after) + + // Re-enable the solana wallet. + dao.Mdb.Model(&mdb.WalletAddress{}). + Where("network = ?", mdb.NetworkSolana). + Update("status", mdb.TokenStatusEnable) + + restored := getSupportedNetworks(t, e) + if _, ok := restored["solana"]; !ok { + t.Fatal("solana should reappear after re-enabling its wallet address") + } + t.Logf("After re-enabling solana wallets: solana tokens = %v", restored["solana"]) +} + func TestGetSupportedAssetsPublic(t *testing.T) { e := setupTestEnv(t) @@ -291,239 +451,6 @@ func TestGetSupportedAssetsPublic(t *testing.T) { } } -func TestSupportedAssetCRUD(t *testing.T) { - e := setupTestEnv(t) - - // public query list (no auth) - req := httptest.NewRequest(http.MethodGet, "/payments/gmpay/v1/supported-assets/records", nil) - rec := httptest.NewRecorder() - e.ServeHTTP(rec, req) - resp := parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("public list failed: %v", resp) - } - - // create requires auth - rec = doPostWithToken(e, "/payments/gmpay/v1/supported-assets/add", map[string]interface{}{ - "network": "arb", - "token": "usdt", - "status": 1, - }) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("add supported asset failed: %v", resp) - } - created := resp["data"].(map[string]interface{}) - assetID := fmt.Sprintf("%.0f", created["id"].(float64)) - - // get by id is public - req = httptest.NewRequest(http.MethodGet, "/payments/gmpay/v1/supported-assets/"+assetID, nil) - rec = httptest.NewRecorder() - e.ServeHTTP(rec, req) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("public get by id failed: %v", resp) - } - - // update requires auth - rec = doPostWithToken(e, "/payments/gmpay/v1/supported-assets/"+assetID+"/update", map[string]interface{}{ - "network": "arbitrum", - "token": "usdc", - "status": 1, - }) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("update supported asset failed: %v", resp) - } - updated := resp["data"].(map[string]interface{}) - if updated["network"] != "arbitrum" || updated["token"] != "USDC" { - t.Fatalf("unexpected updated data: %v", updated) - } - - // delete requires auth - rec = doPostWithToken(e, "/payments/gmpay/v1/supported-assets/"+assetID+"/delete", nil) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("delete supported asset failed: %v", resp) - } - - // recreate after delete should restore soft-deleted row, not unique-conflict - rec = doPostWithToken(e, "/payments/gmpay/v1/supported-assets/add", map[string]interface{}{ - "network": "arbitrum", - "token": "usdc", - "status": 1, - }) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("recreate after delete failed: %v", resp) - } -} - -// TestWalletAddAndList tests adding wallets via API and listing them. -func TestWalletAddAndList(t *testing.T) { - e := setupTestEnv(t) - - // Add a solana wallet - rec := doPostWithToken(e, "/payments/gmpay/v1/wallet/add", map[string]interface{}{ - "network": "solana", - "address": "NewSolWallet001", - }) - t.Logf("Add: %s", rec.Body.String()) - resp := parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("add wallet failed: %v", resp) - } - - // Add a tron wallet - rec = doPostWithToken(e, "/payments/gmpay/v1/wallet/add", map[string]interface{}{ - "network": "tron", - "address": "NewTronWallet001", - }) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("add tron wallet failed: %v", resp) - } - - // List all wallets - rec = doGet(e, "/payments/gmpay/v1/wallet/list") - resp = parseResp(t, rec) - wallets := resp["data"].([]interface{}) - // 2 seeded + 2 added = 4 - if len(wallets) != 4 { - t.Fatalf("expected 4 wallets, got %d: %v", len(wallets), wallets) - } - - // List by network - rec = doGet(e, "/payments/gmpay/v1/wallet/list?network=solana") - resp = parseResp(t, rec) - wallets = resp["data"].([]interface{}) - if len(wallets) != 2 { - t.Fatalf("expected 2 solana wallets, got %d", len(wallets)) - } - - rec = doGet(e, "/payments/gmpay/v1/wallet/list?network=tron") - resp = parseResp(t, rec) - wallets = resp["data"].([]interface{}) - if len(wallets) != 2 { - t.Fatalf("expected 2 tron wallets, got %d", len(wallets)) - } -} - -// TestWalletDuplicateRejected tests that adding the same network+address twice fails. -func TestWalletDuplicateRejected(t *testing.T) { - e := setupTestEnv(t) - - body := map[string]interface{}{"network": "solana", "address": "DupWallet001"} - rec := doPostWithToken(e, "/payments/gmpay/v1/wallet/add", body) - resp := parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("first add failed: %v", resp) - } - - // Same network+address should fail - rec = doPostWithToken(e, "/payments/gmpay/v1/wallet/add", body) - resp = parseResp(t, rec) - if resp["status_code"].(float64) == 200 { - t.Fatal("expected duplicate to be rejected") - } - t.Logf("Duplicate rejected: %v", resp["message"]) - - // Same address, different network should succeed - rec = doPostWithToken(e, "/payments/gmpay/v1/wallet/add", map[string]interface{}{ - "network": "tron", - "address": "DupWallet001", - }) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("same address on different network should succeed: %v", resp) - } -} - -// TestWalletStatusAndDelete tests enable/disable/delete operations. -func TestWalletStatusAndDelete(t *testing.T) { - e := setupTestEnv(t) - - // Add a wallet - rec := doPostWithToken(e, "/payments/gmpay/v1/wallet/add", map[string]interface{}{ - "network": "solana", - "address": "StatusTestWallet", - }) - resp := parseResp(t, rec) - wallet := resp["data"].(map[string]interface{}) - walletID := fmt.Sprintf("%.0f", wallet["id"].(float64)) - - // Get wallet - rec = doGet(e, "/payments/gmpay/v1/wallet/"+walletID) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("get wallet failed: %v", resp) - } - - // Disable wallet - rec = doPostWithToken(e, "/payments/gmpay/v1/wallet/"+walletID+"/status", map[string]interface{}{ - "status": 2, - }) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("disable wallet failed: %v", resp) - } - - // Verify disabled — should not appear in available list - rec = doGet(e, "/payments/gmpay/v1/wallet/list?network=solana") - resp = parseResp(t, rec) - wallets := resp["data"].([]interface{}) - for _, w := range wallets { - wm := w.(map[string]interface{}) - if wm["address"] == "StatusTestWallet" && wm["status"].(float64) != 2 { - t.Error("wallet should be disabled") - } - } - - // Delete wallet - rec = doPostWithToken(e, "/payments/gmpay/v1/wallet/"+walletID+"/delete", nil) - resp = parseResp(t, rec) - if resp["status_code"].(float64) != 200 { - t.Fatalf("delete wallet failed: %v", resp) - } - - // Verify deleted - rec = doGet(e, "/payments/gmpay/v1/wallet/"+walletID) - resp = parseResp(t, rec) - // Should return not found - if resp["status_code"].(float64) == 200 { - data := resp["data"].(map[string]interface{}) - if data["id"].(float64) > 0 { - t.Error("wallet should be deleted") - } - } -} - -// TestWalletAuthRequired tests that wallet APIs require auth token. -func TestWalletAuthRequired(t *testing.T) { - e := setupTestEnv(t) - - // No auth header — should not return success - req := httptest.NewRequest(http.MethodGet, "/payments/gmpay/v1/wallet/list", nil) - rec := httptest.NewRecorder() - e.ServeHTTP(rec, req) - - // The response should indicate auth failure (not 200 success) - var resp map[string]interface{} - if err := json.Unmarshal(rec.Body.Bytes(), &resp); err != nil { - // echo may return plain text error - if rec.Code == http.StatusOK { - t.Error("expected auth failure without token") - } - t.Logf("Auth rejected (non-JSON): status=%d body=%s", rec.Code, rec.Body.String()) - return - } - statusCode, _ := resp["status_code"].(float64) - if statusCode == 200 { - t.Error("expected auth failure without token") - } - t.Logf("Auth rejected: %v", resp) -} - // TestCreateOrderNetworkIsolation verifies tron and solana wallets don't mix. func TestCreateOrderNetworkIsolation(t *testing.T) { e := setupTestEnv(t) @@ -602,3 +529,159 @@ func TestEpaySubmitPhpPostFormCompatible(t *testing.T) { t.Fatalf("expected checkout redirect, got %q", rec.Header().Get("Location")) } } + +// TestCheckStatus_NotFound verifies that /pay/check-status/:trade_id returns a +// graceful JSON error (not 500) when the trade_id doesn't exist. +func TestCheckStatus_NotFound(t *testing.T) { + e := setupTestEnv(t) + req := httptest.NewRequest(http.MethodGet, "/pay/check-status/nonexistent-trade-id", nil) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + t.Logf("CheckStatus(not found): status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } + if rec.Code == http.StatusNotFound && rec.Body.Len() == 0 { + t.Fatalf("route returned 404 with empty body — route may not be registered") + } +} + +// TestCheckStatus_WithOrder verifies /pay/check-status/:trade_id returns 200 +// and a status field when the order exists. +func TestCheckStatus_WithOrder(t *testing.T) { + e := setupTestEnv(t) + + // Create an order first via the GMPAY route. + body := signBody(map[string]interface{}{ + "order_id": "check-status-001", + "amount": 1.00, + "token": "usdt", + "currency": "cny", + "network": "tron", + "notify_url": "http://localhost/notify", + }) + createRec := doPost(e, "/payments/gmpay/v1/order/create-transaction", body) + if createRec.Code != http.StatusOK { + t.Fatalf("create order failed: %d %s", createRec.Code, createRec.Body.String()) + } + var createResp map[string]interface{} + json.Unmarshal(createRec.Body.Bytes(), &createResp) + tradeId, _ := createResp["data"].(map[string]interface{})["trade_id"].(string) + if tradeId == "" { + t.Fatal("no trade_id in create response") + } + + // Now check status. + req := httptest.NewRequest(http.MethodGet, "/pay/check-status/"+tradeId, nil) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + t.Logf("CheckStatus: status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code != http.StatusOK { + t.Fatalf("expected 200, got %d: %s", rec.Code, rec.Body.String()) + } + var resp map[string]interface{} + json.Unmarshal(rec.Body.Bytes(), &resp) + if resp["data"] == nil { + t.Fatal("expected data in check-status response") + } +} + +// TestCheckoutCounter_NotFound verifies that /pay/checkout-counter/:trade_id +// with an unknown trade_id does not return an empty 404 (which would mean the +// route is not registered). When the static HTML template is present the +// controller renders it with a 404 status; when it is absent (test env) the +// controller returns a 500 with a descriptive body — both outcomes are +// acceptable because the route IS registered and functional. +func TestCheckoutCounter_NotFound(t *testing.T) { + e := setupTestEnv(t) + req := httptest.NewRequest(http.MethodGet, "/pay/checkout-counter/nonexistent-trade-id", nil) + rec := httptest.NewRecorder() + e.ServeHTTP(rec, req) + t.Logf("CheckoutCounter(not found): status=%d content-type=%s body=%s", + rec.Code, rec.Header().Get("Content-Type"), rec.Body.String()) + // A completely empty 404 means the route is not registered at all. + if rec.Code == http.StatusNotFound && rec.Body.Len() == 0 { + t.Fatalf("route not registered (404 with empty body)") + } + // A 500 whose body mentions a missing file is expected in test environments + // where the static directory is not present. + if rec.Code >= 500 && rec.Body.Len() == 0 { + t.Fatalf("unexpected server error with empty body: %d", rec.Code) + } +} + +// TestSwitchNetwork_MissingFields verifies that /pay/switch-network validates +// required fields and returns a graceful error when they are missing. +func TestSwitchNetwork_MissingFields(t *testing.T) { + e := setupTestEnv(t) + rec := doPost(e, "/pay/switch-network", map[string]interface{}{ + // trade_id, token, network are all missing + }) + t.Logf("SwitchNetwork(missing fields): status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } + // Must return a non-200 business code for validation failure. + var resp map[string]interface{} + json.Unmarshal(rec.Body.Bytes(), &resp) + if code, _ := resp["code"].(float64); code == 200 { + t.Fatal("expected validation error for missing fields, got code=200") + } +} + +// TestSwitchNetwork_OrderNotFound verifies that /pay/switch-network returns a +// graceful error when the referenced trade_id doesn't exist. +func TestSwitchNetwork_OrderNotFound(t *testing.T) { + e := setupTestEnv(t) + rec := doPost(e, "/pay/switch-network", map[string]interface{}{ + "trade_id": "nonexistent-trade-id", + "token": "USDT", + "network": "tron", + }) + t.Logf("SwitchNetwork(not found): status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code >= 500 { + t.Fatalf("unexpected server error: %d %s", rec.Code, rec.Body.String()) + } +} + +// TestSwitchNetwork_WithOrder verifies /pay/switch-network can create a +// sub-order when given a valid parent trade_id. +func TestSwitchNetwork_WithOrder(t *testing.T) { + e := setupTestEnv(t) + + // Create a parent order on solana. + createBody := signBody(map[string]interface{}{ + "order_id": "switch-net-parent-001", + "amount": 1.00, + "token": "usdt", + "currency": "cny", + "network": "solana", + "notify_url": "http://localhost/notify", + }) + createRec := doPost(e, "/payments/gmpay/v1/order/create-transaction", createBody) + if createRec.Code != http.StatusOK { + t.Fatalf("create parent order failed: %d %s", createRec.Code, createRec.Body.String()) + } + var createResp map[string]interface{} + json.Unmarshal(createRec.Body.Bytes(), &createResp) + tradeId, _ := createResp["data"].(map[string]interface{})["trade_id"].(string) + if tradeId == "" { + t.Fatal("no trade_id in create response") + } + + // Switch to tron. + rec := doPost(e, "/pay/switch-network", map[string]interface{}{ + "trade_id": tradeId, + "token": "USDT", + "network": "tron", + }) + t.Logf("SwitchNetwork(valid): status=%d body=%s", rec.Code, rec.Body.String()) + if rec.Code != http.StatusOK { + t.Fatalf("expected 200, got %d: %s", rec.Code, rec.Body.String()) + } + var resp map[string]interface{} + json.Unmarshal(rec.Body.Bytes(), &resp) + if resp["data"] == nil { + t.Fatal("expected data in switch-network response") + } +} diff --git a/src/task/listen.go b/src/task/listen.go index a05177c..52913f9 100644 --- a/src/task/listen.go +++ b/src/task/listen.go @@ -7,26 +7,35 @@ import ( func Start() { log.Sugar.Info("[task] Starting task scheduler...") + // The ETH listener short-circuits internally when chain is disabled + // or no tokens are configured, so always launch the goroutine. go StartEthereumWebSocketListener() go StartBscWebSocketListener() go StartPolygonWebSocketListener() go StartPlasmaWebSocketListener() c := cron.New() - // trc20钱包监听 + // TRC20 polling _, err := c.AddJob("@every 5s", ListenTrc20Job{}) if err != nil { log.Sugar.Errorf("[task] Failed to add ListenTrc20Job: %v", err) return } log.Sugar.Info("[task] ListenTrc20Job scheduled successfully (@every 5s)") - // solana钱包监听 + // Solana polling _, err = c.AddJob("@every 5s", ListenSolJob{}) if err != nil { log.Sugar.Errorf("[task] Failed to add ListenSolJob: %v", err) return } log.Sugar.Info("[task] ListenSolJob scheduled successfully (@every 5s)") + // RPC node health checks + _, err = c.AddJob("@every 30s", RpcHealthJob{}) + if err != nil { + log.Sugar.Errorf("[task] Failed to add RpcHealthJob: %v", err) + return + } + log.Sugar.Info("[task] RpcHealthJob scheduled successfully (@every 30s)") c.Start() log.Sugar.Info("[task] Task scheduler started") } diff --git a/src/task/listen_bsc.go b/src/task/listen_bsc.go index 4990c7e..85aac3f 100644 --- a/src/task/listen_bsc.go +++ b/src/task/listen_bsc.go @@ -18,11 +18,7 @@ import ( "github.com/ethereum/go-ethereum/ethclient" ) -var ( - // USDT / USDC 合约地址(BSC 主网) - bscUsdtContract = common.HexToAddress("0x55d398326f99059fF775485246999027B3197955") - bscUsdcContract = common.HexToAddress("0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d") -) +const bscDefaultWsURL = "wss://bsc.drpc.org" type bscRecipientSnapshot struct { addrs map[string]struct{} @@ -30,7 +26,24 @@ type bscRecipientSnapshot struct { var bscWatchedRecipients atomic.Pointer[bscRecipientSnapshot] +// StartBscWebSocketListener drives the BSC listener. Checks chain +// enable status and reloads contract addresses from chain_tokens every +// 10s so admin-side toggles take effect without a restart. func StartBscWebSocketListener() { + for { + if data.IsChainEnabled(mdb.NetworkBsc) { + if contracts := loadChainTokenContracts(mdb.NetworkBsc, "[BSC-WS]"); len(contracts) > 0 { + runBscListener(contracts) + } + } + time.Sleep(10 * time.Second) + } +} + +func runBscListener(contracts []common.Address) { + ctx, cancel := chainEnabledWatchdog(mdb.NetworkBsc, "[BSC-WS]", chainTokenFingerprint(mdb.NetworkBsc)) + defer cancel() + wallets, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkBsc) if err != nil { log.Sugar.Errorf("[BSC-WS] Failed to get wallet addresses: %v", err) @@ -40,25 +53,30 @@ func StartBscWebSocketListener() { go func() { ticker := time.NewTicker(5 * time.Second) defer ticker.Stop() - for range ticker.C { - w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkBsc) - if err != nil { - log.Sugar.Warnf("[BSC-WS] refresh wallet addresses: %v", err) - continue + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkBsc) + if err != nil { + log.Sugar.Warnf("[BSC-WS] refresh wallet addresses: %v", err) + continue + } + storeBscRecipientsFromWallets(w) } - storeBscRecipientsFromWallets(w) } }() - wsURL := "wss://bsc.drpc.org" + + wsURL := resolveChainWsURL(mdb.NetworkBsc, bscDefaultWsURL) + log.Sugar.Infof("[BSC-WS] connecting to %s watching %d contract(s)", wsURL, len(contracts)) + query := ethereum.FilterQuery{ - Addresses: []common.Address{ - bscUsdtContract, - bscUsdcContract, - }, - Topics: [][]common.Hash{}, + Addresses: contracts, + Topics: [][]common.Hash{}, } - runEvmWsLogListener("[BSC-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { + runEvmWsLogListener(ctx, "[BSC-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { if len(vLog.Topics) < 3 { return } diff --git a/src/task/listen_chain_common.go b/src/task/listen_chain_common.go new file mode 100644 index 0000000..d8d3050 --- /dev/null +++ b/src/task/listen_chain_common.go @@ -0,0 +1,101 @@ +package task + +import ( + "context" + "sort" + "strings" + "time" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/util/log" + + "github.com/ethereum/go-ethereum/common" +) + +// chainEnabledWatchdog returns a cancellable context whose cancel() is +// invoked when either: +// 1. IsChainEnabled(network) returns false — admin disabled the chain +// 2. The enabled-token fingerprint changes — admin added/removed/ +// toggled a chain_tokens row for this network +// +// Both cases need the listener to exit so the outer loop can reconnect +// with the fresh token set (EVM WebSocket subscriptions are fixed at +// connect time; to pick up a new contract we must re-subscribe). +// +// initialFingerprint is the fingerprint computed BEFORE connecting; the +// watchdog compares every 10s tick against this baseline. Caller must +// defer the returned cancel func to release the goroutine. +func chainEnabledWatchdog(network, logPrefix, initialFingerprint string) (context.Context, context.CancelFunc) { + ctx, cancel := context.WithCancel(context.Background()) + go func() { + ticker := time.NewTicker(10 * time.Second) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + if !data.IsChainEnabled(network) { + log.Sugar.Infof("%s chain disabled, stopping listener", logPrefix) + cancel() + return + } + if fp := chainTokenFingerprint(network); fp != initialFingerprint { + log.Sugar.Infof("%s chain_tokens changed (was %q → now %q), reconnecting", logPrefix, initialFingerprint, fp) + cancel() + return + } + } + } + }() + return ctx, cancel +} + +// chainTokenFingerprint returns a stable string representing the +// enabled-token set for a network. Used by chainEnabledWatchdog to +// detect admin changes between polls. +func chainTokenFingerprint(network string) string { + tokens, err := data.ListEnabledChainTokensByNetwork(network) + if err != nil { + return "" + } + parts := make([]string, 0, len(tokens)) + for _, t := range tokens { + parts = append(parts, strings.ToLower(strings.TrimSpace(t.ContractAddress))+"|"+strings.ToUpper(strings.TrimSpace(t.Symbol))) + } + sort.Strings(parts) + return strings.Join(parts, ",") +} + +// loadChainTokenContracts reads enabled tokens for a network and returns +// their contract addresses as ethereum-go common.Address values. Rows +// with blank contract_address (e.g. Solana native SOL marker) are +// skipped. Callers use the length to decide whether to connect or idle. +func loadChainTokenContracts(network, logPrefix string) []common.Address { + tokens, err := data.ListEnabledChainTokensByNetwork(network) + if err != nil { + log.Sugar.Errorf("%s load chain_tokens err=%v", logPrefix, err) + return nil + } + addrs := make([]common.Address, 0, len(tokens)) + for _, t := range tokens { + c := strings.TrimSpace(t.ContractAddress) + if c == "" { + continue + } + addrs = append(addrs, common.HexToAddress(c)) + } + return addrs +} + +// resolveChainWsURL picks a healthy WS endpoint from rpc_nodes for the +// given network, falling back to the provided default (usually the +// public node URL) when no row is configured. +func resolveChainWsURL(network, fallback string) string { + node, err := data.SelectRpcNode(network, mdb.RpcNodeTypeWs) + if err == nil && node != nil && node.ID > 0 { + return node.Url + } + return fallback +} diff --git a/src/task/listen_eth.go b/src/task/listen_eth.go index d04bada..d89bd90 100644 --- a/src/task/listen_eth.go +++ b/src/task/listen_eth.go @@ -7,6 +7,7 @@ import ( "sync/atomic" "time" + "github.com/assimon/luuu/config" "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/model/mdb" "github.com/assimon/luuu/model/service" @@ -18,15 +19,24 @@ import ( "github.com/ethereum/go-ethereum/ethclient" ) -var ( +// Transfer 事件签名 — ERC-20 signature, same on every EVM chain. +var transferEventHash = common.HexToHash("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef") - // USDT / USDC 合约地址(ETH 主网) - usdtContract = common.HexToAddress("0xdAC17F958D2ee523a2206206994597C13D831ec7") - usdcContract = common.HexToAddress("0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48") +const ethereumDefaultWsURL = "wss://ethereum.publicnode.com" - // Transfer 事件签名 - transferEventHash = common.HexToHash("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef") -) +// resolveEthereumWsURL picks a healthy WS endpoint. Falls back to the +// legacy .env value (if set) before the shared default — keeps existing +// deployments working until the admin adds an rpc_nodes row. +func resolveEthereumWsURL() string { + node, err := data.SelectRpcNode(mdb.NetworkEthereum, mdb.RpcNodeTypeWs) + if err == nil && node != nil && node.ID > 0 { + return node.Url + } + if u := config.GetEthereumWsUrl(); u != "" { + return u + } + return ethereumDefaultWsURL +} type ethRecipientSnapshot struct { addrs map[string]struct{} @@ -35,47 +45,68 @@ type ethRecipientSnapshot struct { var ethWatchedRecipients atomic.Pointer[ethRecipientSnapshot] func StartEthereumWebSocketListener() { + // Wait until the chain is enabled AND at least one token contract + // is configured. Polls every 10s so admin-side toggles kick in + // without a restart. Once conditions are met we proceed to connect; + // if the websocket later drops we exit the loop and rely on the + // process-level restart to reconnect (same as before this refactor). + for { + if data.IsChainEnabled(mdb.NetworkEthereum) { + if contracts := loadChainTokenContracts(mdb.NetworkEthereum, "[ETH-WS]"); len(contracts) > 0 { + runEthereumListener(contracts) + } + } + time.Sleep(10 * time.Second) + } +} + +func runEthereumListener(contracts []common.Address) { + ctx, cancel := chainEnabledWatchdog(mdb.NetworkEthereum, "[ETH-WS]", chainTokenFingerprint(mdb.NetworkEthereum)) + defer cancel() + wallets, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkEthereum) if err != nil { - log.Sugar.Errorf("Failed to get wallet addresses: %v", err) + log.Sugar.Errorf("[ETH-WS] Failed to get wallet addresses: %v", err) return } StoreEthRecipientsFromWallets(wallets) go func() { ticker := time.NewTicker(5 * time.Second) defer ticker.Stop() - for range ticker.C { - w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkEthereum) - if err != nil { - log.Sugar.Warnf("[ETH-WS] refresh wallet addresses: %v", err) - continue + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkEthereum) + if err != nil { + log.Sugar.Warnf("[ETH-WS] refresh wallet addresses: %v", err) + continue + } + StoreEthRecipientsFromWallets(w) } - StoreEthRecipientsFromWallets(w) } }() - wsURL := "wss://ethereum.publicnode.com" + + wsURL := resolveEthereumWsURL() + log.Sugar.Infof("[ETH-WS] connecting to %s watching %d contract(s)", wsURL, len(contracts)) + query := ethereum.FilterQuery{ - Addresses: []common.Address{ - usdtContract, - usdcContract, - }, - Topics: [][]common.Hash{}, + Addresses: contracts, + Topics: [][]common.Hash{}, } - runEvmWsLogListener("[ETH-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { + runEvmWsLogListener(ctx, "[ETH-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { if len(vLog.Topics) < 3 { return } - event := vLog.Topics[0].String() if event != transferEventHash.String() { return } amount := new(big.Int).SetBytes(vLog.Data) - toAddr := common.HexToAddress(vLog.Topics[2].Hex()) - if !isWatchedEthRecipient(toAddr) { return } @@ -115,18 +146,3 @@ func isWatchedEthRecipient(to common.Address) bool { return ok } -func formatAmount(amount *big.Int, decimals int) string { - f := new(big.Float).SetInt(amount) - divisor := new(big.Float).SetFloat64(float64Pow(10, decimals)) - result := new(big.Float).Quo(f, divisor) - - return result.Text('f', 6) -} - -func float64Pow(a, b int) float64 { - result := 1.0 - for i := 0; i < b; i++ { - result *= float64(a) - } - return result -} diff --git a/src/task/listen_evm_ws.go b/src/task/listen_evm_ws.go index 087b1f7..455f443 100644 --- a/src/task/listen_evm_ws.go +++ b/src/task/listen_evm_ws.go @@ -11,7 +11,12 @@ import ( "github.com/ethereum/go-ethereum/ethclient" ) -func runEvmWsLogListener(logPrefix, wsURL string, query ethereum.FilterQuery, handleLog func(*ethclient.Client, types.Log)) { +// runEvmWsLogListener connects to wsURL, subscribes to Transfer logs, +// and dispatches each log to handleLog. It retries on transient errors +// with exponential backoff. The ctx lets the caller trigger a clean +// exit — e.g. when admin disables the chain, the caller cancels the +// context and the function returns instead of reconnecting forever. +func runEvmWsLogListener(ctx context.Context, logPrefix, wsURL string, query ethereum.FilterQuery, handleLog func(*ethclient.Client, types.Log)) { const ( minBackoff = 2 * time.Second maxBackoff = 60 * time.Second @@ -20,34 +25,47 @@ func runEvmWsLogListener(logPrefix, wsURL string, query ethereum.FilterQuery, ha failWait := minBackoff for { + if ctx.Err() != nil { + return + } + client, err := ethclient.Dial(wsURL) if err != nil { log.Sugar.Warnf("%s dial: %v, retry in %s", logPrefix, err, failWait) - time.Sleep(failWait) + if !sleepOrDone(ctx, failWait) { + return + } failWait = nextBackoff(failWait, maxBackoff) continue } logsCh := make(chan types.Log) - sub, err := client.SubscribeFilterLogs(context.Background(), query, logsCh) + sub, err := client.SubscribeFilterLogs(ctx, query, logsCh) if err != nil { client.Close() log.Sugar.Warnf("%s subscribe: %v, retry in %s", logPrefix, err, failWait) - time.Sleep(failWait) + if !sleepOrDone(ctx, failWait) { + return + } failWait = nextBackoff(failWait, maxBackoff) continue } failWait = minBackoff - log.Sugar.Infof("%s connected, subscribed to USDT/USDC Transfer logs", logPrefix) + log.Sugar.Infof("%s connected, subscribed to Transfer logs", logPrefix) - recvLoop(client, sub, logsCh, logPrefix, handleLog) + recvLoop(ctx, client, sub, logsCh, logPrefix, handleLog) - time.Sleep(rejoinWait) + if ctx.Err() != nil { + return + } + if !sleepOrDone(ctx, rejoinWait) { + return + } } } -func recvLoop(client *ethclient.Client, sub ethereum.Subscription, logsCh <-chan types.Log, logPrefix string, handleLog func(*ethclient.Client, types.Log)) { +func recvLoop(ctx context.Context, client *ethclient.Client, sub ethereum.Subscription, logsCh <-chan types.Log, logPrefix string, handleLog func(*ethclient.Client, types.Log)) { defer func() { sub.Unsubscribe() client.Close() @@ -55,6 +73,9 @@ func recvLoop(client *ethclient.Client, sub ethereum.Subscription, logsCh <-chan for { select { + case <-ctx.Done(): + log.Sugar.Infof("%s context cancelled, stopping", logPrefix) + return case err := <-sub.Err(): if err != nil { log.Sugar.Warnf("%s subscription error: %v, reconnecting", logPrefix, err) @@ -72,6 +93,20 @@ func recvLoop(client *ethclient.Client, sub ethereum.Subscription, logsCh <-chan } } +// sleepOrDone waits for d or for ctx cancellation, whichever comes +// first. Returns true if the sleep completed normally, false if ctx +// was cancelled (caller should exit). +func sleepOrDone(ctx context.Context, d time.Duration) bool { + t := time.NewTimer(d) + defer t.Stop() + select { + case <-ctx.Done(): + return false + case <-t.C: + return true + } +} + func nextBackoff(cur, max time.Duration) time.Duration { n := cur * 2 if n > max { diff --git a/src/task/listen_plasma.go b/src/task/listen_plasma.go index 9b44703..a7a63b0 100644 --- a/src/task/listen_plasma.go +++ b/src/task/listen_plasma.go @@ -18,9 +18,7 @@ import ( "github.com/ethereum/go-ethereum/ethclient" ) -var ( - plasmaUsdt0Contract = common.HexToAddress("0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb") -) +const plasmaDefaultWsURL = "wss://rpc.plasma.to" type plasmaRecipientSnapshot struct { addrs map[string]struct{} @@ -28,7 +26,23 @@ type plasmaRecipientSnapshot struct { var plasmaWatchedRecipients atomic.Pointer[plasmaRecipientSnapshot] +// StartPlasmaWebSocketListener drives the Plasma listener with dynamic +// chain/token config reload every 10s. func StartPlasmaWebSocketListener() { + for { + if data.IsChainEnabled(mdb.NetworkPlasma) { + if contracts := loadChainTokenContracts(mdb.NetworkPlasma, "[PLASMA-WS]"); len(contracts) > 0 { + runPlasmaListener(contracts) + } + } + time.Sleep(10 * time.Second) + } +} + +func runPlasmaListener(contracts []common.Address) { + ctx, cancel := chainEnabledWatchdog(mdb.NetworkPlasma, "[PLASMA-WS]", chainTokenFingerprint(mdb.NetworkPlasma)) + defer cancel() + wallets, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkPlasma) if err != nil { log.Sugar.Errorf("[PLASMA-WS] Failed to get wallet addresses: %v", err) @@ -38,23 +52,30 @@ func StartPlasmaWebSocketListener() { go func() { ticker := time.NewTicker(5 * time.Second) defer ticker.Stop() - for range ticker.C { - w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkPlasma) - if err != nil { - log.Sugar.Warnf("[PLASMA-WS] refresh wallet addresses: %v", err) - continue + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkPlasma) + if err != nil { + log.Sugar.Warnf("[PLASMA-WS] refresh wallet addresses: %v", err) + continue + } + storePlasmaRecipientsFromWallets(w) } - storePlasmaRecipientsFromWallets(w) } }() - // 文档提供 https://rpc.plasma.to;常见实现同主机 wss - wsURL := "wss://rpc.plasma.to" + + wsURL := resolveChainWsURL(mdb.NetworkPlasma, plasmaDefaultWsURL) + log.Sugar.Infof("[PLASMA-WS] connecting to %s watching %d contract(s)", wsURL, len(contracts)) + query := ethereum.FilterQuery{ - Addresses: []common.Address{plasmaUsdt0Contract}, + Addresses: contracts, Topics: [][]common.Hash{}, } - runEvmWsLogListener("[PLASMA-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { + runEvmWsLogListener(ctx, "[PLASMA-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { if len(vLog.Topics) < 3 { return } diff --git a/src/task/listen_polygon.go b/src/task/listen_polygon.go index 90aba84..e416dc4 100644 --- a/src/task/listen_polygon.go +++ b/src/task/listen_polygon.go @@ -18,12 +18,7 @@ import ( "github.com/ethereum/go-ethereum/ethclient" ) -var ( - // Polygon PoS 主网 USDT / USDC(原生)/ USDC.e(桥接) - polygonUsdtContract = common.HexToAddress("0xc2132D05D31c914a87C6611C10748AEb04B58e8F") - polygonUsdcContract = common.HexToAddress("0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359") - polygonUsdcEContract = common.HexToAddress("0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174") -) +const polygonDefaultWsURL = "wss://polygon-bor-rpc.publicnode.com" type polygonRecipientSnapshot struct { addrs map[string]struct{} @@ -31,7 +26,23 @@ type polygonRecipientSnapshot struct { var polygonWatchedRecipients atomic.Pointer[polygonRecipientSnapshot] +// StartPolygonWebSocketListener drives the Polygon listener with +// dynamic chain/token config reload every 10s. func StartPolygonWebSocketListener() { + for { + if data.IsChainEnabled(mdb.NetworkPolygon) { + if contracts := loadChainTokenContracts(mdb.NetworkPolygon, "[POLYGON-WS]"); len(contracts) > 0 { + runPolygonListener(contracts) + } + } + time.Sleep(10 * time.Second) + } +} + +func runPolygonListener(contracts []common.Address) { + ctx, cancel := chainEnabledWatchdog(mdb.NetworkPolygon, "[POLYGON-WS]", chainTokenFingerprint(mdb.NetworkPolygon)) + defer cancel() + wallets, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkPolygon) if err != nil { log.Sugar.Errorf("[POLYGON-WS] Failed to get wallet addresses: %v", err) @@ -41,26 +52,30 @@ func StartPolygonWebSocketListener() { go func() { ticker := time.NewTicker(5 * time.Second) defer ticker.Stop() - for range ticker.C { - w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkPolygon) - if err != nil { - log.Sugar.Warnf("[POLYGON-WS] refresh wallet addresses: %v", err) - continue + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + w, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkPolygon) + if err != nil { + log.Sugar.Warnf("[POLYGON-WS] refresh wallet addresses: %v", err) + continue + } + storePolygonRecipientsFromWallets(w) } - storePolygonRecipientsFromWallets(w) } }() - wsURL := "wss://polygon-bor-rpc.publicnode.com" + + wsURL := resolveChainWsURL(mdb.NetworkPolygon, polygonDefaultWsURL) + log.Sugar.Infof("[POLYGON-WS] connecting to %s watching %d contract(s)", wsURL, len(contracts)) + query := ethereum.FilterQuery{ - Addresses: []common.Address{ - polygonUsdtContract, - polygonUsdcContract, - polygonUsdcEContract, - }, - Topics: [][]common.Hash{}, + Addresses: contracts, + Topics: [][]common.Hash{}, } - runEvmWsLogListener("[POLYGON-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { + runEvmWsLogListener(ctx, "[POLYGON-WS]", wsURL, query, func(client *ethclient.Client, vLog types.Log) { if len(vLog.Topics) < 3 { return } diff --git a/src/task/listen_sol_job.go b/src/task/listen_sol_job.go index ee05549..941fa70 100644 --- a/src/task/listen_sol_job.go +++ b/src/task/listen_sol_job.go @@ -17,6 +17,10 @@ func (r ListenSolJob) Run() { gListenSolJobLock.Lock() defer gListenSolJobLock.Unlock() log.Sugar.Debug("[ListenSolJob] Job triggered") + if !data.IsChainEnabled(mdb.NetworkSolana) { + log.Sugar.Debug("[ListenSolJob] chain disabled, skipping") + return + } walletAddress, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkSolana) if err != nil { log.Sugar.Errorf("[ListenSolJob] Failed to get wallet addresses: %v", err) diff --git a/src/task/listen_trc20_job.go b/src/task/listen_trc20_job.go index 676d808..bf4efb1 100644 --- a/src/task/listen_trc20_job.go +++ b/src/task/listen_trc20_job.go @@ -17,6 +17,10 @@ func (r ListenTrc20Job) Run() { gListenTrc20JobLock.Lock() defer gListenTrc20JobLock.Unlock() log.Sugar.Debug("[ListenTrc20Job] Job triggered") + if !data.IsChainEnabled(mdb.NetworkTron) { + log.Sugar.Debug("[ListenTrc20Job] chain disabled, skipping") + return + } walletAddress, err := data.GetAvailableWalletAddressByNetwork(mdb.NetworkTron) if err != nil { log.Sugar.Errorf("[ListenTrc20Job] Failed to get wallet addresses: %v", err) diff --git a/src/task/rpc_health_job.go b/src/task/rpc_health_job.go new file mode 100644 index 0000000..b650247 --- /dev/null +++ b/src/task/rpc_health_job.go @@ -0,0 +1,97 @@ +package task + +import ( + "net" + "net/url" + "strings" + "sync" + "time" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/assimon/luuu/util/log" +) + +const rpcProbeTimeout = 5 * time.Second + +// RpcHealthJob periodically probes every enabled rpc_nodes row and +// writes status/last_latency_ms. Results drive SelectRpcNode weighted +// picking at runtime. +type RpcHealthJob struct{} + +var gRpcHealthJobLock sync.Mutex + +func (r RpcHealthJob) Run() { + gRpcHealthJobLock.Lock() + defer gRpcHealthJobLock.Unlock() + + nodes, err := data.ListRpcNodes("") + if err != nil { + log.Sugar.Errorf("[rpc-health] list nodes err=%v", err) + return + } + var wg sync.WaitGroup + for i := range nodes { + if !nodes[i].Enabled { + continue + } + wg.Add(1) + go func(n mdb.RpcNode) { + defer wg.Done() + status, latency := ProbeNode(n.Url) + if err := data.UpdateRpcNodeHealth(n.ID, status, latency); err != nil { + log.Sugar.Warnf("[rpc-health] update node %d err=%v", n.ID, err) + } + }(nodes[i]) + } + wg.Wait() +} + +// ProbeNode does a TCP dial to the RPC URL and returns (status, latencyMs). +// Exported so the admin controller can reuse it without duplicating logic. +func ProbeNode(rawURL string) (string, int) { + addr, err := ParseAddress(rawURL) + if err != nil { + return mdb.RpcNodeStatusDown, -1 + } + dur, err := MeasureTCPDial(addr, rpcProbeTimeout) + if err != nil { + return mdb.RpcNodeStatusDown, -1 + } + return mdb.RpcNodeStatusOk, int(dur.Milliseconds()) +} + +func ParseAddress(raw string) (string, error) { + if !strings.Contains(raw, "://") { + raw = "tcp://" + raw + } + + u, err := url.Parse(raw) + if err != nil { + return "", err + } + + host := u.Hostname() + port := u.Port() + if port == "" { + switch u.Scheme { + case "https", "wss": + port = "443" + default: + port = "80" + } + } + + return host + ":" + port, nil +} + +func MeasureTCPDial(addr string, timeout time.Duration) (time.Duration, error) { + start := time.Now() + conn, err := net.DialTimeout("tcp", addr, timeout) + if err != nil { + return 0, err + } + defer conn.Close() + + return time.Since(start), nil +} diff --git a/src/task/rpc_health_job_test.go b/src/task/rpc_health_job_test.go new file mode 100644 index 0000000..adcf755 --- /dev/null +++ b/src/task/rpc_health_job_test.go @@ -0,0 +1,194 @@ +package task + +import ( + "net" + "strconv" + "testing" + "time" + + "github.com/assimon/luuu/model/mdb" +) + +// --------------- ParseAddress --------------- + +func TestParseAddress_HttpWithPort(t *testing.T) { + got, err := ParseAddress("http://api.trongrid.io:8090") + if err != nil { + t.Fatal(err) + } + if got != "api.trongrid.io:8090" { + t.Fatalf("want api.trongrid.io:8090, got %s", got) + } +} + +func TestParseAddress_HttpDefaultPort(t *testing.T) { + got, err := ParseAddress("http://api.trongrid.io") + if err != nil { + t.Fatal(err) + } + if got != "api.trongrid.io:80" { + t.Fatalf("want api.trongrid.io:80, got %s", got) + } +} + +func TestParseAddress_HttpsDefaultPort(t *testing.T) { + got, err := ParseAddress("https://api.trongrid.io") + if err != nil { + t.Fatal(err) + } + if got != "api.trongrid.io:443" { + t.Fatalf("want api.trongrid.io:443, got %s", got) + } +} + +func TestParseAddress_WssDefaultPort(t *testing.T) { + got, err := ParseAddress("wss://bsc-ws-node.nariox.org") + if err != nil { + t.Fatal(err) + } + if got != "bsc-ws-node.nariox.org:443" { + t.Fatalf("want bsc-ws-node.nariox.org:443, got %s", got) + } +} + +func TestParseAddress_WsDefaultPort(t *testing.T) { + got, err := ParseAddress("ws://localhost") + if err != nil { + t.Fatal(err) + } + if got != "localhost:80" { + t.Fatalf("want localhost:80, got %s", got) + } +} + +func TestParseAddress_WsWithPort(t *testing.T) { + got, err := ParseAddress("ws://localhost:9650") + if err != nil { + t.Fatal(err) + } + if got != "localhost:9650" { + t.Fatalf("want localhost:9650, got %s", got) + } +} + +func TestParseAddress_BareHostPort(t *testing.T) { + got, err := ParseAddress("10.0.0.1:8545") + if err != nil { + t.Fatal(err) + } + if got != "10.0.0.1:8545" { + t.Fatalf("want 10.0.0.1:8545, got %s", got) + } +} + +func TestParseAddress_BareHostNoPort(t *testing.T) { + got, err := ParseAddress("example.com") + if err != nil { + t.Fatal(err) + } + if got != "example.com:80" { + t.Fatalf("want example.com:80, got %s", got) + } +} + +func TestParseAddress_WithPath(t *testing.T) { + got, err := ParseAddress("https://mainnet.infura.io/v3/KEY123") + if err != nil { + t.Fatal(err) + } + if got != "mainnet.infura.io:443" { + t.Fatalf("want mainnet.infura.io:443, got %s", got) + } +} + +// --------------- MeasureTCPDial --------------- + +func TestMeasureTCPDial_Success(t *testing.T) { + // start a local TCP listener + ln, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + t.Fatal(err) + } + defer ln.Close() + + dur, err := MeasureTCPDial(ln.Addr().String(), 2*time.Second) + if err != nil { + t.Fatalf("dial should succeed: %v", err) + } + if dur <= 0 { + t.Fatalf("duration should be positive, got %v", dur) + } +} + +func TestMeasureTCPDial_Refused(t *testing.T) { + // pick a port that is almost certainly not listening + _, err := MeasureTCPDial("127.0.0.1:1", 500*time.Millisecond) + if err == nil { + t.Fatal("dial to closed port should fail") + } +} + +func TestMeasureTCPDial_RespectsTimeout(t *testing.T) { + // Start a listener but never accept — the dial handshake will hang + // until the timeout fires. + ln, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + t.Fatal(err) + } + defer ln.Close() + + // Set backlog to 0 by not calling Accept and filling the queue. + // Connect once to fill the backlog, then the next dial should stall. + conn, err := net.Dial("tcp", ln.Addr().String()) + if err != nil { + t.Skip("could not saturate backlog, skipping") + } + defer conn.Close() + + // Use a very short timeout to verify it doesn't hang forever. + _, dialErr := MeasureTCPDial(ln.Addr().String(), 100*time.Millisecond) + // This may succeed (kernel allows queued connections) or timeout — both + // are acceptable. We just verify it returns within a sane window. + _ = dialErr +} + +// --------------- ProbeNode --------------- + +func TestProbeNode_Reachable(t *testing.T) { + ln, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + t.Fatal(err) + } + defer ln.Close() + + port := ln.Addr().(*net.TCPAddr).Port + url := "http://127.0.0.1:" + strconv.Itoa(port) + + status, latency := ProbeNode(url) + if status != mdb.RpcNodeStatusOk { + t.Fatalf("want ok, got %s", status) + } + if latency < 0 { + t.Fatalf("latency should be >= 0, got %d", latency) + } +} + +func TestProbeNode_Unreachable(t *testing.T) { + status, latency := ProbeNode("http://127.0.0.1:1") + if status != mdb.RpcNodeStatusDown { + t.Fatalf("want down, got %s", status) + } + if latency != -1 { + t.Fatalf("want -1, got %d", latency) + } +} + +func TestProbeNode_InvalidURL(t *testing.T) { + status, latency := ProbeNode("://bad") + if status != mdb.RpcNodeStatusDown { + t.Fatalf("want down, got %s", status) + } + if latency != -1 { + t.Fatalf("want -1, got %d", latency) + } +} diff --git a/src/telegram/handle.go b/src/telegram/handle.go index 95522df..632d7fd 100644 --- a/src/telegram/handle.go +++ b/src/telegram/handle.go @@ -122,7 +122,9 @@ func WalletList(c tb.Context) error { InlineKeyboard: rows, }) }) - btnList = append(btnList, []tb.InlineButton{addBtn}) + refreshBtn := tb.InlineButton{Text: "刷新列表", Unique: "WalletRefresh"} + bots.Handle(&refreshBtn, WalletList) + btnList = append(btnList, []tb.InlineButton{addBtn, refreshBtn}) return c.EditOrSend("请选择钱包继续操作", &tb.ReplyMarkup{ InlineKeyboard: btnList, @@ -257,21 +259,15 @@ func getPendingWalletAddressState(userID int64) (pendingWalletAddressState, bool } func getEnabledSupportedNetworks() ([]string, error) { - assets, err := data.ListEnabledSupportedAssets() + chains, err := data.ListEnabledChains() if err != nil { return nil, err } - set := make(map[string]struct{}) - for _, a := range assets { - n := strings.ToLower(strings.TrimSpace(a.Network)) - if n == "" { - continue + networks := make([]string, 0, len(chains)) + for _, ch := range chains { + if n := strings.ToLower(strings.TrimSpace(ch.Network)); n != "" { + networks = append(networks, n) } - set[n] = struct{}{} - } - networks := make([]string, 0, len(set)) - for n := range set { - networks = append(networks, n) } sort.Strings(networks) return networks, nil diff --git a/src/telegram/telegram.go b/src/telegram/telegram.go index 7410a55..0e9e16c 100644 --- a/src/telegram/telegram.go +++ b/src/telegram/telegram.go @@ -1,66 +1,120 @@ package telegram import ( - "github.com/assimon/luuu/config" + "fmt" + "strconv" + "strings" + "sync" + "time" + + "github.com/assimon/luuu/model/data" "github.com/assimon/luuu/util/log" tb "gopkg.in/telebot.v3" "gopkg.in/telebot.v3/middleware" - "time" ) -var bots *tb.Bot +// bots is the single bot instance backing slash-command handlers +// (/start, WalletList, add-wallet dialog). Config is read from the +// settings table (system.telegram_bot_token + system.telegram_chat_id). +// Decoupled from notification_channels — that table drives push +// notifications only (via notify/dispatcher.go). +var ( + bots *tb.Bot + adminChatID int64 + reloadMu sync.Mutex +) -// BotStart 机器人启动 +// BotStart connects the command bot. If no telegram channel is +// configured yet it logs and returns; the service otherwise runs fine +// and notifications still fan out as soon as a channel is added (those +// use their own per-request bot; see notify/telegram_sender.go). func BotStart() { - var err error - botSetting := tb.Settings{ - Token: config.TgBotToken, - Poller: &tb.LongPoller{Timeout: 50 * time.Second}, - Synchronous: true, + if err := reloadBot("bootstrap"); err != nil { + log.Sugar.Errorf("[telegram] bot start failed: %v", err) } - if config.TgProxy != "" { - botSetting.URL = config.TgProxy - } - bots, err = tb.NewBot(botSetting) - if err != nil { - log.Sugar.Error(err.Error()) - return - } - err = bots.SetCommands(Cmds) - if err != nil { - log.Sugar.Error(err.Error()) - return - } - RegisterHandle() - bots.Start() } -// RegisterHandle 注册处理器 -func RegisterHandle() { - adminOnly := bots.Group() - adminOnly.Use(middleware.Whitelist(config.TgManage)) - adminOnly.Handle(START_CMD, WalletList) - adminOnly.Handle(tb.OnText, OnTextMessageHandle) -} - -// SendToBot 主动发送消息机器人消息 -func SendToBot(msg string) { +// ReloadBotAsync refreshes the command bot from notification_channels. +// It is used by admin API handlers after telegram channel create/update/ +// status/delete so operators don't need to restart the service. +func ReloadBotAsync(reason string) { go func() { - if bots == nil { - log.Sugar.Error("[Telegram] bots实例为nil,无法发送消息") - return - } - user := tb.User{ - ID: config.TgManage, - } - log.Sugar.Infof("[Telegram] 正在发送消息给用户ID=%d", config.TgManage) - _, err := bots.Send(&user, msg, &tb.SendOptions{ - ParseMode: tb.ModeHTML, - }) - if err != nil { - log.Sugar.Errorf("[Telegram] 发送消息失败: userID=%d, err=%v", config.TgManage, err) - } else { - log.Sugar.Infof("[Telegram] 发送消息成功: userID=%d", config.TgManage) + if err := reloadBot(reason); err != nil { + log.Sugar.Errorf("[telegram] reload failed, reason=%s err=%v", reason, err) } }() } + +// loadCommandBotConfig reads the command-bot config from the settings +// table (system.telegram_bot_token + system.telegram_chat_id). +// Returns (nil, "", nil) when the keys are absent so the caller can +// log and return gracefully — bot stays disabled until settings are set. +func loadCommandBotConfig() (*botConfig, string, error) { + botToken := strings.TrimSpace(data.GetSettingString("system.telegram_bot_token", "")) + chatIDStr := strings.TrimSpace(data.GetSettingString("system.telegram_chat_id", "")) + if botToken == "" || chatIDStr == "" { + return nil, "", nil + } + chatID, err := strconv.ParseInt(chatIDStr, 10, 64) + if err != nil { + return nil, "", fmt.Errorf("invalid telegram chat_id in settings: %w", err) + } + return &botConfig{BotToken: botToken, ChatID: chatID}, "settings", nil +} + +// botConfig holds the minimal fields needed to start the command bot. +type botConfig struct { + BotToken string + ChatID int64 +} + +func reloadBot(reason string) error { + reloadMu.Lock() + defer reloadMu.Unlock() + + if bots != nil { + bots.Stop() + bots = nil + } + + cfg, source, err := loadCommandBotConfig() + if err != nil { + return err + } + if cfg == nil { + log.Sugar.Infof("[telegram] no enabled telegram channel configured; command bot disabled (reason=%s)", reason) + return nil + } + adminChatID = cfg.ChatID + + botSetting := tb.Settings{ + Token: cfg.BotToken, + Poller: &tb.LongPoller{Timeout: 50 * time.Second}, + Synchronous: true, + } + newBot, err := tb.NewBot(botSetting) + if err != nil { + return fmt.Errorf("new bot: %w", err) + } + if err = newBot.SetCommands(Cmds); err != nil { + return fmt.Errorf("set commands: %w", err) + } + bots = newBot + RegisterHandle() + go bots.Start() + + log.Sugar.Infof("[telegram] command bot started, reason=%s, source=%s", reason, source) + return nil +} + +// RegisterHandle wires slash-command and text-message routes. The +// admin whitelist uses the chat_id from the same channel row. +func RegisterHandle() { + if bots == nil { + return + } + adminOnly := bots.Group() + adminOnly.Use(middleware.Whitelist(adminChatID)) + adminOnly.Handle(START_CMD, WalletList) + adminOnly.Handle(tb.OnText, OnTextMessageHandle) +} diff --git a/src/telegram/telegram_test.go b/src/telegram/telegram_test.go new file mode 100644 index 0000000..65d2d11 --- /dev/null +++ b/src/telegram/telegram_test.go @@ -0,0 +1,135 @@ +package telegram + +import ( + "testing" + + "github.com/assimon/luuu/config" + "github.com/assimon/luuu/internal/testutil" + "github.com/assimon/luuu/model/dao" + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" +) + +func withTelegramEnv(token, proxy string, manage int64, fn func()) { + origToken := config.TgBotToken + origProxy := config.TgProxy + origManage := config.TgManage + defer func() { + config.TgBotToken = origToken + config.TgProxy = origProxy + config.TgManage = origManage + }() + + config.TgBotToken = token + config.TgProxy = proxy + config.TgManage = manage + fn() +} + +func TestLoadCommandBotConfig_DoesNotUseEnvFallbackWhenNoChannel(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + // Env config is present but settings table is empty — + // the bot must NOT fall back to config.TgBotToken. + withTelegramEnv("env-token", "http://127.0.0.1:7890", 123456789, func() { + cfg, source, err := loadCommandBotConfig() + if err != nil { + t.Fatalf("loadCommandBotConfig err: %v", err) + } + if cfg != nil { + t.Fatalf("expected nil config when settings table has no telegram keys, got %+v", cfg) + } + if source != "" { + t.Fatalf("source = %q, want empty", source) + } + }) +} + +func TestLoadCommandBotConfig_PrefersEnabledTelegramChannel(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + // Seed settings table with telegram credentials. + dao.Mdb.Create(&mdb.Setting{Group: "system", Key: "system.telegram_bot_token", Value: "db-token", Type: "string"}) + dao.Mdb.Create(&mdb.Setting{Group: "system", Key: "system.telegram_chat_id", Value: "987654321", Type: "string"}) + _ = data.ReloadSettings() + + withTelegramEnv("env-token", "", 123456789, func() { + cfg, source, err := loadCommandBotConfig() + if err != nil { + t.Fatalf("loadCommandBotConfig err: %v", err) + } + if cfg == nil { + t.Fatal("expected non-nil config") + } + if source != "settings" { + t.Fatalf("source = %q, want %q", source, "settings") + } + if cfg.BotToken != "db-token" { + t.Fatalf("bot token = %q, want %q", cfg.BotToken, "db-token") + } + if cfg.ChatID != 987654321 { + t.Fatalf("chat id = %d, want %d", cfg.ChatID, int64(987654321)) + } + }) +} + +func TestLoadCommandBotConfig_ReturnsNilWhenNoChannelAndNoEnv(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + // Fresh DB — ensure the cache doesn't carry over values from a previous test. + _ = data.ReloadSettings() + + withTelegramEnv("", "", 0, func() { + cfg, source, err := loadCommandBotConfig() + if err != nil { + t.Fatalf("loadCommandBotConfig err: %v", err) + } + if cfg != nil { + t.Fatalf("expected nil config, got %+v", cfg) + } + if source != "" { + t.Fatalf("source = %q, want empty", source) + } + }) +} + +func TestLoadCommandBotConfig_SkipsEmptyConfigChannel(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + // Only chat_id present, no bot_token → should return nil. + dao.Mdb.Create(&mdb.Setting{Group: "system", Key: "system.telegram_chat_id", Value: "987654321", Type: "string"}) + _ = data.ReloadSettings() + + cfg, source, err := loadCommandBotConfig() + if err != nil { + t.Fatalf("loadCommandBotConfig err: %v", err) + } + if cfg != nil { + t.Fatalf("expected nil config when bot_token is absent, got %+v", cfg) + } + if source != "" { + t.Fatalf("source = %q, want empty", source) + } +} + +func TestLoadCommandBotConfig_SkipsInvalidAndUsesNextValid(t *testing.T) { + cleanup := testutil.SetupTestDatabases(t) + defer cleanup() + + // bot_token present but chat_id is not a valid int → should return error. + dao.Mdb.Create(&mdb.Setting{Group: "system", Key: "system.telegram_bot_token", Value: "db-token", Type: "string"}) + dao.Mdb.Create(&mdb.Setting{Group: "system", Key: "system.telegram_chat_id", Value: "not-a-number", Type: "string"}) + _ = data.ReloadSettings() + + cfg, _, err := loadCommandBotConfig() + if err == nil { + t.Fatal("expected error for invalid chat_id, got nil") + } + if cfg != nil { + t.Fatalf("expected nil config on parse error, got %+v", cfg) + } +} diff --git a/src/util/constant/errno.go b/src/util/constant/errno.go index d38ca17..5945bf8 100644 --- a/src/util/constant/errno.go +++ b/src/util/constant/errno.go @@ -16,8 +16,8 @@ var Errno = map[int]string{ 10011: "exceeded maximum sub-order limit", 10012: "cannot switch network on a sub-order", 10013: "order is not awaiting payment", - 10014: "supported asset already exists", - 10015: "supported asset not found", + 10014: "chain is not enabled", + 10016: "supported asset not found", } var ( @@ -36,8 +36,8 @@ var ( SubOrderLimitExceeded = Err(10011) CannotSwitchSubOrder = Err(10012) OrderNotWaitPay = Err(10013) - SupportedAssetAlreadyExists = Err(10014) - SupportedAssetNotFound = Err(10015) + ChainNotEnabled = Err(10014) + SupportedAssetNotFound = Err(10016) ) type RspError struct { @@ -60,3 +60,19 @@ func Err(code int) (err error) { func (re *RspError) Render() (code int, msg string) { return re.Code, re.Msg } + +// HttpStatus maps a RspError code to the HTTP status the handler +// should use on the wire. Small codes (< 1000) are treated as real +// HTTP status codes (e.g. 400 system error, 401 signature failure) so +// clients see the right status. Business codes (>= 1000) are all +// client-side problems that map to HTTP 400; the specific code still +// lives in the body's `status_code` field for the frontend to branch on. +func (re *RspError) HttpStatus() int { + if re == nil { + return 500 + } + if re.Code >= 400 && re.Code < 600 { + return re.Code + } + return 400 +} diff --git a/src/util/http/response.go b/src/util/http/response.go index f2bc788..3847219 100644 --- a/src/util/http/response.go +++ b/src/util/http/response.go @@ -58,16 +58,21 @@ func (r *Resp) SucJsonPage(e echo.Context, data interface{}, pagination page.Pag return r.SucJson(e, pageDate, message...) } -// FailJson 失败json +// FailJson 失败json — Propagates semantic HTTP status codes to the +// wire. RspError.Code in the 4xx/5xx range is used directly; business +// codes (>=1000) map to HTTP 400 with the specific code still visible +// in the body's status_code field. func (r *Resp) FailJson(e echo.Context, err error) error { rr := new(Response) - switch err.(type) { + httpStatus := http.StatusBadRequest + switch t := err.(type) { case *constant.RspError: - rr.StatusCode, rr.Message = err.(*constant.RspError).Render() + rr.StatusCode, rr.Message = t.Render() + httpStatus = t.HttpStatus() default: - rr.StatusCode = 400 + rr.StatusCode = http.StatusBadRequest rr.Message = err.Error() } rr.RequestID = e.Request().Header.Get(echo.HeaderXRequestID) - return r.Json(e, http.StatusOK, &rr) + return r.Json(e, httpStatus, &rr) } diff --git a/src/util/http/spa.go b/src/util/http/spa.go new file mode 100644 index 0000000..4a3bd01 --- /dev/null +++ b/src/util/http/spa.go @@ -0,0 +1,30 @@ +package http + +import ( + "os" + "path/filepath" + "strings" +) + +// ResolveSPAFilePath normalizes a wildcard SPA path and maps it under wwwRoot. +// It strips any leading slash and blocks path traversal outside wwwRoot. +// The second return value indicates whether the caller should try os.Stat +// against the returned path (true) or directly fall back to index.html (false). +func ResolveSPAFilePath(wwwRoot, wildcard string) (string, bool) { + indexPath := filepath.Join(wwwRoot, "index.html") + + cleaned := strings.TrimPrefix(filepath.Clean(wildcard), "/") + if cleaned == "" || cleaned == "." { + return indexPath, false + } + + requestedPath := filepath.Join(wwwRoot, cleaned) + base := filepath.Clean(wwwRoot) + resolved := filepath.Clean(requestedPath) + + if resolved != base && !strings.HasPrefix(resolved, base+string(os.PathSeparator)) { + return indexPath, false + } + + return requestedPath, true +} diff --git a/src/util/http/spa_test.go b/src/util/http/spa_test.go new file mode 100644 index 0000000..60853ef --- /dev/null +++ b/src/util/http/spa_test.go @@ -0,0 +1,68 @@ +package http + +import ( + "path/filepath" + "testing" +) + +func TestResolveSPAFilePath(t *testing.T) { + root := filepath.Join("tmp", "www") + indexPath := filepath.Join(root, "index.html") + + tests := []struct { + name string + wildcard string + wantPath string + wantTryStat bool + }{ + { + name: "relative asset path", + wildcard: "assets/app.js", + wantPath: filepath.Join(root, "assets", "app.js"), + wantTryStat: true, + }, + { + name: "absolute style asset path", + wildcard: "/assets/app.js", + wantPath: filepath.Join(root, "assets", "app.js"), + wantTryStat: true, + }, + { + name: "empty wildcard", + wildcard: "", + wantPath: indexPath, + wantTryStat: false, + }, + { + name: "dot wildcard", + wildcard: ".", + wantPath: indexPath, + wantTryStat: false, + }, + { + name: "directory traversal fallback", + wildcard: "../../etc/passwd", + wantPath: indexPath, + wantTryStat: false, + }, + { + name: "absolute directory traversal fallback", + wildcard: "/../../etc/passwd", + wantPath: filepath.Join(root, "etc", "passwd"), + wantTryStat: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotPath, gotTryStat := ResolveSPAFilePath(root, tt.wildcard) + + if gotTryStat != tt.wantTryStat { + t.Fatalf("tryStat = %v, want %v", gotTryStat, tt.wantTryStat) + } + if gotPath != tt.wantPath { + t.Fatalf("path = %q, want %q", gotPath, tt.wantPath) + } + }) + } +} diff --git a/src/util/jwt/jwt.go b/src/util/jwt/jwt.go new file mode 100644 index 0000000..3b70b0b --- /dev/null +++ b/src/util/jwt/jwt.go @@ -0,0 +1,78 @@ +package jwt + +import ( + "crypto/rand" + "encoding/hex" + "errors" + "time" + + "github.com/assimon/luuu/model/data" + "github.com/assimon/luuu/model/mdb" + "github.com/golang-jwt/jwt/v4" +) + +// DefaultExpiration is the token lifetime for admin sessions. +const DefaultExpiration = 24 * time.Hour + +// AdminClaims is the JWT payload for admin sessions. +type AdminClaims struct { + AdminUserID uint64 `json:"uid"` + Username string `json:"usr"` + jwt.RegisteredClaims +} + +// EnsureSecret reads system.jwt_secret from settings; if absent, +// generates a new 32-byte random hex string and persists it. Called once +// at startup so subsequent sign/verify can assume the secret exists. +func EnsureSecret() (string, error) { + secret := data.GetSettingString(mdb.SettingKeyJwtSecret, "") + if secret != "" { + return secret, nil + } + buf := make([]byte, 32) + if _, err := rand.Read(buf); err != nil { + return "", err + } + secret = hex.EncodeToString(buf) + if err := data.SetSetting(mdb.SettingGroupSystem, mdb.SettingKeyJwtSecret, secret, mdb.SettingTypeString); err != nil { + return "", err + } + return secret, nil +} + +// Sign returns a signed JWT for the given admin user. +func Sign(userID uint64, username string) (string, error) { + secret, err := EnsureSecret() + if err != nil { + return "", err + } + claims := AdminClaims{ + AdminUserID: userID, + Username: username, + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(time.Now().Add(DefaultExpiration)), + IssuedAt: jwt.NewNumericDate(time.Now()), + }, + } + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + return token.SignedString([]byte(secret)) +} + +// Parse validates a token string and returns its claims. +func Parse(tokenStr string) (*AdminClaims, error) { + secret, err := EnsureSecret() + if err != nil { + return nil, err + } + claims := &AdminClaims{} + _, err = jwt.ParseWithClaims(tokenStr, claims, func(t *jwt.Token) (interface{}, error) { + if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, errors.New("unexpected signing method") + } + return []byte(secret), nil + }) + if err != nil { + return nil, err + } + return claims, nil +} diff --git a/src/www/apple-touch-icon.png b/src/www/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e75652fce87d5cea91dc61824ad5a5f9077a693e GIT binary patch literal 8229 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.next&&(e.prev?(e.prev.next=e.next,e.next.prev=e.prev,e.next=void 0,r&&(r.next=e,e.prev=r)):(e.next.prev=void 0,n=e.next,e.next=void 0,r&&(e.prev=r,r.next=e)),r=e)};return{get(e){let n=t.get(e);if(n)return i(n),n.value},set(a,o){if(t.size>=e&&n){let e=n;t.delete(e.key),e.next&&(n=e.next,e.next.prev=void 0),e===r&&(r=void 0)}let s=t.get(a);if(s)s.value=o,i(s);else{let e={key:a,value:o,prev:r};r&&(r.next=e),r=e,n||=e,t.set(a,e)}},clear(){t.clear(),n=void 0,r=void 0}}}var o=4,s=5;function c(e){let t=e.indexOf(`{`);if(t===-1)return null;let n=e.indexOf(`}`,t);return n===-1||t+1>=e.length?null:[t,n]}function l(e,t,n=new Uint16Array(6)){let r=e.indexOf(`/`,t),i=r===-1?e.length:r,a=e.substring(t,i);if(!a||!a.includes(`$`))return n[0]=0,n[1]=t,n[2]=t,n[3]=i,n[4]=i,n[5]=i,n;if(a===`$`){let r=e.length;return n[0]=2,n[1]=t,n[2]=t,n[3]=r,n[4]=r,n[5]=r,n}if(a.charCodeAt(0)===36)return n[0]=1,n[1]=t,n[2]=t+1,n[3]=i,n[4]=i,n[5]=i,n;let o=c(a);if(o){let[r,s]=o,c=a.charCodeAt(r+1);if(c===45){if(r+2!e.skipOnParamError&&e.caseSensitive===d&&e.prefix===p&&e.suffix===h);if(g)o=g;else{let e=m(1,n.fullPath??n.from,d,p,h);o=e,e.depth=a,e.parent=i,i.dynamic??=[],i.dynamic.push(e)}break}case 3:{let t=r.substring(s,e[1]),l=r.substring(e[4],c),d=u&&!!(t||l),p=t?d?t:t.toLowerCase():void 0,h=l?d?l:l.toLowerCase():void 0,g=!f&&i.optional?.find(e=>!e.skipOnParamError&&e.caseSensitive===d&&e.prefix===p&&e.suffix===h);if(g)o=g;else{let e=m(3,n.fullPath??n.from,d,p,h);o=e,e.parent=i,e.depth=a,i.optional??=[],i.optional.push(e)}break}case 2:{let t=r.substring(s,e[1]),l=r.substring(e[4],c),d=u&&!!(t||l),f=t?d?t:t.toLowerCase():void 0,p=l?d?l:l.toLowerCase():void 0,h=m(2,n.fullPath??n.from,d,f,p);o=h,h.parent=i,h.depth=a,i.wildcard??=[],i.wildcard.push(h)}}i=o}if(f&&n.children&&!n.isRoot&&n.id&&n.id.charCodeAt(n.id.lastIndexOf(`/`)+1)===95){let e=p(n.fullPath??n.from);e.kind=s,e.parent=i,a++,e.depth=a,i.pathless??=[],i.pathless.push(e),i=e}let h=(n.path||!n.children)&&!n.isRoot;if(h&&r.endsWith(`/`)){let e=p(n.fullPath??n.from);e.kind=o,e.parent=i,a++,e.depth=a,i.index=e,i=e}i.parse=n.options?.params?.parse??null,i.skipOnParamError=f,i.parsingPriority=n.options?.skipRouteOnParseError?.priority??0,h&&!i.route&&(i.route=n,i.fullPath=n.fullPath??n.from)}if(n.children)for(let r of n.children)u(e,t,r,d,i,a,c)}function d(e,t){if(e.skipOnParamError&&!t.skipOnParamError)return-1;if(!e.skipOnParamError&&t.skipOnParamError)return 1;if(e.skipOnParamError&&t.skipOnParamError&&(e.parsingPriority||t.parsingPriority))return t.parsingPriority-e.parsingPriority;if(e.prefix&&t.prefix&&e.prefix!==t.prefix){if(e.prefix.startsWith(t.prefix))return-1;if(t.prefix.startsWith(e.prefix))return 1}if(e.suffix&&t.suffix&&e.suffix!==t.suffix){if(e.suffix.endsWith(t.suffix))return-1;if(t.suffix.endsWith(e.suffix))return 1}return e.prefix&&!t.prefix?-1:!e.prefix&&t.prefix?1:e.suffix&&!t.suffix?-1:!e.suffix&&t.suffix?1:e.caseSensitive&&!t.caseSensitive?-1:!e.caseSensitive&&t.caseSensitive?1:0}function f(e){if(e.pathless)for(let t of e.pathless)f(t);if(e.static)for(let t of e.static.values())f(t);if(e.staticInsensitive)for(let t of e.staticInsensitive.values())f(t);if(e.dynamic?.length){e.dynamic.sort(d);for(let t of e.dynamic)f(t)}if(e.optional?.length){e.optional.sort(d);for(let t of e.optional)f(t)}if(e.wildcard?.length){e.wildcard.sort(d);for(let t of e.wildcard)f(t)}}function p(e){return{kind:0,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:e,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0}}function m(e,t,n,r,i){return{kind:e,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:t,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0,caseSensitive:n,prefix:r,suffix:i}}function h(e,t){let n=p(`/`),r=new Uint16Array(6);for(let t of e)u(!1,r,t,1,n,0);f(n),t.masksTree=n,t.flatCache=a(1e3)}function g(e,t){e||=`/`;let n=t.flatCache.get(e);if(n)return n;let r=x(e,t.masksTree);return t.flatCache.set(e,r),r}function _(e,t,n,r,i){e||=`/`,r||=`/`;let a=t?`case\0${e}`:e,o=i.singleCache.get(a);return o||(o=p(`/`),u(t,new Uint16Array(6),{from:e},1,o,0),i.singleCache.set(a,o)),x(r,o,n)}function v(e,t,n=!1){let r=n?e:`nofuzz\0${e}`,i=t.matchCache.get(r);if(i!==void 0)return i;e||=`/`;let a;try{a=x(e,t.segmentTree,n)}catch(e){if(e instanceof URIError)a=null;else throw e}return a&&(a.branch=C(a.route)),t.matchCache.set(r,a),a}function y(e){return e===`/`?e:e.replace(/\/{1,}$/,``)}function b(e,t=!1,n){let r=p(e.fullPath),o=new Uint16Array(6),s={},c={},l=0;return u(t,o,e,1,r,0,e=>{if(n?.(e,l),e.id in s&&i(),s[e.id]=e,l!==0&&e.path){let t=y(e.fullPath);(!c[t]||e.fullPath.endsWith(`/`))&&(c[t]=e)}l++}),f(r),{processedTree:{segmentTree:r,singleCache:a(1e3),matchCache:a(1e3),flatCache:null,masksTree:null},routesById:s,routesByPath:c}}function x(e,t,n=!1){let r=e.split(`/`),i=T(e,r,t,n);if(!i)return null;let[a]=S(e,r,i);return{route:i.node.route,rawParams:a,parsedParams:i.parsedParams}}function S(e,t,n){let r=w(n.node),i=null,a=Object.create(null),c=n.extract?.part??0,l=n.extract?.node??0,u=n.extract?.path??0,d=n.extract?.segment??0;for(;l=0;n--){let i=r.optional[n];l.push({node:i,index:a,skipped:e,depth:t,statics:h,dynamics:g,optionals:_,extract:v,rawParams:y,parsedParams:b})}if(!x)for(let e=r.optional.length-1;e>=0;e--){let n=r.optional[e],{prefix:i,suffix:o}=n;if(i||o){let e=n.caseSensitive?S:C??=S.toLowerCase();if(i&&!e.startsWith(i)||o&&!e.endsWith(o))continue}l.push({node:n,index:a+1,skipped:p,depth:t,statics:h,dynamics:g,optionals:_+1,extract:v,rawParams:y,parsedParams:b})}}if(!x&&r.dynamic&&S)for(let e=r.dynamic.length-1;e>=0;e--){let t=r.dynamic[e],{prefix:n,suffix:i}=t;if(n||i){let e=t.caseSensitive?S:C??=S.toLowerCase();if(n&&!e.startsWith(n)||i&&!e.endsWith(i))continue}l.push({node:t,index:a+1,skipped:p,depth:m+1,statics:h,dynamics:g+1,optionals:_,extract:v,rawParams:y,parsedParams:b})}if(!x&&r.staticInsensitive){let e=r.staticInsensitive.get(C??=S.toLowerCase());e&&l.push({node:e,index:a+1,skipped:p,depth:m+1,statics:h+1,dynamics:g,optionals:_,extract:v,rawParams:y,parsedParams:b})}if(!x&&r.static){let e=r.static.get(S);e&&l.push({node:e,index:a+1,skipped:p,depth:m+1,statics:h+1,dynamics:g,optionals:_,extract:v,rawParams:y,parsedParams:b})}if(r.pathless){let e=m+1;for(let t=r.pathless.length-1;t>=0;t--){let n=r.pathless[t];l.push({node:n,index:a,skipped:p,depth:e,statics:h,dynamics:g,optionals:_,extract:v,rawParams:y,parsedParams:b})}}}if(f&&u)return D(u,f)?f:u;if(f)return f;if(u)return u;if(i&&d){let n=d.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===o)>(e.node.kind===o)||t.node.kind===o==(e.node.kind===o)&&t.depth>e.depth))):!0}function O(e){return k(e.filter(e=>e!==void 0).join(`/`))}function k(e){return e.replace(/\/{2,}/g,`/`)}function A(e){return e===`/`?e:e.replace(/^\/{1,}/,``)}function j(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/{1,}$/,``):e}function M(e){return j(A(e))}function N(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function P(e,t,n){return N(e,n)===N(t,n)}function F({base:e,to:t,trailingSlash:n=`never`,cache:i}){let a=t.startsWith(`/`),o=!a&&t===`.`,s;if(i){s=a?t:o?e:e+`\0`+t;let n=i.get(s);if(n)return n}let c;if(o)c=e.split(`/`);else if(a)c=t.split(`/`);else{for(c=e.split(`/`);c.length>1&&r(c)===``;)c.pop();let n=t.split(`/`);for(let e=0,t=n.length;e1&&(r(c)===``?n===`never`&&c.pop():n===`always`&&c.push(``));let u,d=``;for(let e=0;e0&&(d+=`/`);let t=c[e];if(!t)continue;u=l(t,0,u);let n=u[0];if(n===0){d+=t;continue}let r=u[5],i=t.substring(0,u[1]),a=t.substring(u[4],r),o=t.substring(u[2],u[3]);n===1?d+=i||a?`${i}{$${o}}${a}`:`$${o}`:n===2?d+=i||a?`${i}{$}${a}`:`$`:d+=`${i}{-$${o}}${a}`}d=k(d);let f=d||`/`;return s&&i&&i.set(s,f),f}function I(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=Array.from(t.keys()).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),r=new RegExp(n,`g`);return e=>e.replace(r,e=>t.get(e)??e)}function L(e,t,n){let r=t[e];return typeof r==`string`?e===`_splat`?/^[a-zA-Z0-9\-._~!/]*$/.test(r)?r:r.split(`/`).map(e=>z(e,n)).join(`/`):z(r,n):r}function R({path:e,params:t,decoder:n,...r}){let i=!1,a=Object.create(null);if(!e||e===`/`)return{interpolatedPath:`/`,usedParams:a,isMissingParams:i};if(!e.includes(`$`))return{interpolatedPath:e,usedParams:a,isMissingParams:i};let o=e.length,s=0,c,u=``;for(;s!0,()=>!1)}function W(){return()=>{}}export{b as _,P as a,N as c,A as d,j as f,h as g,_ as h,I as i,F as l,v as m,U as n,R as o,g as p,k as r,O as s,H as t,M as u,a as v}; \ No newline at end of file diff --git a/src/www/assets/Match-B8-zI9ZJ.js b/src/www/assets/Match-B8-zI9ZJ.js new file mode 100644 index 0000000..5a4c60d --- /dev/null +++ b/src/www/assets/Match-B8-zI9ZJ.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{o as r,t as i}from"./useRouter-D03zSgJO.js";import{a,c as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y}from"./useStore-1-QVtiLb.js";import{_ as b,f as x,g as S,h as C,i as w,l as T,m as E,o as D,p as O,r as k,s as A,t as ee,u as te,v as ne}from"./ClientOnly-CtYi2y5F.js";import{i as j,r as re,t as M}from"./redirect-dE0wk0WH.js";import{n as ie}from"./matchContext-BcwcZvp2.js";function ae(){try{return typeof window<`u`&&typeof window.sessionStorage==`object`?window.sessionStorage:void 0}catch{return}}var oe=`tsr-scroll-restoration-v1_3`;function se(){let e=ae();if(!e)return null;let t={};try{let n=JSON.parse(e.getItem(`tsr-scroll-restoration-v1_3`)||`{}`);s(n)&&(t=n)}catch{}return{get state(){return t},set:e=>{t=d(e,t)||t},persist:()=>{try{e.setItem(oe,JSON.stringify(t))}catch{}}}}var ce=se(),le=e=>e.state.__TSR_key||e.href;function ue(e){let t=[],n;for(;n=e.parentNode;)t.push(`${e.tagName}:nth-child(${Array.prototype.indexOf.call(n.children,e)+1})`),e=n;return`${t.reverse().join(` > `)}`.toLowerCase()}var N=!1,P=`window`,de=`data-scroll-restoration-id`;function fe(e,t){if(!ce)return;let n=ce;if((t??e.options.scrollRestoration??!1)&&(e.isScrollRestoring=!0),e.isScrollRestorationSetup||!n)return;e.isScrollRestorationSetup=!0,N=!1;let r=e.options.getScrollRestorationKey||le,i=new Map;window.history.scrollRestoration=`manual`;let a=t=>{if(!(N||!e.isScrollRestoring))if(t.target===document||t.target===window)i.set(P,{scrollX:window.scrollX||0,scrollY:window.scrollY||0});else{let e=t.target;i.set(e,{scrollX:e.scrollLeft||0,scrollY:e.scrollTop||0})}},o=t=>{if(!e.isScrollRestoring||!t||i.size===0||!n)return;let r=n.state[t]||={};for(let[e,t]of i){let n;if(e===P)n=P;else if(e.isConnected){let t=e.getAttribute(de);n=t?`[${de}="${t}"]`:ue(e)}n&&(r[n]=t)}};document.addEventListener(`scroll`,a,!0),e.subscribe(`onBeforeLoad`,e=>{o(e.fromLocation?r(e.fromLocation):void 0),i.clear()}),window.addEventListener(`pagehide`,()=>{o(r(e.stores.resolvedLocation.get()??e.stores.location.get())),n.persist()}),e.subscribe(`onRendered`,t=>{let a=r(t.toLocation),o=e.options.scrollRestorationBehavior,c=e.options.scrollToTopSelectors;if(i.clear(),!e.resetNextScroll){e.resetNextScroll=!0;return}if(!(typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))){N=!0;try{let t=e.isScrollRestoring?n.state[a]:void 0,r=!1;if(t)for(let e in t){let n=t[e];if(!s(n))continue;let{scrollX:i,scrollY:a}=n;if(!(!Number.isFinite(i)||!Number.isFinite(a))){if(e===P)window.scrollTo({top:a,left:i,behavior:o}),r=!0;else if(e){let t;try{t=document.querySelector(e)}catch{continue}t&&(t.scrollLeft=i,t.scrollTop=a,r=!0)}}}if(!r){let t=e.history.location.hash.slice(1);if(t){let e=window.history.state?.__hashScrollIntoViewOptions??!0;if(e){let n=document.getElementById(t);n&&n.scrollIntoView(e)}}else{let e={top:0,left:0,behavior:o};if(window.scrollTo(e),c)for(let t of c){if(t===P)continue;let n=typeof t==`function`?t():document.querySelector(t);n&&n.scrollTo(e)}}}}finally{N=!1}e.isScrollRestoring&&n.set(e=>(e[a]||={},e))}})}function pe(e,t=String){let n=new URLSearchParams;for(let r in e){let i=e[r];i!==void 0&&n.set(r,t(i))}return n.toString()}function me(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function he(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=me(r):Array.isArray(t)?t.push(me(r)):n[e]=[t,me(r)]}return n}var ge=ve(JSON.parse),_e=ye(JSON.stringify,JSON.parse);function ve(e){return t=>{t[0]===`?`&&(t=t.substring(1));let n=he(t);for(let t in n){let r=n[t];if(typeof r==`string`)try{n[t]=e(r)}catch{}}return n}}function ye(e,t){let n=typeof t==`function`;function r(r){if(typeof r==`object`&&r)try{return e(r)}catch{}else if(n&&typeof r==`string`)try{return t(r),e(r)}catch{}return r}return e=>{let t=pe(e,r);return t?`?${t}`:``}}function be(e){return{input:({url:t})=>{for(let n of e)t=F(n,t);return t},output:({url:t})=>{for(let n=e.length-1;n>=0;n--)t=Se(e[n],t);return t}}}function xe(e){let t=te(e.basepath),n=`/${t}`,r=`${n}/`,i=e.caseSensitive?n:n.toLowerCase(),a=e.caseSensitive?r:r.toLowerCase();return{input:({url:t})=>{let r=e.caseSensitive?t.pathname:t.pathname.toLowerCase();return r===i?t.pathname=`/`:r.startsWith(a)&&(t.pathname=t.pathname.slice(n.length)),t},output:({url:e})=>(e.pathname=A([`/`,t,e.pathname]),e)}}function F(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function Se(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function Ce(e){let t=e;return{get(){return t},set(e){t=d(e,t)}}}function we(e){return{get(){return e()}}}function Te(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i,init:a}=t,o=new Map,s=new Map,c=new Map,l=n(e.status),u=n(e.loadedAt),d=n(e.isLoading),f=n(e.isTransitioning),p=n(e.location),m=n(e.resolvedLocation),h=n(e.statusCode),g=n(e.redirect),_=n([]),v=n([]),y=n([]),b=r(()=>I(o,_.get())),x=r(()=>I(s,v.get())),S=r(()=>I(c,y.get())),C=r(()=>_.get()[0]),w=r(()=>_.get().some(e=>o.get(e)?.get().status===`pending`)),T=r(()=>({locationHref:p.get().href,resolvedLocationHref:m.get()?.href,status:l.get()})),E=r(()=>({status:l.get(),loadedAt:u.get(),isLoading:d.get(),isTransitioning:f.get(),matches:b.get(),location:p.get(),resolvedLocation:m.get(),statusCode:h.get(),redirect:g.get()})),D=ne(64);function O(e){let t=D.get(e);return t||(t=r(()=>{let t=_.get();for(let n of t){let t=o.get(n);if(t&&t.routeId===e)return t.get()}}),D.set(e,t)),t}let k={status:l,loadedAt:u,isLoading:d,isTransitioning:f,location:p,resolvedLocation:m,statusCode:h,redirect:g,matchesId:_,pendingIds:v,cachedIds:y,matches:b,pendingMatches:x,cachedMatches:S,firstId:C,hasPending:w,matchRouteDeps:T,matchStores:o,pendingMatchStores:s,cachedMatchStores:c,__store:E,getRouteMatchStore:O,setMatches:A,setPending:ee,setCached:te};A(e.matches),a?.(k);function A(e){L(e,o,_,n,i)}function ee(e){L(e,s,v,n,i)}function te(e){L(e,c,y,n,i)}return k}function I(e,t){let n=[];for(let r of t){let t=e.get(r);t&&n.push(t.get())}return n}function L(e,t,n,r,i){let a=e.map(e=>e.id),o=new Set(a);i(()=>{for(let e of t.keys())o.has(e)||t.delete(e);for(let n of e){let e=t.get(n.id);if(!e){let e=r(n);e.routeId=n.routeId,t.set(n.id,e);continue}e.routeId=n.routeId,e.get()!==n&&e.set(n)}u(n.get(),a)||n.set(a)})}var R=e=>{if(!e.rendered)return e.rendered=!0,e.onReady?.()},Ee=e=>e.stores.matchesId.get().some(t=>e.stores.matchStores.get(t)?.get()._forcePending),z=(e,t)=>!!(e.preload&&!e.router.stores.matchStores.has(t)),B=(e,t,n=!0)=>{let r={...e.router.options.context??{}},i=n?t:t-1;for(let t=0;t<=i;t++){let n=e.matches[t];if(!n)continue;let i=e.router.getMatch(n.id);i&&Object.assign(r,i.__routeContext,i.__beforeLoadContext)}return r},De=(e,t)=>{if(!e.matches.length)return;let n=t.routeId,r=e.matches.findIndex(t=>t.routeId===e.router.routeTree.id),i=r>=0?r:0,a=n?e.matches.findIndex(e=>e.routeId===n):e.firstBadMatchIndex??e.matches.length-1;a<0&&(a=i);for(let t=a;t>=0;t--){let n=e.matches[t];if(e.router.looseRoutesById[n.routeId].options.notFoundComponent)return t}return n?a:i},V=(e,t,n)=>{if(!(!M(n)&&!j(n)))throw M(n)&&n.redirectHandled&&!n.options.reloadDocument?n:(t&&(t._nonReactive.beforeLoadPromise?.resolve(),t._nonReactive.loaderPromise?.resolve(),t._nonReactive.beforeLoadPromise=void 0,t._nonReactive.loaderPromise=void 0,t._nonReactive.error=n,e.updateMatch(t.id,r=>({...r,status:M(n)?`redirected`:r.status===`pending`?`success`:r.status,context:B(e,t.index),isFetching:!1,error:n})),j(n)&&!n.routeId&&(n.routeId=t.routeId),t._nonReactive.loadPromise?.resolve()),M(n)&&(e.rendered=!0,n.options._fromLocation=e.location,n.redirectHandled=!0,n=e.router.resolveRedirect(n)),n)},Oe=(e,t)=>{let n=e.router.getMatch(t);return!!(!n||n._nonReactive.dehydrated)},ke=(e,t,n)=>{let r=B(e,n);e.updateMatch(t,e=>({...e,context:r}))},H=(e,t,n,r)=>{let{id:i,routeId:a}=e.matches[t],o=e.router.looseRoutesById[a];if(n instanceof Promise)throw n;n.routerCode=r,e.firstBadMatchIndex??=t,V(e,e.router.getMatch(i),n);try{o.options.onError?.(n)}catch(t){n=t,V(e,e.router.getMatch(i),n)}e.updateMatch(i,e=>(e._nonReactive.beforeLoadPromise?.resolve(),e._nonReactive.beforeLoadPromise=void 0,e._nonReactive.loadPromise?.resolve(),{...e,error:n,status:`error`,isFetching:!1,updatedAt:Date.now(),abortController:new AbortController})),!e.preload&&!M(n)&&!j(n)&&(e.serialError??=n)},Ae=(e,t,n,r)=>{if(r._nonReactive.pendingTimeout!==void 0)return;let i=n.options.pendingMs??e.router.options.defaultPendingMs;if(e.onReady&&!z(e,t)&&(n.options.loader||n.options.beforeLoad||Be(n))&&typeof i==`number`&&i!==1/0&&(n.options.pendingComponent??e.router.options?.defaultPendingComponent)){let t=setTimeout(()=>{R(e)},i);r._nonReactive.pendingTimeout=t}},je=(e,t,n)=>{let r=e.router.getMatch(t);if(!r._nonReactive.beforeLoadPromise&&!r._nonReactive.loaderPromise)return;Ae(e,t,n,r);let i=()=>{let n=e.router.getMatch(t);n.preload&&(n.status===`redirected`||n.status===`notFound`)&&V(e,n,n.error)};return r._nonReactive.beforeLoadPromise?r._nonReactive.beforeLoadPromise.then(i):i()},Me=(e,t,n,r)=>{let i=e.router.getMatch(t),o=i._nonReactive.loadPromise;i._nonReactive.loadPromise=a(()=>{o?.resolve(),o=void 0});let{paramsError:s,searchError:c}=i;s&&H(e,n,s,`PARSE_PARAMS`),c&&H(e,n,c,`VALIDATE_SEARCH`),Ae(e,t,r,i);let l=new AbortController,u=!1,d=()=>{u||(u=!0,e.updateMatch(t,e=>({...e,isFetching:`beforeLoad`,fetchCount:e.fetchCount+1,abortController:l})))},f=()=>{i._nonReactive.beforeLoadPromise?.resolve(),i._nonReactive.beforeLoadPromise=void 0,e.updateMatch(t,e=>({...e,isFetching:!1}))};if(!r.options.beforeLoad){e.router.batch(()=>{d(),f()});return}i._nonReactive.beforeLoadPromise=a();let p={...B(e,n,!1),...i.__routeContext},{search:m,params:g,cause:_}=i,v=z(e,t),y={search:m,abortController:l,params:g,preload:v,context:p,location:e.location,navigate:t=>e.router.navigate({...t,_fromLocation:e.location}),buildLocation:e.router.buildLocation,cause:v?`preload`:_,matches:e.matches,routeId:r.id,...e.router.options.additionalContext},b=r=>{if(r===void 0){e.router.batch(()=>{d(),f()});return}(M(r)||j(r))&&(d(),H(e,n,r,`BEFORE_LOAD`)),e.router.batch(()=>{d(),e.updateMatch(t,e=>({...e,__beforeLoadContext:r})),f()})},x;try{if(x=r.options.beforeLoad(y),h(x))return d(),x.catch(t=>{H(e,n,t,`BEFORE_LOAD`)}).then(b)}catch(t){d(),H(e,n,t,`BEFORE_LOAD`)}b(x)},Ne=(e,t)=>{let{id:n,routeId:r}=e.matches[t],i=e.router.looseRoutesById[r],a=()=>s(),o=()=>Me(e,n,t,i),s=()=>{if(Oe(e,n))return;let t=je(e,n,i);return h(t)?t.then(o):o()};return a()},Pe=(e,t,n)=>{let r=e.router.getMatch(t);if(!r||!n.options.head&&!n.options.scripts&&!n.options.headers)return;let i={ssr:e.router.options.ssr,matches:e.matches,match:r,params:r.params,loaderData:r.loaderData};return Promise.all([n.options.head?.(i),n.options.scripts?.(i),n.options.headers?.(i)]).then(([e,t,n])=>({meta:e?.meta,links:e?.links,headScripts:e?.scripts,headers:n,scripts:t,styles:e?.styles}))},Fe=(e,t,n,r,i)=>{let a=t[r-1],{params:o,loaderDeps:s,abortController:c,cause:l}=e.router.getMatch(n),u=B(e,r),d=z(e,n);return{params:o,deps:s,preload:!!d,parentMatchPromise:a,abortController:c,context:u,location:e.location,navigate:t=>e.router.navigate({...t,_fromLocation:e.location}),cause:d?`preload`:l,route:i,...e.router.options.additionalContext}},Ie=async(e,t,n,r,i)=>{try{let a=e.router.getMatch(n);try{U(i);let o=i.options.loader,s=typeof o==`function`?o:o?.handler,c=s?.(Fe(e,t,n,r,i)),l=!!s&&h(c);if((l||i._lazyPromise||i._componentsPromise||i.options.head||i.options.scripts||i.options.headers||a._nonReactive.minPendingPromise)&&e.updateMatch(n,e=>({...e,isFetching:`loader`})),s){let t=l?await c:c;V(e,e.router.getMatch(n),t),t!==void 0&&e.updateMatch(n,e=>({...e,loaderData:t}))}i._lazyPromise&&await i._lazyPromise;let u=a._nonReactive.minPendingPromise;u&&await u,i._componentsPromise&&await i._componentsPromise,e.updateMatch(n,t=>({...t,error:void 0,context:B(e,r),status:`success`,isFetching:!1,updatedAt:Date.now()}))}catch(t){let o=t;if(o?.name===`AbortError`){if(a.abortController.signal.aborted){a._nonReactive.loaderPromise?.resolve(),a._nonReactive.loaderPromise=void 0;return}e.updateMatch(n,t=>({...t,status:t.status===`pending`?`success`:t.status,isFetching:!1,context:B(e,r)}));return}let s=a._nonReactive.minPendingPromise;s&&await s,j(t)&&await i.options.notFoundComponent?.preload?.(),V(e,e.router.getMatch(n),t);try{i.options.onError?.(t)}catch(t){o=t,V(e,e.router.getMatch(n),t)}!M(o)&&!j(o)&&await U(i,[`errorComponent`]),e.updateMatch(n,t=>({...t,error:o,context:B(e,r),status:`error`,isFetching:!1}))}}catch(t){let r=e.router.getMatch(n);r&&(r._nonReactive.loaderPromise=void 0),V(e,r,t)}},Le=async(e,t,n)=>{async function r(r,a,o,l,u){let f=Date.now()-a.updatedAt,p=r?u.options.preloadStaleTime??e.router.options.defaultPreloadStaleTime??3e4:u.options.staleTime??e.router.options.defaultStaleTime??0,m=u.options.shouldReload,h=typeof m==`function`?m(Fe(e,t,i,n,u)):m,{status:g,invalid:_}=l,v=f>=p&&(!!e.forceStaleReload||l.cause===`enter`||o!==void 0&&o!==l.id);s=g===`success`&&(_||(h??v)),r&&u.options.preload===!1||(s&&!e.sync&&d?(c=!0,(async()=>{try{await Ie(e,t,i,n,u);let r=e.router.getMatch(i);r._nonReactive.loaderPromise?.resolve(),r._nonReactive.loadPromise?.resolve(),r._nonReactive.loaderPromise=void 0,r._nonReactive.loadPromise=void 0}catch(t){M(t)&&await e.router.navigate(t.options)}})()):g!==`success`||s?await Ie(e,t,i,n,u):ke(e,i,n))}let{id:i,routeId:o}=e.matches[n],s=!1,c=!1,l=e.router.looseRoutesById[o],u=l.options.loader,d=((typeof u==`function`?void 0:u?.staleReloadMode)??e.router.options.defaultStaleReloadMode)!==`blocking`;if(Oe(e,i)){if(!e.router.getMatch(i))return e.matches[n];ke(e,i,n)}else{let t=e.router.getMatch(i),s=e.router.stores.matchesId.get()[n],c=(s&&e.router.stores.matchStores.get(s)||null)?.routeId===o?s:e.router.stores.matches.get().find(e=>e.routeId===o)?.id,u=z(e,i);if(t._nonReactive.loaderPromise){if(t.status===`success`&&!e.sync&&!t.preload&&d)return t;await t._nonReactive.loaderPromise;let n=e.router.getMatch(i),a=n._nonReactive.error||n.error;a&&V(e,n,a),n.status===`pending`&&await r(u,t,c,n,l)}else{let n=u&&!e.router.stores.matchStores.has(i),o=e.router.getMatch(i);o._nonReactive.loaderPromise=a(),n!==o.preload&&e.updateMatch(i,e=>({...e,preload:n})),await r(u,t,c,o,l)}}let f=e.router.getMatch(i);c||(f._nonReactive.loaderPromise?.resolve(),f._nonReactive.loadPromise?.resolve(),f._nonReactive.loadPromise=void 0),clearTimeout(f._nonReactive.pendingTimeout),f._nonReactive.pendingTimeout=void 0,c||(f._nonReactive.loaderPromise=void 0),f._nonReactive.dehydrated=void 0;let p=c?f.isFetching:!1;return p!==f.isFetching||f.invalid!==!1?(e.updateMatch(i,e=>({...e,isFetching:p,invalid:!1})),e.router.getMatch(i)):f};async function Re(e){let t=e,n=[];Ee(t.router)&&R(t);let r;for(let e=0;e({...e,...a?{status:`success`,globalNotFound:!0,error:void 0}:{status:`notFound`,error:l},isFetching:!1})),u=e,await U(r,[`notFoundComponent`])}else if(!t.preload){let e=t.matches[0];e.globalNotFound||t.router.getMatch(e.id)?.globalNotFound&&t.updateMatch(e.id,e=>({...e,globalNotFound:!1,error:void 0}))}if(t.serialError&&t.firstBadMatchIndex!==void 0){let e=t.router.looseRoutesById[t.matches[t.firstBadMatchIndex].routeId];await U(e,[`errorComponent`])}for(let e=0;e<=u;e++){let{id:n,routeId:r}=t.matches[e],i=t.router.looseRoutesById[r];try{let e=Pe(t,n,i);if(e){let r=await e;t.updateMatch(n,e=>({...e,...r}))}}catch(e){console.error(`Error executing head for route ${r}:`,e)}}let d=R(t);if(h(d)&&await d,l)throw l;if(t.serialError&&!t.preload&&!t.onReady)throw t.serialError;return t.matches}function ze(e,t){let n=t.map(t=>e.options[t]?.preload?.()).filter(Boolean);if(n.length!==0)return Promise.all(n)}function U(e,t=W){!e._lazyLoaded&&e._lazyPromise===void 0&&(e.lazyFn?e._lazyPromise=e.lazyFn().then(t=>{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazyLoaded=!0,e._lazyPromise=void 0}):e._lazyLoaded=!0);let n=()=>e._componentsLoaded?void 0:t===W?(()=>{if(e._componentsPromise===void 0){let t=ze(e,W);t?e._componentsPromise=t.then(()=>{e._componentsLoaded=!0,e._componentsPromise=void 0}):e._componentsLoaded=!0}return e._componentsPromise})():ze(e,t);return e._lazyPromise?e._lazyPromise.then(n):n()}function Be(e){for(let t of W)if(e.options[t]?.preload)return!0;return!1}var W=[`component`,`errorComponent`,`pendingComponent`,`notFoundComponent`],G=`__TSR_index`,Ve=`popstate`,He=`beforeunload`;function Ue(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=K(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[G];i=We(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[G];i=We(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[G]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r}}function We(e,t){t||={};let n=q();return{...t,key:n,__TSR_key:n,[G]:e}}function Ge(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=e?.createHref??(e=>e),c=e?.parseLocation??(()=>K(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=q();t.history.replaceState({[G]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_,v=()=>{g&&(C._ignoreSubscribers=!0,(g.isPush?t.history.pushState:t.history.replaceState)(g.state,``,g.href),C._ignoreSubscribers=!1,g=void 0,_=void 0,u=void 0)},y=(e,t,n)=>{let r=s(t);_||(u=l),l=K(t,n),g={href:r,state:n,isPush:g?.isPush||e===`push`},_||=Promise.resolve().then(()=>v())},b=e=>{l=c(),C.notify({type:e})},x=async()=>{if(f){f=!1;return}let e=c(),n=e.state[G]-l.state[G],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let n=a();if(typeof document<`u`&&n.length){for(let r of n)if(await r.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(1),C.notify(u);return}}}l=c(),C.notify(u)},S=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},C=Ue({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>y(`push`,e,t),replaceState:(e,t)=>y(`replace`,e,t),back:e=>(e&&(p=!0),m=!0,t.history.back()),forward:e=>{e&&(p=!0),m=!0,t.history.forward()},go:e=>{d=!0,t.history.go(e)},createHref:e=>s(e),flush:v,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(He,S,{capture:!0}),t.removeEventListener(Ve,x)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return t.addEventListener(He,S,{capture:!0}),t.addEventListener(Ve,x),t.history.pushState=function(...e){let r=n.apply(t.history,e);return C._ignoreSubscribers||b(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return C._ignoreSubscribers||b(`REPLACE`),n},C}function Ke(e){let t=e.replace(/[\x00-\x1f\x7f]/g,``);return t.startsWith(`//`)&&(t=`/`+t.replace(/^\/+/,``)),t}function K(e,t){let n=Ke(e),r=n.indexOf(`#`),i=n.indexOf(`?`),a=q();return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t||{[G]:0,key:a,__TSR_key:a}}}function q(){return(Math.random()+1).toString(36).substring(7)}function J(e,t){let n=t,r=e;return{fromLocation:n,toLocation:r,pathChanged:n?.pathname!==r.pathname,hrefChanged:n?.href!==r.href,hashChanged:n?.hash!==r.hash}}var qe=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.isViewTransitionTypesSupported=void 0,this.subscribers=new Set,this.isScrollRestoring=!1,this.isScrollRestorationSetup=!1,this.startTransition=e=>e(),this.update=e=>{let t=this.options,n=this.basepath??t?.basepath??`/`,r=this.basepath===void 0,i=t?.rewrite;if(this.options={...t,...e},this.isServer=this.options.isServer??typeof document>`u`,this.protocolAllowlist=new Set(this.options.protocolAllowlist),this.options.pathParamsAllowedCharacters&&(this.pathParamsDecoder=w(this.options.pathParamsAllowedCharacters)),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.history=Ge()),this.origin=this.options.origin,this.origin||(window?.origin&&window.origin!==`null`?this.origin=window.origin:this.origin=`http://localhost`),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;this.resolvePathCache=ne(1e3),e=this.buildRouteTree(),this.setRoutes(e)}if(!this.stores&&this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=Te(Ye(this.latestLocation),e),fe(this)}let a=!1,o=this.options.basepath??`/`,s=this.options.rewrite;if(r||n!==o||i!==s){this.basepath=o;let e=[],t=te(o);t&&t!==`/`&&e.push(xe({basepath:o})),s&&e.push(s),this.rewrite=e.length===0?void 0:e.length===1?e[0]:be(e),this.history&&this.updateLatestLocation(),a=!0}a&&this.stores&&this.stores.location.set(this.latestLocation),typeof window<`u`&&`CSS`in window&&typeof window.CSS?.supports==`function`&&(this.isViewTransitionTypesSupported=window.CSS.supports(`selector(:active-view-transition-type(a)`))},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=b(this.routeTree,this.options.caseSensitive,(e,t)=>{e.init({originalIndex:t})});return this.options.routeMasks&&S(this.options.routeMasks,e.processedTree),e},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{this.subscribers.forEach(t=>{t.eventType===e.type&&t.fn(e)})},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i,state:a})=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),o=this.options.stringifySearch(i);return{href:e+o+r,publicHref:e+o+r,pathname:m(e).path,external:!1,searchStr:o,search:l(t?.search,i),hash:m(r.slice(1)).path,state:c(t?.state,a)}}let o=new URL(i,this.origin),s=F(this.rewrite,o),u=this.options.parseSearch(s.search),d=this.options.stringifySearch(u);return s.search=d,{href:s.href.replace(s.origin,``),publicHref:i,pathname:m(s.pathname).path,external:!!this.rewrite&&s.origin!==this.origin,searchStr:d,search:l(t?.search,u),hash:m(s.hash.slice(1)).path,state:c(t?.state,a)}},r=n(e),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i);return e.state.key=r.state.key,e.state.__TSR_key=r.state.__TSR_key,delete e.state.__tempLocation,{...e,maskedLocation:r}}return r},this.resolvePathWithBase=(e,t)=>T({base:e,to:k(t),trailingSlash:this.options.trailingSlash,cache:this.resolvePathCache}),this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>Xe({pathname:e,routesById:this.routesById,processedTree:this.processedTree}),this.cancelMatch=e=>{let t=this.getMatch(e);t&&(t.abortController.abort(),clearTimeout(t._nonReactive.pendingTimeout),t._nonReactive.pendingTimeout=void 0)},this.cancelMatches=()=>{this.stores.pendingIds.get().forEach(e=>{this.cancelMatch(e)}),this.stores.matchesId.get().forEach(e=>{if(this.stores.pendingMatchStores.has(e))return;let t=this.stores.matchStores.get(e)?.get();t&&(t.status===`pending`||t.isFetching===`loader`)&&this.cancelMatch(e)})},this.buildLocation=e=>{let t=(t={})=>{let n=t._fromLocation||this.pendingBuiltLocation||this.latestLocation,r=this.matchRoutesLightweight(n);t.from;let i=t.unsafeRelative===`path`?n.pathname:t.from??r.fullPath,a=this.resolvePathWithBase(i,`.`),s=r.search,u=Object.assign(Object.create(null),r.params),f=t.to?this.resolvePathWithBase(a,`${t.to}`):this.resolvePathWithBase(a,`.`),p=t.params===!1||t.params===null?Object.create(null):(t.params??!0)===!0?u:Object.assign(u,d(t.params,u)),h=this.getMatchedRoutes(f),g=h.matchedRoutes;if((!h.foundRoute||h.foundRoute.path!==`/`&&h.routeParams[`**`])&&this.options.notFoundRoute&&(g=[...g,this.options.notFoundRoute]),Object.keys(p).length>0)for(let e of g){let t=e.options.params?.stringify??e.options.stringifyParams;if(t)try{Object.assign(p,t(p))}catch{}}let _=e.leaveParams?f:m(D({path:f,params:p,decoder:this.pathParamsDecoder,server:this.isServer}).interpolatedPath).path,v=s;if(e._includeValidateSearch&&this.options.search?.strict){let e={};g.forEach(t=>{if(t.options.validateSearch)try{Object.assign(e,X(t.options.validateSearch,{...e,...v}))}catch{}}),v=e}v=Ze({search:v,dest:t,destRoutes:g,_includeValidateSearch:e._includeValidateSearch}),v=l(s,v);let y=this.options.stringifySearch(v),b=t.hash===!0?n.hash:t.hash?d(t.hash,n.hash):void 0,x=b?`#${b}`:``,S=t.state===!0?n.state:t.state?d(t.state,n.state):{};S=c(n.state,S);let C=`${_}${y}${x}`,w,T,E=!1;if(this.rewrite){let e=new URL(C,this.origin),t=Se(this.rewrite,e);w=e.href.replace(e.origin,``),t.origin===this.origin?T=t.pathname+t.search+t.hash:(T=t.href,E=!0)}else w=o(C),T=w;return{publicHref:T,href:w,pathname:_,search:v,searchStr:y,state:S,hash:b??``,external:E,unmaskOnReload:t.unmaskOnReload}},n=(n={},r)=>{let i=t(n),a=r?t(r):void 0;if(!a){let n=Object.create(null);if(this.options.routeMasks){let o=O(i.pathname,this.processedTree);if(o){Object.assign(n,o.rawParams);let{from:i,params:s,...c}=o.route,l=s===!1||s===null?Object.create(null):(s??!0)===!0?n:Object.assign(n,d(s,n));r={from:e.from,...c,params:l},a=t(r)}}}return a&&(i.maskedLocation=a),i};return e.mask?n(e,{from:e.from,...e.mask}):n(e)},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=()=>{let e=[`key`,`__TSR_key`,`__TSR_index`,`__hashScrollIntoViewOptions`];e.forEach(e=>{n.state[e]=this.latestLocation.state[e]});let t=_(n.state,this.latestLocation.state);return e.forEach(e=>{delete n.state[e]}),t},i=x(this.latestLocation.href)===x(n.href),o=this.commitLocationPromise;if(this.commitLocationPromise=a(()=>{o?.resolve(),o=void 0}),i&&r())this.load();else{let{maskedLocation:r,hashScrollIntoView:i,...a}=n;r&&(a={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...a,search:a.searchStr,state:{...a.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(a.unmaskOnReload??this.options.unmaskOnReload??!1)&&(a.state.__tempKey=this.tempLocationKey)),a.state.__hashScrollIntoViewOptions=i??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,this.history[n.replace?`replace`:`push`](a.publicHref,a.state,{ignoreBlocker:t})}return this.resetNextScroll=n.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,href:a,...o}={})=>{if(a){let t=this.history.location.state.__TSR_index,n=K(a,{__TSR_index:e?t:t+1}),r=new URL(n.pathname,this.origin);o.to=F(this.rewrite,r).pathname,o.search=this.options.parseSearch(n.search),o.hash=n.hash.slice(1)}let s=this.buildLocation({...o,_includeValidateSearch:!0});this.pendingBuiltLocation=s;let c=this.commitLocation({...s,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return Promise.resolve().then(()=>{this.pendingBuiltLocation===s&&(this.pendingBuiltLocation=void 0)}),c},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=!1;if(n)try{new URL(`${n}`),a=!0}catch{}if(a&&!t&&(t=!0),t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i});n??=t.publicHref,r??=t.publicHref}let t=!a&&r?r:n;if(y(t,this.protocolAllowlist))return Promise.resolve();if(!i.ignoreBlocker){let e=this.history.getBlockers?.()??[];for(let t of e)if(t?.blockerFn&&await t.blockerFn({currentLocation:this.latestLocation,nextLocation:this.latestLocation,action:`PUSH`}))return Promise.resolve()}return i.replace?window.location.replace(t):window.location.href=t,Promise.resolve()}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.beforeLoad=()=>{this.cancelMatches(),this.updateLatestLocation();let e=this.matchRoutes(this.latestLocation),t=this.stores.cachedMatches.get().filter(t=>!e.some(e=>e.id===t.id));this.batch(()=>{this.stores.status.set(`pending`),this.stores.statusCode.set(200),this.stores.isLoading.set(!0),this.stores.location.set(this.latestLocation),this.stores.setPending(e),this.stores.setCached(t)})},this.load=async e=>{let t,n,r,i=this.stores.resolvedLocation.get()??this.stores.location.get();for(r=new Promise(a=>{this.startTransition(async()=>{try{this.beforeLoad();let t=this.latestLocation,n=J(t,this.stores.resolvedLocation.get());this.stores.redirect.get()||this.emit({type:`onBeforeNavigate`,...n}),this.emit({type:`onBeforeLoad`,...n}),await Re({router:this,sync:e?.sync,forceStaleReload:i.href===t.href,matches:this.stores.pendingMatches.get(),location:t,updateMatch:this.updateMatch,onReady:async()=>{this.startTransition(()=>{this.startViewTransition(async()=>{let e=null,t=null,n=null,r=null;this.batch(()=>{let i=this.stores.pendingMatches.get(),a=i.length,o=this.stores.matches.get();e=a?o.filter(e=>!this.stores.pendingMatchStores.has(e.id)):null;let s=new Set;for(let e of this.stores.pendingMatchStores.values())e.routeId&&s.add(e.routeId);let c=new Set;for(let e of this.stores.matchStores.values())e.routeId&&c.add(e.routeId);t=a?o.filter(e=>!s.has(e.routeId)):null,n=a?i.filter(e=>!c.has(e.routeId)):null,r=a?i.filter(e=>c.has(e.routeId)):o,this.stores.isLoading.set(!1),this.stores.loadedAt.set(Date.now()),a&&(this.stores.setMatches(i),this.stores.setPending([]),this.stores.setCached([...this.stores.cachedMatches.get(),...e.filter(e=>e.status!==`error`&&e.status!==`notFound`&&e.status!==`redirected`)]),this.clearExpiredCache())});for(let[e,i]of[[t,`onLeave`],[n,`onEnter`],[r,`onStay`]])if(e)for(let t of e)this.looseRoutesById[t.routeId].options[i]?.(t)})})}})}catch(e){M(e)?(t=e,this.navigate({...t.options,replace:!0,ignoreBlocker:!0})):j(e)&&(n=e);let r=t?t.status:n?404:this.stores.matches.get().some(e=>e.status===`error`)?500:200;this.batch(()=>{this.stores.statusCode.set(r),this.stores.redirect.set(t)})}this.latestLoadPromise===r&&(this.commitLocationPromise?.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),a()})}),this.latestLoadPromise=r,await r;this.latestLoadPromise&&r!==this.latestLoadPromise;)await this.latestLoadPromise;let a;this.hasNotFoundMatch()?a=404:this.stores.matches.get().some(e=>e.status===`error`)&&(a=500),a!==void 0&&this.stores.statusCode.set(a)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document<`u`&&`startViewTransition`in document&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&this.isViewTransitionTypesSupported){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(J(r,i)):t.types;if(a===!1){e();return}n={update:e,types:a}}else n=e;document.startViewTransition(n)}else e()},this.updateMatch=(e,t)=>{this.startTransition(()=>{let n=this.stores.pendingMatchStores.get(e);if(n){n.set(t);return}let r=this.stores.matchStores.get(e);if(r){r.set(t);return}let i=this.stores.cachedMatchStores.get(e);if(i){let n=t(i.get());n.status===`redirected`?this.stores.cachedMatchStores.delete(e)&&this.stores.cachedIds.set(t=>t.filter(t=>t!==e)):i.set(n)}})},this.getMatch=e=>this.stores.cachedMatchStores.get(e)?.get()??this.stores.pendingMatchStores.get(e)?.get()??this.stores.matchStores.get(e)?.get(),this.invalidate=e=>{let t=t=>e?.filter?.(t)??!0?{...t,invalid:!0,...e?.forcePending||t.status===`error`||t.status===`notFound`?{status:`pending`,error:void 0}:void 0}:t;return this.batch(()=>{this.stores.setMatches(this.stores.matches.get().map(t)),this.stores.setCached(this.stores.cachedMatches.get().map(t)),this.stores.setPending(this.stores.pendingMatches.get().map(t))}),this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.getParsedLocationHref=e=>e.publicHref||`/`,this.resolveRedirect=e=>{let t=e.headers.get(`Location`);if(!e.options.href||e.options._builtLocation){let t=e.options._builtLocation??this.buildLocation(e.options),n=this.getParsedLocationHref(t);e.options.href=n,e.headers.set(`Location`,n)}else if(t)try{let n=new URL(t);if(this.origin&&n.origin===this.origin){let t=n.pathname+n.search+n.hash;e.options.href=t,e.headers.set(`Location`,t)}}catch{}if(e.options.href&&!e.options._builtLocation&&y(e.options.href,this.protocolAllowlist))throw Error(`Redirect blocked: unsafe protocol`);return e.headers.get(`Location`)||e.headers.set(`Location`,e.options.href),e},this.clearCache=e=>{let t=e?.filter;t===void 0?this.stores.setCached([]):this.stores.setCached(this.stores.cachedMatches.get().filter(e=>!t(e)))},this.clearExpiredCache=()=>{let e=Date.now();this.clearCache({filter:t=>{let n=this.looseRoutesById[t.routeId];if(!n.options.loader)return!0;let r=(t.preload?n.options.preloadGcTime??this.options.defaultPreloadGcTime:n.options.gcTime??this.options.defaultGcTime)??300*1e3;return t.status===`error`?!0:e-t.updatedAt>=r}})},this.loadRouteChunk=U,this.preloadRoute=async e=>{let t=e._builtLocation??this.buildLocation(e),n=this.matchRoutes(t,{throwOnError:!0,preload:!0,dest:e}),r=new Set([...this.stores.matchesId.get(),...this.stores.pendingIds.get()]),i=new Set([...r,...this.stores.cachedIds.get()]),a=n.filter(e=>!i.has(e.id));if(a.length){let e=this.stores.cachedMatches.get();this.stores.setCached([...e,...a])}try{return n=await Re({router:this,matches:n,location:t,preload:!0,updateMatch:(e,t)=>{r.has(e)?n=n.map(n=>n.id===e?t(n):n):this.updateMatch(e,t)}}),n}catch(e){if(M(e))return e.options.reloadDocument?void 0:await this.preloadRoute({...e.options,_fromLocation:t});j(e)||console.error(e);return}},this.matchRoute=(e,t)=>{let n={...e,to:e.to?this.resolvePathWithBase(e.from||``,e.to):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n);if(t?.pending&&this.stores.status.get()!==`pending`)return!1;let i=(t?.pending===void 0?!this.stores.isLoading.get():t.pending)?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),a=C(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,i.pathname,this.processedTree);return!a||e.params&&!_(a.rawParams,e.params,{partial:!0})?!1:t?.includeSearch??!0?_(i.search,r.search,{partial:!0})?a.rawParams:!1:a.rawParams},this.hasNotFoundMatch=()=>this.stores.matches.get().some(e=>e.status===`notFound`||e.globalNotFound),this.getStoreConfig=t,this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??_e,parseSearch:e.parseSearch??ge,protocolAllowlist:e.protocolAllowlist??g}),typeof document<`u`&&(self.__TSR_ROUTER__=this)}isShell(){return!!this.options.isShell}isPrerendering(){return!!this.options.isPrerendering}get state(){return this.stores.__store.get()}setRoutes({routesById:e,routesByPath:t,processedTree:n}){this.routesById=e,this.routesByPath=t,this.processedTree=n;let r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)}get looseRoutesById(){return this.routesById}getParentContext(e){return e?.id?e.context??this.options.context??void 0:this.options.context??void 0}matchRoutesInternal(e,t){let n=this.getMatchedRoutes(e.pathname),{foundRoute:r,routeParams:i,parsedParams:o}=n,{matchedRoutes:s}=n,u=!1;(r?r.path!==`/`&&i[`**`]:x(e.pathname))&&(this.options.notFoundRoute?s=[...s,this.options.notFoundRoute]:u=!0);let d=u?$e(this.options.notFoundMode,s):void 0,f=Array(s.length),p=new Map;for(let e of this.stores.matchStores.values())e.routeId&&p.set(e.routeId,e.get());for(let n=0;nthis.navigate({...t,_fromLocation:e}),buildLocation:this.buildLocation,cause:n.cause,abortController:n.abortController,preload:!!n.preload,matches:f,routeId:r.id};n.__routeContext=r.options.context(t)??void 0}n.context={...a,...n.__routeContext,...n.__beforeLoadContext}}}return f}matchRoutesLightweight(e){let{matchedRoutes:t,routeParams:n,parsedParams:r}=this.getMatchedRoutes(e.pathname),i=f(t),a={...e.search};for(let e of t)try{Object.assign(a,X(e.options.validateSearch,a))}catch{}let o=f(this.stores.matchesId.get()),s=o&&this.stores.matchStores.get(o)?.get(),c=s&&s.routeId===i.id&&s.pathname===e.pathname,l;if(c)l=s.params;else{let e=Object.assign(Object.create(null),n);for(let i of t)try{et(i,n,r??{},e)}catch{}l=e}return{matchedRoutes:t,fullPath:i.fullPath,search:a,params:l}}},Y=class extends Error{},Je=class extends Error{};function Ye(e){return{loadedAt:0,isLoading:!1,isTransitioning:!1,status:`idle`,resolvedLocation:void 0,location:e,matches:[],statusCode:200}}function X(e,t){if(e==null)return{};if(`~standard`in e){let n=e[`~standard`].validate(t);if(n instanceof Promise)throw new Y(`Async validation not supported`);if(n.issues)throw new Y(JSON.stringify(n.issues,void 0,2),{cause:n});return n.value}return`parse`in e?e.parse(t):typeof e==`function`?e(t):{}}function Xe({pathname:e,routesById:t,processedTree:n}){let r=Object.create(null),i=x(e),a,o,s=E(i,n,!0);return s&&(a=s.route,Object.assign(r,s.rawParams),o=Object.assign(Object.create(null),s.parsedParams)),{matchedRoutes:s?.branch||[t.__root__],routeParams:r,foundRoute:a,parsedParams:o}}function Ze({search:e,dest:t,destRoutes:n,_includeValidateSearch:r}){return Qe(n)(e,t,r??!1)}function Qe(e){let t={dest:null,_includeValidateSearch:!1,middlewares:[]};for(let n of e)`search`in n.options?n.options.search?.middlewares&&t.middlewares.push(...n.options.search.middlewares):(n.options.preSearchFilters||n.options.postSearchFilters)&&t.middlewares.push(({search:e,next:t})=>{let r=e;`preSearchFilters`in n.options&&n.options.preSearchFilters&&(r=n.options.preSearchFilters.reduce((e,t)=>t(e),e));let i=t(r);return`postSearchFilters`in n.options&&n.options.postSearchFilters?n.options.postSearchFilters.reduce((e,t)=>t(e),i):i}),n.options.validateSearch&&t.middlewares.push(({search:e,next:r})=>{let i=r(e);if(!t._includeValidateSearch)return i;try{return{...i,...X(n.options.validateSearch,i)??void 0}}catch{return i}});t.middlewares.push(({search:e})=>{let n=t.dest;return n.search?n.search===!0?e:d(n.search,e):{}});let n=(e,t,r)=>{if(e>=r.length)return t;let i=r[e];return i({search:t,next:t=>n(e+1,t,r)})};return function(e,r,i){return t.dest=r,t._includeValidateSearch=i,n(0,e,t.middlewares)}}function $e(e,t){if(e!==`root`)for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.children)return n.id}return re}function et(e,t,n,r){let i=e.options.params?.parse??e.options.parseParams;if(i)if(e.options.skipRouteOnParseError)for(let e in t)e in n&&(r[e]=n[e]);else{let e=i(r);Object.assign(r,e)}}var Z=t(n(),1),Q=e();function tt(e){let t=e.errorComponent??rt;return(0,Q.jsx)(nt,{getResetKey:e.getResetKey,onCatch:e.onCatch,children:({error:n,reset:r})=>n?Z.createElement(t,{error:n,reset:r}):e.children})}var nt=class extends Z.Component{constructor(...e){super(...e),this.state={error:null}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:null}:{resetKey:n}}static getDerivedStateFromError(e){return{error:e}}reset(){this.setState({error:null})}componentDidCatch(e,t){this.props.onCatch&&this.props.onCatch(e,t)}render(){return this.props.children({error:this.state.error,reset:()=>{this.reset()}})}};function rt({error:e}){let[t,n]=Z.useState(!1);return(0,Q.jsxs)(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[(0,Q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[(0,Q.jsx)(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),(0,Q.jsx)(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),(0,Q.jsx)(`div`,{style:{height:`.25rem`}}),t?(0,Q.jsx)(`div`,{children:(0,Q.jsx)(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e.message?(0,Q.jsx)(`code`,{children:e.message}):null})}):null]})}function it(e){let t=i(),n=`not-found-${v(t.stores.location,e=>e.pathname)}-${v(t.stores.status,e=>e)}`;return(0,Q.jsx)(tt,{getResetKey:()=>n,onCatch:(t,n)=>{if(j(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(j(t))return e.fallback?.(t);throw t},children:e.children})}function at(){return(0,Q.jsx)(`p`,{children:`Not Found`})}function $(e){return(0,Q.jsx)(Q.Fragment,{children:e.children})}function ot(e,t,n){return t.options.notFoundComponent?(0,Q.jsx)(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?(0,Q.jsx)(e.options.defaultNotFoundComponent,{...n}):(0,Q.jsx)(at,{})}var st=Z.memo(function({matchId:e}){let t=i(),n=t.stores.matchStores.get(e);n||p();let r=v(t.stores.loadedAt,e=>e),a=v(n,e=>e);return(0,Q.jsx)(ct,{router:t,matchId:e,resetKey:r,matchState:Z.useMemo(()=>{let e=a.routeId,n=t.routesById[e].parentRoute?.id;return{routeId:e,ssr:a.ssr,_displayPending:a._displayPending,parentRouteId:n}},[a._displayPending,a.routeId,a.ssr,t.routesById])})});function ct({router:e,matchId:t,resetKey:n,matchState:r}){let i=e.routesById[r.routeId],a=i.options.pendingComponent??e.options.defaultPendingComponent,o=a?(0,Q.jsx)(a,{}):null,s=i.options.errorComponent??e.options.defaultErrorComponent,c=i.options.onCatch??e.options.defaultOnCatch,l=i.isRoot?i.options.notFoundComponent??e.options.notFoundRoute?.options.component:i.options.notFoundComponent,u=r.ssr===!1||r.ssr===`data-only`,d=(!i.isRoot||i.options.wrapInSuspense||u)&&(i.options.wrapInSuspense??a??(i.options.errorComponent?.preload||u))?Z.Suspense:$,f=s?tt:$,p=l?it:$;return(0,Q.jsxs)(i.isRoot?i.options.shellComponent??$:$,{children:[(0,Q.jsx)(ie.Provider,{value:t,children:(0,Q.jsx)(d,{fallback:o,children:(0,Q.jsx)(f,{getResetKey:()=>n,errorComponent:s||rt,onCatch:(e,t)=>{if(j(e))throw e.routeId??=r.routeId,e;c?.(e,t)},children:(0,Q.jsx)(p,{fallback:e=>{if(e.routeId??=r.routeId,!l||e.routeId&&e.routeId!==r.routeId||!e.routeId&&!i.isRoot)throw e;return Z.createElement(l,e)},children:u||r._displayPending?(0,Q.jsx)(ee,{fallback:o,children:(0,Q.jsx)(ut,{matchId:t})}):(0,Q.jsx)(ut,{matchId:t})})})})}),r.parentRouteId===`__root__`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(lt,{resetKey:n}),(e.options.scrollRestoration,null)]}):null]})}function lt({resetKey:e}){let t=i(),n=Z.useRef(void 0);return r(()=>{let e=t.latestLocation.href;(n.current===void 0||n.current!==e)&&(t.emit({type:`onRendered`,...J(t.stores.location.get(),t.stores.resolvedLocation.get())}),n.current=e)},[t.latestLocation.state.__TSR_key,e,t]),null}var ut=Z.memo(function({matchId:e}){let t=i(),n=(e,n)=>t.getMatch(e.id)?._nonReactive[n]??e._nonReactive[n],r=t.stores.matchStores.get(e);r||p();let o=v(r,e=>e),s=o.routeId,c=t.routesById[s],l=Z.useMemo(()=>{let e=(t.routesById[s].options.remountDeps??t.options.defaultRemountDeps)?.({routeId:s,loaderDeps:o.loaderDeps,params:o._strictParams,search:o._strictSearch});return e?JSON.stringify(e):void 0},[s,o.loaderDeps,o._strictParams,o._strictSearch,t.options.defaultRemountDeps,t.routesById]),u=Z.useMemo(()=>{let e=c.options.component??t.options.defaultComponent;return e?(0,Q.jsx)(e,{},l):(0,Q.jsx)(dt,{})},[l,c.options.component,t.options.defaultComponent]);if(o._displayPending)throw n(o,`displayPendingPromise`);if(o._forcePending)throw n(o,`minPendingPromise`);if(o.status===`pending`){let e=c.options.pendingMinMs??t.options.defaultPendingMinMs;if(e){let n=t.getMatch(o.id);if(n&&!n._nonReactive.minPendingPromise){let t=a();n._nonReactive.minPendingPromise=t,setTimeout(()=>{t.resolve(),n._nonReactive.minPendingPromise=void 0},e)}}throw n(o,`loadPromise`)}if(o.status===`notFound`)return j(o.error)||p(),ot(t,c,o.error);if(o.status===`redirected`)throw M(o.error)||p(),n(o,`loadPromise`);if(o.status===`error`)throw o.error;return u}),dt=Z.memo(function(){let e=i(),t=Z.useContext(ie),n,r=!1,a;{let i=t?e.stores.matchStores.get(t):void 0;[n,r]=v(i,e=>[e?.routeId,e?.globalNotFound??!1]),a=v(e.stores.matchesId,e=>e[e.findIndex(e=>e===t)+1])}let o=n?e.routesById[n]:void 0,s=e.options.defaultPendingComponent?(0,Q.jsx)(e.options.defaultPendingComponent,{}):null;if(r)return o||p(),ot(e,o,void 0);if(!a)return null;let c=(0,Q.jsx)(st,{matchId:a});return n===`__root__`?(0,Q.jsx)(Z.Suspense,{fallback:s,children:c}):c});export{rt as a,Ce as c,tt as i,we as l,dt as n,qe as o,$ as r,J as s,st as t}; \ No newline at end of file diff --git a/src/www/assets/Matches-LuvVcyUg.js b/src/www/assets/Matches-LuvVcyUg.js new file mode 100644 index 0000000..1ae3a4d --- /dev/null +++ b/src/www/assets/Matches-LuvVcyUg.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{o as r,s as i,t as a}from"./useRouter-D03zSgJO.js";import{t as o}from"./useStore-1-QVtiLb.js";import{f as s}from"./ClientOnly-CtYi2y5F.js";import"./redirect-dE0wk0WH.js";import{a as c,i as l,r as u,s as d,t as f}from"./Match-B8-zI9ZJ.js";import{n as p}from"./matchContext-BcwcZvp2.js";import{t as m}from"./atom-DI1Bn-1s.js";function h(e){if(typeof document<`u`&&document.querySelector){let t=e.stores.location.get(),n=t.state.__hashScrollIntoViewOptions??!0;if(n&&t.hash!==``){let e=document.getElementById(t.hash);e&&e.scrollIntoView(n)}}}var g=t(n(),1);function _(){let e=a(),t=g.useRef({router:e,mounted:!1}),[n,c]=g.useState(!1),l=o(e.stores.isLoading,e=>e),u=o(e.stores.hasPending,e=>e),f=i(l),p=l||n||u,_=i(p),v=l||u,y=i(v);return e.startTransition=e=>{c(!0),g.startTransition(()=>{e(),c(!1)})},g.useEffect(()=>{let t=e.history.subscribe(e.load),n=e.buildLocation({to:e.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return s(e.latestLocation.publicHref)!==s(n.publicHref)&&e.commitLocation({...n,replace:!0}),()=>{t()}},[e,e.history]),r(()=>{typeof window<`u`&&e.ssr||t.current.router===e&&t.current.mounted||(t.current={router:e,mounted:!0},(async()=>{try{await e.load()}catch(e){console.error(e)}})())},[e]),r(()=>{f&&!l&&e.emit({type:`onLoad`,...d(e.stores.location.get(),e.stores.resolvedLocation.get())})},[f,e,l]),r(()=>{y&&!v&&e.emit({type:`onBeforeRouteMount`,...d(e.stores.location.get(),e.stores.resolvedLocation.get())})},[v,y,e]),r(()=>{if(_&&!p){let t=d(e.stores.location.get(),e.stores.resolvedLocation.get());e.emit({type:`onResolved`,...t}),m(()=>{e.stores.status.set(`idle`),e.stores.resolvedLocation.set(e.stores.location.get())}),t.hrefChanged&&h(e)}},[p,_,e]),null}var v=e();function y(){let e=a(),t=e.routesById.__root__.options.pendingComponent??e.options.defaultPendingComponent,n=t?(0,v.jsx)(t,{}):null,r=(0,v.jsxs)(typeof document<`u`&&e.ssr?u:g.Suspense,{fallback:n,children:[(0,v.jsx)(_,{}),(0,v.jsx)(b,{})]});return e.options.InnerWrap?(0,v.jsx)(e.options.InnerWrap,{children:r}):r}function b(){let e=a(),t=o(e.stores.firstId,e=>e),n=o(e.stores.loadedAt,e=>e),r=t?(0,v.jsx)(f,{matchId:t}):null;return(0,v.jsx)(p.Provider,{value:t,children:e.options.disableGlobalCatchBoundary?r:(0,v.jsx)(l,{getResetKey:()=>n,errorComponent:c,onCatch:void 0,children:r})})}function x(){let e=a();return o(e.stores.matchRouteDeps,e=>e),g.useCallback(t=>{let{pending:n,caseSensitive:r,fuzzy:i,includeSearch:a,...o}=t;return e.matchRoute(o,{pending:n,caseSensitive:r,fuzzy:i,includeSearch:a})},[e])}export{x as n,y as t}; \ No newline at end of file diff --git a/src/www/assets/_error-DGJYkCxd.js b/src/www/assets/_error-DGJYkCxd.js new file mode 100644 index 0000000..e00deed --- /dev/null +++ b/src/www/assets/_error-DGJYkCxd.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_error-Dttamloo.js","assets/messages-BovT1T-w.js","assets/search-provider-Cx1K1ilz.js","assets/dist-DG5UMlBd.js","assets/button-DJA4fnJ8.js","assets/command-BwVY_kli.js","assets/dist-BKfJQFVD.js","assets/dist-BEDXr2LC.js","assets/dist-15n4mVGL.js","assets/dropdown-menu-CUea1X0A.js","assets/dist-D21KDGR3.js","assets/dist-Cp1lAGZy.js","assets/createLucideIcon-D28ivbfF.js","assets/check-gDgbfVXu.js","assets/dist-DlZiaY1y.js","assets/dist-CGm-FpWw.js","assets/separator-CRLYw2cW.js","assets/wallet--XSRr4dT.js","assets/cookies-BNZcTwGc.js","assets/auth-store-BpIS8RMn.js","assets/dist-DvAgZMq72.js","assets/with-selector-D_dmjfol.js","assets/useRouter-D03zSgJO.js","assets/useNavigate-Dg8CkCoa.js","assets/useStore-1-QVtiLb.js","assets/circle-check-Dh8WOZF0.js","assets/input-DiRPHDd8.js","assets/font-provider-DvtNHF7l.js","assets/theme-provider-CRKya7Cx.js","assets/theme-switch-BjXQNOij.js","assets/header-DbmR8lIc.js","assets/link-CA4H4hTz.js","assets/ClientOnly-CtYi2y5F.js","assets/forbidden-BEz-zjy_.js","assets/general-error-DKtbS-qh.js","assets/maintenance-error-PO6kK4Oj.js","assets/not-found-error-toRsO1Fi.js","assets/unauthorized-error-CxmfHb-a.js"])))=>i.map(i=>d[i]); +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{r as n}from"./useRouter-D03zSgJO.js";import{d as r}from"./useStore-1-QVtiLb.js";import{n as i}from"./route-BxpeArPd.js";function a(e){return new o(e,{silent:!0}).createRoute}var o=class{constructor(e,t){this.path=e,this.createRoute=e=>{let t=i(e);return t.isRoot=!1,t},this.silent=t?.silent}},s=e(t(),1);function c(e,t){let i,a,o,c,l=()=>(i||=e().then(e=>{i=void 0,a=e[t??`default`]}).catch(e=>{if(o=e,r(o)&&o instanceof Error&&typeof window<`u`&&typeof sessionStorage<`u`){let e=`tanstack_router_reload:${o.message}`;sessionStorage.getItem(e)||(sessionStorage.setItem(e,`1`),c=!0)}}),i),u=function(e){if(c)throw window.location.reload(),new Promise(()=>{});if(o)throw o;if(!a)if(n)n(l());else throw l();return s.createElement(a,e)};return u.preload=l,u}var l=`modulepreload`,u=function(e){return`/`+e},d={},f=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=u(t,n),t in d)return;d[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:l,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},p=a(`/_authenticated/errors/$error`)({component:c(()=>f(()=>import(`./_error-Dttamloo.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37])),`component`)});export{a as i,f as n,c as r,p as t}; \ No newline at end of file diff --git a/src/www/assets/_error-Dttamloo.js b/src/www/assets/_error-Dttamloo.js new file mode 100644 index 0000000..9c31b98 --- /dev/null +++ b/src/www/assets/_error-Dttamloo.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{t}from"./_error-DGJYkCxd.js";import{h as n}from"./search-provider-Cx1K1ilz.js";import{n as r,t as i}from"./theme-switch-BjXQNOij.js";import{t as a}from"./general-error-DKtbS-qh.js";import{t as o}from"./not-found-error-toRsO1Fi.js";import{t as s}from"./unauthorized-error-CxmfHb-a.js";import{t as c}from"./forbidden-BEz-zjy_.js";import{t as l}from"./maintenance-error-PO6kK4Oj.js";import{n as u,r as d,t as f}from"./header-DbmR8lIc.js";var p=e();function m(){let{error:e}=t.useParams(),m={unauthorized:s,forbidden:c,"not-found":o,"internal-server-error":a,"maintenance-error":l}[e]||o;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(f,{className:`border-b`,fixed:!0,children:[(0,p.jsx)(u,{}),(0,p.jsxs)(`div`,{className:`ms-auto flex items-center space-x-4`,children:[(0,p.jsx)(r,{}),(0,p.jsx)(i,{}),(0,p.jsx)(n,{}),(0,p.jsx)(d,{})]})]}),(0,p.jsx)(`div`,{className:`flex-1 [&>div]:h-full`,children:(0,p.jsx)(m,{})})]})}export{m as component}; \ No newline at end of file diff --git a/src/www/assets/addresses-DQVKa3vf.js b/src/www/assets/addresses-DQVKa3vf.js new file mode 100644 index 0000000..63ede88 --- /dev/null +++ b/src/www/assets/addresses-DQVKa3vf.js @@ -0,0 +1,3 @@ +import{$i as e,Ai as t,Bi as n,Ci as r,Di as i,Ei as a,Fi as o,Gi as s,Hi as c,Ii as l,Ji as u,Ki as d,Li as f,Mi as p,Ni as m,Oi as h,Pi as g,Qi as _,Ri as ee,Si as v,Ti as y,Ui as b,Vi as te,Wi as ne,Xi as re,Yi as ie,Zi as ae,_i as x,aa as S,bi as C,di as w,ea as oe,fi as T,gi as E,hi as se,ia as ce,ji as D,ki as O,mi as le,na as ue,nu as de,oa as fe,ou as pe,pi as me,qi as he,ra as ge,ru as _e,ta as ve,vi as ye,wi as be,xi as xe,yi as Se,zi as k}from"./messages-BovT1T-w.js";import{a as A}from"./auth-store-BpIS8RMn.js";import{r as Ce,t as we}from"./router-Dohuf5K5.js";import{r as Te}from"./route-BxpeArPd.js";import{m as Ee,o as j}from"./search-provider-Cx1K1ilz.js";import{i as M,t as N}from"./button-DJA4fnJ8.js";import{a as P,c as F,l as De,r as Oe,s as ke,t as Ae}from"./dropdown-menu-CUea1X0A.js";import{d as I,f as je,l as L,m as R,p as z,u as B}from"./command-BwVY_kli.js";import{t as V}from"./label-CsevXZTG.js";import{a as Me,i as Ne,n as Pe,o as Fe,r as Ie,s as Le,t as Re}from"./select-DcStuzoT.js";import{t as ze}from"./switch-R6BNZUH1.js";import{_ as Be,d as H,f as Ve,g as He,h as Ue,n as We,p as Ge,r as Ke,t as qe,v as Je,y as Ye}from"./data-table-CmcvKcj8.js";import{t as Xe}from"./download-CN4vU01G.js";import{t as Ze}from"./ellipsis-Y4gZr59G.js";import{t as Qe}from"./eye-off-C-BF3gv3.js";import{t as $e}from"./eye-CDavQcLN.js";import{n as et,t as tt}from"./chains-store-Dzu_Y00B.js";import{n as nt,t as rt}from"./trash-2-Du706Ujr.js";import{n as U}from"./dist-DvAgZMq72.js";import{c as W,s as it}from"./zod-Cymc5bS-.js";import{a as G,c as at,i as K,l as ot,n as q,o as J,s as Y,t as st}from"./form-DdHiBYMe.js";import{t as X}from"./input-DiRPHDd8.js";import{t as ct}from"./page-header-BBJ9dE3-.js";import{t as lt}from"./textarea-D_TrrVtD.js";import{t as ut}from"./use-table-url-state-C7-IMA3_.js";import{t as dt}from"./long-text-BXQXVuRh.js";var Z=pe(_e(),1),Q=de(),ft=it({address:W().min(8,T()),network:W().min(1,w()),remark:W().max(50).optional()});function pt({open:e,onOpenChange:t,currentRow:i,onSuccess:a}){let{chains:o,loading:s}=tt(),l=ot({resolver:at(ft),defaultValues:{address:``,network:``,remark:``}}),u=A.useMutation(`post`,`/admin/api/v1/wallets`),d=A.useMutation(`patch`,`/admin/api/v1/wallets/{id}`),f=(0,Z.useMemo)(()=>o.map(e=>e.network).filter(e=>!!e),[o]);(0,Z.useEffect)(()=>{e&&l.reset({address:i?.address??``,network:i?.network??``,remark:i?.remark??``})},[e,i,l]);function p(e){if(i?.id){d.mutate({params:{path:{id:i.id}},body:{remark:e.remark||void 0}},{onSuccess:()=>{U.success(le()),t(!1),a?.()}});return}u.mutate({body:{address:e.address,network:e.network,remark:e.remark??``}},{onSuccess:()=>{U.success(me()),t(!1),a?.()}})}let m=u.isPending||d.isPending,h=f.length>0,g=s?be():r(),[_,ee]=(0,Z.useState)(!1);return(0,Q.jsx)(L,{onOpenChange:t,open:e,children:(0,Q.jsxs)(B,{children:[(0,Q.jsxs)(z,{children:[(0,Q.jsx)(R,{children:i?v():xe()}),(0,Q.jsx)(I,{children:i?C():Se()})]}),(0,Q.jsx)(st,{...l,children:(0,Q.jsxs)(`form`,{className:`space-y-4`,onSubmit:l.handleSubmit(p),children:[(0,Q.jsx)(K,{control:l.control,name:`network`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:b()}),(0,Q.jsxs)(Re,{disabled:!!i||!h,onValueChange:e.onChange,value:e.value,children:[(0,Q.jsx)(q,{children:(0,Q.jsx)(Ne,{className:`w-full`,children:(0,Q.jsx)(Me,{placeholder:h?c():g})})}),(0,Q.jsx)(Pe,{children:h?f.map(e=>(0,Q.jsx)(Ie,{value:e,children:e},e)):(0,Q.jsx)(`div`,{className:`px-2 py-1.5 text-muted-foreground text-sm`,children:g})})]}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsx)(K,{control:l.control,name:`address`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:n()}),(0,Q.jsx)(q,{children:(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(X,{...e,className:`pr-10`,disabled:!!i,placeholder:ye(),type:_?`text`:`password`}),(0,Q.jsx)(`button`,{className:`absolute inset-y-0 right-3 flex items-center text-muted-foreground hover:text-foreground`,onClick:()=>ee(e=>!e),type:`button`,children:_?(0,Q.jsx)(Qe,{className:`h-4 w-4`}):(0,Q.jsx)($e,{className:`h-4 w-4`})})]})}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsx)(K,{control:l.control,name:`remark`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:O()}),(0,Q.jsx)(q,{children:(0,Q.jsx)(X,{...e,placeholder:x()})}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Q.jsx)(N,{onClick:()=>t(!1),type:`button`,variant:`outline`,children:k()}),(0,Q.jsx)(N,{disabled:m,type:`submit`,children:m?E():se()})]})]})})]})})}function mt(e){return[{id:`status-switch`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:m()}),cell:({row:t})=>(0,Q.jsx)(ze,{checked:t.original.status===1,onCheckedChange:()=>e(t.original.status===1?`disable`:`enable`,t.original)}),enableSorting:!1,enableHiding:!1,meta:{label:m(),skeleton:`switch`,sticky:`left`,th:{className:M(`rounded-tl-[inherit]`)}}},{accessorKey:`address`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:p()}),cell:({row:e})=>(0,Q.jsx)(dt,{className:`font-medium`,children:e.original.address}),enableHiding:!1,meta:{label:p(),skeleton:`long`}},{accessorKey:`network`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:b()}),meta:{label:b(),skeleton:`short`}},{accessorKey:`order_count`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:D()}),meta:{label:D(),skeleton:`id`}},{accessorKey:`source`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:t()}),cell:({row:e})=>e.original.source??`-`,meta:{label:t(),skeleton:`short`}},{accessorKey:`remark`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:O()}),meta:{label:O(),skeleton:`long`}},{accessorKey:`created_at`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:h()}),cell:({row:e})=>j(e.original.created_at),meta:{label:h(),skeleton:`date`}},{accessorKey:`updated_at`,header:({column:e})=>(0,Q.jsx)(H,{column:e,title:i()}),cell:({row:e})=>j(e.original.updated_at),meta:{label:i(),skeleton:`date`}},{id:`actions`,enableHiding:!1,meta:{label:a(),skeleton:`action`,sticky:`right`,className:M(`w-12`)},cell:({row:t})=>(0,Q.jsxs)(Ae,{modal:!1,children:[(0,Q.jsx)(De,{asChild:!0,children:(0,Q.jsxs)(N,{className:`flex h-8 w-8 p-0 data-[state=open]:bg-muted`,variant:`ghost`,children:[(0,Q.jsx)(Ze,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:`Open menu`})]})}),(0,Q.jsxs)(Oe,{align:`end`,className:`w-40`,children:[(0,Q.jsxs)(P,{onClick:()=>e(`edit`,t.original),children:[y(),(0,Q.jsx)(F,{children:(0,Q.jsx)(et,{size:16})})]}),(0,Q.jsx)(ke,{}),(0,Q.jsxs)(P,{onClick:()=>e(`delete`,t.original),variant:`destructive`,children:[ae(),(0,Q.jsx)(F,{children:(0,Q.jsx)(rt,{size:16})})]})]})]})}]}var $=Te(`/_authenticated/addresses/`);function ht({data:e,isLoading:t,onAction:n,onRefresh:r}){let[i,a]=(0,Z.useState)([]),{globalFilter:s,onGlobalFilterChange:c,columnFilters:u,onColumnFiltersChange:d,pagination:f,onPaginationChange:p,ensurePageInRange:m}=ut({search:$.useSearch(),navigate:$.useNavigate(),pagination:{defaultPage:1,defaultPageSize:10},globalFilter:{enabled:!0,key:`address`},columnFilters:[{columnId:`status`,searchKey:`status`,type:`array`},{columnId:`network`,searchKey:`network`,type:`array`}]}),h=Ve({data:e,columns:(0,Z.useMemo)(()=>mt(n),[n]),state:{sorting:i,columnFilters:u,globalFilter:s,pagination:f},onSortingChange:a,onColumnFiltersChange:d,onGlobalFilterChange:c,onPaginationChange:p,globalFilterFn:(e,t,n)=>{let r=String(n).toLowerCase();return(e.original.address??``).toLowerCase().includes(r)||(e.original.remark??``).toLowerCase().includes(r)},getCoreRowModel:Ge(),getFilteredRowModel:Be(),getPaginationRowModel:Je(),getSortedRowModel:Ye(),getFacetedRowModel:Ue(),getFacetedUniqueValues:He()});(0,Z.useEffect)(()=>{m(h.getPageCount())},[h,m]);let _=[...new Set(e.map(e=>e.network).filter(Boolean))].map(e=>({label:e,value:e}));return(0,Q.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4`,children:[(0,Q.jsx)(qe,{filters:[{columnId:`status`,title:g(),options:[...Ce]},{columnId:`network`,title:b(),options:_}],onRefresh:r,searchPlaceholder:l(),table:h}),(0,Q.jsx)(Ke,{className:`min-w-[900px]`,emptyText:o(),loading:t,table:h}),(0,Q.jsx)(We,{className:`mt-auto`,table:h})]})}function gt(){let{chains:t}=tt(),r=A.useQuery(`get`,`/admin/api/v1/wallets`),i=A.useMutation(`delete`,`/admin/api/v1/wallets/{id}`),a=A.useMutation(`post`,`/admin/api/v1/wallets/{id}/status`),o=A.useMutation(`post`,`/admin/api/v1/wallets/batch-import`),[l,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(!1),[g,v]=(0,Z.useState)(``),[y,b]=(0,Z.useState)(``),[x,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{if(!t.length){g&&v(``);return}t.some(e=>e.network&&e.network===g)||v(t[0]?.network??``)},[t,g]);async function E(){await we.invalidateQueries({queryKey:[`get`,`/admin/api/v1/wallets`]})}async function se(){if(!w?.row.id)return;let e=Number(w.row.id);w.action===`delete`?(await i.mutateAsync({params:{path:{id:e}}}),U.success(fe())):(w.action===`enable`||w.action===`disable`)&&(await a.mutateAsync({params:{path:{id:e}},body:{status:w.action===`enable`?1:2}}),U.success(S())),await E(),T(null)}async function D(e,t){if(e===`edit`){C(t),p(!0);return}if(e===`enable`||e===`disable`){if(!t.id)return;await a.mutateAsync({params:{path:{id:Number(t.id)}},body:{status:e===`enable`?1:2}}),U.success(S()),await E();return}T({action:e,row:t})}async function O(){if(!g){U.error(ce());return}let e=y.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);if(!e.length){U.error(ge());return}let t=((await o.mutateAsync({body:{addresses:e,network:g}})).data??[]).filter(e=>e.ok).length;U.success(ue({success:String(t),total:String(e.length)})),h(!1),b(``),await E()}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Le,{fixed:!0}),(0,Q.jsxs)(Fe,{className:`flex flex-1 flex-col gap-4 sm:gap-6`,children:[(0,Q.jsx)(ct,{actions:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(N,{onClick:()=>h(!0),variant:`outline`,children:[(0,Q.jsx)(Xe,{className:`mr-2 h-4 w-4`}),ve()]}),(0,Q.jsxs)(N,{onClick:()=>{C(null),p(!0)},children:[(0,Q.jsx)(nt,{className:`mr-2 h-4 w-4`}),oe()]})]}),description:e(),title:_()}),(0,Q.jsx)(ht,{data:r.data?.data??[],isLoading:r.isLoading,onAction:D,onRefresh:()=>r.refetch()})]}),(0,Q.jsx)(pt,{currentRow:x,onOpenChange:p,onSuccess:()=>r.refetch(),open:l}),w&&(0,Q.jsx)(Ee,{confirmText:w.action===`delete`?ae():re(),desc:(0,Q.jsx)(`span`,{children:ie({address:String(w.row.address),action:w.action})}),destructive:w.action===`delete`,handleConfirm:se,onOpenChange:()=>T(null),open:!0,title:w.action===`delete`?u():he()}),(0,Q.jsx)(L,{onOpenChange:h,open:m,children:(0,Q.jsxs)(B,{children:[(0,Q.jsxs)(z,{children:[(0,Q.jsx)(R,{children:d()}),(0,Q.jsx)(I,{children:s()})]}),(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(V,{children:ne()}),(0,Q.jsxs)(Re,{onValueChange:v,value:g,children:[(0,Q.jsx)(Ne,{children:(0,Q.jsx)(Me,{placeholder:c()})}),(0,Q.jsx)(Pe,{children:t.some(e=>e.network)?t.filter(e=>!!e.network).map(e=>(0,Q.jsx)(Ie,{value:e.network,children:e.display_name??e.network??te()},e.network)):(0,Q.jsx)(`div`,{className:`px-2 py-1.5 text-muted-foreground text-sm`,children:ce()})})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(V,{children:n()}),(0,Q.jsx)(lt,{className:`min-h-40`,onChange:e=>b(e.target.value),placeholder:`TAddr001 +TAddr002 +TAddr003`,value:y})]})]}),(0,Q.jsxs)(je,{children:[(0,Q.jsx)(N,{onClick:()=>h(!1),variant:`outline`,children:k()}),(0,Q.jsx)(N,{disabled:o.isPending||!t.some(e=>e.network),onClick:O,children:o.isPending?ee():f()})]})]})})]})}var _t=gt;export{_t as component}; \ No newline at end of file diff --git a/src/www/assets/appearance-DJZ27An3.js b/src/www/assets/appearance-DJZ27An3.js new file mode 100644 index 0000000..473770a --- /dev/null +++ b/src/www/assets/appearance-DJZ27An3.js @@ -0,0 +1 @@ +import{$ as e,Gl as t,J as n,Q as r,Wl as i,X as a,Y as o,Z as s,nu as c,q as l}from"./messages-BovT1T-w.js";import{i as u,n as d,t as f}from"./button-DJA4fnJ8.js";import{n as p,r as m}from"./font-provider-DvtNHF7l.js";import{n as h}from"./theme-provider-CRKya7Cx.js";import{t as g}from"./chevron-down-CdmvZsfI.js";import{n as _,t as v}from"./radio-group-DXVwPYJH.js";import{r as y,s as b}from"./zod-Cymc5bS-.js";import{a as x,c as S,i as C,l as w,n as T,o as E,r as D,s as O,t as k}from"./form-DdHiBYMe.js";import{t as A}from"./page-header-BBJ9dE3-.js";import{t as j}from"./show-submitted-data-l0RlCwTX.js";var M=c(),N=b({theme:y([`light`,`dark`]),font:y(m)});function P(){let{font:e,setFont:r}=p(),{theme:c,setTheme:y}=h(),b={theme:c,font:e},A=w({resolver:S(N),defaultValues:b});function P(t){t.font!==e&&r(t.font),t.theme!==c&&y(t.theme),j(t)}return(0,M.jsx)(k,{...A,children:(0,M.jsxs)(`form`,{className:`space-y-8`,onSubmit:A.handleSubmit(P),children:[(0,M.jsx)(C,{control:A.control,name:`font`,render:({field:e})=>(0,M.jsxs)(x,{children:[(0,M.jsx)(E,{children:s()}),(0,M.jsxs)(`div`,{className:`relative w-max`,children:[(0,M.jsx)(T,{children:(0,M.jsx)(`select`,{className:u(d({variant:`outline`}),`w-50 appearance-none font-normal capitalize`,`dark:bg-background dark:hover:bg-background`),...e,children:m.map(e=>(0,M.jsx)(`option`,{value:e,children:e},e))})}),(0,M.jsx)(g,{className:`absolute inset-e-3 top-2.5 h-4 w-4 opacity-50`})]}),(0,M.jsx)(D,{className:`font-manrope`,children:a()}),(0,M.jsx)(O,{})]})}),(0,M.jsx)(C,{control:A.control,name:`theme`,render:({field:e})=>(0,M.jsxs)(x,{children:[(0,M.jsx)(E,{children:o()}),(0,M.jsx)(D,{children:n()}),(0,M.jsx)(O,{}),(0,M.jsxs)(v,{className:`grid max-w-md grid-cols-2 gap-8 pt-2`,defaultValue:e.value,onValueChange:e.onChange,children:[(0,M.jsx)(x,{children:(0,M.jsxs)(E,{className:`[&:has([data-state=checked])>div]:border-primary`,children:[(0,M.jsx)(T,{children:(0,M.jsx)(_,{className:`sr-only`,value:`light`})}),(0,M.jsx)(`div`,{className:`items-center rounded-md border-2 border-muted p-1 hover:border-accent`,children:(0,M.jsxs)(`div`,{className:`space-y-2 rounded-sm bg-[#ecedef] p-2`,children:[(0,M.jsxs)(`div`,{className:`space-y-2 rounded-md bg-white p-2 shadow-xs`,children:[(0,M.jsx)(`div`,{className:`h-2 w-20 rounded-lg bg-[#ecedef]`}),(0,M.jsx)(`div`,{className:`h-2 w-25 rounded-lg bg-[#ecedef]`})]}),(0,M.jsxs)(`div`,{className:`flex items-center space-x-2 rounded-md bg-white p-2 shadow-xs`,children:[(0,M.jsx)(`div`,{className:`h-4 w-4 rounded-full bg-[#ecedef]`}),(0,M.jsx)(`div`,{className:`h-2 w-25 rounded-lg bg-[#ecedef]`})]}),(0,M.jsxs)(`div`,{className:`flex items-center space-x-2 rounded-md bg-white p-2 shadow-xs`,children:[(0,M.jsx)(`div`,{className:`h-4 w-4 rounded-full bg-[#ecedef]`}),(0,M.jsx)(`div`,{className:`h-2 w-25 rounded-lg bg-[#ecedef]`})]})]})}),(0,M.jsx)(`span`,{className:`block w-full p-2 text-center font-normal`,children:t()})]})}),(0,M.jsx)(x,{children:(0,M.jsxs)(E,{className:`[&:has([data-state=checked])>div]:border-primary`,children:[(0,M.jsx)(T,{children:(0,M.jsx)(_,{className:`sr-only`,value:`dark`})}),(0,M.jsx)(`div`,{className:`items-center rounded-md border-2 border-muted bg-popover p-1 hover:bg-accent hover:text-accent-foreground`,children:(0,M.jsxs)(`div`,{className:`space-y-2 rounded-sm bg-slate-950 p-2`,children:[(0,M.jsxs)(`div`,{className:`space-y-2 rounded-md bg-slate-800 p-2 shadow-xs`,children:[(0,M.jsx)(`div`,{className:`h-2 w-20 rounded-lg bg-slate-400`}),(0,M.jsx)(`div`,{className:`h-2 w-25 rounded-lg bg-slate-400`})]}),(0,M.jsxs)(`div`,{className:`flex items-center space-x-2 rounded-md bg-slate-800 p-2 shadow-xs`,children:[(0,M.jsx)(`div`,{className:`h-4 w-4 rounded-full bg-slate-400`}),(0,M.jsx)(`div`,{className:`h-2 w-25 rounded-lg bg-slate-400`})]}),(0,M.jsxs)(`div`,{className:`flex items-center space-x-2 rounded-md bg-slate-800 p-2 shadow-xs`,children:[(0,M.jsx)(`div`,{className:`h-4 w-4 rounded-full bg-slate-400`}),(0,M.jsx)(`div`,{className:`h-2 w-25 rounded-lg bg-slate-400`})]})]})}),(0,M.jsx)(`span`,{className:`block w-full p-2 text-center font-normal`,children:i()})]})})]})]})}),(0,M.jsx)(f,{type:`submit`,children:l()})]})})}function F(){return(0,M.jsx)(A,{description:r(),title:e(),variant:`section`,children:(0,M.jsx)(P,{})})}var I=F;export{I as component}; \ No newline at end of file diff --git a/src/www/assets/arrow-left-BrKcUadm.js b/src/www/assets/arrow-left-BrKcUadm.js new file mode 100644 index 0000000..2165563 --- /dev/null +++ b/src/www/assets/arrow-left-BrKcUadm.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/atom-DI1Bn-1s.js b/src/www/assets/atom-DI1Bn-1s.js new file mode 100644 index 0000000..5bf8225 --- /dev/null +++ b/src/www/assets/atom-DI1Bn-1s.js @@ -0,0 +1 @@ +var e=(e=>(e[e.None=0]=`None`,e[e.Mutable=1]=`Mutable`,e[e.Watching=2]=`Watching`,e[e.RecursedCheck=4]=`RecursedCheck`,e[e.Recursed=8]=`Recursed`,e[e.Dirty=16]=`Dirty`,e[e.Pending=32]=`Pending`,e))(e||{});function t({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(!0)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(!0)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function n(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var r=[],i=0,{link:a,unlink:o,propagate:s,checkDirty:c,shallowPropagate:l}=t({update(e){return e._update()},notify(t){r[d++]=t,t.flags&=~e.Watching},unwatched(t){t.depsTail!==void 0&&(t.depsTail=void 0,t.flags=e.Mutable|e.Dirty,h(t))}}),u=0,d=0,f,p=0;function m(e){try{++p,e()}finally{--p||g()}}function h(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=o(n,e)}function g(){if(!(p>0)){for(;u{d.get(),r.current?t.next?.(d._snapshot):r.current=!0});return{unsubscribe:()=>{i.stop()}}},_update(t){let n=f,a=r?.compare??Object.is;if(o)f=d,++i,d.depsTail=void 0;else if(t===void 0)return!1;o&&(d.flags=e.Mutable|e.RecursedCheck);try{let e=d._snapshot,n=typeof t==`function`?t(e):t===void 0&&o?u(e):t;return e===void 0||!a(e,n)?(d._snapshot=n,!0):!1}finally{f=n,o&&(d.flags&=~e.RecursedCheck),h(d)}}};return o?(d.flags=e.Mutable|e.Dirty,d.get=function(){let t=d.flags;if(t&e.Dirty||t&e.Pending&&c(d.deps,d)){if(d._update()){let e=d.subs;e!==void 0&&l(e)}}else t&e.Pending&&(d.flags=t&~e.Pending);return f!==void 0&&a(d,f,i),d._snapshot}):d.set=function(e){if(d._update(e)){let e=d.subs;e!==void 0&&(s(e),l(e),g())}},d}function v(t){let n=()=>{let n=f;f=r,++i,r.depsTail=void 0,r.flags=e.Watching|e.RecursedCheck;try{return t()}finally{f=n,r.flags&=~e.RecursedCheck,h(r)}},r={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:e.Watching|e.RecursedCheck,notify(){let t=this.flags;t&e.Dirty||t&e.Pending&&c(this.deps,this)?n():this.flags=e.Watching},stop(){this.flags=e.None,this.depsTail=void 0,h(this)}};return n(),r}export{_ as n,m as t}; \ No newline at end of file diff --git a/src/www/assets/auth-animation-context-zwGs7ZAM.js b/src/www/assets/auth-animation-context-zwGs7ZAM.js new file mode 100644 index 0000000..ca9de12 --- /dev/null +++ b/src/www/assets/auth-animation-context-zwGs7ZAM.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";var r=t(n(),1),i=e(),a=(0,r.createContext)({isTyping:!1,passwordLength:0,setIsTyping:()=>void 0,setPasswordLength:()=>void 0,setShowPassword:()=>void 0,showPassword:!1});function o({children:e}){let[t,n]=(0,r.useState)(!1),[o,s]=(0,r.useState)(!1),[c,l]=(0,r.useState)(0);return(0,i.jsx)(a.Provider,{value:{isTyping:t,passwordLength:c,setIsTyping:n,setPasswordLength:l,setShowPassword:s,showPassword:o},children:e})}function s(){return(0,r.useContext)(a)}export{s as n,o as t}; \ No newline at end of file diff --git a/src/www/assets/auth-store-BpIS8RMn.js b/src/www/assets/auth-store-BpIS8RMn.js new file mode 100644 index 0000000..44dd6b6 --- /dev/null +++ b/src/www/assets/auth-store-BpIS8RMn.js @@ -0,0 +1 @@ +import{Ac as e,Cc as t,Dc as n,Ec as r,Oc as i,Sc as a,Tc as o,_c as s,bc as c,fc as l,gc as u,hc as d,kc as f,mc as p,nu as m,ou as h,pc as g,ru as _,vc as v,wc as y,xc as b,yc as x}from"./messages-BovT1T-w.js";import{t as ee}from"./with-selector-D_dmjfol.js";import{n as S,r as te,t as C}from"./cookies-BNZcTwGc.js";import{n as w}from"./dist-DvAgZMq72.js";var T=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},E=new class extends T{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},D={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},O=new class{#e=D;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function k(e){setTimeout(e,0)}var A=typeof window>`u`||`Deno`in globalThis;function j(){}function M(e,t){return typeof e==`function`?e(t):e}function N(e){return typeof e==`number`&&e>=0&&e!==1/0}function P(e,t){return Math.max(e+(t||0)-Date.now(),0)}function F(e,t){return typeof e==`function`?e(t):e}function I(e,t){return typeof e==`function`?e(t):e}function ne(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==ie(o,t.options))return!1}else if(!ae(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function re(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(L(t.options.mutationKey)!==L(a))return!1}else if(!ae(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function ie(e,t){return(t?.queryKeyHashFn||L)(e)}function L(e){return JSON.stringify(e,(e,t)=>le(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function ae(e,t){return e===t?!0:typeof e==typeof t&&e&&t&&typeof e==`object`&&typeof t==`object`?Object.keys(t).every(n=>ae(e[n],t[n])):!1}var oe=Object.prototype.hasOwnProperty;function se(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=ce(e)&&ce(t);if(!r&&!(le(e)&&le(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l{O.setTimeout(t,e)})}function fe(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:se(e,t)}function pe(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function me(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var he=Symbol();function ge(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===he?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function _e(e,t){return typeof e==`function`?e(...t):!!e}function ve(e,t,n){let r=!1,i;return Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var z=(()=>{let e=()=>A;return{isServer(){return e()},setIsServer(t){e=t}}})();function ye(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}var be=k;function xe(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=be,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var B=xe(),Se=new class extends T{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function Ce(e){return Math.min(1e3*2**e,3e4)}function we(e){return(e??`online`)===`online`?Se.isOnline():!0}var Te=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function Ee(e){let t=!1,n=0,r,i=ye(),a=()=>i.status!==`pending`,o=t=>{if(!a()){let n=new Te(t);f(n),e.onCancel?.(n)}},s=()=>{t=!0},c=()=>{t=!1},l=()=>E.isFocused()&&(e.networkMode===`always`||Se.isOnline())&&e.canRun(),u=()=>we(e.networkMode)&&e.canRun(),d=e=>{a()||(r?.(),i.resolve(e))},f=e=>{a()||(r?.(),i.reject(e))},p=()=>new Promise(t=>{r=e=>{(a()||l())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,a()||e.onContinue?.()}),m=()=>{if(a())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(d).catch(r=>{if(a())return;let i=e.retry??(z.isServer()?0:3),o=e.retryDelay??Ce,s=typeof o==`function`?o(n,r):o,c=i===!0||typeof i==`number`&&nl()?void 0:p()).then(()=>{t?f(r):m()})})};return{promise:i,status:()=>i.status,cancel:o,continue:()=>(r?.(),i),cancelRetry:s,continueRetry:c,canStart:u,start:()=>(u()?m():p().then(m),i)}}var De=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),N(this.gcTime)&&(this.#e=O.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(z.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(O.clearTimeout(this.#e),this.#e=void 0)}},Oe=class extends De{#e;#t;#n;#r;#i;#a;#o;constructor(e){super(),this.#o=!1,this.#a=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#r=e.client,this.#n=this.#r.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=je(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#i?.promise}setOptions(e){if(this.options={...this.#a,...e},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=je(this.options);e.data!==void 0&&(this.setState(Ae(e.data,e.dataUpdatedAt)),this.#e=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#n.remove(this)}setData(e,t){let n=fe(this.state.data,e,this.options);return this.#c({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#c({type:`setState`,state:e,setStateOptions:t})}cancel(e){let t=this.#i?.promise;return this.#i?.cancel(e),t?t.then(j).catch(j):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#e}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>I(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===he||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>F(e.options.staleTime,this)===`static`):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!P(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#i?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#i?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#i&&(this.#o||this.#s()?this.#i.cancel({revert:!0}):this.#i.cancelRetry()),this.scheduleGc()),this.#n.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}#s(){return this.state.fetchStatus===`paused`&&this.state.status===`pending`}invalidate(){this.state.isInvalidated||this.#c({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#i?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#i)return this.#i.continueRetry(),this.#i.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(this.#o=!0,n.signal)})},i=()=>{let e=ge(this.options,t),n=(()=>{let e={client:this.#r,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#o=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#r,state:this.state,fetchFn:i};return r(e),e})();this.options.behavior?.onFetch(a,this),this.#t=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#c({type:`fetch`,meta:a.fetchOptions?.meta}),this.#i=Ee({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof Te&&e.revert&&this.setState({...this.#t,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#c({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#c({type:`pause`})},onContinue:()=>{this.#c({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#i.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#n.config.onSuccess?.(e,this),this.#n.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof Te){if(e.silent)return this.#i.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#c({type:`error`,error:e}),this.#n.config.onError?.(e,this),this.#n.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#c(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...ke(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...Ae(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#t=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}})(this.state),B.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#n.notify({query:this,type:`updated`,action:e})})}};function ke(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:we(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function Ae(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function je(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Me=class extends T{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=ye(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),Pe(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Fe(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Fe(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof I(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!R(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&Ie(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||I(this.options.enabled,this.#t)!==I(t.enabled,this.#t)||F(this.options.staleTime,this.#t)!==F(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||I(this.options.enabled,this.#t)!==I(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return Re(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(j)),t}#g(){this.#b();let e=F(this.options.staleTime,this.#t);if(z.isServer()||this.#r.isStale||!N(e))return;let t=P(this.#r.dataUpdatedAt,e)+1;this.#d=O.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(z.isServer()||I(this.options.enabled,this.#t)===!1||!N(this.#p)||this.#p===0)&&(this.#f=O.setInterval(()=>{(this.options.refetchIntervalInBackground||E.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d!==void 0&&(O.clearTimeout(this.#d),this.#d=void 0)}#x(){this.#f!==void 0&&(O.clearInterval(this.#f),this.#f=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&Pe(e,t),o=i&&Ie(e,n,t,r);(a||o)&&(l={...l,...ke(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(m=`success`,d=fe(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h)if(i&&d===a?.data&&t.select===this.#c)d=this.#l;else try{this.#c=t.select,d=t.select(d),d=fe(i?.data,d,t),this.#l=d,this.#s=null}catch(e){this.#s=e}this.#s&&(f=this.#s,d=this.#l,p=Date.now(),m=`error`);let g=l.fetchStatus===`fetching`,_=m===`pending`,v=m===`error`,y=_&&g,b=d!==void 0,x={status:m,fetchStatus:l.fetchStatus,isPending:_,isSuccess:m===`success`,isError:v,isInitialLoading:y,isLoading:y,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!_,isLoadingError:v&&!b,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:v&&b,isStale:Le(e,t),refetch:this.refetch,promise:this.#o,isEnabled:I(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=x.data!==void 0,r=x.status===`error`&&!t,i=e=>{r?e.reject(x.error):t&&e.resolve(x.data)},a=()=>{i(this.#o=x.promise=ye())},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||x.data!==o.value)&&a();break;case`rejected`:(!r||x.error!==o.reason)&&a();break}}return x}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!R(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){B.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function Ne(e,t){return I(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&t.retryOnMount===!1)}function Pe(e,t){return Ne(e,t)||e.state.data!==void 0&&Fe(e,t,t.refetchOnMount)}function Fe(e,t,n){if(I(t.enabled,e)!==!1&&F(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&Le(e,t)}return!1}function Ie(e,t,n,r){return(e!==t||I(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&Le(e,n)}function Le(e,t){return I(t.enabled,e)!==!1&&e.isStaleByTime(F(t.staleTime,e))}function Re(e,t){return!R(e.getCurrentResult(),t)}function ze(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{ve(e,()=>t.signal,()=>n=!0)},u=ge(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject();if(r==null&&e.pages.length)return Promise.resolve(e);let a=await u((()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})()),{maxPages:o}=t.options,s=i?me:pe;return{pages:s(e.pages,a,o),pageParams:s(e.pageParams,r,o)}};if(i&&a.length){let e=i===`backward`,t=e?Ve:Be,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:Be(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(ct.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function Be(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function Ve(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}function He(e,t){return t?Be(e,t)!=null:!1}function Ue(e,t){return!t||!e.getPreviousPageParam?!1:Ve(e,t)!=null}var We=class extends Me{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:ze()})}getOptimisticResult(e){return e.behavior=ze(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:He(t,n.data),hasPreviousPage:Ue(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}},Ge=class extends De{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||Ke(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=Ee({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}})(this.state),B.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function Ke(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var qe=class extends T{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),R(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&L(t.mutationKey)!==L(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??Ke();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){B.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},V=h(_(),1),Je=m(),Ye=V.createContext(void 0),Xe=e=>{let t=V.useContext(Ye);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},Ze=({client:e,children:t})=>(V.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,Je.jsx)(Ye.Provider,{value:e,children:t})),Qe=V.createContext(!1),$e=()=>V.useContext(Qe);Qe.Provider;function et(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var tt=V.createContext(et()),nt=()=>V.useContext(tt),rt=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?_e(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},it=e=>{V.useEffect(()=>{e.clearReset()},[e])},at=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||_e(n,[e.error,r])),ot=(e,t)=>t.state.data===void 0,st=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},ct=(e,t)=>e.isLoading&&e.isFetching&&!t,lt=(e,t)=>e?.suspense&&t.isPending,ut=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function dt(e,t,n){let r=$e(),i=nt(),a=Xe(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash);o._optimisticResults=r?`isRestoring`:`optimistic`,st(o),rt(o,i,s),it(i);let c=!a.getQueryCache().get(o.queryHash),[l]=V.useState(()=>new t(a,o)),u=l.getOptimisticResult(o),d=!r&&e.subscribed!==!1;if(V.useSyncExternalStore(V.useCallback(e=>{let t=d?l.subscribe(B.batchCalls(e)):j;return l.updateResult(),t},[l,d]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),V.useEffect(()=>{l.setOptions(o)},[o,l]),lt(o,u))throw ut(o,l,i);if(at({result:u,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw u.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,u),o.experimental_prefetchInRender&&!z.isServer()&&ct(u,r)&&(c?ut(o,l,i):s?.promise)?.catch(j).finally(()=>{l.updateResult()}),o.notifyOnChangeProps?u:l.trackResult(u)}function ft(e,t){return dt(e,Me,t)}function pt(e,t){return dt({...e,enabled:!0,suspense:!0,throwOnError:ot,placeholderData:void 0},Me,t)}function mt(e,t){let n=Xe(t),[r]=V.useState(()=>new qe(n,e));V.useEffect(()=>{r.setOptions(e)},[r,e]);let i=V.useSyncExternalStore(V.useCallback(e=>r.subscribe(B.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=V.useCallback((e,t)=>{r.mutate(e,t).catch(j)},[r]);if(i.error&&_e(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}function ht(e,t){return dt(e,We,t)}var gt=ee();function _t(e,t){return e===t}function vt(e,t,n=_t){let r=(0,V.useCallback)(t=>{if(!e)return()=>{};let{unsubscribe:n}=e.subscribe(t);return n},[e]),i=(0,V.useCallback)(()=>e?.get(),[e]);return(0,gt.useSyncExternalStoreWithSelector)(r,i,i,t,n)}var H=function(e){return e[e.None=0]=`None`,e[e.Mutable=1]=`Mutable`,e[e.Watching=2]=`Watching`,e[e.RecursedCheck=4]=`RecursedCheck`,e[e.Recursed=8]=`Recursed`,e[e.Dirty=16]=`Dirty`,e[e.Pending=32]=`Pending`,e}({});function yt({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&(H.RecursedCheck|H.Recursed|H.Dirty|H.Pending)?a&(H.RecursedCheck|H.Recursed)?a&H.RecursedCheck?!(a&(H.Dirty|H.Pending))&&c(e,i)?(i.flags=a|(H.Recursed|H.Pending),a&=H.Mutable):a=H.None:i.flags=a&~H.Recursed|H.Pending:a=H.None:i.flags=a|H.Pending,a&H.Watching&&t(i),a&H.Mutable){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(!0)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&H.Dirty)a=!0;else if((c&(H.Mutable|H.Dirty))===(H.Mutable|H.Dirty)){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&(H.Mutable|H.Pending))===(H.Mutable|H.Pending)){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=~H.Pending;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(!0)}function s(e){do{let n=e.sub,r=n.flags;(r&(H.Pending|H.Dirty))===H.Pending&&(n.flags=r|H.Dirty,(r&(H.Watching|H.RecursedCheck))===H.Watching&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function bt(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var xt=[],U=0,{link:St,unlink:Ct,propagate:wt,checkDirty:Tt,shallowPropagate:Et}=yt({update(e){return e._update()},notify(e){xt[Dt++]=e,e.flags&=~H.Watching},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=H.Mutable|H.Dirty,K(e))}}),W=0,Dt=0,G,Ot=0;function K(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Ct(n,e)}function kt(){if(!(Ot>0)){for(;W{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=G,o=t?.compare??Object.is;if(n)G=i,++U,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=H.Mutable|H.RecursedCheck);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{G=a,n&&(i.flags&=~H.RecursedCheck),K(i)}}};return n?(i.flags=H.Mutable|H.Dirty,i.get=function(){let e=i.flags;if(e&H.Dirty||e&H.Pending&&Tt(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Et(e)}}else e&H.Pending&&(i.flags=e&~H.Pending);return G!==void 0&&St(i,G,U),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(wt(e),Et(e),kt())}},i}function jt(e){let t=()=>{let t=G;G=n,++U,n.depsTail=void 0,n.flags=H.Watching|H.RecursedCheck;try{return e()}finally{G=t,n.flags&=~H.RecursedCheck,K(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:H.Watching|H.RecursedCheck,notify(){let e=this.flags;e&H.Dirty||e&H.Pending&&Tt(this.deps,this)?t():this.flags=H.Watching},stop(){this.flags=H.None,this.depsTail=void 0,K(this)}};return t(),n}var Mt=class{constructor(e){this.atom=At(e)}setState(e){this.atom.set(e)}get state(){return this.atom.get()}get(){return this.state}subscribe(e){return this.atom.subscribe(bt(e))}},q=`access_token`,Nt=`auth_user`,Pt=`sidebar_state`,Ft=3600*24*7,It=/\{[^{}]+\}/g,Lt=()=>typeof process==`object`&&Number.parseInt(process?.versions?.node?.substring(0,2))>=18&&process.versions.undici;function Rt(){return Math.random().toString(36).slice(2,11)}function zt(e){let{baseUrl:t=``,Request:n=globalThis.Request,fetch:r=globalThis.fetch,querySerializer:i,bodySerializer:a,pathSerializer:o,headers:s,requestInitExt:c=void 0,...l}={...e};c=Lt()?c:void 0,t=qt(t);let u=[];async function d(e,d){let{baseUrl:f,fetch:p=r,Request:m=n,headers:h,params:g={},parseAs:_=`json`,querySerializer:v,bodySerializer:y=a??Wt,pathSerializer:b,body:x,middleware:ee=[],...S}=d||{},te=t;f&&(te=qt(f)??t);let C=typeof i==`function`?i:Ht(i);v&&(C=typeof v==`function`?v:Ht({...typeof i==`object`?i:{},...v}));let w=b||o||Ut,T=x===void 0?void 0:y(x,Kt(s,h,g.header)),E=Kt(T===void 0||T instanceof FormData?{}:{"Content-Type":`application/json`},s,h,g.header),D=[...u,...ee],O={redirect:`follow`,...l,...S,body:T,headers:E},k,A,j=new m(Gt(e,{baseUrl:te,params:g,querySerializer:C,pathSerializer:w}),O),M;for(let e in S)e in j||(j[e]=S[e]);if(D.length){k=Rt(),A=Object.freeze({baseUrl:te,fetch:p,parseAs:_,querySerializer:C,bodySerializer:y,pathSerializer:w});for(let t of D)if(t&&typeof t==`object`&&typeof t.onRequest==`function`){let n=await t.onRequest({request:j,schemaPath:e,params:g,options:A,id:k});if(n)if(n instanceof m)j=n;else if(n instanceof Response){M=n;break}else throw Error(`onRequest: must return new Request() or Response() when modifying the request`)}}if(!M){try{M=await p(j,c)}catch(t){let n=t;if(D.length)for(let t=D.length-1;t>=0;t--){let r=D[t];if(r&&typeof r==`object`&&typeof r.onError==`function`){let t=await r.onError({request:j,error:n,schemaPath:e,params:g,options:A,id:k});if(t){if(t instanceof Response){n=void 0,M=t;break}if(t instanceof Error){n=t;continue}throw Error(`onError: must return new Response() or instance of Error`)}}}if(n)throw n}if(D.length)for(let t=D.length-1;t>=0;t--){let n=D[t];if(n&&typeof n==`object`&&typeof n.onResponse==`function`){let t=await n.onResponse({request:j,response:M,schemaPath:e,params:g,options:A,id:k});if(t){if(!(t instanceof Response))throw Error(`onResponse: must return new Response() when modifying the response`);M=t}}}}let N=M.headers.get(`Content-Length`);if(M.status===204||j.method===`HEAD`||N===`0`&&!M.headers.get(`Transfer-Encoding`)?.includes(`chunked`))return M.ok?{data:void 0,response:M}:{error:void 0,response:M};if(M.ok)return{data:await(async()=>{if(_===`stream`)return M.body;if(_===`json`&&!N){let e=await M.text();return e?JSON.parse(e):void 0}return await M[_]()})(),response:M};let P=await M.text();try{P=JSON.parse(P)}catch{}return{error:P,response:M}}return{request(e,t,n){return d(t,{...n,method:e.toUpperCase()})},GET(e,t){return d(e,{...t,method:`GET`})},PUT(e,t){return d(e,{...t,method:`PUT`})},POST(e,t){return d(e,{...t,method:`POST`})},DELETE(e,t){return d(e,{...t,method:`DELETE`})},OPTIONS(e,t){return d(e,{...t,method:`OPTIONS`})},HEAD(e,t){return d(e,{...t,method:`HEAD`})},PATCH(e,t){return d(e,{...t,method:`PATCH`})},TRACE(e,t){return d(e,{...t,method:`TRACE`})},use(...e){for(let t of e)if(t){if(typeof t!=`object`||!(`onRequest`in t||`onResponse`in t||`onError`in t))throw Error("Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`");u.push(t)}},eject(...e){for(let t of e){let e=u.indexOf(t);e!==-1&&u.splice(e,1)}}}}function J(e,t,n){if(t==null)return``;if(typeof t==`object`)throw Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${e}=${n?.allowReserved===!0?t:encodeURIComponent(t)}`}function Bt(e,t,n){if(!t||typeof t!=`object`)return``;let r=[],i={simple:`,`,label:`.`,matrix:`;`}[n.style]||`&`;if(n.style!==`deepObject`&&n.explode===!1){for(let e in t)r.push(e,n.allowReserved===!0?t[e]:encodeURIComponent(t[e]));let i=r.join(`,`);switch(n.style){case`form`:return`${e}=${i}`;case`label`:return`.${i}`;case`matrix`:return`;${e}=${i}`;default:return i}}for(let i in t){let a=n.style===`deepObject`?`${e}[${i}]`:i;r.push(J(a,t[i],n))}let a=r.join(i);return n.style===`label`||n.style===`matrix`?`${i}${a}`:a}function Vt(e,t,n){if(!Array.isArray(t))return``;if(n.explode===!1){let r={form:`,`,spaceDelimited:`%20`,pipeDelimited:`|`}[n.style]||`,`,i=(n.allowReserved===!0?t:t.map(e=>encodeURIComponent(e))).join(r);switch(n.style){case`simple`:return i;case`label`:return`.${i}`;case`matrix`:return`;${e}=${i}`;default:return`${e}=${i}`}}let r={simple:`,`,label:`.`,matrix:`;`}[n.style]||`&`,i=[];for(let r of t)n.style===`simple`||n.style===`label`?i.push(n.allowReserved===!0?r:encodeURIComponent(r)):i.push(J(e,r,n));return n.style===`label`||n.style===`matrix`?`${r}${i.join(r)}`:i.join(r)}function Ht(e){return function(t){let n=[];if(t&&typeof t==`object`)for(let r in t){let i=t[r];if(i!=null){if(Array.isArray(i)){if(i.length===0)continue;n.push(Vt(r,i,{style:`form`,explode:!0,...e?.array,allowReserved:e?.allowReserved||!1}));continue}if(typeof i==`object`){n.push(Bt(r,i,{style:`deepObject`,explode:!0,...e?.object,allowReserved:e?.allowReserved||!1}));continue}n.push(J(r,i,e))}}return n.join(`&`)}}function Ut(e,t){let n=e;for(let r of e.match(It)??[]){let e=r.substring(1,r.length-1),i=!1,a=`simple`;if(e.endsWith(`*`)&&(i=!0,e=e.substring(0,e.length-1)),e.startsWith(`.`)?(a=`label`,e=e.substring(1)):e.startsWith(`;`)&&(a=`matrix`,e=e.substring(1)),!t||t[e]===void 0||t[e]===null)continue;let o=t[e];if(Array.isArray(o)){n=n.replace(r,Vt(e,o,{style:a,explode:i}));continue}if(typeof o==`object`){n=n.replace(r,Bt(e,o,{style:a,explode:i}));continue}if(a===`matrix`){n=n.replace(r,`;${J(e,o)}`);continue}n=n.replace(r,a===`label`?`.${encodeURIComponent(o)}`:encodeURIComponent(o))}return n}function Wt(e,t){return e instanceof FormData?e:t&&(t.get instanceof Function?t.get(`Content-Type`)??t.get(`content-type`):t[`Content-Type`]??t[`content-type`])===`application/x-www-form-urlencoded`?new URLSearchParams(e).toString():JSON.stringify(e)}function Gt(e,t){let n=`${t.baseUrl}${e}`;t.params?.path&&(n=t.pathSerializer(n,t.params.path));let r=t.querySerializer(t.params.query??{});return r.startsWith(`?`)&&(r=r.substring(1)),r&&(n+=`?${r}`),n}function Kt(...e){let t=new Headers;for(let n of e){if(!n||typeof n!=`object`)continue;let e=n instanceof Headers?n.entries():Object.entries(n);for(let[n,r]of e)if(r===null)t.delete(n);else if(Array.isArray(r))for(let e of r)t.append(n,e);else r!==void 0&&t.set(n,r)}return t}function qt(e){return e.endsWith(`/`)?e.substring(0,e.length-1):e}function Jt(e){let t=async({queryKey:[t,n,r],signal:i})=>{let a=e[t.toUpperCase()],{data:o,error:s,response:c}=await a(n,{signal:i,...r});if(s)throw s;return c.status===204||c.headers.get(`Content-Length`)===`0`?o??null:o},n=(e,n,...[r,i])=>({queryKey:r===void 0?[e,n]:[e,n,r],queryFn:t,...i});return{queryOptions:n,useQuery:(e,t,...[r,i,a])=>ft(n(e,t,r,i),a),useSuspenseQuery:(e,t,...[r,i,a])=>pt(n(e,t,r,i),a),useInfiniteQuery:(t,r,i,a,o)=>{let{pageParamName:s=`cursor`,...c}=a,{queryKey:l}=n(t,r,i);return ht({queryKey:l,queryFn:async({queryKey:[t,n,r],pageParam:i=0,signal:a})=>{let o=e[t.toUpperCase()],{data:c,error:l}=await o(n,{...r,signal:a,params:{...r?.params||{},query:{...r?.params?.query,[s]:i}}});if(l)throw l;return c},...c},o)},useMutation:(t,n,r,i)=>mt({mutationKey:[t,n],mutationFn:async r=>{let i=e[t.toUpperCase()],{data:a,error:o}=await i(n,r);if(o)throw o;return a},...r},i)}}var Yt={0:g,400:e,500:l,10001:f,10002:i,10003:n,10004:r,10005:o,10006:y,10007:t,10008:a,10009:b,10010:c,10011:x,10012:v,10013:s,10014:u,10015:d,10016:p};function Y(e){return Yt[e]?.()??Yt[0]()}var Xt={onRequest({request:e}){let t=C(q);if(t)try{let n=JSON.parse(t);n&&e.headers.set(`Authorization`,`Bearer ${n}`)}catch{}return e},async onResponse({response:e}){if(e.status===401){sn();let t=encodeURIComponent(window.location.pathname+window.location.search);return window.location.replace(`/sign-in?redirect=${t}`),e}if(e.status===400)try{let t=await e.clone().json(),n=t.status_code&&Y(t.status_code)||t.message||Y(0);w.error(n)}catch{w.error(Y(0))}return e.status>=500&&w.error(Y(500)),e}},X=zt({baseUrl:`http://64.31.22.157:8000`});X.use(Xt);var Zt=Jt(X);function Qt(e,t){try{return JSON.parse(e)}catch{return t}}function $t(){if(typeof window>`u`)return null;try{return window.localStorage}catch{return null}}function en(e){return $t()?.getItem(e)??void 0}function tn(e,t){$t()?.setItem(e,t)}function nn(e){$t()?.removeItem(e)}var Z={getToken:()=>Qt(C(`access_token`)||``,``),getUser:()=>Qt(en(`auth_user`)||``,null),setToken:e=>e?te(q,JSON.stringify(e)):S(q),setUser:e=>e?tn(Nt,JSON.stringify(e)):nn(Nt),clear:()=>{S(q),nn(Nt)}},rn=Z.getToken(),Q=new Mt({accessToken:rn,user:rn?Z.getUser():null}),$=null;function an(e){Z.setUser(e),Q.setState(t=>({...t,user:e}))}function on(e){let t=Q.state.accessToken;Z.setToken(e);let n=t!==e;n&&(Z.setUser(null),$=null),Q.setState(t=>({...t,accessToken:e,user:n?null:t.user})),e&&cn()}function sn(){Z.clear(),$=null,Q.setState(()=>({accessToken:``,user:null}))}function cn(){let{user:e,accessToken:t}=Q.state;return e?Promise.resolve(e):t?$||($=X.GET(`/admin/api/v1/auth/me`).then(({data:e})=>{let t=e?.data??null;return t&&an(t),t}).catch(()=>(sn(),null)).finally(()=>{$=null}),$):Promise.resolve(null)}function ln(){return vt(Q,e=>e)}export{j as C,E as D,he as E,T as O,ne as S,F as T,B as _,Zt as a,ie as b,Ft as c,vt as d,Ze as f,Se as g,Oe as h,ln as i,Pt as l,ze as m,sn as n,X as o,Ge as p,on as r,q as s,Q as t,Mt as u,M as v,ae as w,re as x,L as y}; \ No newline at end of file diff --git a/src/www/assets/badge-BAmRBT3U.js b/src/www/assets/badge-BAmRBT3U.js new file mode 100644 index 0000000..f890263 --- /dev/null +++ b/src/www/assets/badge-BAmRBT3U.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{i as t,r as n,s as r}from"./button-DJA4fnJ8.js";var i=e(),a=n(`inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden whitespace-nowrap rounded-full border border-transparent px-2 py-0.5 font-medium text-xs transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3`,{variants:{variant:{default:`bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90`,outline:`border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,ghost:`[a&]:hover:bg-accent [a&]:hover:text-accent-foreground`,link:`text-primary underline-offset-4 [a&]:hover:underline`}},defaultVariants:{variant:`default`}});function o({className:e,variant:n=`default`,asChild:o=!1,...s}){return(0,i.jsx)(o?r:`span`,{className:t(a({variant:n}),e),"data-slot":`badge`,"data-variant":n,...s})}export{o as t}; \ No newline at end of file diff --git a/src/www/assets/button-DJA4fnJ8.js b/src/www/assets/button-DJA4fnJ8.js new file mode 100644 index 0000000..e97387d --- /dev/null +++ b/src/www/assets/button-DJA4fnJ8.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";var r=t(n(),1);function i(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function a(...e){return t=>{let n=!1,r=e.map(e=>{let r=i(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t{let{children:i,...a}=e,o=r.Children.toArray(i),c=o.find(f);if(c){let e=c.props.children,i=o.map(t=>t===c?r.Children.count(e)>1?r.Children.only(null):r.isValidElement(e)?e.props.children:null:t);return(0,s.jsx)(t,{...a,ref:n,children:r.isValidElement(e)?r.cloneElement(e,void 0,i):null})}return(0,s.jsx)(t,{...a,ref:n,children:i})});return n.displayName=`${e}.Slot`,n}var l=c(`Slot`);function u(e){let t=r.forwardRef((e,t)=>{let{children:n,...i}=e;if(r.isValidElement(n)){let e=m(n),o=p(i,n.props);return n.type!==r.Fragment&&(o.ref=t?a(t,e):e),r.cloneElement(n,o)}return r.Children.count(n)>1?r.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ee=Symbol(`radix.slottable`);function d(e){let t=({children:e})=>(0,s.jsx)(s.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=ee,t}function f(e){return r.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===ee}function p(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function m(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function h(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),v=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),y=`-`,b=[],x=`arbitrary..`,S=e=>{let t=re(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return ne(e);let n=e.split(y);return C(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?te(i,t):t:i||b}return n[e]||b}}},C=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=C(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(y):e.slice(t).join(y),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?x+r:void 0})(),re=e=>{let{theme:t,classGroups:n}=e;return w(n,t)},w=(e,t)=>{let n=v();for(let r in e){let i=e[r];T(i,n,r,t)}return n},T=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){D(e,t,n);return}if(typeof e==`function`){O(e,t,n,r);return}k(e,t,n,r)},D=(e,t,n)=>{let r=e===``?t:A(t,e);r.classGroupId=n},O=(e,t,n,r)=>{if(ie(e)){T(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(_(n,e))},k=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(y),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,j=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},M=`!`,N=`:`,ae=[],P=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),F=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return P(t,l,c,u)};if(t){let e=t+N,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):P(ae,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},I=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},L=e=>({cache:j(e.cacheSize),parseClassName:F(e),sortModifiers:I(e),...S(e)}),oe=/\s+/,R=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(oe),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:ee,baseClassName:d,maybePostfixModifierPosition:f}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let p=!!f,m=r(p?d.substring(0,f):d);if(!m){if(!p){c=t+(c.length>0?` `+c:c);continue}if(m=r(d),!m){c=t+(c.length>0?` `+c:c);continue}p=!1}let h=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),g=ee?h+M:h,te=g+m;if(o.indexOf(te)>-1)continue;o.push(te);let _=i(m,p);for(let e=0;e<_.length;++e){let t=_[e];o.push(g+t)}c=t+(c.length>0?` `+c:c)}return c},se=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=L(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=R(e,n);return i(e,a),a};return a=o,(...e)=>a(se(...e))},V=[],H=e=>{let t=t=>t[e]||V;return t.isThemeGetter=!0,t},U=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ce=/^\((?:(\w[\w-]*):)?(.+)\)$/i,le=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,ue=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,de=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,fe=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,pe=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,me=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,W=e=>le.test(e),G=e=>!!e&&!Number.isNaN(Number(e)),K=e=>!!e&&Number.isInteger(Number(e)),he=e=>e.endsWith(`%`)&&G(e.slice(0,-1)),q=e=>ue.test(e),ge=()=>!0,_e=e=>de.test(e)&&!fe.test(e),ve=()=>!1,ye=e=>pe.test(e),be=e=>me.test(e),xe=e=>!J(e)&&!X(e),Se=e=>Q(e,Le,ve),J=e=>U.test(e),Y=e=>Q(e,Re,_e),Ce=e=>Q(e,ze,G),we=e=>Q(e,Ve,ge),Te=e=>Q(e,Be,ve),Ee=e=>Q(e,Fe,ve),De=e=>Q(e,Ie,be),Oe=e=>Q(e,He,ye),X=e=>ce.test(e),Z=e=>$(e,Re),ke=e=>$(e,Be),Ae=e=>$(e,Fe),je=e=>$(e,Le),Me=e=>$(e,Ie),Ne=e=>$(e,He,!0),Pe=e=>$(e,Ve,!0),Q=(e,t,n)=>{let r=U.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},$=(e,t,n=!1)=>{let r=ce.exec(e);return r?r[1]?t(r[1]):n:!1},Fe=e=>e===`position`||e===`percentage`,Ie=e=>e===`image`||e===`url`,Le=e=>e===`length`||e===`size`||e===`bg-size`,Re=e=>e===`length`,ze=e=>e===`number`,Be=e=>e===`family-name`,Ve=e=>e===`number`||e===`weight`,He=e=>e===`shadow`,Ue=B(()=>{let e=H(`color`),t=H(`font`),n=H(`text`),r=H(`font-weight`),i=H(`tracking`),a=H(`leading`),o=H(`breakpoint`),s=H(`container`),c=H(`spacing`),l=H(`radius`),u=H(`shadow`),ee=H(`inset-shadow`),d=H(`text-shadow`),f=H(`drop-shadow`),p=H(`blur`),m=H(`perspective`),h=H(`aspect`),g=H(`ease`),te=H(`animate`),_=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],v=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],y=()=>[...v(),X,J],b=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],x=()=>[`auto`,`contain`,`none`],S=()=>[X,J,c],C=()=>[W,`full`,`auto`,...S()],ne=()=>[K,`none`,`subgrid`,X,J],re=()=>[`auto`,{span:[`full`,K,X,J]},K,X,J],w=()=>[K,`auto`,X,J],T=()=>[`auto`,`min`,`max`,`fr`,X,J],E=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],D=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],O=()=>[`auto`,...S()],k=()=>[W,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...S()],A=()=>[W,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...S()],ie=()=>[W,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...S()],j=()=>[e,X,J],M=()=>[...v(),Ae,Ee,{position:[X,J]}],N=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ae=()=>[`auto`,`cover`,`contain`,je,Se,{size:[X,J]}],P=()=>[he,Z,Y],F=()=>[``,`none`,`full`,l,X,J],I=()=>[``,G,Z,Y],L=()=>[`solid`,`dashed`,`dotted`,`double`],oe=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],R=()=>[G,he,Ae,Ee],se=()=>[``,`none`,p,X,J],z=()=>[`none`,G,X,J],B=()=>[`none`,G,X,J],V=()=>[G,X,J],U=()=>[W,`full`,...S()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[q],breakpoint:[q],color:[ge],container:[q],"drop-shadow":[q],ease:[`in`,`out`,`in-out`],font:[xe],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[q],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[q],shadow:[q],spacing:[`px`,G],text:[q],"text-shadow":[q],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,W,J,X,h]}],container:[`container`],columns:[{columns:[G,J,X,s]}],"break-after":[{"break-after":_()}],"break-before":[{"break-before":_()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:y()}],overflow:[{overflow:b()}],"overflow-x":[{"overflow-x":b()}],"overflow-y":[{"overflow-y":b()}],overscroll:[{overscroll:x()}],"overscroll-x":[{"overscroll-x":x()}],"overscroll-y":[{"overscroll-y":x()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{"inset-s":C(),start:C()}],end:[{"inset-e":C(),end:C()}],"inset-bs":[{"inset-bs":C()}],"inset-be":[{"inset-be":C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[K,`auto`,X,J]}],basis:[{basis:[W,`full`,`auto`,s,...S()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[G,W,`auto`,`initial`,`none`,J]}],grow:[{grow:[``,G,X,J]}],shrink:[{shrink:[``,G,X,J]}],order:[{order:[K,`first`,`last`,`none`,X,J]}],"grid-cols":[{"grid-cols":ne()}],"col-start-end":[{col:re()}],"col-start":[{"col-start":w()}],"col-end":[{"col-end":w()}],"grid-rows":[{"grid-rows":ne()}],"row-start-end":[{row:re()}],"row-start":[{"row-start":w()}],"row-end":[{"row-end":w()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":T()}],"auto-rows":[{"auto-rows":T()}],gap:[{gap:S()}],"gap-x":[{"gap-x":S()}],"gap-y":[{"gap-y":S()}],"justify-content":[{justify:[...E(),`normal`]}],"justify-items":[{"justify-items":[...D(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...D()]}],"align-content":[{content:[`normal`,...E()]}],"align-items":[{items:[...D(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...D(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":E()}],"place-items":[{"place-items":[...D(),`baseline`]}],"place-self":[{"place-self":[`auto`,...D()]}],p:[{p:S()}],px:[{px:S()}],py:[{py:S()}],ps:[{ps:S()}],pe:[{pe:S()}],pbs:[{pbs:S()}],pbe:[{pbe:S()}],pt:[{pt:S()}],pr:[{pr:S()}],pb:[{pb:S()}],pl:[{pl:S()}],m:[{m:O()}],mx:[{mx:O()}],my:[{my:O()}],ms:[{ms:O()}],me:[{me:O()}],mbs:[{mbs:O()}],mbe:[{mbe:O()}],mt:[{mt:O()}],mr:[{mr:O()}],mb:[{mb:O()}],ml:[{ml:O()}],"space-x":[{"space-x":S()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":S()}],"space-y-reverse":[`space-y-reverse`],size:[{size:k()}],"inline-size":[{inline:[`auto`,...A()]}],"min-inline-size":[{"min-inline":[`auto`,...A()]}],"max-inline-size":[{"max-inline":[`none`,...A()]}],"block-size":[{block:[`auto`,...ie()]}],"min-block-size":[{"min-block":[`auto`,...ie()]}],"max-block-size":[{"max-block":[`none`,...ie()]}],w:[{w:[s,`screen`,...k()]}],"min-w":[{"min-w":[s,`screen`,`none`,...k()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...k()]}],h:[{h:[`screen`,`lh`,...k()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...k()]}],"max-h":[{"max-h":[`screen`,`lh`,...k()]}],"font-size":[{text:[`base`,n,Z,Y]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Pe,we]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,he,J]}],"font-family":[{font:[ke,Te,t]}],"font-features":[{"font-features":[J]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,X,J]}],"line-clamp":[{"line-clamp":[G,`none`,X,Ce]}],leading:[{leading:[a,...S()]}],"list-image":[{"list-image":[`none`,X,J]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,X,J]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:j()}],"text-color":[{text:j()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...L(),`wavy`]}],"text-decoration-thickness":[{decoration:[G,`from-font`,`auto`,X,Y]}],"text-decoration-color":[{decoration:j()}],"underline-offset":[{"underline-offset":[G,`auto`,X,J]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:S()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,X,J]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,X,J]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:M()}],"bg-repeat":[{bg:N()}],"bg-size":[{bg:ae()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},K,X,J],radial:[``,X,J],conic:[K,X,J]},Me,De]}],"bg-color":[{bg:j()}],"gradient-from-pos":[{from:P()}],"gradient-via-pos":[{via:P()}],"gradient-to-pos":[{to:P()}],"gradient-from":[{from:j()}],"gradient-via":[{via:j()}],"gradient-to":[{to:j()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-bs":[{"border-bs":I()}],"border-w-be":[{"border-be":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":I()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...L(),`hidden`,`none`]}],"divide-style":[{divide:[...L(),`hidden`,`none`]}],"border-color":[{border:j()}],"border-color-x":[{"border-x":j()}],"border-color-y":[{"border-y":j()}],"border-color-s":[{"border-s":j()}],"border-color-e":[{"border-e":j()}],"border-color-bs":[{"border-bs":j()}],"border-color-be":[{"border-be":j()}],"border-color-t":[{"border-t":j()}],"border-color-r":[{"border-r":j()}],"border-color-b":[{"border-b":j()}],"border-color-l":[{"border-l":j()}],"divide-color":[{divide:j()}],"outline-style":[{outline:[...L(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[G,X,J]}],"outline-w":[{outline:[``,G,Z,Y]}],"outline-color":[{outline:j()}],shadow:[{shadow:[``,`none`,u,Ne,Oe]}],"shadow-color":[{shadow:j()}],"inset-shadow":[{"inset-shadow":[`none`,ee,Ne,Oe]}],"inset-shadow-color":[{"inset-shadow":j()}],"ring-w":[{ring:I()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:j()}],"ring-offset-w":[{"ring-offset":[G,Y]}],"ring-offset-color":[{"ring-offset":j()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":j()}],"text-shadow":[{"text-shadow":[`none`,d,Ne,Oe]}],"text-shadow-color":[{"text-shadow":j()}],opacity:[{opacity:[G,X,J]}],"mix-blend":[{"mix-blend":[...oe(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":oe()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[G]}],"mask-image-linear-from-pos":[{"mask-linear-from":R()}],"mask-image-linear-to-pos":[{"mask-linear-to":R()}],"mask-image-linear-from-color":[{"mask-linear-from":j()}],"mask-image-linear-to-color":[{"mask-linear-to":j()}],"mask-image-t-from-pos":[{"mask-t-from":R()}],"mask-image-t-to-pos":[{"mask-t-to":R()}],"mask-image-t-from-color":[{"mask-t-from":j()}],"mask-image-t-to-color":[{"mask-t-to":j()}],"mask-image-r-from-pos":[{"mask-r-from":R()}],"mask-image-r-to-pos":[{"mask-r-to":R()}],"mask-image-r-from-color":[{"mask-r-from":j()}],"mask-image-r-to-color":[{"mask-r-to":j()}],"mask-image-b-from-pos":[{"mask-b-from":R()}],"mask-image-b-to-pos":[{"mask-b-to":R()}],"mask-image-b-from-color":[{"mask-b-from":j()}],"mask-image-b-to-color":[{"mask-b-to":j()}],"mask-image-l-from-pos":[{"mask-l-from":R()}],"mask-image-l-to-pos":[{"mask-l-to":R()}],"mask-image-l-from-color":[{"mask-l-from":j()}],"mask-image-l-to-color":[{"mask-l-to":j()}],"mask-image-x-from-pos":[{"mask-x-from":R()}],"mask-image-x-to-pos":[{"mask-x-to":R()}],"mask-image-x-from-color":[{"mask-x-from":j()}],"mask-image-x-to-color":[{"mask-x-to":j()}],"mask-image-y-from-pos":[{"mask-y-from":R()}],"mask-image-y-to-pos":[{"mask-y-to":R()}],"mask-image-y-from-color":[{"mask-y-from":j()}],"mask-image-y-to-color":[{"mask-y-to":j()}],"mask-image-radial":[{"mask-radial":[X,J]}],"mask-image-radial-from-pos":[{"mask-radial-from":R()}],"mask-image-radial-to-pos":[{"mask-radial-to":R()}],"mask-image-radial-from-color":[{"mask-radial-from":j()}],"mask-image-radial-to-color":[{"mask-radial-to":j()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[G]}],"mask-image-conic-from-pos":[{"mask-conic-from":R()}],"mask-image-conic-to-pos":[{"mask-conic-to":R()}],"mask-image-conic-from-color":[{"mask-conic-from":j()}],"mask-image-conic-to-color":[{"mask-conic-to":j()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:M()}],"mask-repeat":[{mask:N()}],"mask-size":[{mask:ae()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,X,J]}],filter:[{filter:[``,`none`,X,J]}],blur:[{blur:se()}],brightness:[{brightness:[G,X,J]}],contrast:[{contrast:[G,X,J]}],"drop-shadow":[{"drop-shadow":[``,`none`,f,Ne,Oe]}],"drop-shadow-color":[{"drop-shadow":j()}],grayscale:[{grayscale:[``,G,X,J]}],"hue-rotate":[{"hue-rotate":[G,X,J]}],invert:[{invert:[``,G,X,J]}],saturate:[{saturate:[G,X,J]}],sepia:[{sepia:[``,G,X,J]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,X,J]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[G,X,J]}],"backdrop-contrast":[{"backdrop-contrast":[G,X,J]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,G,X,J]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[G,X,J]}],"backdrop-invert":[{"backdrop-invert":[``,G,X,J]}],"backdrop-opacity":[{"backdrop-opacity":[G,X,J]}],"backdrop-saturate":[{"backdrop-saturate":[G,X,J]}],"backdrop-sepia":[{"backdrop-sepia":[``,G,X,J]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":S()}],"border-spacing-x":[{"border-spacing-x":S()}],"border-spacing-y":[{"border-spacing-y":S()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,X,J]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[G,`initial`,X,J]}],ease:[{ease:[`linear`,`initial`,g,X,J]}],delay:[{delay:[G,X,J]}],animate:[{animate:[`none`,te,X,J]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[m,X,J]}],"perspective-origin":[{"perspective-origin":y()}],rotate:[{rotate:z()}],"rotate-x":[{"rotate-x":z()}],"rotate-y":[{"rotate-y":z()}],"rotate-z":[{"rotate-z":z()}],scale:[{scale:B()}],"scale-x":[{"scale-x":B()}],"scale-y":[{"scale-y":B()}],"scale-z":[{"scale-z":B()}],"scale-3d":[`scale-3d`],skew:[{skew:V()}],"skew-x":[{"skew-x":V()}],"skew-y":[{"skew-y":V()}],transform:[{transform:[X,J,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:y()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:U()}],"translate-x":[{"translate-x":U()}],"translate-y":[{"translate-y":U()}],"translate-z":[{"translate-z":U()}],"translate-none":[`translate-none`],accent:[{accent:j()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:j()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,X,J]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":S()}],"scroll-mx":[{"scroll-mx":S()}],"scroll-my":[{"scroll-my":S()}],"scroll-ms":[{"scroll-ms":S()}],"scroll-me":[{"scroll-me":S()}],"scroll-mbs":[{"scroll-mbs":S()}],"scroll-mbe":[{"scroll-mbe":S()}],"scroll-mt":[{"scroll-mt":S()}],"scroll-mr":[{"scroll-mr":S()}],"scroll-mb":[{"scroll-mb":S()}],"scroll-ml":[{"scroll-ml":S()}],"scroll-p":[{"scroll-p":S()}],"scroll-px":[{"scroll-px":S()}],"scroll-py":[{"scroll-py":S()}],"scroll-ps":[{"scroll-ps":S()}],"scroll-pe":[{"scroll-pe":S()}],"scroll-pbs":[{"scroll-pbs":S()}],"scroll-pbe":[{"scroll-pbe":S()}],"scroll-pt":[{"scroll-pt":S()}],"scroll-pr":[{"scroll-pr":S()}],"scroll-pb":[{"scroll-pb":S()}],"scroll-pl":[{"scroll-pl":S()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,X,J]}],fill:[{fill:[`none`,...j()]}],"stroke-w":[{stroke:[G,Z,Y,Ce]}],stroke:[{stroke:[`none`,...j()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function We(...e){return Ue(g(e))}function Ge(e,t){let n=[];if(t<=5)for(let e=1;e<=t;e++)n.push(e);else if(n.push(1),e<=3){for(let e=2;e<=4;e++)n.push(e);n.push(`...`,t)}else if(e>=t-2){n.push(`...`);for(let e=t-3;e<=t;e++)n.push(e)}else{n.push(`...`);for(let t=e-1;t<=e+1;t++)n.push(t);n.push(`...`,t)}return n}var Ke=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,qe=g,Je=(e,t)=>n=>{if(t?.variants==null)return qe(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Ke(t)||Ke(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return qe(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Ye=Je(`inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-none transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,xs:`h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-xs":`size-6 rounded-md [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function Xe({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,s.jsx)(r?l:`button`,{className:We(Ye({variant:t,size:n,className:e})),"data-size":n,"data-slot":`button`,"data-variant":t,...i})}export{Ge as a,c,o as d,We as i,d as l,Ye as n,g as o,Je as r,l as s,Xe as t,a as u}; \ No newline at end of file diff --git a/src/www/assets/card-DuQAN29P.js b/src/www/assets/card-DuQAN29P.js new file mode 100644 index 0000000..57ee366 --- /dev/null +++ b/src/www/assets/card-DuQAN29P.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{i as t}from"./button-DJA4fnJ8.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm`,e),"data-slot":`card`,...r})}function i({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,e),"data-slot":`card-header`,...r})}function a({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`font-semibold leading-none`,e),"data-slot":`card-title`,...r})}function o({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`text-muted-foreground text-sm`,e),"data-slot":`card-description`,...r})}function s({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`px-6`,e),"data-slot":`card-content`,...r})}export{a,i,s as n,o as r,r as t}; \ No newline at end of file diff --git a/src/www/assets/chains-QKtNypSO.js b/src/www/assets/chains-QKtNypSO.js new file mode 100644 index 0000000..cbdef67 --- /dev/null +++ b/src/www/assets/chains-QKtNypSO.js @@ -0,0 +1 @@ +import{$r as e,Ar as t,Br as n,Di as r,Ei as i,Fr as a,Gr as o,Hi as s,Hr as c,Ir as l,Jr as u,Kr as d,Lr as f,Mr as p,Ni as m,Nr as h,Oi as g,Pr as _,Qr as ee,Rr as v,Ui as y,Ur as b,Vr as x,Wr as S,Xr as C,Yr as w,Zr as te,ai as T,ci as E,ei as ne,gi as D,ii as O,jr as re,li as ie,ni as ae,nu as k,oi as A,ou as oe,qr as se,ri as ce,ru as le,si as ue,ti as de,ui as fe,zi as pe,zr as me}from"./messages-BovT1T-w.js";import{a as j,d as M,u as he}from"./auth-store-BpIS8RMn.js";import{t as N}from"./router-Dohuf5K5.js";import{P,U as ge,W as _e,o as F,r as ve}from"./search-provider-Cx1K1ilz.js";import{i as I,t as L}from"./button-DJA4fnJ8.js";import{a as R,c as z,l as ye,r as be,s as xe,t as Se}from"./dropdown-menu-CUea1X0A.js";import{d as Ce,g as we,l as Te,m as Ee,p as De,u as Oe}from"./command-BwVY_kli.js";import{t as ke}from"./checkbox-B_Isethe.js";import{a as Ae,i as je,n as Me,o as Ne,r as Pe,s as Fe,t as Ie}from"./select-DcStuzoT.js";import{t as B}from"./separator-CRLYw2cW.js";import{t as Le}from"./switch-R6BNZUH1.js";import{_ as Re,d as V,f as ze,g as Be,h as Ve,n as He,p as Ue,r as We,t as Ge,v as Ke,y as qe}from"./data-table-CmcvKcj8.js";import{t as Je}from"./arrow-left-BrKcUadm.js";import{t as Ye}from"./ellipsis-Y4gZr59G.js";import{t as Xe}from"./empty-state-Cam-sX8U.js";import{n as Ze,t as Qe}from"./chains-store-Dzu_Y00B.js";import{n as $e,t as et}from"./trash-2-Du706Ujr.js";import{n as H}from"./dist-DvAgZMq72.js";import{a as tt,c as U,n as nt,s as rt}from"./zod-Cymc5bS-.js";import{a as W,c as it,i as G,l as at,n as K,o as q,s as J,t as ot}from"./form-DdHiBYMe.js";import{t as Y}from"./input-DiRPHDd8.js";import{t as st}from"./page-header-BBJ9dE3-.js";import{t as X}from"./badge-BAmRBT3U.js";import{t as ct}from"./coming-soon-dialog-DMmjLgiX.js";var Z=oe(le(),1),Q=k(),lt=rt({network:U().min(1,h()),symbol:U().min(1,p()),contract_address:U().optional().default(``),decimals:nt().min(0,re()).default(6),min_amount:nt().min(0,t()).default(0),enabled:tt().default(!0)});function ut({open:e,onOpenChange:t,currentRow:r,onSuccess:i,defaultNetwork:o,onCreate:u,onUpdate:d,chains:p}){let h=at({resolver:it(lt),defaultValues:{network:``,symbol:``,contract_address:``,decimals:6,min_amount:0,enabled:!0}}),g;g=p?.length?p:o?[{network:o,display_name:o}]:[],(0,Z.useEffect)(()=>{e&&h.reset({network:r?.network??o??g[0]?.network??``,symbol:r?.symbol??``,contract_address:r?.contract_address??``,decimals:r?.decimals??6,min_amount:r?.min_amount??0,enabled:r?.enabled??!0})},[e,r,o,g,h]);async function ee(e){r?.id?await d(e):await u(e),t(!1),await i?.()}let C=h.formState.isSubmitting;return(0,Q.jsx)(Te,{onOpenChange:t,open:e,children:(0,Q.jsxs)(Oe,{children:[(0,Q.jsxs)(De,{children:[(0,Q.jsx)(Ee,{children:r?S():b()}),(0,Q.jsx)(Ce,{children:r?c():x()})]}),(0,Q.jsx)(ot,{...h,children:(0,Q.jsxs)(`form`,{className:`space-y-4`,onSubmit:h.handleSubmit(ee),children:[(0,Q.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,Q.jsx)(G,{control:h.control,name:`network`,render:({field:e})=>(0,Q.jsxs)(W,{children:[(0,Q.jsx)(q,{children:y()}),(0,Q.jsxs)(Ie,{disabled:!!r,onValueChange:e.onChange,value:e.value,children:[(0,Q.jsx)(K,{children:(0,Q.jsx)(je,{className:`w-full`,children:(0,Q.jsx)(Ae,{placeholder:s()})})}),(0,Q.jsx)(Me,{children:g.map(e=>(0,Q.jsx)(Pe,{value:e.network,children:e.display_name??e.network},e.network))})]}),(0,Q.jsx)(J,{})]})}),(0,Q.jsx)(G,{control:h.control,name:`symbol`,render:({field:e})=>(0,Q.jsxs)(W,{children:[(0,Q.jsx)(q,{children:n()}),(0,Q.jsx)(K,{children:(0,Q.jsx)(Y,{placeholder:`USDT`,...e,disabled:!!r})}),(0,Q.jsx)(J,{})]})})]}),(0,Q.jsx)(`div`,{className:`rounded-md border border-dashed p-3 text-muted-foreground text-sm`,children:me()}),(0,Q.jsx)(G,{control:h.control,name:`contract_address`,render:({field:e})=>(0,Q.jsxs)(W,{children:[(0,Q.jsx)(q,{children:v()}),(0,Q.jsx)(K,{children:(0,Q.jsx)(Y,{placeholder:`TR7NHqje...`,...e})}),(0,Q.jsx)(J,{})]})}),(0,Q.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,Q.jsx)(G,{control:h.control,name:`decimals`,render:({field:e})=>(0,Q.jsxs)(W,{children:[(0,Q.jsx)(q,{children:f()}),(0,Q.jsx)(K,{children:(0,Q.jsx)(Y,{name:e.name,onBlur:e.onBlur,onChange:t=>e.onChange(t.target.value),ref:e.ref,type:`number`,value:String(e.value??``)})}),(0,Q.jsx)(J,{})]})}),(0,Q.jsx)(G,{control:h.control,name:`min_amount`,render:({field:e})=>(0,Q.jsxs)(W,{children:[(0,Q.jsx)(q,{children:l()}),(0,Q.jsx)(K,{children:(0,Q.jsx)(Y,{name:e.name,onBlur:e.onBlur,onChange:t=>e.onChange(t.target.value),ref:e.ref,step:`0.000001`,type:`number`,value:String(e.value??``)})}),(0,Q.jsx)(J,{})]})})]}),(0,Q.jsx)(G,{control:h.control,name:`enabled`,render:({field:e})=>(0,Q.jsxs)(W,{className:`flex flex-row items-start space-x-3 space-y-0 rounded-md border p-4 rtl:space-x-reverse`,children:[(0,Q.jsx)(K,{children:(0,Q.jsx)(ke,{checked:e.value,onCheckedChange:t=>e.onChange(!!t)})}),(0,Q.jsx)(`div`,{className:`space-y-1 leading-none`,children:(0,Q.jsx)(q,{children:m()})})]})}),(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Q.jsx)(L,{onClick:()=>t(!1),type:`button`,variant:`outline`,children:pe()}),(0,Q.jsx)(L,{disabled:C,type:`submit`,children:C?D():r?_():a()})]})]})})]})})}function dt(e){return[{id:`switch`,header:({column:e})=>(0,Q.jsx)(V,{column:e,title:m()}),cell:({row:t})=>(0,Q.jsx)(Le,{checked:t.original.enabled===!0,onCheckedChange:()=>e(t.original.enabled?`disable`:`enable`,t.original)}),enableSorting:!1,enableHiding:!1,meta:{label:m(),skeleton:`switch`,sticky:`left`,th:{className:I(`rounded-tl-[inherit]`)}}},{accessorKey:`symbol`,header:({column:e})=>(0,Q.jsx)(V,{column:e,title:se()}),cell:({row:e})=>(0,Q.jsx)(`div`,{className:`font-medium`,children:e.original.symbol??`-`}),enableHiding:!1,meta:{label:se(),skeleton:`short`}},{accessorKey:`network`,header:({column:e})=>(0,Q.jsx)(V,{column:e,title:y()}),meta:{label:y(),skeleton:`short`}},{accessorKey:`created_at`,header:({column:e})=>(0,Q.jsx)(V,{column:e,title:g()}),cell:({row:e})=>F(e.original.created_at),meta:{label:g(),skeleton:`date`}},{accessorKey:`updated_at`,header:({column:e})=>(0,Q.jsx)(V,{column:e,title:r()}),cell:({row:e})=>F(e.original.updated_at),meta:{label:r(),skeleton:`date`}},{id:`actions`,enableHiding:!1,meta:{label:i(),skeleton:`action`,sticky:`right`},cell:({row:t})=>(0,Q.jsxs)(Se,{modal:!1,children:[(0,Q.jsx)(ye,{asChild:!0,children:(0,Q.jsxs)(L,{className:`flex h-8 w-8 p-0 data-[state=open]:bg-muted`,variant:`ghost`,children:[(0,Q.jsx)(Ye,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:`Open menu`})]})}),(0,Q.jsxs)(be,{align:`end`,className:`w-40`,children:[(0,Q.jsxs)(R,{onClick:()=>e(`edit`,t.original),children:[d(),(0,Q.jsx)(z,{children:(0,Q.jsx)(Ze,{size:16})})]}),(0,Q.jsx)(xe,{}),(0,Q.jsxs)(R,{onClick:()=>e(`delete`,t.original),variant:`destructive`,children:[o(),(0,Q.jsx)(z,{children:(0,Q.jsx)(et,{size:16})})]})]})]})}]}function ft({data:e,isLoading:t,onAction:n,onRefresh:r}){let[i,a]=(0,Z.useState)([]),[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)([]),[d,f]=(0,Z.useState)({pageIndex:0,pageSize:10}),p=ze({data:e,columns:(0,Z.useMemo)(()=>dt(n),[n]),state:{sorting:i,columnFilters:c,globalFilter:o,pagination:d},onSortingChange:a,onColumnFiltersChange:l,onGlobalFilterChange:s,onPaginationChange:f,globalFilterFn:(e,t,n)=>{let r=String(n).toLowerCase();return(e.original.symbol??``).toLowerCase().includes(r)||(e.original.contract_address??``).toLowerCase().includes(r)},getCoreRowModel:Ue(),getFilteredRowModel:Re(),getPaginationRowModel:Ke(),getSortedRowModel:qe(),getFacetedRowModel:Ve(),getFacetedUniqueValues:Be()});return(0,Z.useEffect)(()=>{let e=p.getPageCount();e>0&&d.pageIndex>e-1&&f(e=>({...e,pageIndex:0}))},[p,d.pageIndex]),(0,Q.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4`,children:[(0,Q.jsx)(Ge,{onRefresh:r,searchKey:`symbol`,searchPlaceholder:w(),table:p}),(0,Q.jsx)(We,{emptyText:u(),loading:t,table:p}),(0,Q.jsx)(He,{className:`mt-auto`,table:p})]})}var $=new he({chainTokens:[],loading:!1});function pt(e){$.setState(t=>({...t,chainTokens:e}))}function mt(e){$.setState(t=>({...t,loading:e}))}function ht(){let e=M($,e=>e.chainTokens),t=M($,e=>e.loading),n=j.useQuery(`get`,`/admin/api/v1/chain-tokens`);return(0,Z.useEffect)(()=>{mt(n.isLoading)},[n.isLoading]),(0,Z.useEffect)(()=>{n.data?.data&&pt(n.data.data)},[n.data?.data]),{chainTokens:e,loading:t,refetch:n.refetch}}var gt=[`chain-1`,`chain-2`,`chain-3`,`chain-4`,`chain-5`];function _t({active:e,children:t,onClick:n}){return(0,Q.jsx)(`button`,{className:I(`w-full cursor-pointer rounded-lg px-3 py-3 text-left transition-colors hover:bg-accent hover:text-accent-foreground`,e&&`bg-muted`),onClick:n,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())},type:`button`,children:t})}function vt({chains:e,isLoading:t,keyword:n,onKeywordChange:r,selectedPanel:i,onSelect:a,onToggle:o,totalTokens:s,hiddenOnMobile:c}){return(0,Q.jsxs)(`div`,{className:I(`flex w-full flex-col gap-2 sm:w-56 lg:w-72 2xl:w-80`,c&&`hidden sm:flex`),children:[(0,Q.jsxs)(`div`,{className:`sticky top-0 z-10 -mx-4 bg-background px-4 pb-3 shadow-md sm:static sm:z-auto sm:mx-0 sm:p-0 sm:shadow-none`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`h1`,{className:`font-bold text-2xl`,children:fe()}),(0,Q.jsx)(ge,{size:20})]}),(0,Q.jsx)(X,{variant:`secondary`,children:ie({count:String(e.length)})})]}),(0,Q.jsxs)(`div`,{className:`relative block`,children:[(0,Q.jsx)(we,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground`}),(0,Q.jsx)(Y,{className:`pl-9`,onChange:e=>r(e.target.value),placeholder:E(),value:n})]})]}),(0,Q.jsxs)(ve,{className:`-mx-3 h-full overflow-auto p-3`,children:[(0,Q.jsx)(_t,{active:i===`overview`,onClick:()=>a(`overview`),children:(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`div`,{className:`font-medium`,children:ue()}),(0,Q.jsx)(`div`,{className:`mt-1 text-muted-foreground text-xs`,children:A({chains:String(e.length),tokens:String(s)})})]}),(0,Q.jsx)(_e,{className:`mt-0.5 size-4 text-muted-foreground`})]})}),(0,Q.jsx)(B,{className:`my-1`}),t?gt.map(e=>(0,Q.jsxs)(`div`,{className:`px-3 py-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsx)(P,{className:`h-4 w-24`}),(0,Q.jsx)(P,{className:`h-5 w-9 rounded-full`})]}),(0,Q.jsxs)(`div`,{className:`mt-2 flex items-center justify-between gap-2`,children:[(0,Q.jsx)(P,{className:`h-3 w-28`}),(0,Q.jsx)(P,{className:`h-5 w-12 rounded-full`})]})]},e)):e.map((t,n)=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(_t,{active:i===t.network,onClick:()=>a(t.network??`overview`),children:(0,Q.jsx)(`div`,{className:`flex items-start gap-3`,children:(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Q.jsx)(`div`,{className:`min-w-0`,children:(0,Q.jsx)(`div`,{className:`truncate font-medium`,children:t.display_name})}),(0,Q.jsx)(Le,{checked:t.enabled===!0,onCheckedChange:e=>o(t,e),onClick:e=>e.stopPropagation()})]}),(0,Q.jsxs)(`div`,{className:`mt-1 flex items-center justify-between gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:T()}),(0,Q.jsx)(X,{className:`shrink-0 text-xs`,variant:`outline`,children:t.network})]})]})})}),n{let e=d.trim().toLowerCase();return e?t.filter(t=>[t.display_name,t.network].filter(Boolean).some(t=>String(t).toLowerCase().includes(e))):t},[t,d]),D=(0,Z.useMemo)(()=>p===`overview`?i:i.filter(e=>e.network===p),[i,p]);async function O(){await Promise.all([N.invalidateQueries({queryKey:[`get`,`/admin/api/v1/chains`]}),N.invalidateQueries({queryKey:[`get`,`/admin/api/v1/chain-tokens`]})])}function re(e,t){S(e),T(t),v(!0)}async function ie(t,n){t.network&&(await u.mutateAsync({params:{path:{network:t.network}},body:{display_name:t.display_name,enabled:n,min_confirmations:t.min_confirmations,scan_interval_sec:t.scan_interval_sec}}),H.success(de({status:n?ne():e()})),await O())}async function ae(e,t){if(e===`edit`){re(t.network??x,t);return}if(e===`enable`||e===`disable`){if(!t.id)return;await l.mutateAsync({params:{path:{id:t.id}},body:{enabled:e===`enable`}}),H.success(ee()),await O();return}if(e===`delete`){b(!0);return}}let k=h!==null,A=n||a;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Fe,{fixed:!0}),(0,Q.jsx)(Ne,{fixed:!0,children:(0,Q.jsxs)(`section`,{className:`flex h-full gap-6`,children:[(0,Q.jsx)(vt,{chains:E,hiddenOnMobile:k,isLoading:A,keyword:d,onKeywordChange:f,onSelect:e=>{m(e),g(e)},onToggle:ie,selectedPanel:p,totalTokens:i.length}),(0,Q.jsx)(`div`,{className:I(`absolute inset-0 start-full z-50 hidden w-full flex-1 flex-col border bg-background shadow-xs sm:static sm:z-auto sm:flex sm:min-w-0 sm:rounded-md sm:border-0 sm:bg-transparent sm:shadow-none`,k&&`inset-s-0 flex`),children:(0,Q.jsx)(yt,{isLoading:A,onAction:ae,onBack:()=>g(null),onCreate:()=>b(!0),onRefresh:()=>{r(),o()},tokens:D})})]})}),(0,Q.jsx)(ut,{chains:t.filter(e=>!!e.network).map(e=>({network:e.network,display_name:e.display_name})),currentRow:w,defaultNetwork:x,onCreate:async e=>{await s.mutateAsync({body:{network:e.network,symbol:e.symbol,contract_address:e.contract_address||void 0,decimals:e.decimals,min_amount:e.min_amount,enabled:e.enabled}})},onOpenChange:e=>{v(e),e||(T(null),S(``))},onSuccess:async()=>{H.success(w?te():C()),await O()},onUpdate:async e=>{w?.id&&await c.mutateAsync({params:{path:{id:w.id}},body:{contract_address:e.contract_address||void 0,decimals:e.decimals,min_amount:e.min_amount,enabled:e.enabled}})},open:_}),(0,Q.jsx)(ct,{onOpenChange:b,open:y})]})}var xt=bt;export{xt as component}; \ No newline at end of file diff --git a/src/www/assets/chains-store-Dzu_Y00B.js b/src/www/assets/chains-store-Dzu_Y00B.js new file mode 100644 index 0000000..022073e --- /dev/null +++ b/src/www/assets/chains-store-Dzu_Y00B.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{a as n,d as r,u as i}from"./auth-store-BpIS8RMn.js";import{t as a}from"./createLucideIcon-D28ivbfF.js";var o=a(`pen-line`,[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]),s=e(t(),1),c=new i({chains:[],loading:!1});function l(e){c.setState(t=>({...t,chains:e}))}function u(e){c.setState(t=>({...t,loading:e}))}function d(){let e=r(c,e=>e.chains),t=r(c,e=>e.loading),i=n.useQuery(`get`,`/admin/api/v1/chains`);return(0,s.useEffect)(()=>{u(i.isLoading)},[i.isLoading]),(0,s.useEffect)(()=>{i.data?.data&&l(i.data.data)},[i.data?.data]),{chains:e,loading:t,refetch:i.refetch}}export{o as n,d as t}; \ No newline at end of file diff --git a/src/www/assets/check-gDgbfVXu.js b/src/www/assets/check-gDgbfVXu.js new file mode 100644 index 0000000..fb5c987 --- /dev/null +++ b/src/www/assets/check-gDgbfVXu.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/checkbox-B_Isethe.js b/src/www/assets/checkbox-B_Isethe.js new file mode 100644 index 0000000..8d5b0a6 --- /dev/null +++ b/src/www/assets/checkbox-B_Isethe.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{d as i,i as a}from"./button-DJA4fnJ8.js";import{i as o,n as s,o as c,t as l}from"./dist-DG5UMlBd.js";import{t as u}from"./dist-Cp1lAGZy.js";import{t as d}from"./dist-CGm-FpWw.js";import{t as f}from"./check-gDgbfVXu.js";var p=t(n(),1),m=e(),h=`Checkbox`,[g,_]=c(h),[v,y]=g(h);function b(e){let{__scopeCheckbox:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:c,onCheckedChange:l,required:u,value:d=`on`,internal_do_not_use_render:f}=e,[g,_]=s({prop:n,defaultProp:i??!1,onChange:l,caller:h}),[y,b]=p.useState(null),[x,S]=p.useState(null),C=p.useRef(!1),w=y?!!o||!!y.closest(`form`):!0,T={checked:g,disabled:a,setChecked:_,control:y,setControl:b,name:c,form:o,value:d,hasConsumerStoppedPropagationRef:C,required:u,defaultChecked:k(i)?!1:i,isFormControl:w,bubbleInput:x,setBubbleInput:S};return(0,m.jsx)(v,{scope:t,...T,children:O(f)?f(T):r})}var x=`CheckboxTrigger`,S=p.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...a},s)=>{let{control:c,value:l,disabled:u,checked:d,required:f,setControl:h,setChecked:g,hasConsumerStoppedPropagationRef:_,isFormControl:v,bubbleInput:b}=y(x,e),S=i(s,h),C=p.useRef(d);return p.useEffect(()=>{let e=c?.form;if(e){let t=()=>g(C.current);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[c,g]),(0,m.jsx)(r.button,{type:`button`,role:`checkbox`,"aria-checked":k(d)?`mixed`:d,"aria-required":f,"data-state":A(d),"data-disabled":u?``:void 0,disabled:u,value:l,...a,ref:S,onKeyDown:o(t,e=>{e.key===`Enter`&&e.preventDefault()}),onClick:o(n,e=>{g(e=>k(e)?!0:!e),b&&v&&(_.current=e.isPropagationStopped(),_.current||e.stopPropagation())})})});S.displayName=x;var C=p.forwardRef((e,t)=>{let{__scopeCheckbox:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,m.jsx)(b,{__scopeCheckbox:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(S,{...d,ref:t,__scopeCheckbox:n}),e&&(0,m.jsx)(D,{__scopeCheckbox:n})]})})});C.displayName=h;var w=`CheckboxIndicator`,T=p.forwardRef((e,t)=>{let{__scopeCheckbox:n,forceMount:i,...a}=e,o=y(w,n);return(0,m.jsx)(u,{present:i||k(o.checked)||o.checked===!0,children:(0,m.jsx)(r.span,{"data-state":A(o.checked),"data-disabled":o.disabled?``:void 0,...a,ref:t,style:{pointerEvents:`none`,...e.style}})})});T.displayName=w;var E=`CheckboxBubbleInput`,D=p.forwardRef(({__scopeCheckbox:e,...t},n)=>{let{control:a,hasConsumerStoppedPropagationRef:o,checked:s,defaultChecked:c,required:u,disabled:f,name:h,value:g,form:_,bubbleInput:v,setBubbleInput:b}=y(E,e),x=i(n,b),S=d(s),C=l(a);p.useEffect(()=>{let e=v;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set,r=!o.current;if(S!==s&&n){let t=new Event(`click`,{bubbles:r});e.indeterminate=k(s),n.call(e,k(s)?!1:s),e.dispatchEvent(t)}},[v,S,s,o]);let w=p.useRef(k(s)?!1:s);return(0,m.jsx)(r.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:c??w.current,required:u,disabled:f,name:h,value:g,form:_,...t,tabIndex:-1,ref:x,style:{...t.style,...C,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})});D.displayName=E;function O(e){return typeof e==`function`}function k(e){return e===`indeterminate`}function A(e){return k(e)?`indeterminate`:e?`checked`:`unchecked`}function j({className:e,...t}){return(0,m.jsx)(C,{className:a(`peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs outline-none transition-shadow focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:data-[state=checked]:bg-primary dark:aria-invalid:ring-destructive/40`,e),"data-slot":`checkbox`,...t,children:(0,m.jsx)(T,{className:`grid place-content-center text-current transition-none`,"data-slot":`checkbox-indicator`,children:(0,m.jsx)(f,{className:`size-3.5`})})})}export{j as t}; \ No newline at end of file diff --git a/src/www/assets/chevron-down-CdmvZsfI.js b/src/www/assets/chevron-down-CdmvZsfI.js new file mode 100644 index 0000000..67c8f3d --- /dev/null +++ b/src/www/assets/chevron-down-CdmvZsfI.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/chevrons-up-down-iOmAu5Fh.js b/src/www/assets/chevrons-up-down-iOmAu5Fh.js new file mode 100644 index 0000000..9deefc5 --- /dev/null +++ b/src/www/assets/chevrons-up-down-iOmAu5Fh.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/circle-check-Dh8WOZF0.js b/src/www/assets/circle-check-Dh8WOZF0.js new file mode 100644 index 0000000..d74efde --- /dev/null +++ b/src/www/assets/circle-check-Dh8WOZF0.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/clock-3-BoF5rDzX.js b/src/www/assets/clock-3-BoF5rDzX.js new file mode 100644 index 0000000..e5bf738 --- /dev/null +++ b/src/www/assets/clock-3-BoF5rDzX.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/coming-soon-dialog-DMmjLgiX.js b/src/www/assets/coming-soon-dialog-DMmjLgiX.js new file mode 100644 index 0000000..4bf7c7b --- /dev/null +++ b/src/www/assets/coming-soon-dialog-DMmjLgiX.js @@ -0,0 +1 @@ +import{Ll as e,Rl as t,nu as n,zl as r}from"./messages-BovT1T-w.js";import{d as i,l as a,m as o,p as s,u as c}from"./command-BwVY_kli.js";import{t as l}from"./telescope-67IWjQye.js";var u=n();function d({open:n,onOpenChange:d}){return(0,u.jsx)(a,{onOpenChange:d,open:n,children:(0,u.jsx)(c,{className:`sm:max-w-sm`,children:(0,u.jsxs)(s,{className:`items-center text-center`,children:[(0,u.jsx)(l,{className:`mb-2 size-12 text-muted-foreground`}),(0,u.jsx)(o,{children:r()}),(0,u.jsxs)(i,{children:[t(),(0,u.jsx)(`br`,{}),(0,u.jsx)(`p`,{className:`mt-2 text-center`,children:e()})]})]})})})}export{d as t}; \ No newline at end of file diff --git a/src/www/assets/command-BwVY_kli.js b/src/www/assets/command-BwVY_kli.js new file mode 100644 index 0000000..7752586 --- /dev/null +++ b/src/www/assets/command-BwVY_kli.js @@ -0,0 +1,5 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{c as i,d as a,i as o,t as s,u as c}from"./button-DJA4fnJ8.js";import{a as l,i as u,n as d,o as f}from"./dist-DG5UMlBd.js";import{t as p}from"./dist-Cp1lAGZy.js";import{i as m}from"./dist-BEDXr2LC.js";import{o as h,s as g}from"./dist-BKfJQFVD.js";import{_,g as v,h as y,m as ee}from"./dropdown-menu-CUea1X0A.js";import{t as te}from"./createLucideIcon-D28ivbfF.js";var b=t(n(),1),x=e(),S=`Dialog`,[C,w]=f(S),[T,E]=C(S),D=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=b.useRef(null),c=b.useRef(null),[l,u]=d({prop:r,defaultProp:i??!1,onChange:a,caller:S});return(0,x.jsx)(T,{scope:t,triggerRef:s,contentRef:c,contentId:m(),titleId:m(),descriptionId:m(),open:l,onOpenChange:u,onOpenToggle:b.useCallback(()=>u(e=>!e),[u]),modal:o,children:n})};D.displayName=S;var O=`DialogTrigger`,k=b.forwardRef((e,t)=>{let{__scopeDialog:n,...i}=e,o=E(O,n),s=a(t,o.triggerRef);return(0,x.jsx)(r.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":o.open,"aria-controls":o.contentId,"data-state":B(o.open),...i,ref:s,onClick:u(e.onClick,o.onOpenToggle)})});k.displayName=O;var A=`DialogPortal`,[j,M]=C(A,{forceMount:void 0}),N=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=E(A,t);return(0,x.jsx)(j,{scope:t,forceMount:n,children:b.Children.map(r,e=>(0,x.jsx)(p,{present:n||a.open,children:(0,x.jsx)(h,{asChild:!0,container:i,children:e})}))})};N.displayName=A;var P=`DialogOverlay`,F=b.forwardRef((e,t)=>{let n=M(P,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=E(P,e.__scopeDialog);return a.modal?(0,x.jsx)(p,{present:r||a.open,children:(0,x.jsx)(L,{...i,ref:t})}):null});F.displayName=P;var I=i(`DialogOverlay.RemoveScroll`),L=b.forwardRef((e,t)=>{let{__scopeDialog:n,...i}=e,a=E(P,n);return(0,x.jsx)(y,{as:I,allowPinchZoom:!0,shards:[a.contentRef],children:(0,x.jsx)(r.div,{"data-state":B(a.open),...i,ref:t,style:{pointerEvents:`auto`,...i.style}})})}),R=`DialogContent`,ne=b.forwardRef((e,t)=>{let n=M(R,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=E(R,e.__scopeDialog);return(0,x.jsx)(p,{present:r||a.open,children:a.modal?(0,x.jsx)(re,{...i,ref:t}):(0,x.jsx)(ie,{...i,ref:t})})});ne.displayName=R;var re=b.forwardRef((e,t)=>{let n=E(R,e.__scopeDialog),r=b.useRef(null),i=a(t,n.contentRef,r);return b.useEffect(()=>{let e=r.current;if(e)return ee(e)},[]),(0,x.jsx)(ae,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:u(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:u(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:u(e.onFocusOutside,e=>e.preventDefault())})}),ie=b.forwardRef((e,t)=>{let n=E(R,e.__scopeDialog),r=b.useRef(!1),i=b.useRef(!1);return(0,x.jsx)(ae,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),ae=b.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:o,...s}=e,c=E(R,n),l=b.useRef(null),u=a(t,l);return v(),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(_,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:o,children:(0,x.jsx)(g,{role:`dialog`,id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":B(c.open),...s,ref:u,onDismiss:()=>c.onOpenChange(!1)})}),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(me,{titleId:c.titleId}),(0,x.jsx)(ge,{contentRef:l,descriptionId:c.descriptionId})]})]})}),z=`DialogTitle`,oe=b.forwardRef((e,t)=>{let{__scopeDialog:n,...i}=e,a=E(z,n);return(0,x.jsx)(r.h2,{id:a.titleId,...i,ref:t})});oe.displayName=z;var se=`DialogDescription`,ce=b.forwardRef((e,t)=>{let{__scopeDialog:n,...i}=e,a=E(se,n);return(0,x.jsx)(r.p,{id:a.descriptionId,...i,ref:t})});ce.displayName=se;var le=`DialogClose`,ue=b.forwardRef((e,t)=>{let{__scopeDialog:n,...i}=e,a=E(le,n);return(0,x.jsx)(r.button,{type:`button`,...i,ref:t,onClick:u(e.onClick,()=>a.onOpenChange(!1))})});ue.displayName=le;function B(e){return e?`open`:`closed`}var de=`DialogTitleWarning`,[fe,pe]=l(de,{contentName:R,titleName:z,docsSlug:`dialog`}),me=({titleId:e})=>{let t=pe(de),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return b.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},he=`DialogDescriptionWarning`,ge=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${pe(he).contentName}}.`;return b.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},V=D,_e=k,H=N,U=F,W=ne,ve=oe,ye=ce,G=ue,be=te(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),xe=te(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Se=1,Ce=.9,we=.8,Te=.17,Ee=.1,De=.999,Oe=.9999,ke=.99,Ae=/[\\\/_+.#"@\[\(\{&]/,je=/[\\\/_+.#"@\[\(\{&]/g,Me=/[\s-]/,Ne=/[\s-]/g;function Pe(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?Se:ke;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=Pe(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=Se:Ae.test(e.charAt(l-1))?(d*=we,p=e.slice(i,l-1).match(je),p&&i>0&&(d*=De**+p.length)):Me.test(e.charAt(l-1))?(d*=Ce,m=e.slice(i,l-1).match(Ne),m&&i>0&&(d*=De**+m.length)):(d*=Te,i>0&&(d*=De**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=Oe)),(dd&&(d=f*Ee)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Fe(e){return e.toLowerCase().replace(Ne,` `)}function Ie(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,Pe(e,t,Fe(e),Fe(t),0,0,{})}var K=`[cmdk-group=""]`,Le=`[cmdk-group-items=""]`,Re=`[cmdk-group-heading=""]`,ze=`[cmdk-item=""]`,Be=`${ze}:not([aria-disabled="true"])`,Ve=`cmdk-item-select`,q=`data-value`,He=(e,t,n)=>Ie(e,t,n),Ue=b.createContext(void 0),J=()=>b.useContext(Ue),We=b.createContext(void 0),Ge=()=>b.useContext(We),Ke=b.createContext(void 0),qe=b.forwardRef((e,t)=>{let n=Z(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),i=Z(()=>new Set),a=Z(()=>new Map),o=Z(()=>new Map),s=Z(()=>new Set),c=it(e),{label:l,children:u,value:d,onValueChange:f,filter:p,shouldFilter:h,loop:g,disablePointerSelection:_=!1,vimBindings:v=!0,...y}=e,ee=m(),te=m(),x=m(),S=b.useRef(null),C=ot();X(()=>{if(d!==void 0){let e=d.trim();n.current.value=e,w.emit()}},[d]),X(()=>{C(6,A)},[]);let w=b.useMemo(()=>({subscribe:e=>(s.current.add(e),()=>s.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)k(),D(),C(1,O);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(x);e?e.focus():(i=document.getElementById(ee))==null||i.focus()}if(C(7,()=>{n.current.selectedItemId=j()?.id,w.emit()}),r||C(5,A),c.current?.value!==void 0){let e=t??``;(o=(a=c.current).onValueChange)==null||o.call(a,e);return}}w.emit()}},emit:()=>{s.current.forEach(e=>e())}}),[]),T=b.useMemo(()=>({value:(e,t,r)=>{t!==o.current.get(e)?.value&&(o.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,E(t,r)),C(2,()=>{D(),w.emit()}))},item:(e,t)=>(i.current.add(e),t&&(a.current.has(t)?a.current.get(t).add(e):a.current.set(t,new Set([e]))),C(3,()=>{k(),D(),n.current.value||O(),w.emit()}),()=>{o.current.delete(e),i.current.delete(e),n.current.filtered.items.delete(e);let t=j();C(4,()=>{k(),t?.getAttribute(`id`)===e&&O(),w.emit()})}),group:e=>(a.current.has(e)||a.current.set(e,new Set),()=>{o.current.delete(e),a.current.delete(e)}),filter:()=>c.current.shouldFilter,label:l||e[`aria-label`],getDisablePointerSelection:()=>c.current.disablePointerSelection,listId:ee,inputId:x,labelId:te,listInnerRef:S}),[]);function E(e,t){let r=c.current?.filter??He;return e?r(e,n.current.search,t):0}function D(){if(!n.current.search||c.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=a.current.get(n),i=0;r.forEach(t=>{let n=e.get(t);i=Math.max(n,i)}),t.push([n,i])});let r=S.current;M().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(Le);t?t.appendChild(e.parentElement===t?e:e.closest(`${Le} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${Le} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=S.current?.querySelector(`${K}[${q}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function O(){let e=M().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(q);w.setState(`value`,e||void 0)}function k(){if(!n.current.search||c.current.shouldFilter===!1){n.current.filtered.count=i.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of i.current){let r=E(o.current.get(t)?.value??``,o.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of a.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function A(){var e;let t=j();t&&(t.parentElement?.firstChild===t&&((e=t.closest(K)?.querySelector(Re))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function j(){return S.current?.querySelector(`${ze}[aria-selected="true"]`)}function M(){return Array.from(S.current?.querySelectorAll(Be)||[])}function N(e){let t=M()[e];t&&w.setState(`value`,t.getAttribute(q))}function P(e){var t;let n=j(),r=M(),i=r.findIndex(e=>e===n),a=r[i+e];(t=c.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&w.setState(`value`,a.getAttribute(q))}function F(e){let t=j()?.closest(K),n;for(;t&&!n;)t=e>0?nt(t,K):rt(t,K),n=t?.querySelector(Be);n?w.setState(`value`,n.getAttribute(q)):P(e)}let I=()=>N(M().length-1),L=e=>{e.preventDefault(),e.metaKey?I():e.altKey?F(1):P(1)},R=e=>{e.preventDefault(),e.metaKey?N(0):e.altKey?F(-1):P(-1)};return b.createElement(r.div,{ref:t,tabIndex:-1,...y,"cmdk-root":``,onKeyDown:e=>{var t;(t=y.onKeyDown)==null||t.call(y,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:v&&e.ctrlKey&&L(e);break;case`ArrowDown`:L(e);break;case`p`:case`k`:v&&e.ctrlKey&&R(e);break;case`ArrowUp`:R(e);break;case`Home`:e.preventDefault(),N(0);break;case`End`:e.preventDefault(),I();break;case`Enter`:{e.preventDefault();let t=j();if(t){let e=new Event(Ve);t.dispatchEvent(e)}}}}},b.createElement(`label`,{"cmdk-label":``,htmlFor:T.inputId,id:T.labelId,style:ct},l),$(e,e=>b.createElement(We.Provider,{value:w},b.createElement(Ue.Provider,{value:T},e))))}),Je=b.forwardRef((e,t)=>{let n=m(),i=b.useRef(null),a=b.useContext(Ke),o=J(),s=it(e),l=s.current?.forceMount??a?.forceMount;X(()=>{if(!l)return o.item(n,a?.id)},[l]);let u=at(n,i,[e.value,e.children,i],e.keywords),d=Ge(),f=Q(e=>e.value&&e.value===u.current),p=Q(e=>l||o.filter()===!1?!0:e.search?e.filtered.items.get(n)>0:!0);b.useEffect(()=>{let t=i.current;if(!(!t||e.disabled))return t.addEventListener(Ve,h),()=>t.removeEventListener(Ve,h)},[p,e.onSelect,e.disabled]);function h(){var e,t;g(),(t=(e=s.current).onSelect)==null||t.call(e,u.current)}function g(){d.setState(`value`,u.current,!0)}if(!p)return null;let{disabled:_,value:v,onSelect:y,forceMount:ee,keywords:te,...x}=e;return b.createElement(r.div,{ref:c(i,t),...x,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!_,"aria-selected":!!f,"data-disabled":!!_,"data-selected":!!f,onPointerMove:_||o.getDisablePointerSelection()?void 0:g,onClick:_?void 0:h},e.children)}),Ye=b.forwardRef((e,t)=>{let{heading:n,children:i,forceMount:a,...o}=e,s=m(),l=b.useRef(null),u=b.useRef(null),d=m(),f=J(),p=Q(e=>a||f.filter()===!1?!0:e.search?e.filtered.groups.has(s):!0);X(()=>f.group(s),[]),at(s,l,[e.value,e.heading,u]);let h=b.useMemo(()=>({id:s,forceMount:a}),[a]);return b.createElement(r.div,{ref:c(l,t),...o,"cmdk-group":``,role:`presentation`,hidden:p?void 0:!0},n&&b.createElement(`div`,{ref:u,"cmdk-group-heading":``,"aria-hidden":!0,id:d},n),$(e,e=>b.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?d:void 0},b.createElement(Ke.Provider,{value:h},e))))}),Xe=b.forwardRef((e,t)=>{let{alwaysRender:n,...i}=e,a=b.useRef(null),o=Q(e=>!e.search);return!n&&!o?null:b.createElement(r.div,{ref:c(a,t),...i,"cmdk-separator":``,role:`separator`})}),Ze=b.forwardRef((e,t)=>{let{onValueChange:n,...i}=e,a=e.value!=null,o=Ge(),s=Q(e=>e.search),c=Q(e=>e.selectedItemId),l=J();return b.useEffect(()=>{e.value!=null&&o.setState(`search`,e.value)},[e.value]),b.createElement(r.input,{ref:t,...i,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":c,id:l.inputId,type:`text`,value:a?e.value:s,onChange:e=>{a||o.setState(`search`,e.target.value),n?.(e.target.value)}})}),Qe=b.forwardRef((e,t)=>{let{children:n,label:i=`Suggestions`,...a}=e,o=b.useRef(null),s=b.useRef(null),l=Q(e=>e.selectedItemId),u=J();return b.useEffect(()=>{if(s.current&&o.current){let e=s.current,t=o.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),b.createElement(r.div,{ref:c(o,t),...a,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":l,"aria-label":i,id:u.listId},$(e,e=>b.createElement(`div`,{ref:c(s,u.listInnerRef),"cmdk-list-sizer":``},e)))}),$e=b.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...s}=e;return b.createElement(V,{open:n,onOpenChange:r},b.createElement(H,{container:o},b.createElement(U,{"cmdk-overlay":``,className:i}),b.createElement(W,{"aria-label":e.label,"cmdk-dialog":``,className:a},b.createElement(qe,{ref:t,...s}))))}),et=b.forwardRef((e,t)=>Q(e=>e.filtered.count===0)?b.createElement(r.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),tt=b.forwardRef((e,t)=>{let{progress:n,children:i,label:a=`Loading...`,...o}=e;return b.createElement(r.div,{ref:t,...o,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":a},$(e,e=>b.createElement(`div`,{"aria-hidden":!0},e)))}),Y=Object.assign(qe,{List:Qe,Item:Je,Input:Ze,Group:Ye,Separator:Xe,Dialog:$e,Empty:et,Loading:tt});function nt(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function rt(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function it(e){let t=b.useRef(e);return X(()=>{t.current=e}),t}var X=typeof window>`u`?b.useEffect:b.useLayoutEffect;function Z(e){let t=b.useRef();return t.current===void 0&&(t.current=e()),t}function Q(e){let t=Ge(),n=()=>e(t.snapshot());return b.useSyncExternalStore(t.subscribe,n,n)}function at(e,t,n,r=[]){let i=b.useRef(),a=J();return X(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(q,s),i.current=s}),i}var ot=()=>{let[e,t]=b.useState(),n=Z(()=>new Map);return X(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function st(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function $({asChild:e,children:t},n){return e&&b.isValidElement(t)?b.cloneElement(st(t),{ref:t.ref},n(t.props.children)):n(t)}var ct={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`};function lt({...e}){return(0,x.jsx)(V,{"data-slot":`dialog`,...e})}function ut({...e}){return(0,x.jsx)(H,{"data-slot":`dialog-portal`,...e})}function dt({className:e,...t}){return(0,x.jsx)(U,{className:o(`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in`,e),"data-slot":`dialog-overlay`,...t})}function ft({className:e,children:t,showCloseButton:n=!0,...r}){return(0,x.jsxs)(ut,{"data-slot":`dialog-portal`,children:[(0,x.jsx)(dt,{}),(0,x.jsxs)(W,{className:o(`data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg outline-none duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in sm:max-w-lg`,e),"data-slot":`dialog-content`,...r,children:[t,n&&(0,x.jsxs)(G,{className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,"data-slot":`dialog-close`,children:[(0,x.jsx)(xe,{}),(0,x.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function pt({className:e,...t}){return(0,x.jsx)(`div`,{className:o(`flex flex-col gap-2 text-center sm:text-left`,e),"data-slot":`dialog-header`,...t})}function mt({className:e,showCloseButton:t=!1,children:n,...r}){return(0,x.jsxs)(`div`,{className:o(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),"data-slot":`dialog-footer`,...r,children:[n,t&&(0,x.jsx)(G,{asChild:!0,children:(0,x.jsx)(s,{variant:`outline`,children:`Close`})})]})}function ht({className:e,...t}){return(0,x.jsx)(ve,{className:o(`font-semibold text-lg leading-none`,e),"data-slot":`dialog-title`,...t})}function gt({className:e,...t}){return(0,x.jsx)(ye,{className:o(`text-muted-foreground text-sm`,e),"data-slot":`dialog-description`,...t})}function _t({className:e,...t}){return(0,x.jsx)(Y,{className:o(`flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground`,e),"data-slot":`command`,...t})}function vt({title:e=`Command Palette`,description:t=`Search for a command to run...`,children:n,className:r,showCloseButton:i=!0,...a}){return(0,x.jsxs)(lt,{...a,children:[(0,x.jsxs)(pt,{className:`sr-only`,children:[(0,x.jsx)(ht,{children:e}),(0,x.jsx)(gt,{children:t})]}),(0,x.jsx)(ft,{className:o(`overflow-hidden p-0`,r),showCloseButton:i,children:(0,x.jsx)(_t,{className:`**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5`,children:n})})]})}function yt({className:e,...t}){return(0,x.jsxs)(`div`,{className:`flex h-9 items-center gap-2 border-b px-3`,"data-slot":`command-input-wrapper`,children:[(0,x.jsx)(be,{className:`size-4 shrink-0 opacity-50`}),(0,x.jsx)(Y.Input,{className:o(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`,e),"data-slot":`command-input`,...t})]})}function bt({className:e,...t}){return(0,x.jsx)(Y.List,{className:o(`max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden`,e),"data-slot":`command-list`,...t})}function xt({...e}){return(0,x.jsx)(Y.Empty,{className:`py-6 text-center text-sm`,"data-slot":`command-empty`,...e})}function St({className:e,...t}){return(0,x.jsx)(Y.Group,{className:o(`overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:text-xs`,e),"data-slot":`command-group`,...t})}function Ct({className:e,...t}){return(0,x.jsx)(Y.Separator,{className:o(`-mx-1 h-px bg-border`,e),"data-slot":`command-separator`,...t})}function wt({className:e,...t}){return(0,x.jsx)(Y.Item,{className:o(`relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0`,e),"data-slot":`command-item`,...t})}export{ve as C,w as E,V as S,fe as T,G as _,yt as a,U as b,Ct as c,gt as d,mt as f,be as g,xe as h,St as i,lt as l,ht as m,vt as n,wt as o,pt as p,xt as r,bt as s,_t as t,ft as u,W as v,_e as w,H as x,ye as y}; \ No newline at end of file diff --git a/src/www/assets/cookies-BNZcTwGc.js b/src/www/assets/cookies-BNZcTwGc.js new file mode 100644 index 0000000..c7421ec --- /dev/null +++ b/src/www/assets/cookies-BNZcTwGc.js @@ -0,0 +1 @@ +var e=3600*24*7;function t(e){typeof document<`u`&&(document.cookie=e)}function n(e){if(typeof document>`u`)return;let t=`; ${document.cookie}`.split(`; ${encodeURIComponent(e)}=`);if(t.length===2){let e=t.pop()?.split(`;`).shift();return e?decodeURIComponent(e):void 0}}function r(n,r,i=e){t(`${encodeURIComponent(n)}=${encodeURIComponent(r)}; path=/; max-age=${i}; SameSite=Lax`)}function i(e){t(`${encodeURIComponent(e)}=; path=/; max-age=0; SameSite=Lax`)}export{i as n,r,n as t}; \ No newline at end of file diff --git a/src/www/assets/createLucideIcon-D28ivbfF.js b/src/www/assets/createLucideIcon-D28ivbfF.js new file mode 100644 index 0000000..837d441 --- /dev/null +++ b/src/www/assets/createLucideIcon-D28ivbfF.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";var n=e(t()),r=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),i=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),o=e=>{let t=a(e);return t.charAt(0).toUpperCase()+t.slice(1)},s={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},c=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},l=(0,n.createContext)({}),u=()=>(0,n.useContext)(l),d=(0,n.forwardRef)(({color:e,size:t,strokeWidth:i,absoluteStrokeWidth:a,className:o=``,children:l,iconNode:d,...f},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,color:_=`currentColor`,className:v=``}=u()??{},y=a??g?Number(i??h)*24/Number(t??m):i??h;return(0,n.createElement)(`svg`,{ref:p,...s,width:t??m??s.width,height:t??m??s.height,stroke:e??_,strokeWidth:y,className:r(`lucide`,v,o),...!l&&!c(f)&&{"aria-hidden":`true`},...f},[...d.map(([e,t])=>(0,n.createElement)(e,t)),...Array.isArray(l)?l:[l]])}),f=(e,t)=>{let a=(0,n.forwardRef)(({className:a,...s},c)=>(0,n.createElement)(d,{ref:c,iconNode:t,className:r(`lucide-${i(o(e))}`,`lucide-${e}`,a),...s}));return a.displayName=o(e),a};export{f as t}; \ No newline at end of file diff --git a/src/www/assets/dashboard-Clgehcjb.js b/src/www/assets/dashboard-Clgehcjb.js new file mode 100644 index 0000000..90bf3d4 --- /dev/null +++ b/src/www/assets/dashboard-Clgehcjb.js @@ -0,0 +1,42 @@ +import{$c as e,$l as t,$o as n,Ao as r,Bo as i,Co as a,Cs as o,Do as s,Eo as c,Es as l,Fo as u,Go as d,Ho as f,Io as p,Jo as m,Ko as h,Lo as g,Mo as _,No as v,Oo as y,Po as b,Qc as x,Qo as S,Ro as C,Ss as w,To as T,Ts as E,Uo as D,Vo as O,Wo as k,Xo as ee,Yo as te,Zo as A,_s as j,as as ne,au as re,bs as ie,cs as ae,ds as oe,el as se,es as ce,fs as le,gs as ue,hs as de,il as fe,is as pe,iu as M,jo as me,ko as he,ls as ge,ms as _e,nl as ve,ns as ye,nu as be,os as xe,ou as Se,ps as Ce,qo as we,rl as Te,rs as Ee,ru as De,ss as Oe,tl as ke,ts as Ae,us as je,vs as Me,wo as Ne,ws as Pe,xs as Fe,ys as Ie,zo as Le}from"./messages-BovT1T-w.js";import{a as Re}from"./auth-store-BpIS8RMn.js";import{t as ze}from"./with-selector-D_dmjfol.js";import{t as Be}from"./useNavigate-Dg8CkCoa.js";import{r as Ve,t as He}from"./dist-15n4mVGL.js";import{G as Ue,P as We,a as Ge,c as Ke,o as qe,s as Je}from"./search-provider-Cx1K1ilz.js";import{i as N,n as Ye,o as P,r as Xe,t as Ze}from"./button-DJA4fnJ8.js";import{i as Qe,n as $e,o as et}from"./dist-DG5UMlBd.js";import{n as tt,r as nt,t as rt}from"./dist-D21KDGR3.js";import{t as it}from"./dist-Cp1lAGZy.js";import{i as at,r as ot}from"./dist-BEDXr2LC.js";import{c as st,i as ct,o as lt,r as ut,s as dt,t as ft}from"./command-BwVY_kli.js";import{n as pt,r as mt,t as ht}from"./popover-D5q6Hufu.js";import{o as gt,s as _t}from"./select-DcStuzoT.js";import{t as vt}from"./createLucideIcon-D28ivbfF.js";import{a as yt,b as bt,c as xt,i as St,l as Ct,o as wt,s as Tt,u as Et}from"./data-table-CmcvKcj8.js";import{t as Dt}from"./check-gDgbfVXu.js";import{t as Ot}from"./chevron-down-CdmvZsfI.js";import{t as kt}from"./clock-3-BoF5rDzX.js";import{t as At}from"./page-header-BBJ9dE3-.js";import{t as jt}from"./badge-BAmRBT3U.js";import{a as Mt,i as Nt,n as Pt,r as Ft,t as It}from"./card-DuQAN29P.js";var F=Se(De(),1),I=be(),Lt=`Tabs`,[Rt,zt]=et(Lt,[nt]),Bt=nt(),[Vt,Ht]=Rt(Lt),Ut=F.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,onValueChange:i,defaultValue:a,orientation:o=`horizontal`,dir:s,activationMode:c=`automatic`,...l}=e,u=ot(s),[d,f]=$e({prop:r,onChange:i,defaultProp:a??``,caller:Lt});return(0,I.jsx)(Vt,{scope:n,baseId:at(),value:d,onValueChange:f,orientation:o,dir:u,activationMode:c,children:(0,I.jsx)(He.div,{dir:u,"data-orientation":o,...l,ref:t})})});Ut.displayName=Lt;var Wt=`TabsList`,Gt=F.forwardRef((e,t)=>{let{__scopeTabs:n,loop:r=!0,...i}=e,a=Ht(Wt,n),o=Bt(n);return(0,I.jsx)(tt,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:r,children:(0,I.jsx)(He.div,{role:`tablist`,"aria-orientation":a.orientation,...i,ref:t})})});Gt.displayName=Wt;var Kt=`TabsTrigger`,qt=F.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,disabled:i=!1,...a}=e,o=Ht(Kt,n),s=Bt(n),c=Xt(o.baseId,r),l=Zt(o.baseId,r),u=r===o.value;return(0,I.jsx)(rt,{asChild:!0,...s,focusable:!i,active:u,children:(0,I.jsx)(He.button,{type:`button`,role:`tab`,"aria-selected":u,"aria-controls":l,"data-state":u?`active`:`inactive`,"data-disabled":i?``:void 0,disabled:i,id:c,...a,ref:t,onMouseDown:Qe(e.onMouseDown,e=>{!i&&e.button===0&&e.ctrlKey===!1?o.onValueChange(r):e.preventDefault()}),onKeyDown:Qe(e.onKeyDown,e=>{[` `,`Enter`].includes(e.key)&&o.onValueChange(r)}),onFocus:Qe(e.onFocus,()=>{let e=o.activationMode!==`manual`;!u&&!i&&e&&o.onValueChange(r)})})})});qt.displayName=Kt;var Jt=`TabsContent`,Yt=F.forwardRef((e,t)=>{let{__scopeTabs:n,value:r,forceMount:i,children:a,...o}=e,s=Ht(Jt,n),c=Xt(s.baseId,r),l=Zt(s.baseId,r),u=r===s.value,d=F.useRef(u);return F.useEffect(()=>{let e=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,I.jsx)(it,{present:i||u,children:({present:n})=>(0,I.jsx)(He.div,{"data-state":u?`active`:`inactive`,"data-orientation":s.orientation,role:`tabpanel`,"aria-labelledby":c,hidden:!n,id:l,tabIndex:0,...o,ref:t,style:{...e.style,animationDuration:d.current?`0s`:void 0},children:n&&a})})});Yt.displayName=Jt;function Xt(e,t){return`${e}-trigger-${t}`}function Zt(e,t){return`${e}-content-${t}`}var Qt=Ut,$t=Gt,en=qt,tn=vt(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),nn=vt(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),rn=vt(`dollar-sign`,[[`line`,{x1:`12`,x2:`12`,y1:`2`,y2:`22`,key:`7eqyqh`}],[`path`,{d:`M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6`,key:`1b0p4s`}]]),an=vt(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),on=vt(`list-filter`,[[`path`,{d:`M2 5h20`,key:`1fs1ex`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`path`,{d:`M9 19h6`,key:`456am0`}]]),sn=vt(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),cn=vt(`piggy-bank`,[[`path`,{d:`M11 17h3v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3a3.16 3.16 0 0 0 2-2h1a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1h-1a5 5 0 0 0-2-4V3a4 4 0 0 0-3.2 1.6l-.3.4H11a6 6 0 0 0-6 6v1a5 5 0 0 0 2 4v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1z`,key:`1piglc`}],[`path`,{d:`M16 10h.01`,key:`1m94wz`}],[`path`,{d:`M2 8v1a2 2 0 0 0 2 2h1`,key:`1env43`}]]),ln=vt(`receipt-text`,[[`path`,{d:`M13 16H8`,key:`wsln4y`}],[`path`,{d:`M14 8H8`,key:`1l3xfs`}],[`path`,{d:`M16 12H8`,key:`1fr5h0`}],[`path`,{d:`M4 3a1 1 0 0 1 1-1 1.3 1.3 0 0 1 .7.2l.933.6a1.3 1.3 0 0 0 1.4 0l.934-.6a1.3 1.3 0 0 1 1.4 0l.933.6a1.3 1.3 0 0 0 1.4 0l.933-.6a1.3 1.3 0 0 1 1.4 0l.934.6a1.3 1.3 0 0 0 1.4 0l.933-.6A1.3 1.3 0 0 1 19 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1 1.3 1.3 0 0 1-.7-.2l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.934.6a1.3 1.3 0 0 1-1.4 0l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-1.4 0l-.934-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-.7.2 1 1 0 0 1-1-1z`,key:`ycz6yz`}]]),un=vt(`trending-up`,[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]),dn=365.2425,fn=6048e5,pn=864e5,mn=3600*24;mn*7,mn*dn/12*3;var hn=Symbol.for(`constructDateFrom`);function gn(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&hn in e?e[hn](t):e instanceof Date?new e.constructor(t):new Date(t)}function L(e,t){return gn(t||e,e)}function _n(e,t,n){let r=L(e,n?.in);return isNaN(t)?gn(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function vn(e,t,n){let r=L(e,n?.in);if(isNaN(t))return gn(n?.in||e,NaN);if(!t)return r;let i=r.getDate(),a=gn(n?.in||e,r.getTime());return a.setMonth(r.getMonth()+t+1,0),i>=a.getDate()?a:(r.setFullYear(a.getFullYear(),a.getMonth(),i),r)}var yn={};function bn(){return yn}function xn(e,t){let n=bn(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=L(e,t?.in),a=i.getDay(),o=(a=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function wn(e){let t=L(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),e-+n}function Tn(e,...t){let n=gn.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function En(e,t){let n=L(e,t?.in);return n.setHours(0,0,0,0),n}function Dn(e,t,n){let[r,i]=Tn(n?.in,e,t),a=En(r),o=En(i),s=+a-wn(a),c=+o-wn(o);return Math.round((s-c)/pn)}function On(e,t){let n=Cn(e,t),r=gn(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Sn(r)}function kn(e,t,n){return _n(e,t*7,n)}function An(e,t,n){return vn(e,t*12,n)}function jn(e,t){let n,r=t?.in;return e.forEach(e=>{!r&&typeof e==`object`&&(r=gn.bind(null,e));let t=L(e,r);(!n||n{!r&&typeof e==`object`&&(r=gn.bind(null,e));let t=L(e,r);(!n||n>t||isNaN(+t))&&(n=t)}),gn(r,n||NaN)}function Nn(e,t,n){let[r,i]=Tn(n?.in,e,t);return+En(r)==+En(i)}function Pn(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function Fn(e){return!(!Pn(e)&&typeof e!=`number`||isNaN(+L(e)))}function In(e,t,n){let[r,i]=Tn(n?.in,e,t),a=r.getFullYear()-i.getFullYear(),o=r.getMonth()-i.getMonth();return a*12+o}function Ln(e,t){let n=L(e,t?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function Rn(e,t){let[n,r]=Tn(e,t.start,t.end);return{start:n,end:r}}function zn(e,t){let{start:n,end:r}=Rn(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setDate(1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(gn(n,o)),o.setMonth(o.getMonth()+s);return i?c.reverse():c}function Bn(e,t){let n=L(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function Vn(e,t){let n=L(e,t?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function Hn(e,t){let n=L(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function Un(e,t){let{start:n,end:r}=Rn(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setMonth(0,1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(gn(n,o)),o.setFullYear(o.getFullYear()+s);return i?c.reverse():c}function Wn(e,t){let n=bn(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=L(e,t?.in),a=i.getDay(),o=(a{let r,i=Kn[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function Jn(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var Yn={date:Jn({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:Jn({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:Jn({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},Xn={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},Zn=(e,t,n,r)=>Xn[e];function Qn(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var $n={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:Qn({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:Qn({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:Qn({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:Qn({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:Qn({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function er(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?nr(s,e=>e.test(o)):tr(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function tr(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function nr(e,t){for(let n=0;n{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var ir={code:`en-US`,formatDistance:qn,formatLong:Yn,formatRelative:Zn,localize:$n,match:{ordinalNumber:rr({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:er({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:er({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:er({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:er({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:er({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function ar(e,t){let n=L(e,t?.in);return Dn(n,Hn(n))+1}function or(e,t){let n=L(e,t?.in),r=Sn(n)-+On(n);return Math.round(r/fn)+1}function sr(e,t){let n=L(e,t?.in),r=n.getFullYear(),i=bn(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=gn(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=xn(o,t),c=gn(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=xn(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function cr(e,t){let n=bn(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=sr(e,t),a=gn(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),xn(a,t)}function lr(e,t){let n=L(e,t?.in),r=xn(n,t)-+cr(n,t);return Math.round(r/fn)+1}function R(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var ur={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return R(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):R(n+1,2)},d(e,t){return R(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return R(e.getHours()%12||12,t.length)},H(e,t){return R(e.getHours(),t.length)},m(e,t){return R(e.getMinutes(),t.length)},s(e,t){return R(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return R(Math.trunc(r*10**(n-3)),t.length)}},dr={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},fr={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return ur.y(e,t)},Y:function(e,t,n,r){let i=sr(e,r),a=i>0?i:1-i;return t===`YY`?R(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):R(a,t.length)},R:function(e,t){return R(Cn(e),t.length)},u:function(e,t){return R(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return R(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return R(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return ur.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return R(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=lr(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):R(i,t.length)},I:function(e,t,n){let r=or(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):R(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):ur.d(e,t)},D:function(e,t,n){let r=ar(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):R(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return R(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return R(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return R(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?dr.noon:r===0?dr.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?dr.evening:r>=12?dr.afternoon:r>=4?dr.morning:dr.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return ur.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):ur.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):R(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):R(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):ur.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):ur.s(e,t)},S:function(e,t){return ur.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return mr(r);case`XXXX`:case`XX`:return hr(r);default:return hr(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return mr(r);case`xxxx`:case`xx`:return hr(r);default:return hr(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+pr(r,`:`);default:return`GMT`+hr(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+pr(r,`:`);default:return`GMT`+hr(r,`:`)}},t:function(e,t,n){return R(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return R(+e,t.length)}};function pr(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+R(a,2)}function mr(e,t){return e%60==0?(e>0?`-`:`+`)+R(Math.abs(e)/60,2):hr(e,t)}function hr(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=R(Math.trunc(r/60),2),a=R(r%60,2);return n+i+t+a}var gr=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},_r=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},vr={p:_r,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return gr(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`});break}return a.replace(`{{date}}`,gr(r,t)).replace(`{{time}}`,_r(i,t))}},yr=/^D+$/,br=/^Y+$/,xr=[`D`,`DD`,`YY`,`YYYY`];function Sr(e){return yr.test(e)}function Cr(e){return br.test(e)}function wr(e,t,n){let r=Tr(e,t,n);if(console.warn(r),xr.includes(e))throw RangeError(r)}function Tr(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Er=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Dr=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Or=/^'([^]*?)'?$/,kr=/''/g,Ar=/[a-zA-Z]/;function jr(e,t,n){let r=bn(),i=n?.locale??r.locale??ir,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=L(e,n?.in);if(!Fn(s))throw RangeError(`Invalid time value`);let c=t.match(Dr).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=vr[t];return n(e,i.formatLong)}return e}).join(``).match(Er).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:Mr(e)};if(fr[t])return{isToken:!0,value:e};if(t.match(Ar))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&Cr(a)||!n?.useAdditionalDayOfYearTokens&&Sr(a))&&wr(a,t,String(e));let o=fr[a[0]];return o(s,a,i.localize,l)}).join(``)}function Mr(e){let t=e.match(Or);return t?t[1].replace(kr,`'`):e}function Nr(e,t){let n=L(e,t?.in),r=n.getFullYear(),i=n.getMonth(),a=gn(n,0);return a.setFullYear(r,i+1,0),a.setHours(0,0,0,0),a.getDate()}function Pr(e,t){return L(e,t?.in).getMonth()}function Fr(e,t){return L(e,t?.in).getFullYear()}function Ir(e,t){return+L(e)>+L(t)}function Lr(e,t){return+L(e)<+L(t)}function Rr(e,t,n){let[r,i]=Tn(n?.in,e,t);return+xn(r,n)==+xn(i,n)}function zr(e,t,n){let[r,i]=Tn(n?.in,e,t);return r.getFullYear()===i.getFullYear()&&r.getMonth()===i.getMonth()}function Br(e,t,n){let[r,i]=Tn(n?.in,e,t);return r.getFullYear()===i.getFullYear()}function Vr(e,t,n){return _n(e,-t,n)}function Hr(e,t,n){let r=L(e,n?.in),i=r.getFullYear(),a=r.getDate(),o=gn(n?.in||e,0);o.setFullYear(i,t,15),o.setHours(0,0,0,0);let s=Nr(o);return r.setMonth(t,Math.min(a,s)),r}function Ur(e,t,n){let r=L(e,n?.in);return isNaN(+r)?gn(n?.in||e,NaN):(r.setFullYear(t),r)}function Wr(e,t,n){return vn(e,-t,n)}var Gr={lessThanXSeconds:{one:`不到 1 秒`,other:`不到 {{count}} 秒`},xSeconds:{one:`1 秒`,other:`{{count}} 秒`},halfAMinute:`半分钟`,lessThanXMinutes:{one:`不到 1 分钟`,other:`不到 {{count}} 分钟`},xMinutes:{one:`1 分钟`,other:`{{count}} 分钟`},xHours:{one:`1 小时`,other:`{{count}} 小时`},aboutXHours:{one:`大约 1 小时`,other:`大约 {{count}} 小时`},xDays:{one:`1 天`,other:`{{count}} 天`},aboutXWeeks:{one:`大约 1 个星期`,other:`大约 {{count}} 个星期`},xWeeks:{one:`1 个星期`,other:`{{count}} 个星期`},aboutXMonths:{one:`大约 1 个月`,other:`大约 {{count}} 个月`},xMonths:{one:`1 个月`,other:`{{count}} 个月`},aboutXYears:{one:`大约 1 年`,other:`大约 {{count}} 年`},xYears:{one:`1 年`,other:`{{count}} 年`},overXYears:{one:`超过 1 年`,other:`超过 {{count}} 年`},almostXYears:{one:`将近 1 年`,other:`将近 {{count}} 年`}},Kr=(e,t,n)=>{let r,i=Gr[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,String(t)),n?.addSuffix?n.comparison&&n.comparison>0?r+`内`:r+`前`:r},qr={date:Jn({formats:{full:`y'年'M'月'd'日' EEEE`,long:`y'年'M'月'd'日'`,medium:`yyyy-MM-dd`,short:`yy-MM-dd`},defaultWidth:`full`}),time:Jn({formats:{full:`zzzz a h:mm:ss`,long:`z a h:mm:ss`,medium:`a h:mm:ss`,short:`a h:mm`},defaultWidth:`full`}),dateTime:Jn({formats:{full:`{{date}} {{time}}`,long:`{{date}} {{time}}`,medium:`{{date}} {{time}}`,short:`{{date}} {{time}}`},defaultWidth:`full`})};function Jr(e,t,n){let r=`eeee p`;return Rr(e,t,n)?r:e.getTime()>t.getTime()?`'下个'`+r:`'上个'`+r}var Yr={lastWeek:Jr,yesterday:`'昨天' p`,today:`'今天' p`,tomorrow:`'明天' p`,nextWeek:Jr,other:`PP p`},Xr={code:`zh-CN`,formatDistance:Kr,formatLong:qr,formatRelative:(e,t,n,r)=>{let i=Yr[e];return typeof i==`function`?i(t,n,r):i},localize:{ordinalNumber:(e,t)=>{let n=Number(e);switch(t?.unit){case`date`:return n.toString()+`日`;case`hour`:return n.toString()+`时`;case`minute`:return n.toString()+`分`;case`second`:return n.toString()+`秒`;default:return`第 `+n.toString()}},era:Qn({values:{narrow:[`前`,`公元`],abbreviated:[`前`,`公元`],wide:[`公元前`,`公元`]},defaultWidth:`wide`}),quarter:Qn({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`第一季`,`第二季`,`第三季`,`第四季`],wide:[`第一季度`,`第二季度`,`第三季度`,`第四季度`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:Qn({values:{narrow:[`一`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`,`十一`,`十二`],abbreviated:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],wide:[`一月`,`二月`,`三月`,`四月`,`五月`,`六月`,`七月`,`八月`,`九月`,`十月`,`十一月`,`十二月`]},defaultWidth:`wide`}),day:Qn({values:{narrow:[`日`,`一`,`二`,`三`,`四`,`五`,`六`],short:[`日`,`一`,`二`,`三`,`四`,`五`,`六`],abbreviated:[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`],wide:[`星期日`,`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`]},defaultWidth:`wide`}),dayPeriod:Qn({values:{narrow:{am:`上`,pm:`下`,midnight:`凌晨`,noon:`午`,morning:`早`,afternoon:`下午`,evening:`晚`,night:`夜`},abbreviated:{am:`上午`,pm:`下午`,midnight:`凌晨`,noon:`中午`,morning:`早晨`,afternoon:`中午`,evening:`晚上`,night:`夜间`},wide:{am:`上午`,pm:`下午`,midnight:`凌晨`,noon:`中午`,morning:`早晨`,afternoon:`中午`,evening:`晚上`,night:`夜间`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`上`,pm:`下`,midnight:`凌晨`,noon:`午`,morning:`早`,afternoon:`下午`,evening:`晚`,night:`夜`},abbreviated:{am:`上午`,pm:`下午`,midnight:`凌晨`,noon:`中午`,morning:`早晨`,afternoon:`中午`,evening:`晚上`,night:`夜间`},wide:{am:`上午`,pm:`下午`,midnight:`凌晨`,noon:`中午`,morning:`早晨`,afternoon:`中午`,evening:`晚上`,night:`夜间`}},defaultFormattingWidth:`wide`})},match:{ordinalNumber:rr({matchPattern:/^(第\s*)?\d+(日|时|分|秒)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:er({matchPatterns:{narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^(前)/i,/^(公元)/i]},defaultParseWidth:`any`}),quarter:er({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:er({matchPatterns:{narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},defaultParseWidth:`any`}),day:er({matchPatterns:{narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},defaultParseWidth:`any`}),dayPeriod:er({matchPatterns:{any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},defaultParseWidth:`any`})},options:{weekStartsOn:1,firstWeekContainsDate:4}};function Zr(e,t,n=`long`){return new Intl.DateTimeFormat(`en-US`,{hour:`numeric`,timeZone:e,timeZoneName:n}).format(t).split(/\s/g).slice(2).join(` `)}var Qr={},$r={};function ei(e,t){try{let n=(Qr[e]||=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`longOffset`}).format)(t).split(`GMT`)[1];return n in $r?$r[n]:ni(n,n.split(`:`))}catch{if(e in $r)return $r[e];let t=e?.match(ti);return t?ni(e,t.slice(1)):NaN}}var ti=/([+-]\d\d):?(\d\d)?/;function ni(e,t){let n=+(t[0]||0),r=+(t[1]||0),i=(t[2]||0)/60;return $r[e]=n*60+r>0?n*60+r+i:n*60-r-i}var ri=class e extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]==`string`&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(ei(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]==`number`&&(e.length===1||e.length===2&&typeof e[1]!=`number`)?this.setTime(e[0]):typeof e[0]==`string`?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),si(this,NaN),ai(this)):this.setTime(Date.now())}static tz(t,...n){return n.length?new e(...n,t):new e(Date.now(),t)}withTimeZone(t){return new e(+this,t)}getTimezoneOffset(){let e=-ei(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),ai(this),+this}[Symbol.for(`constructDateFrom`)](t){return new e(+new Date(t),this.timeZone)}},ii=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(e=>{if(!ii.test(e))return;let t=e.replace(ii,`$1UTC`);ri.prototype[t]&&(e.startsWith(`get`)?ri.prototype[e]=function(){return this.internal[t]()}:(ri.prototype[e]=function(){return Date.prototype[t].apply(this.internal,arguments),oi(this),+this},ri.prototype[t]=function(){return Date.prototype[t].apply(this,arguments),ai(this),+this}))});function ai(e){e.internal.setTime(+e),e.internal.setUTCSeconds(e.internal.getUTCSeconds()-Math.round(-ei(e.timeZone,e)*60))}function oi(e){Date.prototype.setFullYear.call(e,e.internal.getUTCFullYear(),e.internal.getUTCMonth(),e.internal.getUTCDate()),Date.prototype.setHours.call(e,e.internal.getUTCHours(),e.internal.getUTCMinutes(),e.internal.getUTCSeconds(),e.internal.getUTCMilliseconds()),si(e)}function si(e){let t=ei(e.timeZone,e),n=t>0?Math.floor(t):Math.ceil(t),r=new Date(+e);r.setUTCHours(r.getUTCHours()-1);let i=-new Date(+e).getTimezoneOffset(),a=i- -new Date(+r).getTimezoneOffset(),o=Date.prototype.getHours.apply(e)!==e.internal.getUTCHours();a&&o&&e.internal.setUTCMinutes(e.internal.getUTCMinutes()+a);let s=i-n;s&&Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+s);let c=new Date(+e);c.setUTCSeconds(0);let l=i>0?c.getSeconds():(c.getSeconds()-60)%60,u=Math.round(-(ei(e.timeZone,e)*60))%60;(u||l)&&(e.internal.setUTCSeconds(e.internal.getUTCSeconds()+u),Date.prototype.setUTCSeconds.call(e,Date.prototype.getUTCSeconds.call(e)+u+l));let d=ei(e.timeZone,e),f=d>0?Math.floor(d):Math.ceil(d),p=-new Date(+e).getTimezoneOffset()-f,m=f!==n,h=p-s;if(m&&h){Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+h);let t=ei(e.timeZone,e),n=f-(t>0?Math.floor(t):Math.ceil(t));n&&(e.internal.setUTCMinutes(e.internal.getUTCMinutes()+n),Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+n))}}var ci=class e extends ri{static tz(t,...n){return n.length?new e(...n,t):new e(Date.now(),t)}toISOString(){let[e,t,n]=this.tzComponents(),r=`${e}${t}:${n}`;return this.internal.toISOString().slice(0,-1)+r}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){let[e,t,n,r]=this.internal.toUTCString().split(` `);return`${e?.slice(0,-1)} ${n} ${t} ${r}`}toTimeString(){let e=this.internal.toUTCString().split(` `)[4],[t,n,r]=this.tzComponents();return`${e} GMT${t}${n}${r} (${Zr(this.timeZone,this)})`}toLocaleString(e,t){return Date.prototype.toLocaleString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}toLocaleDateString(e,t){return Date.prototype.toLocaleDateString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}toLocaleTimeString(e,t){return Date.prototype.toLocaleTimeString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}tzComponents(){let e=this.getTimezoneOffset();return[e>0?`-`:`+`,String(Math.floor(Math.abs(e)/60)).padStart(2,`0`),String(Math.abs(e)%60).padStart(2,`0`)]}withTimeZone(t){return new e(+this,t)}[Symbol.for(`constructDateFrom`)](t){return new e(+new Date(t),this.timeZone)}},li=5,ui=4;function di(e,t){let n=t.startOfMonth(e),r=n.getDay()>0?n.getDay():7,i=t.addDays(e,-r+1),a=t.addDays(i,li*7-1);return t.getMonth(e)===t.getMonth(a)?li:ui}function fi(e,t){let n=t.startOfMonth(e),r=n.getDay();return r===1?n:r===0?t.addDays(n,-6):t.addDays(n,-1*(r-1))}function pi(e,t){let n=fi(e,t),r=di(e,t);return t.addDays(n,r*7-1)}var mi={...ir,labels:{labelDayButton:(e,t,n,r)=>{let i;i=r&&typeof r.format==`function`?r.format.bind(r):(e,t)=>jr(e,t,{locale:ir,...n});let a=i(e,`PPPP`);return t.today&&(a=`Today, ${a}`),t.selected&&(a=`${a}, selected`),a},labelMonthDropdown:`Choose the Month`,labelNext:`Go to the Next Month`,labelPrevious:`Go to the Previous Month`,labelWeekNumber:e=>`Week ${e}`,labelYearDropdown:`Choose the Year`,labelGrid:(e,t,n)=>{let r;return r=n&&typeof n.format==`function`?n.format.bind(n):(e,n)=>jr(e,n,{locale:ir,...t}),r(e,`LLLL yyyy`)},labelGridcell:(e,t,n,r)=>{let i;i=r&&typeof r.format==`function`?r.format.bind(r):(e,t)=>jr(e,t,{locale:ir,...n});let a=i(e,`PPPP`);return t?.today&&(a=`Today, ${a}`),a},labelNav:`Navigation bar`,labelWeekNumberHeader:`Week Number`,labelWeekday:(e,t,n)=>{let r;return r=n&&typeof n.format==`function`?n.format.bind(n):(e,n)=>jr(e,n,{locale:ir,...t}),r(e,`cccc`)}}},hi=class e{constructor(e,t){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?ci.tz(this.options.timeZone):new this.Date,this.newDate=(e,t,n)=>this.overrides?.newDate?this.overrides.newDate(e,t,n):this.options.timeZone?new ci(e,t,n,this.options.timeZone):new Date(e,t,n),this.addDays=(e,t)=>this.overrides?.addDays?this.overrides.addDays(e,t):_n(e,t),this.addMonths=(e,t)=>this.overrides?.addMonths?this.overrides.addMonths(e,t):vn(e,t),this.addWeeks=(e,t)=>this.overrides?.addWeeks?this.overrides.addWeeks(e,t):kn(e,t),this.addYears=(e,t)=>this.overrides?.addYears?this.overrides.addYears(e,t):An(e,t),this.differenceInCalendarDays=(e,t)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(e,t):Dn(e,t),this.differenceInCalendarMonths=(e,t)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(e,t):In(e,t),this.eachMonthOfInterval=e=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(e):zn(e),this.eachYearOfInterval=e=>{let t=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(e):Un(e),n=new Set(t.map(e=>this.getYear(e)));if(n.size===t.length)return t;let r=[];return n.forEach(e=>{r.push(new Date(e,0,1))}),r},this.endOfBroadcastWeek=e=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(e):pi(e,this),this.endOfISOWeek=e=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(e):Gn(e),this.endOfMonth=e=>this.overrides?.endOfMonth?this.overrides.endOfMonth(e):Ln(e),this.endOfWeek=(e,t)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(e,t):Wn(e,this.options),this.endOfYear=e=>this.overrides?.endOfYear?this.overrides.endOfYear(e):Vn(e),this.format=(e,t,n)=>{let r=this.overrides?.format?this.overrides.format(e,t,this.options):jr(e,t,this.options);return this.options.numerals&&this.options.numerals!==`latn`?this.replaceDigits(r):r},this.getISOWeek=e=>this.overrides?.getISOWeek?this.overrides.getISOWeek(e):or(e),this.getMonth=(e,t)=>this.overrides?.getMonth?this.overrides.getMonth(e,this.options):Pr(e,this.options),this.getYear=(e,t)=>this.overrides?.getYear?this.overrides.getYear(e,this.options):Fr(e,this.options),this.getWeek=(e,t)=>this.overrides?.getWeek?this.overrides.getWeek(e,this.options):lr(e,this.options),this.isAfter=(e,t)=>this.overrides?.isAfter?this.overrides.isAfter(e,t):Ir(e,t),this.isBefore=(e,t)=>this.overrides?.isBefore?this.overrides.isBefore(e,t):Lr(e,t),this.isDate=e=>this.overrides?.isDate?this.overrides.isDate(e):Pn(e),this.isSameDay=(e,t)=>this.overrides?.isSameDay?this.overrides.isSameDay(e,t):Nn(e,t),this.isSameMonth=(e,t)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(e,t):zr(e,t),this.isSameYear=(e,t)=>this.overrides?.isSameYear?this.overrides.isSameYear(e,t):Br(e,t),this.max=e=>this.overrides?.max?this.overrides.max(e):jn(e),this.min=e=>this.overrides?.min?this.overrides.min(e):Mn(e),this.setMonth=(e,t)=>this.overrides?.setMonth?this.overrides.setMonth(e,t):Hr(e,t),this.setYear=(e,t)=>this.overrides?.setYear?this.overrides.setYear(e,t):Ur(e,t),this.startOfBroadcastWeek=(e,t)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(e,this):fi(e,this),this.startOfDay=e=>this.overrides?.startOfDay?this.overrides.startOfDay(e):En(e),this.startOfISOWeek=e=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(e):Sn(e),this.startOfMonth=e=>this.overrides?.startOfMonth?this.overrides.startOfMonth(e):Bn(e),this.startOfWeek=(e,t)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(e,this.options):xn(e,this.options),this.startOfYear=e=>this.overrides?.startOfYear?this.overrides.startOfYear(e):Hn(e),this.options={locale:mi,...e},this.overrides=t}getDigitMap(){let{numerals:e=`latn`}=this.options,t=new Intl.NumberFormat(`en-US`,{numberingSystem:e}),n={};for(let e=0;e<10;e++)n[e.toString()]=t.format(e);return n}replaceDigits(e){let t=this.getDigitMap();return e.replace(/\d/g,e=>t[e]||e)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){let t=this.options.locale?.code;return t&&e.yearFirstLocales.has(t)?`year-first`:`month-first`}formatMonthYear(t){let{locale:n,timeZone:r,numerals:i}=this.options,a=n?.code;if(a&&e.yearFirstLocales.has(a))try{return new Intl.DateTimeFormat(a,{month:`long`,year:`numeric`,timeZone:r,numberingSystem:i}).format(t)}catch{}let o=this.getMonthYearOrder()===`year-first`?`y LLLL`:`LLLL y`;return this.format(t,o)}};hi.yearFirstLocales=new Set([`eu`,`hu`,`ja`,`ja-Hira`,`ja-JP`,`ko`,`ko-KR`,`lt`,`lt-LT`,`lv`,`lv-LV`,`mn`,`mn-MN`,`zh`,`zh-CN`,`zh-HK`,`zh-TW`]);var gi=new hi,_i=class{constructor(e,t,n=gi){this.date=e,this.displayMonth=t,this.outside=!!(t&&!n.isSameMonth(e,t)),this.dateLib=n,this.isoDate=n.format(e,`yyyy-MM-dd`),this.displayMonthId=n.format(t,`yyyy-MM`),this.dateMonthId=n.format(e,`yyyy-MM`)}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}},vi=class{constructor(e,t){this.date=e,this.weeks=t}},yi=class{constructor(e,t){this.days=t,this.weekNumber=e}};function bi(e){return F.createElement(`button`,{...e})}function xi(e){return F.createElement(`span`,{...e})}function Si(e){let{size:t=24,orientation:n=`left`,className:r}=e;return F.createElement(`svg`,{className:r,width:t,height:t,viewBox:`0 0 24 24`},n===`up`&&F.createElement(`polygon`,{points:`6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28`}),n===`down`&&F.createElement(`polygon`,{points:`6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72`}),n===`left`&&F.createElement(`polygon`,{points:`16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20`}),n===`right`&&F.createElement(`polygon`,{points:`8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20`}))}function Ci(e){let{day:t,modifiers:n,...r}=e;return F.createElement(`td`,{...r})}function wi(e){let{day:t,modifiers:n,...r}=e,i=F.useRef(null);return F.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),F.createElement(`button`,{ref:i,...r})}var z;(function(e){e.Root=`root`,e.Chevron=`chevron`,e.Day=`day`,e.DayButton=`day_button`,e.CaptionLabel=`caption_label`,e.Dropdowns=`dropdowns`,e.Dropdown=`dropdown`,e.DropdownRoot=`dropdown_root`,e.Footer=`footer`,e.MonthGrid=`month_grid`,e.MonthCaption=`month_caption`,e.MonthsDropdown=`months_dropdown`,e.Month=`month`,e.Months=`months`,e.Nav=`nav`,e.NextMonthButton=`button_next`,e.PreviousMonthButton=`button_previous`,e.Week=`week`,e.Weeks=`weeks`,e.Weekday=`weekday`,e.Weekdays=`weekdays`,e.WeekNumber=`week_number`,e.WeekNumberHeader=`week_number_header`,e.YearsDropdown=`years_dropdown`})(z||={});var Ti;(function(e){e.disabled=`disabled`,e.hidden=`hidden`,e.outside=`outside`,e.focused=`focused`,e.today=`today`})(Ti||={});var Ei;(function(e){e.range_end=`range_end`,e.range_middle=`range_middle`,e.range_start=`range_start`,e.selected=`selected`})(Ei||={});var Di;(function(e){e.weeks_before_enter=`weeks_before_enter`,e.weeks_before_exit=`weeks_before_exit`,e.weeks_after_enter=`weeks_after_enter`,e.weeks_after_exit=`weeks_after_exit`,e.caption_after_enter=`caption_after_enter`,e.caption_after_exit=`caption_after_exit`,e.caption_before_enter=`caption_before_enter`,e.caption_before_exit=`caption_before_exit`})(Di||={});function Oi(e){let{options:t,className:n,components:r,classNames:i,...a}=e,o=[i[z.Dropdown],n].join(` `),s=t?.find(({value:e})=>e===a.value);return F.createElement(`span`,{"data-disabled":a.disabled,className:i[z.DropdownRoot]},F.createElement(r.Select,{className:o,...a},t?.map(({value:e,label:t,disabled:n})=>F.createElement(r.Option,{key:e,value:e,disabled:n},t))),F.createElement(`span`,{className:i[z.CaptionLabel],"aria-hidden":!0},s?.label,F.createElement(r.Chevron,{orientation:`down`,size:18,className:i[z.Chevron]})))}function ki(e){return F.createElement(`div`,{...e})}function Ai(e){return F.createElement(`div`,{...e})}function ji(e){let{calendarMonth:t,displayIndex:n,...r}=e;return F.createElement(`div`,{...r},e.children)}function Mi(e){let{calendarMonth:t,displayIndex:n,...r}=e;return F.createElement(`div`,{...r})}function Ni(e){return F.createElement(`table`,{...e})}function Pi(e){return F.createElement(`div`,{...e})}var Fi=(0,F.createContext)(void 0);function Ii(){let e=(0,F.useContext)(Fi);if(e===void 0)throw Error(`useDayPicker() must be used within a custom component.`);return e}function Li(e){let{components:t}=Ii();return F.createElement(t.Dropdown,{...e})}function Ri(e){let{onPreviousClick:t,onNextClick:n,previousMonth:r,nextMonth:i,...a}=e,{components:o,classNames:s,labels:{labelPrevious:c,labelNext:l}}=Ii(),u=(0,F.useCallback)(e=>{i&&n?.(e)},[i,n]),d=(0,F.useCallback)(e=>{r&&t?.(e)},[r,t]);return F.createElement(`nav`,{...a},F.createElement(o.PreviousMonthButton,{type:`button`,className:s[z.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:d},F.createElement(o.Chevron,{disabled:r?void 0:!0,className:s[z.Chevron],orientation:`left`})),F.createElement(o.NextMonthButton,{type:`button`,className:s[z.NextMonthButton],tabIndex:i?void 0:-1,"aria-disabled":i?void 0:!0,"aria-label":l(i),onClick:u},F.createElement(o.Chevron,{disabled:i?void 0:!0,orientation:`right`,className:s[z.Chevron]})))}function zi(e){let{components:t}=Ii();return F.createElement(t.Button,{...e})}function Bi(e){return F.createElement(`option`,{...e})}function Vi(e){let{components:t}=Ii();return F.createElement(t.Button,{...e})}function Hi(e){let{rootRef:t,...n}=e;return F.createElement(`div`,{...n,ref:t})}function Ui(e){return F.createElement(`select`,{...e})}function Wi(e){let{week:t,...n}=e;return F.createElement(`tr`,{...n})}function Gi(e){return F.createElement(`th`,{...e})}function Ki(e){return F.createElement(`thead`,{"aria-hidden":!0},F.createElement(`tr`,{...e}))}function qi(e){let{week:t,...n}=e;return F.createElement(`th`,{...n})}function Ji(e){return F.createElement(`th`,{...e})}function Yi(e){return F.createElement(`tbody`,{...e})}function Xi(e){let{components:t}=Ii();return F.createElement(t.Dropdown,{...e})}var Zi=re({Button:()=>bi,CaptionLabel:()=>xi,Chevron:()=>Si,Day:()=>Ci,DayButton:()=>wi,Dropdown:()=>Oi,DropdownNav:()=>ki,Footer:()=>Ai,Month:()=>ji,MonthCaption:()=>Mi,MonthGrid:()=>Ni,Months:()=>Pi,MonthsDropdown:()=>Li,Nav:()=>Ri,NextMonthButton:()=>zi,Option:()=>Bi,PreviousMonthButton:()=>Vi,Root:()=>Hi,Select:()=>Ui,Week:()=>Wi,WeekNumber:()=>qi,WeekNumberHeader:()=>Ji,Weekday:()=>Gi,Weekdays:()=>Ki,Weeks:()=>Yi,YearsDropdown:()=>Xi});function Qi(e,t,n=!1,r=gi){let{from:i,to:a}=e,{differenceInCalendarDays:o,isSameDay:s}=r;return i&&a?(o(a,i)<0&&([i,a]=[a,i]),o(t,i)>=+!!n&&o(a,t)>=+!!n):!n&&a?s(a,t):!n&&i?s(i,t):!1}function $i(e){return!!(e&&typeof e==`object`&&`before`in e&&`after`in e)}function ea(e){return!!(e&&typeof e==`object`&&`from`in e)}function ta(e){return!!(e&&typeof e==`object`&&`after`in e)}function na(e){return!!(e&&typeof e==`object`&&`before`in e)}function ra(e){return!!(e&&typeof e==`object`&&`dayOfWeek`in e)}function ia(e,t){return Array.isArray(e)&&e.every(t.isDate)}function aa(e,t,n=gi){let r=Array.isArray(t)?t:[t],{isSameDay:i,differenceInCalendarDays:a,isAfter:o}=n;return r.some(t=>{if(typeof t==`boolean`)return t;if(n.isDate(t))return i(e,t);if(ia(t,n))return t.some(t=>i(e,t));if(ea(t))return Qi(t,e,!1,n);if(ra(t))return Array.isArray(t.dayOfWeek)?t.dayOfWeek.includes(e.getDay()):t.dayOfWeek===e.getDay();if($i(t)){let n=a(t.before,e),r=a(t.after,e),i=n>0,s=r<0;return o(t.before,t.after)?s&&i:i||s}return ta(t)?a(e,t.after)>0:na(t)?a(t.before,e)>0:typeof t==`function`?t(e):!1})}function oa(e,t,n,r,i){let{disabled:a,hidden:o,modifiers:s,showOutsideDays:c,broadcastCalendar:l,today:u=i.today()}=t,{isSameDay:d,isSameMonth:f,startOfMonth:p,isBefore:m,endOfMonth:h,isAfter:g}=i,_=n&&p(n),v=r&&h(r),y={[Ti.focused]:[],[Ti.outside]:[],[Ti.disabled]:[],[Ti.hidden]:[],[Ti.today]:[]},b={};for(let t of e){let{date:e,displayMonth:n}=t,r=!!(n&&!f(e,n)),p=!!(_&&m(e,_)),h=!!(v&&g(e,v)),x=!!(a&&aa(e,a,i)),S=!!(o&&aa(e,o,i))||p||h||!l&&!c&&r||l&&c===!1&&r,C=d(e,u);r&&y.outside.push(t),x&&y.disabled.push(t),S&&y.hidden.push(t),C&&y.today.push(t),s&&Object.keys(s).forEach(n=>{let r=s?.[n];r&&aa(e,r,i)&&(b[n]?b[n].push(t):b[n]=[t])})}return e=>{let t={[Ti.focused]:!1,[Ti.disabled]:!1,[Ti.hidden]:!1,[Ti.outside]:!1,[Ti.today]:!1},n={};for(let n in y)t[n]=y[n].some(t=>t===e);for(let t in b)n[t]=b[t].some(t=>t===e);return{...t,...n}}}function sa(e,t,n={}){return Object.entries(e).filter(([,e])=>e===!0).reduce((e,[r])=>(n[r]?e.push(n[r]):t[Ti[r]]?e.push(t[Ti[r]]):t[Ei[r]]&&e.push(t[Ei[r]]),e),[t[z.Day]])}function ca(e){return{...Zi,...e}}function la(e){let t={"data-mode":e.mode??void 0,"data-required":`required`in e?e.required:void 0,"data-multiple-months":e.numberOfMonths&&e.numberOfMonths>1||void 0,"data-week-numbers":e.showWeekNumber||void 0,"data-broadcast-calendar":e.broadcastCalendar||void 0,"data-nav-layout":e.navLayout||void 0};return Object.entries(e).forEach(([e,n])=>{e.startsWith(`data-`)&&(t[e]=n)}),t}function ua(){let e={};for(let t in z)e[z[t]]=`rdp-${z[t]}`;for(let t in Ti)e[Ti[t]]=`rdp-${Ti[t]}`;for(let t in Ei)e[Ei[t]]=`rdp-${Ei[t]}`;for(let t in Di)e[Di[t]]=`rdp-${Di[t]}`;return e}function da(e,t,n){return(n??new hi(t)).formatMonthYear(e)}var fa=da;function pa(e,t,n){return(n??new hi(t)).format(e,`d`)}function ma(e,t=gi){return t.format(e,`LLLL`)}function ha(e,t,n){return(n??new hi(t)).format(e,`cccccc`)}function ga(e,t=gi){return e<10?t.formatNumber(`0${e.toLocaleString()}`):t.formatNumber(`${e.toLocaleString()}`)}function _a(){return``}function va(e,t=gi){return t.format(e,`yyyy`)}var ya=va,ba=re({formatCaption:()=>da,formatDay:()=>pa,formatMonthCaption:()=>fa,formatMonthDropdown:()=>ma,formatWeekNumber:()=>ga,formatWeekNumberHeader:()=>_a,formatWeekdayName:()=>ha,formatYearCaption:()=>ya,formatYearDropdown:()=>va});function xa(e){return e?.formatMonthCaption&&!e.formatCaption&&(e.formatCaption=e.formatMonthCaption),e?.formatYearCaption&&!e.formatYearDropdown&&(e.formatYearDropdown=e.formatYearCaption),{...ba,...e}}function Sa(e,t,n,r){let i=(r??new hi(n)).format(e,`PPPP`);return t.today&&(i=`Today, ${i}`),t.selected&&(i=`${i}, selected`),i}var Ca=Sa;function wa(e,t,n){return(n??new hi(t)).formatMonthYear(e)}var Ta=wa;function Ea(e,t,n,r){let i=(r??new hi(n)).format(e,`PPPP`);return t?.today&&(i=`Today, ${i}`),i}function Da(e){return`Choose the Month`}function Oa(){return``}var ka=`Go to the Next Month`;function Aa(e,t){return ka}function ja(e){return`Go to the Previous Month`}function Ma(e,t,n){return(n??new hi(t)).format(e,`cccc`)}function Na(e,t){return`Week ${e}`}function Pa(e){return`Week Number`}function Fa(e){return`Choose the Year`}var Ia=re({labelCaption:()=>Ta,labelDay:()=>Ca,labelDayButton:()=>Sa,labelGrid:()=>wa,labelGridcell:()=>Ea,labelMonthDropdown:()=>Da,labelNav:()=>Oa,labelNext:()=>Aa,labelPrevious:()=>ja,labelWeekNumber:()=>Na,labelWeekNumberHeader:()=>Pa,labelWeekday:()=>Ma,labelYearDropdown:()=>Fa}),La=(e,t,n)=>t||(n?typeof n==`function`?n:(...e)=>n:e);function Ra(e,t){let n=t.locale?.labels??{};return{...Ia,...e??{},labelDayButton:La(Sa,e?.labelDayButton,n.labelDayButton),labelMonthDropdown:La(Da,e?.labelMonthDropdown,n.labelMonthDropdown),labelNext:La(Aa,e?.labelNext,n.labelNext),labelPrevious:La(ja,e?.labelPrevious,n.labelPrevious),labelWeekNumber:La(Na,e?.labelWeekNumber,n.labelWeekNumber),labelYearDropdown:La(Fa,e?.labelYearDropdown,n.labelYearDropdown),labelGrid:La(wa,e?.labelGrid,n.labelGrid),labelGridcell:La(Ea,e?.labelGridcell,n.labelGridcell),labelNav:La(Oa,e?.labelNav,n.labelNav),labelWeekNumberHeader:La(Pa,e?.labelWeekNumberHeader,n.labelWeekNumberHeader),labelWeekday:La(Ma,e?.labelWeekday,n.labelWeekday)}}function za(e,t,n,r,i){let{startOfMonth:a,startOfYear:o,endOfYear:s,eachMonthOfInterval:c,getMonth:l}=i;return c({start:o(e),end:s(e)}).map(e=>{let o=r.formatMonthDropdown(e,i);return{value:l(e),label:o,disabled:t&&ea(n)||!1}})}function Ba(e,t={},n={}){let r={...t?.[z.Day]};return Object.entries(e).filter(([,e])=>e===!0).forEach(([e])=>{r={...r,...n?.[e]}}),r}function Va(e,t,n,r){let i=r??e.today(),a=n?e.startOfBroadcastWeek(i,e):t?e.startOfISOWeek(i):e.startOfWeek(i),o=[];for(let t=0;t<7;t++){let n=e.addDays(a,t);o.push(n)}return o}function Ha(e,t,n,r,i=!1){if(!e||!t)return;let{startOfYear:a,endOfYear:o,eachYearOfInterval:s,getYear:c}=r,l=s({start:a(e),end:o(t)});return i&&l.reverse(),l.map(e=>{let t=n.formatYearDropdown(e,r);return{value:c(e),label:t,disabled:!1}})}function Ua(e,t={}){let{weekStartsOn:n,locale:r}=t,i=n??r?.options?.weekStartsOn??0,a=t=>{let n=typeof t==`number`||typeof t==`string`?new Date(t):t;return new ci(n.getFullYear(),n.getMonth(),n.getDate(),12,0,0,e)},o=e=>{let t=a(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)};return{today:()=>a(ci.tz(e)),newDate:(t,n,r)=>new ci(t,n,r,12,0,0,e),startOfDay:e=>a(e),startOfWeek:(e,t)=>{let n=a(e),r=t?.weekStartsOn??i,o=(n.getDay()-r+7)%7;return n.setDate(n.getDate()-o),n},startOfISOWeek:e=>{let t=a(e),n=(t.getDay()-1+7)%7;return t.setDate(t.getDate()-n),t},startOfMonth:e=>{let t=a(e);return t.setDate(1),t},startOfYear:e=>{let t=a(e);return t.setMonth(0,1),t},endOfWeek:(e,t)=>{let n=a(e),r=(((t?.weekStartsOn??i)+6)%7-n.getDay()+7)%7;return n.setDate(n.getDate()+r),n},endOfISOWeek:e=>{let t=a(e),n=(7-t.getDay())%7;return t.setDate(t.getDate()+n),t},endOfMonth:e=>{let t=a(e);return t.setMonth(t.getMonth()+1,0),t},endOfYear:e=>{let t=a(e);return t.setMonth(11,31),t},eachMonthOfInterval:t=>{let n=a(t.start),r=a(t.end),i=[],o=new ci(n.getFullYear(),n.getMonth(),1,12,0,0,e),s=r.getFullYear()*12+r.getMonth();for(;o.getFullYear()*12+o.getMonth()<=s;)i.push(new ci(o,e)),o.setMonth(o.getMonth()+1,1);return i},addDays:(e,t)=>{let n=a(e);return n.setDate(n.getDate()+t),n},addWeeks:(e,t)=>{let n=a(e);return n.setDate(n.getDate()+t*7),n},addMonths:(e,t)=>{let n=a(e);return n.setMonth(n.getMonth()+t),n},addYears:(e,t)=>{let n=a(e);return n.setFullYear(n.getFullYear()+t),n},eachYearOfInterval:t=>{let n=a(t.start),r=a(t.end),i=[],o=new ci(n.getFullYear(),0,1,12,0,0,e);for(;o.getFullYear()<=r.getFullYear();)i.push(new ci(o,e)),o.setFullYear(o.getFullYear()+1,0,1);return i},getWeek:(e,t)=>lr(o(e),{weekStartsOn:t?.weekStartsOn??i,firstWeekContainsDate:t?.firstWeekContainsDate??r?.options?.firstWeekContainsDate??1}),getISOWeek:e=>or(o(e)),differenceInCalendarDays:(e,t)=>Dn(o(e),o(t)),differenceInCalendarMonths:(e,t)=>In(o(e),o(t))}}var Wa=e=>e instanceof HTMLElement?e:null,Ga=e=>[...e.querySelectorAll(`[data-animated-month]`)??[]],Ka=e=>Wa(e.querySelector(`[data-animated-month]`)),qa=e=>Wa(e.querySelector(`[data-animated-caption]`)),Ja=e=>Wa(e.querySelector(`[data-animated-weeks]`)),Ya=e=>Wa(e.querySelector(`[data-animated-nav]`)),Xa=e=>Wa(e.querySelector(`[data-animated-weekdays]`));function Za(e,t,{classNames:n,months:r,focused:i,dateLib:a}){let o=(0,F.useRef)(null),s=(0,F.useRef)(r),c=(0,F.useRef)(!1);(0,F.useLayoutEffect)(()=>{let l=s.current;if(s.current=r,!t||!e.current||!(e.current instanceof HTMLElement)||r.length===0||l.length===0||r.length!==l.length)return;let u=a.isSameMonth(r[0].date,l[0].date),d=a.isAfter(r[0].date,l[0].date),f=d?n[Di.caption_after_enter]:n[Di.caption_before_enter],p=d?n[Di.weeks_after_enter]:n[Di.weeks_before_enter],m=o.current,h=e.current.cloneNode(!0);if(h instanceof HTMLElement?(Ga(h).forEach(e=>{if(!(e instanceof HTMLElement))return;let t=Ka(e);t&&e.contains(t)&&e.removeChild(t);let n=qa(e);n&&n.classList.remove(f);let r=Ja(e);r&&r.classList.remove(p)}),o.current=h):o.current=null,c.current||u||i)return;let g=m instanceof HTMLElement?Ga(m):[],_=Ga(e.current);if(_?.every(e=>e instanceof HTMLElement)&&g&&g.every(e=>e instanceof HTMLElement)){c.current=!0;let t=[];e.current.style.isolation=`isolate`;let r=Ya(e.current);r&&(r.style.zIndex=`1`),_.forEach((i,a)=>{let o=g[a];if(!o)return;i.style.position=`relative`,i.style.overflow=`hidden`;let s=qa(i);s&&s.classList.add(f);let l=Ja(i);l&&l.classList.add(p);let u=()=>{c.current=!1,e.current&&(e.current.style.isolation=``),r&&(r.style.zIndex=``),s&&s.classList.remove(f),l&&l.classList.remove(p),i.style.position=``,i.style.overflow=``,i.contains(o)&&i.removeChild(o)};t.push(u),o.style.pointerEvents=`none`,o.style.position=`absolute`,o.style.overflow=`hidden`,o.setAttribute(`aria-hidden`,`true`);let m=Xa(o);m&&(m.style.opacity=`0`);let h=qa(o);h&&(h.classList.add(d?n[Di.caption_before_exit]:n[Di.caption_after_exit]),h.addEventListener(`animationend`,u));let _=Ja(o);_&&_.classList.add(d?n[Di.weeks_before_exit]:n[Di.weeks_after_exit]),i.insertBefore(o,i.firstChild)})}})}function Qa(e,t,n,r){let i=e[0],a=e[e.length-1],{ISOWeek:o,fixedWeeks:s,broadcastCalendar:c}=n??{},{addDays:l,differenceInCalendarDays:u,differenceInCalendarMonths:d,endOfBroadcastWeek:f,endOfISOWeek:p,endOfMonth:m,endOfWeek:h,isAfter:g,startOfBroadcastWeek:_,startOfISOWeek:v,startOfWeek:y}=r,b=c?_(i,r):o?v(i):y(i),x=c?f(a):o?p(m(a)):h(m(a)),S=t&&(c?f(t):o?p(t):h(t)),C=u(S&&g(x,S)?S:x,b),w=d(a,i)+1,T=[];for(let e=0;e<=C;e++){let t=l(b,e);T.push(t)}let E=(c?35:42)*w;if(s&&T.length{let r=n.weeks.reduce((e,t)=>e.concat(t.days.slice()),t.slice());return e.concat(r.slice())},t.slice())}function eo(e,t,n,r){let{numberOfMonths:i=1}=n,a=[];for(let n=0;nt)break;a.push(i)}return a}function to(e,t,n,r){let{month:i,defaultMonth:a,today:o=r.today(),numberOfMonths:s=1}=e,c=i||a||o,{differenceInCalendarMonths:l,addMonths:u,startOfMonth:d}=r;return n&&l(n,c){let h=n.broadcastCalendar?d(m,r):n.ISOWeek?f(m):p(m),g=n.broadcastCalendar?a(m):n.ISOWeek?o(s(m)):c(s(m)),_=t.filter(e=>e>=h&&e<=g),v=n.broadcastCalendar?35:42;if(n.fixedWeeks&&_.length{let t=v-_.length;return e>g&&e<=i(g,t)});_.push(...e)}let y=new vi(m,_.reduce((e,t)=>{let i=n.ISOWeek?l(t):u(t),a=e.find(e=>e.weekNumber===i),o=new _i(t,m,r);return a?a.days.push(o):e.push(new yi(i,[o])),e},[]));return e.push(y),e},[]);return n.reverseMonths?m.reverse():m}function ro(e,t){let{startMonth:n,endMonth:r}=e,{startOfYear:i,startOfDay:a,startOfMonth:o,endOfMonth:s,addYears:c,endOfYear:l,newDate:u,today:d}=t,{fromYear:f,toYear:p,fromMonth:m,toMonth:h}=e;!n&&m&&(n=m),!n&&f&&(n=t.newDate(f,0,1)),!r&&h&&(r=h),!r&&p&&(r=u(p,11,31));let g=e.captionLayout===`dropdown`||e.captionLayout===`dropdown-years`;return n?n=o(n):f?n=u(f,0,1):!n&&g&&(n=i(c(e.today??d(),-100))),r?r=s(r):p?r=u(p,11,31):!r&&g&&(r=l(e.today??d())),[n&&a(n),r&&a(r)]}function io(e,t,n,r){if(n.disableNavigation)return;let{pagedNavigation:i,numberOfMonths:a=1}=n,{startOfMonth:o,addMonths:s,differenceInCalendarMonths:c}=r,l=i?a:1,u=o(e);if(!t||!(c(t,e)e.concat(t.weeks.slice()),[].slice())}function so(e,t){let[n,r]=(0,F.useState)(e);return[t===void 0?n:t,r]}function co(e,t){let[n,r]=ro(e,t),{startOfMonth:i,endOfMonth:a}=t,o=to(e,n,r,t),[s,c]=so(o,e.month?o:void 0);(0,F.useEffect)(()=>{c(to(e,n,r,t))},[e.timeZone]);let{months:l,weeks:u,days:d,previousMonth:f,nextMonth:p}=(0,F.useMemo)(()=>{let i=eo(s,r,{numberOfMonths:e.numberOfMonths},t),o=no(i,Qa(i,e.endMonth?a(e.endMonth):void 0,{ISOWeek:e.ISOWeek,fixedWeeks:e.fixedWeeks,broadcastCalendar:e.broadcastCalendar},t),{broadcastCalendar:e.broadcastCalendar,fixedWeeks:e.fixedWeeks,ISOWeek:e.ISOWeek,reverseMonths:e.reverseMonths},t);return{months:o,weeks:oo(o),days:$a(o),previousMonth:ao(s,n,e,t),nextMonth:io(s,r,e,t)}},[t,s.getTime(),r?.getTime(),n?.getTime(),e.disableNavigation,e.broadcastCalendar,e.endMonth?.getTime(),e.fixedWeeks,e.ISOWeek,e.numberOfMonths,e.pagedNavigation,e.reverseMonths]),{disableNavigation:m,onMonthChange:h}=e,g=e=>u.some(t=>t.days.some(t=>t.isEqualTo(e))),_=e=>{if(m)return;let t=i(e);n&&ti(r)&&(t=i(r)),c(t),h?.(t)};return{months:l,weeks:u,days:d,navStart:n,navEnd:r,previousMonth:f,nextMonth:p,goToMonth:_,goToDay:e=>{g(e)||_(e.date)}}}var lo;(function(e){e[e.Today=0]=`Today`,e[e.Selected=1]=`Selected`,e[e.LastFocused=2]=`LastFocused`,e[e.FocusedModifier=3]=`FocusedModifier`})(lo||={});function uo(e){return!e[Ti.disabled]&&!e[Ti.hidden]&&!e[Ti.outside]}function fo(e,t,n,r){let i,a=-1;for(let o of e){let e=t(o);uo(e)&&(e[Ti.focused]&&auo(t(e))),i}function po(e,t,n,r,i,a,o){let{ISOWeek:s,broadcastCalendar:c}=a,{addDays:l,addMonths:u,addWeeks:d,addYears:f,endOfBroadcastWeek:p,endOfISOWeek:m,endOfWeek:h,max:g,min:_,startOfBroadcastWeek:v,startOfISOWeek:y,startOfWeek:b}=o,x={day:l,week:d,month:u,year:f,startOfWeek:e=>c?v(e,o):s?y(e):b(e),endOfWeek:e=>c?p(e):s?m(e):h(e)}[e](n,t===`after`?1:-1);return t===`before`&&r?x=g([r,x]):t===`after`&&i&&(x=_([i,x])),x}function mo(e,t,n,r,i,a,o,s=0){if(s>365)return;let c=po(e,t,n.date,r,i,a,o),l=!!(a.disabled&&aa(c,a.disabled,o)),u=!!(a.hidden&&aa(c,a.hidden,o)),d=new _i(c,c,o);return!l&&!u?d:mo(e,t,d,r,i,a,o,s+1)}function ho(e,t,n,r,i){let{autoFocus:a}=e,[o,s]=(0,F.useState)(),c=fo(t.days,n,r||(()=>!1),o),[l,u]=(0,F.useState)(a?c:void 0);return{isFocusTarget:e=>!!c?.isEqualTo(e),setFocused:u,focused:l,blur:()=>{s(l),u(void 0)},moveFocus:(n,r)=>{if(!l)return;let a=mo(n,r,l,t.navStart,t.navEnd,e,i);a&&(e.disableNavigation&&!t.days.some(e=>e.isEqualTo(a))||(t.goToDay(a),u(a)))}}}function go(e,t){let{selected:n,required:r,onSelect:i}=e,[a,o]=so(n,i?n:void 0),s=i?n:a,{isSameDay:c}=t,l=e=>s?.some(t=>c(t,e))??!1,{min:u,max:d}=e;return{selected:s,select:(e,t,n)=>{let a=[...s??[]];if(l(e)){if(s?.length===u||r&&s?.length===1)return;a=s?.filter(t=>!c(t,e))}else a=s?.length===d?[e]:[...a,e];return i||o(a),i?.(a,e,t,n),a},isSelected:l}}function _o(e,t,n=0,r=0,i=!1,a=gi){let{from:o,to:s}=t||{},{isSameDay:c,isAfter:l,isBefore:u}=a,d;if(!o&&!s)d={from:e,to:n>0?void 0:e};else if(o&&!s)d=c(o,e)?n===0?{from:o,to:e}:i?{from:o,to:void 0}:void 0:u(e,o)?{from:e,to:o}:{from:o,to:e};else if(o&&s)if(c(o,e)&&c(s,e))d=i?{from:o,to:s}:void 0;else if(c(o,e))d={from:o,to:n>0?void 0:e};else if(c(s,e))d={from:e,to:n>0?void 0:e};else if(u(e,o))d={from:e,to:s};else if(l(e,o))d={from:o,to:e};else if(l(e,s))d={from:o,to:e};else throw Error(`Invalid range`);if(d?.from&&d?.to){let t=a.differenceInCalendarDays(d.to,d.from);(r>0&&t>r||n>1&&ttypeof e!=`function`).some(t=>typeof t==`boolean`?t:n.isDate(t)?Qi(e,t,!1,n):ia(t,n)?t.some(t=>Qi(e,t,!1,n)):ea(t)?t.from&&t.to?yo(e,{from:t.from,to:t.to},n):!1:ra(t)?vo(e,t.dayOfWeek,n):$i(t)?n.isAfter(t.before,t.after)?yo(e,{from:n.addDays(t.after,1),to:n.addDays(t.before,-1)},n):aa(e.from,t,n)||aa(e.to,t,n):ta(t)||na(t)?aa(e.from,t,n)||aa(e.to,t,n):!1))return!0;let i=r.filter(e=>typeof e==`function`);if(i.length){let t=e.from,r=n.differenceInCalendarDays(e.to,e.from);for(let e=0;e<=r;e++){if(i.some(e=>e(t)))return!0;t=n.addDays(t,1)}}return!1}function xo(e,t){let{disabled:n,excludeDisabled:r,resetOnSelect:i,selected:a,required:o,onSelect:s}=e,[c,l]=so(a,s?a:void 0),u=s?a:c;return{selected:u,select:(a,c,d)=>{let{min:f,max:p}=e,m;if(a){let e=u?.from,n=u?.to,r=!!e&&!!n,s=!!e&&!!n&&t.isSameDay(e,n)&&t.isSameDay(a,e);m=i&&(r||!u?.from)?!o&&s?void 0:{from:a,to:void 0}:_o(a,u,f,p,o,t)}return r&&n&&m?.from&&m.to&&bo({from:m.from,to:m.to},n,t)&&(m.from=a,m.to=void 0),s||l(m),s?.(m,a,c,d),m},isSelected:e=>u&&Qi(u,e,!1,t)}}function So(e,t){let{selected:n,required:r,onSelect:i}=e,[a,o]=so(n,i?n:void 0),s=i?n:a,{isSameDay:c}=t;return{selected:s,select:(e,t,n)=>{let a=e;return!r&&s&&s&&c(e,s)&&(a=void 0),i||o(a),i?.(a,e,t,n),a},isSelected:e=>s?c(s,e):!1}}function Co(e,t){let n=So(e,t),r=go(e,t),i=xo(e,t);switch(e.mode){case`single`:return n;case`multiple`:return r;case`range`:return i;default:return}}function wo(e,t){return e instanceof ci&&e.timeZone===t?e:new ci(e,t)}function To(e,t,n){if(!n)return wo(e,t);let r=wo(e,t),i=new ci(r.getFullYear(),r.getMonth(),r.getDate(),12,0,0,t);return new Date(i.getTime())}function Eo(e,t,n){return typeof e==`boolean`||typeof e==`function`?e:e instanceof Date?To(e,t,n):Array.isArray(e)?e.map(e=>e instanceof Date?To(e,t,n):e):ea(e)?{...e,from:e.from?wo(e.from,t):e.from,to:e.to?wo(e.to,t):e.to}:$i(e)?{before:To(e.before,t,n),after:To(e.after,t,n)}:ta(e)?{after:To(e.after,t,n)}:na(e)?{before:To(e.before,t,n)}:e}function Do(e,t,n){return e&&(Array.isArray(e)?e.map(e=>Eo(e,t,n)):Eo(e,t,n))}function Oo(e){let t=e,n=t.timeZone;if(n&&(t={...e,timeZone:n},t.today&&=wo(t.today,n),t.month&&=wo(t.month,n),t.defaultMonth&&=wo(t.defaultMonth,n),t.startMonth&&=wo(t.startMonth,n),t.endMonth&&=wo(t.endMonth,n),t.mode===`single`&&t.selected?t.selected=wo(t.selected,n):t.mode===`multiple`&&t.selected?t.selected=t.selected?.map(e=>wo(e,n)):t.mode===`range`&&t.selected&&(t.selected={from:t.selected.from?wo(t.selected.from,n):t.selected.from,to:t.selected.to?wo(t.selected.to,n):t.selected.to}),t.disabled!==void 0&&(t.disabled=Do(t.disabled,n)),t.hidden!==void 0&&(t.hidden=Do(t.hidden,n)),t.modifiers)){let e={};Object.keys(t.modifiers).forEach(r=>{e[r]=Do(t.modifiers?.[r],n)}),t.modifiers=e}let{components:r,formatters:i,labels:a,dateLib:o,locale:s,classNames:c}=(0,F.useMemo)(()=>{let e={...mi,...t.locale},n=t.broadcastCalendar?1:t.weekStartsOn,r=t.noonSafe&&t.timeZone?Ua(t.timeZone,{weekStartsOn:n,locale:e}):void 0,i=t.dateLib&&r?{...r,...t.dateLib}:t.dateLib??r,a=new hi({locale:e,weekStartsOn:n,firstWeekContainsDate:t.firstWeekContainsDate,useAdditionalWeekYearTokens:t.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:t.useAdditionalDayOfYearTokens,timeZone:t.timeZone,numerals:t.numerals},i);return{dateLib:a,components:ca(t.components),formatters:xa(t.formatters),labels:Ra(t.labels,a.options),locale:e,classNames:{...ua(),...t.classNames}}},[t.locale,t.broadcastCalendar,t.weekStartsOn,t.firstWeekContainsDate,t.useAdditionalWeekYearTokens,t.useAdditionalDayOfYearTokens,t.timeZone,t.numerals,t.dateLib,t.noonSafe,t.components,t.formatters,t.labels,t.classNames]);t.today||(t={...t,today:o.today()});let{captionLayout:l,mode:u,navLayout:d,numberOfMonths:f=1,onDayBlur:p,onDayClick:m,onDayFocus:h,onDayKeyDown:g,onDayMouseEnter:_,onDayMouseLeave:v,onNextClick:y,onPrevClick:b,showWeekNumber:x,styles:S}=t,{formatCaption:C,formatDay:w,formatMonthDropdown:T,formatWeekNumber:E,formatWeekNumberHeader:D,formatWeekdayName:O,formatYearDropdown:k}=i,ee=co(t,o),{days:te,months:A,navStart:j,navEnd:ne,previousMonth:re,nextMonth:ie,goToMonth:ae}=ee,oe=oa(te,t,j,ne,o),{isSelected:se,select:ce,selected:le}=Co(t,o)??{},{blur:ue,focused:de,isFocusTarget:fe,moveFocus:pe,setFocused:M}=ho(t,ee,oe,se??(()=>!1),o),{labelDayButton:me,labelGridcell:he,labelGrid:ge,labelMonthDropdown:_e,labelNav:ve,labelPrevious:ye,labelNext:be,labelWeekday:xe,labelWeekNumber:Se,labelWeekNumberHeader:Ce,labelYearDropdown:we}=a,Te=(0,F.useMemo)(()=>Va(o,t.ISOWeek,t.broadcastCalendar,t.today),[o,t.ISOWeek,t.broadcastCalendar,t.today]),Ee=u!==void 0||m!==void 0,De=(0,F.useCallback)(()=>{re&&(ae(re),b?.(re))},[re,ae,b]),Oe=(0,F.useCallback)(()=>{ie&&(ae(ie),y?.(ie))},[ae,ie,y]),ke=(0,F.useCallback)((e,t)=>n=>{n.preventDefault(),n.stopPropagation(),M(e),!t.disabled&&(ce?.(e.date,t,n),m?.(e.date,t,n))},[ce,m,M]),Ae=(0,F.useCallback)((e,t)=>n=>{M(e),h?.(e.date,t,n)},[h,M]),je=(0,F.useCallback)((e,t)=>n=>{ue(),p?.(e.date,t,n)},[ue,p]),Me=(0,F.useCallback)((e,n)=>r=>{let i={ArrowLeft:[r.shiftKey?`month`:`day`,t.dir===`rtl`?`after`:`before`],ArrowRight:[r.shiftKey?`month`:`day`,t.dir===`rtl`?`before`:`after`],ArrowDown:[r.shiftKey?`year`:`week`,`after`],ArrowUp:[r.shiftKey?`year`:`week`,`before`],PageUp:[r.shiftKey?`year`:`month`,`before`],PageDown:[r.shiftKey?`year`:`month`,`after`],Home:[`startOfWeek`,`before`],End:[`endOfWeek`,`after`]};if(i[r.key]){r.preventDefault(),r.stopPropagation();let[e,t]=i[r.key];pe(e,t)}g?.(e.date,n,r)},[pe,g,t.dir]),Ne=(0,F.useCallback)((e,t)=>n=>{_?.(e.date,t,n)},[_]),Pe=(0,F.useCallback)((e,t)=>n=>{v?.(e.date,t,n)},[v]),Fe=(0,F.useCallback)(e=>t=>{let n=Number(t.target.value);ae(o.setMonth(o.startOfMonth(e),n))},[o,ae]),Ie=(0,F.useCallback)(e=>t=>{let n=Number(t.target.value);ae(o.setYear(o.startOfMonth(e),n))},[o,ae]),{className:Le,style:Re}=(0,F.useMemo)(()=>({className:[c[z.Root],t.className].filter(Boolean).join(` `),style:{...S?.[z.Root],...t.style}}),[c,t.className,t.style,S]),ze=la(t),Be=(0,F.useRef)(null);Za(Be,!!t.animate,{classNames:c,months:A,focused:de,dateLib:o});let Ve={dayPickerProps:t,selected:le,select:ce,isSelected:se,months:A,nextMonth:ie,previousMonth:re,goToMonth:ae,getModifiers:oe,components:r,classNames:c,styles:S,labels:a,formatters:i};return F.createElement(Fi.Provider,{value:Ve},F.createElement(r.Root,{rootRef:t.animate?Be:void 0,className:Le,style:Re,dir:t.dir,id:t.id,lang:t.lang??s.code,nonce:t.nonce,title:t.title,role:t.role,"aria-label":t[`aria-label`],"aria-labelledby":t[`aria-labelledby`],...ze},F.createElement(r.Months,{className:c[z.Months],style:S?.[z.Months]},!t.hideNavigation&&!d&&F.createElement(r.Nav,{"data-animated-nav":t.animate?`true`:void 0,className:c[z.Nav],style:S?.[z.Nav],"aria-label":ve(),onPreviousClick:De,onNextClick:Oe,previousMonth:re,nextMonth:ie}),A.map((e,n)=>F.createElement(r.Month,{"data-animated-month":t.animate?`true`:void 0,className:c[z.Month],style:S?.[z.Month],key:n,displayIndex:n,calendarMonth:e},d===`around`&&!t.hideNavigation&&n===0&&F.createElement(r.PreviousMonthButton,{type:`button`,className:c[z.PreviousMonthButton],tabIndex:re?void 0:-1,"aria-disabled":re?void 0:!0,"aria-label":ye(re),onClick:De,"data-animated-button":t.animate?`true`:void 0},F.createElement(r.Chevron,{disabled:re?void 0:!0,className:c[z.Chevron],orientation:t.dir===`rtl`?`right`:`left`})),F.createElement(r.MonthCaption,{"data-animated-caption":t.animate?`true`:void 0,className:c[z.MonthCaption],style:S?.[z.MonthCaption],calendarMonth:e,displayIndex:n},l?.startsWith(`dropdown`)?F.createElement(r.DropdownNav,{className:c[z.Dropdowns],style:S?.[z.Dropdowns]},(()=>{let n=l===`dropdown`||l===`dropdown-months`?F.createElement(r.MonthsDropdown,{key:`month`,className:c[z.MonthsDropdown],"aria-label":_e(),classNames:c,components:r,disabled:!!t.disableNavigation,onChange:Fe(e.date),options:za(e.date,j,ne,i,o),style:S?.[z.Dropdown],value:o.getMonth(e.date)}):F.createElement(`span`,{key:`month`},T(e.date,o)),a=l===`dropdown`||l===`dropdown-years`?F.createElement(r.YearsDropdown,{key:`year`,className:c[z.YearsDropdown],"aria-label":we(o.options),classNames:c,components:r,disabled:!!t.disableNavigation,onChange:Ie(e.date),options:Ha(j,ne,i,o,!!t.reverseYears),style:S?.[z.Dropdown],value:o.getYear(e.date)}):F.createElement(`span`,{key:`year`},k(e.date,o));return o.getMonthYearOrder()===`year-first`?[a,n]:[n,a]})(),F.createElement(`span`,{role:`status`,"aria-live":`polite`,style:{border:0,clip:`rect(0 0 0 0)`,height:`1px`,margin:`-1px`,overflow:`hidden`,padding:0,position:`absolute`,width:`1px`,whiteSpace:`nowrap`,wordWrap:`normal`}},C(e.date,o.options,o))):F.createElement(r.CaptionLabel,{className:c[z.CaptionLabel],role:`status`,"aria-live":`polite`},C(e.date,o.options,o))),d===`around`&&!t.hideNavigation&&n===f-1&&F.createElement(r.NextMonthButton,{type:`button`,className:c[z.NextMonthButton],tabIndex:ie?void 0:-1,"aria-disabled":ie?void 0:!0,"aria-label":be(ie),onClick:Oe,"data-animated-button":t.animate?`true`:void 0},F.createElement(r.Chevron,{disabled:ie?void 0:!0,className:c[z.Chevron],orientation:t.dir===`rtl`?`left`:`right`})),n===f-1&&d===`after`&&!t.hideNavigation&&F.createElement(r.Nav,{"data-animated-nav":t.animate?`true`:void 0,className:c[z.Nav],style:S?.[z.Nav],"aria-label":ve(),onPreviousClick:De,onNextClick:Oe,previousMonth:re,nextMonth:ie}),F.createElement(r.MonthGrid,{role:`grid`,"aria-multiselectable":u===`multiple`||u===`range`,"aria-label":ge(e.date,o.options,o)||void 0,className:c[z.MonthGrid],style:S?.[z.MonthGrid]},!t.hideWeekdays&&F.createElement(r.Weekdays,{"data-animated-weekdays":t.animate?`true`:void 0,className:c[z.Weekdays],style:S?.[z.Weekdays]},x&&F.createElement(r.WeekNumberHeader,{"aria-label":Ce(o.options),className:c[z.WeekNumberHeader],style:S?.[z.WeekNumberHeader],scope:`col`},D()),Te.map(e=>F.createElement(r.Weekday,{"aria-label":xe(e,o.options,o),className:c[z.Weekday],key:String(e),style:S?.[z.Weekday],scope:`col`},O(e,o.options,o)))),F.createElement(r.Weeks,{"data-animated-weeks":t.animate?`true`:void 0,className:c[z.Weeks],style:S?.[z.Weeks]},e.weeks.map(e=>F.createElement(r.Week,{className:c[z.Week],key:e.weekNumber,style:S?.[z.Week],week:e},x&&F.createElement(r.WeekNumber,{week:e,style:S?.[z.WeekNumber],"aria-label":Se(e.weekNumber,{locale:s}),className:c[z.WeekNumber],scope:`row`,role:`rowheader`},E(e.weekNumber,o)),e.days.map(e=>{let{date:n}=e,i=oe(e);if(i[Ti.focused]=!i.hidden&&!!de?.isEqualTo(e),i[Ei.selected]=se?.(n)||i.selected,ea(le)){let{from:e,to:t}=le;i[Ei.range_start]=!!(e&&t&&o.isSameDay(n,e)),i[Ei.range_end]=!!(e&&t&&o.isSameDay(n,t)),i[Ei.range_middle]=Qi(le,n,!0,o)}let a=Ba(i,S,t.modifiersStyles),s=sa(i,c,t.modifiersClassNames),l=!Ee&&!i.hidden?he(n,i,o.options,o):void 0;return F.createElement(r.Day,{key:`${e.isoDate}_${e.displayMonthId}`,day:e,modifiers:i,className:s.join(` `),style:a,role:`gridcell`,"aria-selected":i.selected||void 0,"aria-label":l,"data-day":e.isoDate,"data-month":e.outside?e.dateMonthId:void 0,"data-selected":i.selected||void 0,"data-disabled":i.disabled||void 0,"data-hidden":i.hidden||void 0,"data-outside":e.outside||void 0,"data-focused":i.focused||void 0,"data-today":i.today||void 0},!i.hidden&&Ee?F.createElement(r.DayButton,{className:c[z.DayButton],style:S?.[z.DayButton],type:`button`,day:e,modifiers:i,disabled:!i.focused&&i.disabled||void 0,"aria-disabled":i.focused&&i.disabled||void 0,tabIndex:fe(e)?0:-1,"aria-label":me(n,i,o.options,o),onClick:ke(e,i),onBlur:je(e,i),onFocus:Ae(e,i),onKeyDown:Me(e,i),onMouseEnter:Ne(e,i),onMouseLeave:Pe(e,i)},w(n,o.options,o)):!i.hidden&&w(e.date,o.options,o))})))))))),t.footer&&F.createElement(r.Footer,{className:c[z.Footer],style:S?.[z.Footer],role:`status`,"aria-live":`polite`},t.footer)))}function ko({className:e,classNames:t,showOutsideDays:n=!0,captionLayout:r=`label`,buttonVariant:i=`ghost`,formatters:a,components:o,...s}){let c=ua();return(0,I.jsx)(Oo,{captionLayout:r,className:N(`group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent`,String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,e),classNames:{root:N(`w-fit`,c.root),months:N(`relative flex flex-col gap-4 md:flex-row`,c.months),month:N(`flex w-full flex-col gap-4`,c.month),nav:N(`absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1`,c.nav),button_previous:N(Ye({variant:i}),`size-(--cell-size) select-none p-0 aria-disabled:opacity-50`,c.button_previous),button_next:N(Ye({variant:i}),`size-(--cell-size) select-none p-0 aria-disabled:opacity-50`,c.button_next),month_caption:N(`flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)`,c.month_caption),dropdowns:N(`flex h-(--cell-size) w-full items-center justify-center gap-1.5 font-medium text-sm`,c.dropdowns),dropdown_root:N(`relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50`,c.dropdown_root),dropdown:N(`absolute inset-0 bg-popover opacity-0`,c.dropdown),caption_label:N(`select-none font-medium`,r===`label`?`text-sm`:`flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground`,c.caption_label),table:`w-full border-collapse`,weekdays:N(`flex`,c.weekdays),weekday:N(`flex-1 select-none rounded-md font-normal text-[0.8rem] text-muted-foreground`,c.weekday),week:N(`mt-2 flex w-full`,c.week),week_number_header:N(`w-(--cell-size) select-none`,c.week_number_header),week_number:N(`select-none text-[0.8rem] text-muted-foreground`,c.week_number),day:N(`group/day relative aspect-square h-full w-full select-none p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md`,s.showWeekNumber?`[&:nth-child(2)[data-selected=true]_button]:rounded-l-md`:`[&:first-child[data-selected=true]_button]:rounded-l-md`,c.day),range_start:N(`rounded-l-md bg-accent`,c.range_start),range_middle:N(`rounded-none`,c.range_middle),range_end:N(`rounded-r-md bg-accent`,c.range_end),today:N(`rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none`,c.today),outside:N(`text-muted-foreground aria-selected:text-muted-foreground`,c.outside),disabled:N(`text-muted-foreground opacity-50`,c.disabled),hidden:N(`invisible`,c.hidden),...t},components:{Root:({className:e,rootRef:t,...n})=>(0,I.jsx)(`div`,{className:N(e),"data-slot":`calendar`,ref:t,...n}),Chevron:({className:e,orientation:t,...n})=>t===`left`?(0,I.jsx)(bt,{className:N(`size-4`,e),...n}):t===`right`?(0,I.jsx)(Ue,{className:N(`size-4`,e),...n}):(0,I.jsx)(Ot,{className:N(`size-4`,e),...n}),DayButton:Ao,WeekNumber:({children:e,...t})=>(0,I.jsx)(`td`,{...t,children:(0,I.jsx)(`div`,{className:`flex size-(--cell-size) items-center justify-center text-center`,children:e})}),...o},formatters:{formatMonthDropdown:e=>e.toLocaleString(`default`,{month:`short`}),...a},showOutsideDays:n,...s})}function Ao({className:e,day:t,modifiers:n,...r}){let i=ua(),a=F.useRef(null);return F.useEffect(()=>{n.focused&&a.current?.focus()},[n.focused]),(0,I.jsx)(Ze,{className:N(`flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-start=true]:rounded-l-md data-[range-end=true]:bg-primary data-[range-middle=true]:bg-accent data-[range-start=true]:bg-primary data-[selected-single=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:text-accent-foreground data-[range-start=true]:text-primary-foreground data-[selected-single=true]:text-primary-foreground group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70`,i.day,e),"data-day":t.date.toLocaleDateString(),"data-range-end":n.range_end,"data-range-middle":n.range_middle,"data-range-start":n.range_start,"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,ref:a,size:`icon`,variant:`ghost`,...r})}function jo({selected:n,onSelect:r}){let i=t()===`zh-CN`?Xr:ir,a=new Date,o=[{label:Te(),range:{from:a,to:a}},{label:ve(),range:{from:Vr(a,1),to:Vr(a,1)}},{label:ke(),range:{from:Vr(a,6),to:a}},{label:se(),range:{from:Vr(a,29),to:a}},{label:e(),range:{from:Bn(a),to:a}},{label:x(),range:{from:Bn(Wr(a,1)),to:Ln(Wr(a,1))}}],s;return n?.from&&n?.to?s=`${jr(n.from,`PP`,{locale:i})} – ${jr(n.to,`PP`,{locale:i})}`:n?.from&&(s=jr(n.from,`PP`,{locale:i})),(0,I.jsxs)(ht,{children:[(0,I.jsx)(mt,{asChild:!0,children:(0,I.jsxs)(Ze,{className:`w-auto justify-start text-start font-normal data-[empty=true]:text-muted-foreground`,"data-empty":!s,size:`sm`,variant:`outline`,children:[s??(0,I.jsx)(`span`,{children:fe()}),(0,I.jsx)(nn,{className:`ms-2 h-4 w-4 opacity-50`})]})}),(0,I.jsxs)(pt,{align:`end`,className:`flex w-auto gap-0 p-0`,children:[(0,I.jsx)(`div`,{className:`flex flex-col gap-1 border-r p-3`,children:o.map(e=>(0,I.jsx)(Ze,{className:`justify-start`,onClick:()=>r(e.range),size:`sm`,variant:`ghost`,children:e.label},e.label))}),(0,I.jsx)(ko,{captionLayout:`dropdown`,disabled:e=>e>new Date||e{var{children:n,width:r,height:i,viewBox:a,className:o,style:s,title:c,desc:l}=e,u=qo(e,Go),d=a||{width:r,height:i,x:0,y:0},f=P(`recharts-surface`,o);return F.createElement(`svg`,Ko({},Uo(u),{className:f,width:r,height:i,style:s,viewBox:`${d.x} ${d.y} ${d.width} ${d.height}`,ref:t}),F.createElement(`title`,null,c),F.createElement(`desc`,null,l),n)}),Xo=[`children`,`className`];function Zo(){return Zo=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:n,className:r}=e,i=Qo(e,Xo),a=P(`recharts-layer`,r);return F.createElement(`g`,Zo({className:a},Uo(i),{ref:t}),n)}),ts=(0,F.createContext)(null),ns=()=>(0,F.useContext)(ts);function B(e){return function(){return e}}var rs=Math.cos,is=Math.sin,as=Math.sqrt,os=Math.PI;os/2;var ss=2*os,cs=Math.PI,ls=2*cs,us=1e-6,ds=ls-us;function fs(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw Error(`invalid digits: ${e}`);if(t>15)return fs;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tus)if(!(Math.abs(u*s-c*l)>us)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((cs-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>us&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>us||Math.abs(this._y1-l)>us)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%ls+ls),d>ds?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>us&&this._append`A${n},${n},0,${+(d>=cs)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};function hs(){return new ms}hs.prototype=ms.prototype;function gs(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new ms(t)}Array.prototype.slice;function _s(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function vs(e){this._context=e}vs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function ys(e){return new vs(e)}function bs(e){return e[0]}function xs(e){return e[1]}function Ss(e,t){var n=B(!0),r=null,i=ys,a=null,o=gs(s);e=typeof e==`function`?e:e===void 0?bs:B(e),t=typeof t==`function`?t:t===void 0?xs:B(t);function s(s){var c,l=(s=_s(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return Ss().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:B(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:B(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:B(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:B(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:B(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:B(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:B(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var ws=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t);break}this._x0=e,this._y0=t}};function Ts(e){return new ws(e,!0)}function Es(e){return new ws(e,!1)}var Ds={draw(e,t){let n=as(t/os);e.moveTo(n,0),e.arc(0,0,n,0,ss)}},Os={draw(e,t){let n=as(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},ks=as(1/3),As=ks*2,js={draw(e,t){let n=as(t/As),r=n*ks;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},Ms={draw(e,t){let n=as(t),r=-n/2;e.rect(r,r,n,n)}},Ns=.8908130915292852,Ps=is(os/10)/is(7*os/10),Fs=is(ss/10)*Ps,Is=-rs(ss/10)*Ps,Ls={draw(e,t){let n=as(t*Ns),r=Fs*n,i=Is*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=ss*t/5,o=rs(a),s=is(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},Rs=as(3),zs={draw(e,t){let n=-as(t/(Rs*3));e.moveTo(0,n*2),e.lineTo(-Rs*n,-n),e.lineTo(Rs*n,-n),e.closePath()}},Bs=-.5,Vs=as(3)/2,Hs=1/as(12),Us=(Hs/2+1)*3,Ws={draw(e,t){let n=as(t/Us),r=n/2,i=n*Hs,a=r,o=n*Hs+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo(Bs*r-Vs*i,Vs*r+Bs*i),e.lineTo(Bs*a-Vs*o,Vs*a+Bs*o),e.lineTo(Bs*s-Vs*c,Vs*s+Bs*c),e.lineTo(Bs*r+Vs*i,Bs*i-Vs*r),e.lineTo(Bs*a+Vs*o,Bs*o-Vs*a),e.lineTo(Bs*s+Vs*c,Bs*c-Vs*s),e.closePath()}};function Gs(e,t){let n=null,r=gs(i);e=typeof e==`function`?e:B(e||Ds),t=typeof t==`function`?t:B(t===void 0?64:+t);function i(){let i;if(n||=i=r(),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:B(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:B(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}function Ks(){}function qs(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function Js(e){this._context=e}Js.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:qs(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:qs(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Ys(e){return new Js(e)}function Xs(e){this._context=e}Xs.prototype={areaStart:Ks,areaEnd:Ks,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:qs(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function Zs(e){return new Xs(e)}function Qs(e){this._context=e}Qs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:qs(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function $s(e){return new Qs(e)}function ec(e){this._context=e}ec.prototype={areaStart:Ks,areaEnd:Ks,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function tc(e){return new ec(e)}function nc(e){return e<0?-1:1}function rc(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(nc(a)+nc(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function ic(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function ac(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function oc(e){this._context=e}oc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ac(this,this._t0,ic(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,ac(this,ic(this,n=rc(this,e,t)),n);break;default:ac(this,this._t0,n=rc(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function sc(e){this._context=new cc(e)}(sc.prototype=Object.create(oc.prototype)).point=function(e,t){oc.prototype.point.call(this,t,e)};function cc(e){this._context=e}cc.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function lc(e){return new oc(e)}function uc(e){return new sc(e)}function dc(e){this._context=e}dc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=fc(e),i=fc(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}this._x=e,this._y=t}};function hc(e){return new mc(e,.5)}function gc(e){return new mc(e,0)}function _c(e){return new mc(e,1)}function vc(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n=0;)n[t]=t;return n}function bc(e,t){return e[t]}function xc(e){let t=[];return t.key=e,t}function Sc(){var e=B([]),t=yc,n=vc,r=bc;function i(i){var a=Array.from(e.apply(this,arguments),xc),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o0){for(var n,r,i=0,a=e[0].length,o;i0){for(var n=0,r=e[t[0]],i,a=r.length;n0)||!((a=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,a,o;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e===`__proto__`}e.isUnsafeProperty=t})),Dc=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){switch(typeof e){case`number`:case`symbol`:return!1;case`string`:return e.includes(`.`)||e.includes(`[`)||e.includes(`]`)}}e.isDeepKey=t})),Oc=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`string`||typeof e==`symbol`?e:Object.is(e?.valueOf?.(),-0)?`-0`:String(e)}e.toKey=t})),kc=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(e==null)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(t).join(`,`);let n=String(e);return n===`0`&&Object.is(Number(e),-0)?`-0`:n}e.toString=t})),Ac=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=kc(),n=Oc();function r(e){if(Array.isArray(e))return e.map(n.toKey);if(typeof e==`symbol`)return[e];e=t.toString(e);let r=[],i=e.length;if(i===0)return r;let a=0,o=``,s=``,c=!1;for(e.charCodeAt(0)===46&&(r.push(``),a++);a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ec(),n=Dc(),r=Oc(),i=Ac();function a(e,s,c){if(e==null)return c;switch(typeof s){case`string`:{if(t.isUnsafeProperty(s))return c;let r=e[s];return r===void 0?n.isDeepKey(s)?a(e,i.toPath(s),c):c:r}case`number`:case`symbol`:{typeof s==`number`&&(s=r.toKey(s));let t=e[s];return t===void 0?c:t}default:{if(Array.isArray(s))return o(e,s,c);if(s=Object.is(s?.valueOf(),-0)?`-0`:String(s),t.isUnsafeProperty(s))return c;let n=e[s];return n===void 0?c:n}}}function o(e,n,r){if(n.length===0)return r;let i=e;for(let e=0;e{t.exports=jc().get})),Nc=4;function Pc(e){var t=10**(arguments.length>1&&arguments[1]!==void 0?arguments[1]:Nc),n=Math.round(e*t)/t;return Object.is(n,-0)?0:n}function Fc(e){var t=[...arguments].slice(1);return e.reduce((e,n,r)=>{var i=t[r-1];return typeof i==`string`?e+i+n:i===void 0?e+n:e+Pc(i)+n},``)}var Ic=Se(Mc()),Lc=e=>e===0?0:e>0?1:-1,Rc=e=>typeof e==`number`&&e!=+e,zc=e=>typeof e==`string`&&e.indexOf(`%`)===e.length-1,V=e=>(typeof e==`number`||e instanceof Number)&&!Rc(e),Bc=e=>V(e)||typeof e==`string`,Vc=0,Hc=e=>{var t=++Vc;return`${e||``}${t}`},Uc=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!V(e)&&typeof e!=`string`)return n;var i;if(zc(e)){if(t==null)return n;var a=e.indexOf(`%`);i=t*parseFloat(e.slice(0,a))/100}else i=+e;return Rc(i)&&(i=n),r&&t!=null&&i>t&&(i=t),i},Wc=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,n={},r=0;re&&(typeof t==`function`?t(e):(0,Ic.default)(e,t))===n)}var U=e=>e==null,Kc=e=>U(e)?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`;function qc(e){return e!=null}function Jc(){}var Yc=[`type`,`size`,`sizeType`];function Xc(){return Xc=Object.assign?Object.assign.bind():function(e){for(var t=1;til[`symbol${Kc(e)}`]||Ds,sl=(e,t,n)=>{if(t===`area`)return e;switch(n){case`cross`:return 5*e*e/9;case`diamond`:return .5*e*e/Math.sqrt(3);case`square`:return e*e;case`star`:var r=18*al;return 1.25*e*e*(Math.tan(r)-Math.tan(r*2)*Math.tan(r)**2);case`triangle`:return Math.sqrt(3)*e*e/4;case`wye`:return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},cl=(e,t)=>{il[`symbol${Kc(e)}`]=t},ll=e=>{var{type:t=`circle`,size:n=64,sizeType:r=`area`}=e,i=Qc(Qc({},nl(e,Yc)),{},{type:t,size:n,sizeType:r}),a=`circle`;typeof t==`string`&&(a=t);var o=()=>{var e=ol(a),t=Gs().type(e).size(sl(n,r,a))();if(t!==null)return t},{className:s,cx:c,cy:l}=i,u=Uo(i);return V(c)&&V(l)&&V(n)?F.createElement(`path`,Xc({},u,{className:P(`recharts-symbols`,s),transform:`translate(${c}, ${l})`,d:o()})):null};ll.registerSymbol=cl;var ul=e=>`radius`in e&&`startAngle`in e&&`endAngle`in e,dl=(e,t)=>{if(!e||typeof e==`function`||typeof e==`boolean`)return null;var n=e;if((0,F.isValidElement)(e)&&(n=e.props),typeof n!=`object`&&typeof n!=`function`)return null;var r={};return Object.keys(n).forEach(e=>{Lo(e)&&typeof n[e]==`function`&&(r[e]=t||(t=>n[e](n,t)))}),r},fl=(e,t,n)=>r=>(e(t,n,r),null),pl=(e,t,n)=>{if(e===null||typeof e!=`object`&&typeof e!=`function`)return null;var r=null;return Object.keys(e).forEach(i=>{var a=e[i];Lo(i)&&typeof a==`function`&&(r||={},r[i]=fl(a,t,n))}),r};function ml(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function hl(e){for(var t=1;t(e[t]===void 0&&r[t]!==void 0&&(e[t]=r[t]),e),n)}function bl(){return bl=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var d=t.formatter||i,f=P({"recharts-legend-item":!0,[`legend-item-${r}`]:!0,inactive:t.inactive});if(t.type===`none`)return null;var p=typeof s==`object`?Sl({},s):{};p.color=t.inactive?a:p.color||t.color;var m=d?d(t.value,t,r):t.value;return F.createElement(`li`,bl({className:f,style:l,key:`legend-item-${r}`},pl(e,t,r)),F.createElement(Yo,{width:n,height:n,viewBox:c,style:u,"aria-label":`${t.value} legend icon`},F.createElement(kl,{data:t,iconType:o,inactiveColor:a})),F.createElement(`span`,{className:`recharts-legend-item-text`,style:p},m))})}var jl=e=>{var t=yl(e,Dl),{payload:n,layout:r,align:i}=t;if(!n||!n.length)return null;var a={padding:0,margin:0,textAlign:r===`horizontal`?i:`left`};return F.createElement(`ul`,{className:`recharts-default-legend`,style:a},F.createElement(Al,bl({},t,{payload:n})))},Ml=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){let n=new Map;for(let r=0;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return function(...n){return e.apply(this,n.slice(0,t))}}e.ary=t})),Pl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e}e.identity=t})),Fl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Number.isSafeInteger(e)&&e>=0}e.isLength=t})),Il=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Fl();function n(e){return e!=null&&typeof e!=`function`&&t.isLength(e.length)}e.isArrayLike=n})),Ll=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`object`&&!!e}e.isObjectLike=t})),Rl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Il(),n=Ll();function r(e){return n.isObjectLike(e)&&t.isArrayLike(e)}e.isArrayLikeObject=r})),zl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=jc();function n(e){return function(n){return t.get(n,e)}}e.property=n})),Bl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e!==null&&(typeof e==`object`||typeof e==`function`)}e.isObject=t})),Vl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null||typeof e!=`object`&&typeof e!=`function`}e.isPrimitive=t})),Hl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}e.isEqualsSameValueZero=t})),Ul=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Bl(),n=Vl(),r=Hl();function i(e,t,n){return typeof n==`function`?a(e,t,function e(t,r,i,o,s,c){let l=n(t,r,i,o,s,c);return l===void 0?a(t,r,e,c):!!l},new Map):i(e,t,()=>void 0)}function a(e,n,i,s){if(n===e)return!0;switch(typeof n){case`object`:return o(e,n,i,s);case`function`:return Object.keys(n).length>0?a(e,{...n},i,s):r.isEqualsSameValueZero(e,n);default:return t.isObject(e)?typeof n==`string`?n===``:!0:r.isEqualsSameValueZero(e,n)}}function o(e,t,r,i){if(t==null)return!0;if(Array.isArray(t))return c(e,t,r,i);if(t instanceof Map)return s(e,t,r,i);if(t instanceof Set)return l(e,t,r,i);let a=Object.keys(t);if(e==null||n.isPrimitive(e))return a.length===0;if(a.length===0)return!0;if(i?.has(t))return i.get(t)===e;i?.set(t,e);try{for(let o=0;o{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ul();function n(e,n){return t.isMatchWith(e,n,()=>void 0)}e.isMatch=n})),Gl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}e.getSymbols=t})),Kl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}e.getTag=t})),ql=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),e.argumentsTag=`[object Arguments]`,e.arrayBufferTag=`[object ArrayBuffer]`,e.arrayTag=`[object Array]`,e.bigInt64ArrayTag=`[object BigInt64Array]`,e.bigUint64ArrayTag=`[object BigUint64Array]`,e.booleanTag=`[object Boolean]`,e.dataViewTag=`[object DataView]`,e.dateTag=`[object Date]`,e.errorTag=`[object Error]`,e.float32ArrayTag=`[object Float32Array]`,e.float64ArrayTag=`[object Float64Array]`,e.functionTag=`[object Function]`,e.int16ArrayTag=`[object Int16Array]`,e.int32ArrayTag=`[object Int32Array]`,e.int8ArrayTag=`[object Int8Array]`,e.mapTag=`[object Map]`,e.numberTag=`[object Number]`,e.objectTag=`[object Object]`,e.regexpTag=`[object RegExp]`,e.setTag=`[object Set]`,e.stringTag=`[object String]`,e.symbolTag=`[object Symbol]`,e.uint16ArrayTag=`[object Uint16Array]`,e.uint32ArrayTag=`[object Uint32Array]`,e.uint8ArrayTag=`[object Uint8Array]`,e.uint8ClampedArrayTag=`[object Uint8ClampedArray]`})),Jl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}e.isTypedArray=t})),Yl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Gl(),n=Kl(),r=ql(),i=Vl(),a=Jl();function o(e,t){return s(e,void 0,e,new Map,t)}function s(e,t,n,r=new Map,o=void 0){let u=o?.(e,t,n,r);if(u!==void 0)return u;if(i.isPrimitive(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let i=0;i{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yl();function n(e){return t.cloneDeepWithImpl(e,void 0,e,new Map,void 0)}e.cloneDeep=n})),Zl=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Wl(),n=Xl();function r(e){return e=n.cloneDeep(e),n=>t.isMatch(n,e)}e.matches=r})),Ql=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yl(),n=Kl(),r=ql();function i(e,i){return t.cloneDeepWith(e,(a,o,s,c)=>{let l=i?.(a,o,s,c);if(l!==void 0)return l;if(typeof e==`object`){if(n.getTag(e)===r.objectTag&&typeof e.constructor!=`function`){let n={};return c.set(e,n),t.copyProperties(n,e,s,c),n}switch(Object.prototype.toString.call(e)){case r.numberTag:case r.stringTag:case r.booleanTag:{let n=new e.constructor(e?.valueOf());return t.copyProperties(n,e),n}case r.argumentsTag:{let n={};return t.copyProperties(n,e),n.length=e.length,n[Symbol.iterator]=e[Symbol.iterator],n}default:return}}})}e.cloneDeepWith=i})),$l=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ql();function n(e){return t.cloneDeepWith(e)}e.cloneDeep=n})),eu=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=/^(?:0|[1-9]\d*)$/;function n(e,n=2**53-1){switch(typeof e){case`number`:return Number.isInteger(e)&&e>=0&&e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Kl();function n(e){return typeof e==`object`&&!!e&&t.getTag(e)===`[object Arguments]`}e.isArguments=n})),nu=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Dc(),n=eu(),r=tu(),i=Ac();function a(e,a){let o;if(o=Array.isArray(a)?a:typeof a==`string`&&t.isDeepKey(a)&&e?.[a]==null?i.toPath(a):[a],o.length===0)return!1;let s=e;for(let e=0;e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Wl(),n=Oc(),r=$l(),i=jc(),a=nu();function o(e,o){switch(typeof e){case`object`:Object.is(e?.valueOf(),-0)&&(e=`-0`);break;case`number`:e=n.toKey(e);break}return o=r.cloneDeep(o),function(n){let r=i.get(n,e);return r===void 0?a.has(n,e):o===void 0?r===void 0:t.isMatch(r,o)}}e.matchesProperty=o})),iu=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Pl(),n=zl(),r=Zl(),i=ru();function a(e){if(e==null)return t.identity;switch(typeof e){case`function`:return e;case`object`:return Array.isArray(e)&&e.length===2?i.matchesProperty(e[0],e[1]):r.matches(e);case`string`:case`symbol`:case`number`:return n.property(e)}}e.iteratee=a})),au=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ml(),n=Nl(),r=Pl(),i=Rl(),a=iu();function o(e,o=r.identity){return i.isArrayLikeObject(e)?t.uniqBy(Array.from(e),n.ary(a.iteratee(o),1)):[]}e.uniqBy=o})),ou=Se(M(((e,t)=>{t.exports=au().uniqBy}))());function su(e,t,n){return t===!0?(0,ou.default)(e,n):typeof t==`function`?(0,ou.default)(e,t):e}var cu=(0,F.createContext)(null),lu=ze(),uu=e=>e,W=()=>{var e=(0,F.useContext)(cu);return e?e.store.dispatch:uu},du=()=>{},fu=()=>du,pu=(e,t)=>e===t;function G(e){var t=(0,F.useContext)(cu),n=(0,F.useMemo)(()=>t?t=>{if(t!=null)return e(t)}:du,[t,e]);return(0,lu.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:fu,t?t.store.getState:du,t?t.store.getState:du,n,pu)}function mu(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function hu(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!=`object`)throw TypeError(t)}function gu(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var _u=e=>Array.isArray(e)?e:[e];function vu(e){let t=Array.isArray(e[0])?e[0]:e;return gu(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function yu(e,t){let n=[],{length:r}=e;for(let i=0;i{n=wu(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function Eu(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),mu(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=Tu,argsMemoizeOptions:u=[],devModeChecks:d={}}={...n,...a},f=_u(c),p=_u(u),m=vu(e),h=s(function(){return t++,o.apply(null,arguments)},...f),g=l(function(){r++;let e=yu(m,arguments);return i=h.apply(null,e),i},...p);return Object.assign(g,{resultFunc:o,memoizedResultFunc:h,dependencies:m,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var K=Eu(Tu),Du=Object.assign((e,t=K)=>{hu(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>Du}),Ou=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`?1:e===null?2:e===void 0?3:e===e?0:4}e.compareValues=(e,n,r)=>{if(e!==n){let i=t(e),a=t(n);if(i===a&&i===0){if(en)return r===`desc`?-1:1}return r===`desc`?a-i:i-a}return 0}})),ku=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`||e instanceof Symbol}e.isSymbol=t})),Au=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ku(),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;function i(e,i){return Array.isArray(e)?!1:typeof e==`number`||typeof e==`boolean`||e==null||t.isSymbol(e)?!0:typeof e==`string`&&(r.test(e)||!n.test(e))||i!=null&&Object.hasOwn(i,e)}e.isKey=i})),ju=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ou(),n=Au(),r=Ac();function i(e,i,a,o){if(e==null)return[];a=o?void 0:a,Array.isArray(e)||(e=Object.values(e)),Array.isArray(i)||(i=i==null?[null]:[i]),i.length===0&&(i=[null]),Array.isArray(a)||(a=a==null?[]:[a]),a=a.map(e=>String(e));let s=(e,t)=>{let n=e;for(let e=0;et==null||e==null?t:typeof e==`object`&&`key`in e?Object.hasOwn(t,e.key)?t[e.key]:s(t,e.path):typeof e==`function`?e(t):Array.isArray(e)?s(t,e):typeof t==`object`?t[e]:t,l=i.map(e=>(Array.isArray(e)&&e.length===1&&(e=e[0]),e==null||typeof e==`function`||Array.isArray(e)||n.isKey(e)?e:{key:e,path:r.toPath(e)}));return e.map(e=>({original:e,criteria:l.map(t=>c(t,e))})).slice().sort((e,n)=>{for(let r=0;re.original)}e.orderBy=i})),Mu=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t=1){let n=[],r=Math.floor(t),i=(e,t)=>{for(let a=0;a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=eu(),n=Il(),r=Bl(),i=Hl();function a(e,a,o){return r.isObject(o)&&(typeof a==`number`&&n.isArrayLike(o)&&t.isIndex(a)&&a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ju(),n=Mu(),r=Nu();function i(e,...i){let a=i.length;return a>1&&r.isIterateeCall(e,i[0],i[1])?i=[]:a>2&&r.isIterateeCall(i[0],i[1],i[2])&&(i=[i[0]]),t.orderBy(e,n.flatten(i),[`asc`])}e.sortBy=i})),Fu=Se(M(((e,t)=>{t.exports=Pu().sortBy}))()),Iu=e=>e.legend.settings,Lu=e=>e.legend.size,Ru=K([e=>e.legend.payload,Iu],(e,t)=>{var{itemSorter:n}=t,r=e.flat(1);return n?(0,Fu.default)(r,n):r});function zu(){return G(Ru)}var Bu=1;function Vu(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],[t,n]=(0,F.useState)({height:0,left:0,top:0,width:0});return[t,(0,F.useCallback)(e=>{if(e!=null){var r=e.getBoundingClientRect(),i={height:r.height,left:r.left,top:r.top,width:r.width};(Math.abs(i.height-t.height)>Bu||Math.abs(i.left-t.left)>Bu||Math.abs(i.top-t.top)>Bu||Math.abs(i.width-t.width)>Bu)&&n({height:i.height,left:i.left,top:i.top,width:i.width})}},[t.width,t.height,t.top,t.left,...e])]}function Hu(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Uu=typeof Symbol==`function`&&Symbol.observable||`@@observable`,Wu=()=>Math.random().toString(36).substring(7).split(``).join(`.`),Gu={INIT:`@@redux/INIT${Wu()}`,REPLACE:`@@redux/REPLACE${Wu()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${Wu()}`};function Ku(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function qu(e,t,n){if(typeof e!=`function`)throw Error(Hu(2));if(typeof t==`function`&&typeof n==`function`||typeof n==`function`&&typeof arguments[3]==`function`)throw Error(Hu(0));if(typeof t==`function`&&n===void 0&&(n=t,t=void 0),n!==void 0){if(typeof n!=`function`)throw Error(Hu(1));return n(qu)(e,t)}let r=e,i=t,a=new Map,o=a,s=0,c=!1;function l(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function u(){if(c)throw Error(Hu(3));return i}function d(e){if(typeof e!=`function`)throw Error(Hu(4));if(c)throw Error(Hu(5));let t=!0;l();let n=s++;return o.set(n,e),function(){if(t){if(c)throw Error(Hu(6));t=!1,l(),o.delete(n),a=null}}}function f(e){if(!Ku(e))throw Error(Hu(7));if(e.type===void 0)throw Error(Hu(8));if(typeof e.type!=`string`)throw Error(Hu(17));if(c)throw Error(Hu(9));try{c=!0,i=r(i,e)}finally{c=!1}return(a=o).forEach(e=>{e()}),e}function p(e){if(typeof e!=`function`)throw Error(Hu(10));r=e,f({type:Gu.REPLACE})}function m(){let e=d;return{subscribe(t){if(typeof t!=`object`||!t)throw Error(Hu(11));function n(){let e=t;e.next&&e.next(u())}return n(),{unsubscribe:e(n)}},[Uu](){return this}}}return f({type:Gu.INIT}),{dispatch:f,subscribe:d,getState:u,replaceReducer:p,[Uu]:m}}function Ju(e){Object.keys(e).forEach(t=>{let n=e[t];if(n(void 0,{type:Gu.INIT})===void 0)throw Error(Hu(12));if(n(void 0,{type:Gu.PROBE_UNKNOWN_ACTION()})===void 0)throw Error(Hu(13))})}function Yu(e){let t=Object.keys(e),n={};for(let r=0;re:e.length===1?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function Zu(...e){return t=>(n,r)=>{let i=t(n,r),a=()=>{throw Error(Hu(15))},o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)};return a=Xu(...e.map(e=>e(o)))(i.dispatch),{...i,dispatch:a}}}function Qu(e){return Ku(e)&&`type`in e&&typeof e.type==`string`}var $u=Symbol.for(`immer-nothing`),ed=Symbol.for(`immer-draftable`),td=Symbol.for(`immer-state`);function nd(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var rd=Object,id=rd.getPrototypeOf,ad=`constructor`,od=`prototype`,sd=`configurable`,cd=`enumerable`,ld=`writable`,ud=`value`,dd=e=>!!e&&!!e[td];function fd(e){return e?hd(e)||Sd(e)||!!e[ed]||!!e[ad]?.[ed]||Cd(e)||wd(e):!1}var pd=rd[od][ad].toString(),md=new WeakMap;function hd(e){if(!e||!Td(e))return!1;let t=id(e);if(t===null||t===rd[od])return!0;let n=rd.hasOwnProperty.call(t,ad)&&t[ad];if(n===Object)return!0;if(!Ed(n))return!1;let r=md.get(n);return r===void 0&&(r=Function.toString.call(n),md.set(n,r)),r===pd}function gd(e,t,n=!0){_d(e)===0?(n?Reflect.ownKeys(e):rd.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function _d(e){let t=e[td];return t?t.type_:Sd(e)?1:Cd(e)?2:wd(e)?3:0}var vd=(e,t,n=_d(e))=>n===2?e.has(t):rd[od].hasOwnProperty.call(e,t),yd=(e,t,n=_d(e))=>n===2?e.get(t):e[t],bd=(e,t,n,r=_d(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function xd(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Sd=Array.isArray,Cd=e=>e instanceof Map,wd=e=>e instanceof Set,Td=e=>typeof e==`object`,Ed=e=>typeof e==`function`,Dd=e=>typeof e==`boolean`;function Od(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var kd=e=>e.copy_||e.base_,Ad=e=>e.modified_?e.copy_:e.base_;function jd(e,t){if(Cd(e))return new Map(e);if(wd(e))return new Set(e);if(Sd(e))return Array[od].slice.call(e);let n=hd(e);if(t===!0||t===`class_only`&&!n){let t=rd.getOwnPropertyDescriptors(e);delete t[td];let n=Reflect.ownKeys(t);for(let r=0;r1&&rd.defineProperties(e,{set:Pd,add:Pd,clear:Pd,delete:Pd}),rd.freeze(e),t&&gd(e,(e,t)=>{Md(t,!0)},!1),e)}function Nd(){nd(2)}var Pd={[ud]:Nd};function Fd(e){return e===null||!Td(e)?!0:rd.isFrozen(e)}var Id=`MapSet`,Ld=`Patches`,Rd=`ArrayMethods`,zd={};function Bd(e){let t=zd[e];return t||nd(0,e),t}var Vd=e=>!!zd[e],Hd,Ud=()=>Hd,Wd=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Vd(Id)?Bd(Id):void 0,arrayMethodsPlugin_:Vd(Rd)?Bd(Rd):void 0});function Gd(e,t){t&&(e.patchPlugin_=Bd(Ld),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Kd(e){qd(e),e.drafts_.forEach(Yd),e.drafts_=null}function qd(e){e===Hd&&(Hd=e.parent_)}var Jd=e=>Hd=Wd(Hd,e);function Yd(e){let t=e[td];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Xd(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[td].modified_&&(Kd(t),nd(4)),fd(e)&&(e=Zd(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[td].base_,e,t)}else e=Zd(t,n);return Qd(t,e,!0),Kd(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===$u?void 0:e}function Zd(e,t){if(Fd(t))return t;let n=t[td];if(!n)return sf(t,e.handledSet_,e);if(!ef(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);af(n,e)}return n.copy_}function Qd(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Md(t,n)}function $d(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var ef=(e,t)=>e.scope_===t,tf=[];function nf(e,t,n,r){let i=kd(e),a=e.type_;if(r!==void 0&&yd(i,r,a)===t){bd(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;gd(i,(e,n)=>{if(dd(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??tf;for(let e of o)bd(i,e,n,a)}function rf(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!ef(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Ad(i);nf(e,i.draft_??i,a,n),af(i,r)})}function af(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}$d(e)}}function of(e,t,n){let{scope_:r}=e;if(dd(n)){let i=n[td];ef(i,r)&&i.callbacks_.push(function(){hf(e),nf(e,n,Ad(i),t)})}else fd(n)&&e.callbacks_.push(function(){let i=kd(e);e.type_===3?i.has(n)&&sf(n,r.handledSet_,r):yd(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&sf(yd(e.copy_,t,e.type_),r.handledSet_,r)})}function sf(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||dd(e)||t.has(e)||!fd(e)||Fd(e)?e:(t.add(e),gd(e,(r,i)=>{if(dd(i)){let t=i[td];ef(t,n)&&(bd(e,r,Ad(t),e.type_),$d(t))}else fd(i)&&sf(i,t,n)}),e)}function cf(e,t){let n=Sd(e),r={type_:+!!n,scope_:t?t.scope_:Ud(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=lf;n&&(i=[r],a=uf);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var lf={get(e,t){if(t===td)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=kd(e);if(!vd(i,t,e.type_))return ff(e,i,t);let a=i[t];if(e.finalized_||!fd(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Od(t))return a;if(a===df(e.base_,t)){hf(e);let n=e.type_===1?+t:t,r=_f(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in kd(e)},ownKeys(e){return Reflect.ownKeys(kd(e))},set(e,t,n){let r=pf(kd(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=df(kd(e),t),i=r?.[td];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(xd(n,r)&&(n!==void 0||vd(e.base_,t,e.type_)))return!0;hf(e),mf(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),of(e,t,n),!0)},deleteProperty(e,t){return hf(e),df(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),mf(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=kd(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[ld]:!0,[sd]:e.type_!==1||t!==`length`,[cd]:r[cd],[ud]:n[t]}},defineProperty(){nd(11)},getPrototypeOf(e){return id(e.base_)},setPrototypeOf(){nd(12)}},uf={};for(let e in lf){let t=lf[e];uf[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}uf.deleteProperty=function(e,t){return uf.set.call(this,e,t,void 0)},uf.set=function(e,t,n){return lf.set.call(this,e[0],t,n,e[0])};function df(e,t){let n=e[td];return(n?kd(n):e)[t]}function ff(e,t,n){let r=pf(t,n);return r?ud in r?r[ud]:r.get?.call(e.draft_):void 0}function pf(e,t){if(!(t in e))return;let n=id(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=id(n)}}function mf(e){e.modified_||(e.modified_=!0,e.parent_&&mf(e.parent_))}function hf(e){e.copy_||=(e.assigned_=new Map,jd(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var gf=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Ed(e)&&!Ed(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Ed(t)||nd(6),n!==void 0&&!Ed(n)&&nd(7);let r;if(fd(e)){let i=Jd(this),a=_f(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Kd(i):qd(i)}return Gd(i,n),Xd(r,i)}else if(!e||!Td(e)){if(r=t(e),r===void 0&&(r=e),r===$u&&(r=void 0),this.autoFreeze_&&Md(r,!0),n){let t=[],i=[];Bd(Ld).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else nd(1,e)},this.produceWithPatches=(e,t)=>{if(Ed(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Dd(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Dd(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Dd(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){fd(e)||nd(8),dd(e)&&(e=vf(e));let t=Jd(this),n=_f(t,e,void 0);return n[td].isManual_=!0,qd(t),n}finishDraft(e,t){let n=e&&e[td];(!n||!n.isManual_)&&nd(9);let{scope_:r}=n;return Gd(r,t),Xd(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Bd(Ld).applyPatches_;return dd(e)?r(e,t):this.produce(e,e=>r(e,t))}};function _f(e,t,n,r){let[i,a]=Cd(t)?Bd(Id).proxyMap_(t,n):wd(t)?Bd(Id).proxySet_(t,n):cf(t,n);return(n?.scope_??Ud()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?rf(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function vf(e){return dd(e)||nd(10,e),yf(e)}function yf(e){if(!fd(e)||Fd(e))return e;let t=e[td],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=jd(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=jd(e,!0);return gd(n,(e,t)=>{bd(n,e,yf(t))},r),t&&(t.finalized_=!1),n}var bf=new gf().produce;function xf(e){return({dispatch:t,getState:n})=>r=>i=>typeof i==`function`?i(t,n,e):r(i)}var Sf=xf(),Cf=xf,wf=typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]==`object`?Xu:Xu.apply(null,arguments)};typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__;function Tf(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw Error(Mp(0));return{type:e,payload:r.payload,...`meta`in r&&{meta:r.meta},...`error`in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>Qu(t)&&t.type===e,n}var Ef=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function Df(e){return fd(e)?bf(e,()=>{}):e}function Of(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}function kf(e){return typeof e==`boolean`}var Af=()=>function(e){let{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:i=!0}=e??{},a=new Ef;return t&&(kf(t)?a.push(Sf):a.push(Cf(t.extraArgument))),a},jf=`RTK_autoBatch`,q=()=>e=>({payload:e,meta:{[jf]:!0}}),Mf=e=>t=>{setTimeout(t,e)},Nf=(e={type:`raf`})=>t=>(...n)=>{let r=t(...n),i=!0,a=!1,o=!1,s=new Set,c=e.type===`tick`?queueMicrotask:e.type===`raf`?typeof window<`u`&&window.requestAnimationFrame?window.requestAnimationFrame:Mf(10):e.type===`callback`?e.queueNotification:Mf(e.timeout),l=()=>{o=!1,a&&(a=!1,s.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){let t=r.subscribe(()=>i&&e());return s.add(e),()=>{t(),s.delete(e)}},dispatch(e){try{return i=!e?.meta?.[jf],a=!i,a&&(o||(o=!0,c(l))),r.dispatch(e)}finally{i=!0}}})},Pf=e=>function(t){let{autoBatch:n=!0}=t??{},r=new Ef(e);return n&&r.push(Nf(typeof n==`object`?n:void 0)),r};function Ff(e){let t=Af(),{reducer:n=void 0,middleware:r,devTools:i=!0,duplicateMiddlewareCheck:a=!0,preloadedState:o=void 0,enhancers:s=void 0}=e||{},c;if(typeof n==`function`)c=n;else if(Ku(n))c=Yu(n);else throw Error(Mp(1));let l;l=typeof r==`function`?r(t):t();let u=Xu;i&&(u=wf({trace:!1,...typeof i==`object`&&i}));let d=Pf(Zu(...l)),f=typeof s==`function`?s(d):d(),p=u(...f);return qu(c,o,p)}function If(e){let t={},n=[],r,i={addCase(e,n){let r=typeof e==`string`?e:e.type;if(!r)throw Error(Mp(28));if(r in t)throw Error(Mp(29));return t[r]=n,i},addAsyncThunk(e,r){return r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),i},addMatcher(e,t){return n.push({matcher:e,reducer:t}),i},addDefaultCase(e){return r=e,i}};return e(i),[t,n,r]}function Lf(e){return typeof e==`function`}function Rf(e,t){let[n,r,i]=If(t),a;if(Lf(e))a=()=>Df(e());else{let t=Df(e);a=()=>t}function o(e=a(),t){let o=[n[t.type],...r.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return o.filter(e=>!!e).length===0&&(o=[i]),o.reduce((e,n)=>{if(n)if(dd(e)){let r=n(e,t);return r===void 0?e:r}else if(fd(e))return bf(e,e=>n(e,t));else{let r=n(e,t);if(r===void 0){if(e===null)return e;throw Error(`A case reducer on a non-draftable value must not return undefined`)}return r}return e},e)}return o.getInitialState=a,o}var zf=`ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW`,Bf=(e=21)=>{let t=``,n=e;for(;n--;)t+=zf[Math.random()*64|0];return t},Vf=Symbol.for(`rtk-slice-createasyncthunk`);function Hf(e,t){return`${e}/${t}`}function Uf({creators:e}={}){let t=e?.asyncThunk?.[Vf];return function(e){let{name:n,reducerPath:r=n}=e;if(!n)throw Error(Mp(11));let i=(typeof e.reducers==`function`?e.reducers(Kf()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},s={addCase(e,t){let n=typeof e==`string`?e:e.type;if(!n)throw Error(Mp(12));if(n in o.sliceCaseReducersByType)throw Error(Mp(13));return o.sliceCaseReducersByType[n]=t,s},addMatcher(e,t){return o.sliceMatchers.push({matcher:e,reducer:t}),s},exposeAction(e,t){return o.actionCreators[e]=t,s},exposeCaseReducer(e,t){return o.sliceCaseReducersByName[e]=t,s}};a.forEach(r=>{let a=i[r],o={reducerName:r,type:Hf(n,r),createNotation:typeof e.reducers==`function`};Jf(a)?Xf(o,a,s,t):qf(o,a,s)});function c(){let[t={},n=[],r=void 0]=typeof e.extraReducers==`function`?If(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return Rf(e.initialState,e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}let l=e=>e,u=new Map,d=new WeakMap,f;function p(e,t){return f||=c(),f(e,t)}function m(){return f||=c(),f.getInitialState()}function h(t,n=!1){function r(e){let i=e[t];return i===void 0&&n&&(i=Of(d,r,m)),i}function i(t=l){return Of(Of(u,n,()=>new WeakMap),t,()=>{let r={};for(let[i,a]of Object.entries(e.selectors??{}))r[i]=Wf(a,t,()=>Of(d,t,m),n);return r})}return{reducerPath:t,getSelectors:i,get selectors(){return i(r)},selectSlice:r}}let g={name:n,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:m,...h(r),injectInto(e,{reducerPath:t,...n}={}){let i=t??r;return e.inject({reducerPath:i,reducer:p},n),{...g,...h(i,!0)}}};return g}}function Wf(e,t,n,r){function i(i,...a){let o=t(i);return o===void 0&&r&&(o=n()),e(o,...a)}return i.unwrapped=e,i}var Gf=Uf();function Kf(){function e(e,t){return{_reducerDefinitionType:`asyncThunk`,payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer(e){return Object.assign({[e.name](...t){return e(...t)}}[e.name],{_reducerDefinitionType:`reducer`})},preparedReducer(e,t){return{_reducerDefinitionType:`reducerWithPrepare`,prepare:e,reducer:t}},asyncThunk:e}}function qf({type:e,reducerName:t,createNotation:n},r,i){let a,o;if(`reducer`in r){if(n&&!Yf(r))throw Error(Mp(17));a=r.reducer,o=r.prepare}else a=r;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?Tf(e,o):Tf(e))}function Jf(e){return e._reducerDefinitionType===`asyncThunk`}function Yf(e){return e._reducerDefinitionType===`reducerWithPrepare`}function Xf({type:e,reducerName:t},n,r,i){if(!i)throw Error(Mp(18));let{payloadCreator:a,fulfilled:o,pending:s,rejected:c,settled:l,options:u}=n,d=i(e,a,u);r.exposeAction(t,d),o&&r.addCase(d.fulfilled,o),s&&r.addCase(d.pending,s),c&&r.addCase(d.rejected,c),l&&r.addMatcher(d.settled,l),r.exposeCaseReducer(t,{fulfilled:o||Zf,pending:s||Zf,rejected:c||Zf,settled:l||Zf})}function Zf(){}var Qf=`task`,$f=`listener`,ep=`completed`,tp=`cancelled`,np=`task-${tp}`,rp=`task-${ep}`,ip=`${$f}-${tp}`,ap=`${$f}-${ep}`,op=class{constructor(e){this.code=e,this.message=`${Qf} ${tp} (reason: ${e})`}name=`TaskAbortError`;message},sp=(e,t)=>{if(typeof e!=`function`)throw TypeError(Mp(32))},cp=()=>{},lp=(e,t=cp)=>(e.catch(t),e),up=(e,t)=>(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)),dp=e=>{if(e.aborted)throw new op(e.reason)};function fp(e,t){let n=cp;return new Promise((r,i)=>{let a=()=>i(new op(e.reason));if(e.aborted){a();return}n=up(e,a),t.finally(()=>n()).then(r,i)}).finally(()=>{n=cp})}var pp=async(e,t)=>{try{return await Promise.resolve(),{status:`ok`,value:await e()}}catch(e){return{status:e instanceof op?`cancelled`:`rejected`,error:e}}finally{t?.()}},mp=e=>t=>lp(fp(e,t).then(t=>(dp(e),t))),hp=e=>{let t=mp(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:gp}=Object,_p={},vp=`listenerMiddleware`,yp=(e,t)=>{let n=t=>up(e,()=>t.abort(e.reason));return(r,i)=>{sp(r,`taskExecutor`);let a=new AbortController;n(a);let o=pp(async()=>{dp(e),dp(a.signal);let t=await r({pause:mp(a.signal),delay:hp(a.signal),signal:a.signal});return dp(a.signal),t},()=>a.abort(rp));return i?.autoJoin&&t.push(o.catch(cp)),{result:mp(e)(o),cancel(){a.abort(np)}}}},bp=(e,t)=>{let n=async(n,r)=>{dp(t);let i=()=>{},a=[new Promise((t,r)=>{let a=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});i=()=>{a(),r()}})];r!=null&&a.push(new Promise(e=>setTimeout(e,r,null)));try{let e=await fp(t,Promise.race(a));return dp(t),e}finally{i()}};return(e,t)=>lp(n(e,t))},xp=e=>{let{type:t,actionCreator:n,matcher:r,predicate:i,effect:a}=e;if(t)i=Tf(t).match;else if(n)t=n.type,i=n.match;else if(r)i=r;else if(!i)throw Error(Mp(21));return sp(a,`options.listener`),{predicate:i,type:t,effect:a}},Sp=gp(e=>{let{type:t,predicate:n,effect:r}=xp(e);return{id:Bf(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw Error(Mp(22))}}},{withTypes:()=>Sp}),Cp=(e,t)=>{let{type:n,effect:r,predicate:i}=xp(t);return Array.from(e.values()).find(e=>(typeof n==`string`?e.type===n:e.predicate===i)&&e.effect===r)},wp=e=>{e.pending.forEach(e=>{e.abort(ip)})},Tp=(e,t)=>()=>{for(let e of t.keys())wp(e);e.clear()},Ep=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},Dp=gp(Tf(`${vp}/add`),{withTypes:()=>Dp}),Op=Tf(`${vp}/removeAll`),kp=gp(Tf(`${vp}/remove`),{withTypes:()=>kp}),Ap=(...e)=>{console.error(`${vp}/error`,...e)},jp=(e={})=>{let t=new Map,n=new Map,r=e=>{let t=n.get(e)??0;n.set(e,t+1)},i=e=>{let t=n.get(e)??1;t===1?n.delete(e):n.set(e,t-1)},{extra:a,onError:o=Ap}=e;sp(o,`onError`);let s=e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&wp(e)}),c=e=>s(Cp(t,e)??Sp(e));gp(c,{withTypes:()=>c});let l=e=>{let n=Cp(t,e);return n&&(n.unsubscribe(),e.cancelActive&&wp(n)),!!n};gp(l,{withTypes:()=>l});let u=async(e,n,s,l)=>{let u=new AbortController,d=bp(c,u.signal),f=[];try{e.pending.add(u),r(e),await Promise.resolve(e.effect(n,gp({},s,{getOriginalState:l,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:hp(u.signal),pause:mp(u.signal),extra:a,signal:u.signal,fork:yp(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==u&&(e.abort(ip),n.delete(e))})},cancel:()=>{u.abort(ip),e.pending.delete(u)},throwIfCancelled:()=>{dp(u.signal)}})))}catch(e){e instanceof op||Ep(o,e,{raisedBy:`effect`})}finally{await Promise.all(f),u.abort(ap),i(e),e.pending.delete(u)}},d=Tp(t,n);return{middleware:e=>n=>r=>{if(!Qu(r))return n(r);if(Dp.match(r))return c(r.payload);if(Op.match(r)){d();return}if(kp.match(r))return l(r.payload);let i=e.getState(),a=()=>{if(i===_p)throw Error(Mp(23));return i},s;try{if(s=n(r),t.size>0){let n=e.getState(),s=Array.from(t.values());for(let t of s){let s=!1;try{s=t.predicate(r,n,i)}catch(e){s=!1,Ep(o,e,{raisedBy:`predicate`})}s&&u(t,r,e,a)}}}finally{i=_p}return s},startListening:c,stopListening:l,clearListeners:d}};function Mp(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Np=Gf({name:`chartLayout`,initialState:{layoutType:`horizontal`,width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){e.margin.top=t.payload.top??0,e.margin.right=t.payload.right??0,e.margin.bottom=t.payload.bottom??0,e.margin.left=t.payload.left??0},setScale(e,t){e.scale=t.payload}}}),{setMargin:Pp,setLayout:Fp,setChartSize:Ip,setScale:Lp}=Np.actions,Rp=Np.reducer;function zp(e,t,n){return Array.isArray(e)&&e&&t+n!==0?e.slice(t,n+1):e}function J(e){return Number.isFinite(e)}function Bp(e){return typeof e==`number`&&e>0&&Number.isFinite(e)}function Vp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Hp(e){for(var t=1;t{if(t&&n){var{width:r,height:i}=n,{align:a,verticalAlign:o,layout:s}=t;if((s===`vertical`||s===`horizontal`&&o===`middle`)&&a!==`center`&&V(e[a]))return Hp(Hp({},e),{},{[a]:e[a]+(r||0)});if((s===`horizontal`||s===`vertical`&&a===`center`)&&o!==`middle`&&V(e[o]))return Hp(Hp({},e),{},{[o]:e[o]+(i||0)})}return e},qp=(e,t)=>e===`horizontal`&&t===`xAxis`||e===`vertical`&&t===`yAxis`||e===`centric`&&t===`angleAxis`||e===`radial`&&t===`radiusAxis`,Jp=(e,t,n,r)=>{if(r)return e.map(e=>e.coordinate);var i,a,o=e.map(e=>(e.coordinate===t&&(i=!0),e.coordinate===n&&(a=!0),e.coordinate));return i||o.push(t),a||o.push(n),o},Yp=(e,t,n)=>{if(!e)return null;var{duplicateDomain:r,type:i,range:a,scale:o,realScaleType:s,isCategorical:c,categoricalDomain:l,tickCount:u,ticks:d,niceTicks:f,axisType:p}=e;if(!o)return null;var m=s===`scaleBand`&&o.bandwidth?o.bandwidth()/2:2,h=(t||n)&&i===`category`&&o.bandwidth?o.bandwidth()/m:0;return h=p===`angleAxis`&&a&&a.length>=2?Lc(a[0]-a[1])*2*h:h,t&&(d||f)?(d||f||[]).map((e,t)=>{var n=r?r.indexOf(e):e,i=o.map(n);return J(i)?{coordinate:i+h,value:e,offset:h,index:t}:null}).filter(qc):c&&l?l.map((e,t)=>{var n=o.map(e);return J(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(qc):o.ticks&&!n&&u!=null?o.ticks(u).map((e,t)=>{var n=o.map(e);return J(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(qc):o.domain().map((e,t)=>{var n=o.map(e);return J(n)?{coordinate:n+h,value:r?r[e]:e,index:t,offset:h}:null}).filter(qc)},Xp=(e,t)=>{if(!t||t.length!==2||!V(t[0])||!V(t[1]))return e;var n=Math.min(t[0],t[1]),r=Math.max(t[0],t[1]),i=[e[0],e[1]];return(!V(e[0])||e[0]r)&&(i[1]=r),i[0]>r&&(i[0]=r),i[1]{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(s[0]=i,i+=u,s[1]=i):(s[0]=a,a+=u,s[1]=a)}}}},expand:Cc,none:vc,silhouette:wc,wiggle:Tc,positive:e=>{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(o[0]=i,i+=s,o[1]=i):(o[0]=0,o[1]=0)}}}}},Qp=(e,t,n)=>{var r=Zp[n]??vc,i=Sc().keys(t).value((e,t)=>Number(Y(e,t,0))).order(yc).offset(r)(e);return i.forEach((n,r)=>{n.forEach((n,i)=>{var a=Y(e[i],t[r],0);Array.isArray(a)&&a.length===2&&V(a[0])&&V(a[1])&&(n[0]=a[0],n[1]=a[1])})}),i};function $p(e){return e==null?void 0:String(e)}function em(e){var{axis:t,ticks:n,bandSize:r,entry:i,index:a,dataKey:o}=e;if(t.type===`category`){if(!t.allowDuplicatedCategory&&t.dataKey&&!U(i[t.dataKey])){var s=Gc(n,`value`,i[t.dataKey]);if(s)return s.coordinate+r/2}return n!=null&&n[a]?n[a].coordinate+r/2:null}var c=Y(i,U(o)?t.dataKey:o),l=t.scale.map(c);return V(l)?l:null}var tm=e=>{var{axis:t,ticks:n,offset:r,bandSize:i,entry:a,index:o}=e;if(t.type===`category`)return n[o]?n[o].coordinate+r:null;var s=Y(a,t.dataKey,t.scale.domain()[o]);if(U(s))return null;var c=t.scale.map(s);return V(c)?c-i/2+r:null},nm=e=>{var{numericAxis:t}=e,n=t.scale.domain();if(t.type===`number`){var r=Math.min(n[0],n[1]),i=Math.max(n[0],n[1]);return r<=0&&i>=0?0:i<0?i:r}return n[0]},rm=e=>{var t=e.flat(2).filter(V);return[Math.min(...t),Math.max(...t)]},im=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],am=(e,t,n)=>{if(e!=null)return im(Object.keys(e).reduce((r,i)=>{var a=e[i];if(!a)return r;var{stackedData:o}=a,s=o.reduce((e,r)=>{var i=rm(zp(r,t,n));return!J(i[0])||!J(i[1])?e:[Math.min(e[0],i[0]),Math.max(e[1],i[1])]},[1/0,-1/0]);return[Math.min(s[0],r[0]),Math.max(s[1],r[1])]},[1/0,-1/0]))},om=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,sm=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,cm=(e,t,n)=>{if(e&&e.scale&&e.scale.bandwidth){var r=e.scale.bandwidth();if(!n||r>0)return r}if(e&&t&&t.length>=2){for(var i=(0,Fu.default)(t,e=>e.coordinate),a=1/0,o=1,s=i.length;o{if(t===`horizontal`)return e.relativeX;if(t===`vertical`)return e.relativeY},fm=(e,t)=>t===`centric`?e.angle:e.radius,pm=e=>e.layout.width,mm=e=>e.layout.height,hm=e=>e.layout.scale,gm=e=>e.layout.margin,_m=K(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),vm=K(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),ym=`data-recharts-item-index`;function bm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function xm(e){for(var t=1;te.brush.height;function Em(e){return vm(e).reduce((e,t)=>t.orientation===`left`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function Dm(e){return vm(e).reduce((e,t)=>t.orientation===`right`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function Om(e){return _m(e).reduce((e,t)=>t.orientation===`top`&&!t.mirror&&!t.hide?e+t.height:e,0)}function km(e){return _m(e).reduce((e,t)=>t.orientation===`bottom`&&!t.mirror&&!t.hide?e+t.height:e,0)}var Am=K([pm,mm,gm,Tm,Em,Dm,Om,km,Iu,Lu],(e,t,n,r,i,a,o,s,c,l)=>{var u={left:(n.left||0)+i,right:(n.right||0)+a},d=xm(xm({},{top:(n.top||0)+o,bottom:(n.bottom||0)+s}),u),f=d.bottom;d.bottom+=r,d=Kp(d,c,l);var p=e-d.left-d.right,m=t-d.top-d.bottom;return xm(xm({brushBottom:f},d),{},{width:Math.max(p,0),height:Math.max(m,0)})}),jm=K(Am,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Mm=K(pm,mm,(e,t)=>({x:0,y:0,width:e,height:t})),Nm=(0,F.createContext)(null),Pm=()=>(0,F.useContext)(Nm)!=null,Fm=e=>e.brush,Im=K([Fm,Am,gm],(e,t,n)=>({height:e.height,x:V(e.x)?e.x:t.left,y:V(e.y)?e.y:t.top+t.height+t.brushBottom-(n?.bottom||0),width:V(e.width)?e.width:t.width})),Lm=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t,{signal:n,edges:r}={}){let i,a=null,o=r!=null&&r.includes(`leading`),s=r==null||r.includes(`trailing`),c=()=>{a!==null&&(e.apply(i,a),i=void 0,a=null)},l=()=>{s&&c(),p()},u=null,d=()=>{u!=null&&clearTimeout(u),u=setTimeout(()=>{u=null,l()},t)},f=()=>{u!==null&&(clearTimeout(u),u=null)},p=()=>{f(),i=void 0,a=null},m=()=>{c()},h=function(...e){if(n?.aborted)return;i=this,a=e;let t=u==null;d(),o&&t&&c()};return h.schedule=d,h.cancel=p,h.flush=m,n?.addEventListener(`abort`,p,{once:!0}),h}e.debounce=t})),Rm=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Lm();function n(e,n=0,r={}){typeof r!=`object`&&(r={});let{leading:i=!1,trailing:a=!0,maxWait:o}=r,s=[,,];i&&(s[0]=`leading`),a&&(s[1]=`trailing`);let c,l=null,u=t.debounce(function(...t){c=e.apply(this,t),l=null},n,{edges:s}),d=function(...t){return o!=null&&(l===null&&(l=Date.now()),Date.now()-l>=o)?(c=e.apply(this,t),l=Date.now(),u.cancel(),u.schedule(),c):(u.apply(this,t),c)};return d.cancel=u.cancel,d.flush=()=>(u.flush(),c),d}e.debounce=n})),zm=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Rm();function n(e,n=0,r={}){let{leading:i=!0,trailing:a=!0}=r;return t.debounce(e,n,{leading:i,maxWait:n,trailing:a})}e.throttle=n})),Bm=M(((e,t)=>{t.exports=zm().throttle})),Vm=!0,Hm=function(e,t){var n=[...arguments].slice(2);if(Vm&&typeof console<`u`&&console.warn&&(t===void 0&&console.warn(`LogUtils requires an error message argument`),!e))if(t===void 0)console.warn(`Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.`);else{var r=0;console.warn(t.replace(/%s/g,()=>n[r++]))}},Um={width:`100%`,height:`100%`,debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},Wm=(e,t,n)=>{var{width:r=Um.width,height:i=Um.height,aspect:a,maxHeight:o}=n,s=zc(r)?e:Number(r),c=zc(i)?t:Number(i);return a&&a>0&&(s?c=s/a:c&&(s=c*a),o&&c!=null&&c>o&&(c=o)),{calculatedWidth:s,calculatedHeight:c}},Gm={width:0,height:0,overflow:`visible`},Km={width:0,overflowX:`visible`},qm={height:0,overflowY:`visible`},Jm={},Ym=e=>{var{width:t,height:n}=e,r=zc(t),i=zc(n);return r&&i?Gm:r?Km:i?qm:Jm};function Xm(e){var{width:t,height:n,aspect:r}=e,i=t,a=n;return i===void 0&&a===void 0?(i=Um.width,a=Um.height):i===void 0?i=r&&r>0?void 0:Um.width:a===void 0&&(a=r&&r>0?void 0:Um.height),{width:i,height:a}}var Zm=Se(Bm());function Qm(){return Qm=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:n,height:r}),[n,r]);return ah(i)?F.createElement(ih.Provider,{value:i},t):null}var sh=()=>(0,F.useContext)(ih),ch=(0,F.forwardRef)((e,t)=>{var{aspect:n,initialDimension:r=Um.initialDimension,width:i,height:a,minWidth:o=Um.minWidth,minHeight:s,maxHeight:c,children:l,debounce:u=Um.debounce,id:d,className:f,onResize:p,style:m={}}=e,h=(0,F.useRef)(null),g=(0,F.useRef)();g.current=p,(0,F.useImperativeHandle)(t,()=>h.current);var[_,v]=(0,F.useState)({containerWidth:r.width,containerHeight:r.height}),y=(0,F.useCallback)((e,t)=>{v(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]);(0,F.useEffect)(()=>{if(h.current==null||typeof ResizeObserver>`u`)return Jc;var e=e=>{var t,n=e[0];if(n!=null){var{width:r,height:i}=n.contentRect;y(r,i),(t=g.current)==null||t.call(g,r,i)}};u>0&&(e=(0,Zm.default)(e,u,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),{width:n,height:r}=h.current.getBoundingClientRect();return y(n,r),t.observe(h.current),()=>{t.disconnect()}},[y,u]);var{containerWidth:b,containerHeight:x}=_;Hm(!n||n>0,`The aspect(%s) must be greater than zero.`,n);var{calculatedWidth:S,calculatedHeight:C}=Wm(b,x,{width:i,height:a,aspect:n,maxHeight:c});return Hm(S!=null&&S>0||C!=null&&C>0,`The width(%s) and height(%s) of chart should be greater than 0, + please check the style of container, or the props width(%s) and height(%s), + or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the + height and width.`,S,C,i,a,o,s,n),F.createElement(`div`,{id:d?`${d}`:void 0,className:P(`recharts-responsive-container`,f),style:eh(eh({},m),{},{width:i,height:a,minWidth:o,minHeight:s,maxHeight:c}),ref:h},F.createElement(`div`,{style:Ym({width:i,height:a})},F.createElement(oh,{width:S,height:C},l)))}),lh=(0,F.forwardRef)((e,t)=>{var n=sh();if(Bp(n.width)&&Bp(n.height))return e.children;var{width:r,height:i}=Xm({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:a,calculatedHeight:o}=Wm(void 0,void 0,{width:r,height:i,aspect:e.aspect,maxHeight:e.maxHeight});return V(a)&&V(o)?F.createElement(oh,{width:a,height:o},e.children):F.createElement(ch,Qm({},e,{width:r,height:i,ref:t}))});function uh(e){if(e)return{x:e.x,y:e.y,upperWidth:`upperWidth`in e?e.upperWidth:e.width,lowerWidth:`lowerWidth`in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var dh=()=>{var e=Pm(),t=G(jm),n=G(Im),r=G(Fm)?.padding;return!e||!n||!r?t:{width:n.width-r.left-r.right,height:n.height-r.top-r.bottom,x:r.left,y:r.top}},fh={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},ph=()=>G(Am)??fh,mh=()=>G(pm),hh=()=>G(mm),gh=()=>G(e=>e.layout.margin),X=e=>e.layout.layoutType,_h=()=>G(X),vh=()=>{var e=_h();if(e===`horizontal`||e===`vertical`)return e},yh=e=>{var t=e.layout.layoutType;if(t===`centric`||t===`radial`)return t},bh=()=>_h()!==void 0,xh=e=>{var t=W(),n=Pm(),{width:r,height:i}=e,a=sh(),o=r,s=i;return a&&(o=a.width>0?a.width:r,s=a.height>0?a.height:i),(0,F.useEffect)(()=>{!n&&Bp(o)&&Bp(s)&&t(Ip({width:o,height:s}))},[t,n,o,s]),null},Sh=Symbol.for(`immer-nothing`),Ch=Symbol.for(`immer-draftable`),wh=Symbol.for(`immer-state`);function Th(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Eh=Object.getPrototypeOf;function Dh(e){return!!e&&!!e[wh]}function Oh(e){return e?jh(e)||Array.isArray(e)||!!e[Ch]||!!e.constructor?.[Ch]||Lh(e)||Rh(e):!1}var kh=Object.prototype.constructor.toString(),Ah=new WeakMap;function jh(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=Ah.get(n);return r===void 0&&(r=Function.toString.call(n),Ah.set(n,r)),r===kh}function Mh(e,t,n=!0){Nh(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function Nh(e){let t=e[wh];return t?t.type_:Array.isArray(e)?1:Lh(e)?2:Rh(e)?3:0}function Ph(e,t){return Nh(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Fh(e,t,n){let r=Nh(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function Ih(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function Lh(e){return e instanceof Map}function Rh(e){return e instanceof Set}function zh(e){return e.copy_||e.base_}function Bh(e,t){if(Lh(e))return new Map(e);if(Rh(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=jh(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[wh];let n=Reflect.ownKeys(t);for(let r=0;r1&&Object.defineProperties(e,{set:Uh,add:Uh,clear:Uh,delete:Uh}),Object.freeze(e),t&&Object.values(e).forEach(e=>Vh(e,!0)),e)}function Hh(){Th(2)}var Uh={value:Hh};function Wh(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var Gh={};function Kh(e){let t=Gh[e];return t||Th(0,e),t}var qh;function Jh(){return qh}function Yh(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Xh(e,t){t&&(Kh(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Zh(e){Qh(e),e.drafts_.forEach(eg),e.drafts_=null}function Qh(e){e===qh&&(qh=e.parent_)}function $h(e){return qh=Yh(qh,e)}function eg(e){let t=e[wh];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function tg(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[wh].modified_&&(Zh(t),Th(4)),Oh(e)&&(e=ng(t,e),t.parent_||ig(t,e)),t.patches_&&Kh(`Patches`).generateReplacementPatches_(n[wh].base_,e,t.patches_,t.inversePatches_)):e=ng(t,n,[]),Zh(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===Sh?void 0:e}function ng(e,t,n){if(Wh(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[wh];if(!i)return Mh(t,(r,a)=>rg(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return ig(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),Mh(a,(r,a)=>rg(e,i,t,r,a,n,o),r),ig(e,t,!1),n&&e.patches_&&Kh(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function rg(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=Wh(i);if(!(s&&!o)){if(Dh(i)){let o=ng(e,i,a&&t&&t.type_!==3&&!Ph(t.assigned_,r)?a.concat(r):void 0);if(Fh(n,r,o),Dh(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(Oh(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;ng(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(Lh(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&ig(e,i)}}}function ig(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Vh(t,n)}function ag(e,t){let n=Array.isArray(e),r={type_:+!!n,scope_:t?t.scope_:Jh(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=og;n&&(i=[r],a=sg);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var og={get(e,t){if(t===wh)return e;let n=zh(e);if(!Ph(n,t))return lg(e,n,t);let r=n[t];return e.finalized_||!Oh(r)?r:r===cg(e.base_,t)?(fg(e),e.copy_[t]=mg(r,e)):r},has(e,t){return t in zh(e)},ownKeys(e){return Reflect.ownKeys(zh(e))},set(e,t,n){let r=ug(zh(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=cg(zh(e),t),i=r?.[wh];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(Ih(n,r)&&(n!==void 0||Ph(e.base_,t)))return!0;fg(e),dg(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return cg(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,fg(e),dg(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=zh(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){Th(11)},getPrototypeOf(e){return Eh(e.base_)},setPrototypeOf(){Th(12)}},sg={};Mh(og,(e,t)=>{sg[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),sg.deleteProperty=function(e,t){return sg.set.call(this,e,t,void 0)},sg.set=function(e,t,n){return og.set.call(this,e[0],t,n,e[0])};function cg(e,t){let n=e[wh];return(n?zh(n):e)[t]}function lg(e,t,n){let r=ug(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function ug(e,t){if(!(t in e))return;let n=Eh(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Eh(n)}}function dg(e){e.modified_||(e.modified_=!0,e.parent_&&dg(e.parent_))}function fg(e){e.copy_||=Bh(e.base_,e.scope_.immer_.useStrictShallowCopy_)}var pg=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&Th(6),n!==void 0&&typeof n!=`function`&&Th(7);let r;if(Oh(e)){let i=$h(this),a=mg(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Zh(i):Qh(i)}return Xh(i,n),tg(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===Sh&&(r=void 0),this.autoFreeze_&&Vh(r,!0),n){let t=[],i=[];Kh(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else Th(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Oh(e)||Th(8),Dh(e)&&(e=hg(e));let t=$h(this),n=mg(e,void 0);return n[wh].isManual_=!0,Qh(t),n}finishDraft(e,t){let n=e&&e[wh];(!n||!n.isManual_)&&Th(9);let{scope_:r}=n;return Xh(r,t),tg(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Kh(`Patches`).applyPatches_;return Dh(e)?r(e,t):this.produce(e,e=>r(e,t))}};function mg(e,t){let n=Lh(e)?Kh(`MapSet`).proxyMap_(e,t):Rh(e)?Kh(`MapSet`).proxySet_(e,t):ag(e,t);return(t?t.scope_:Jh()).drafts_.push(n),n}function hg(e){return Dh(e)||Th(10,e),gg(e)}function gg(e){if(!Oh(e)||Wh(e))return e;let t=e[wh],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Bh(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Bh(e,!0);return Mh(n,(e,t)=>{Fh(n,e,gg(t))},r),t&&(t.finalized_=!1),n}new pg().produce;function Z(e){return e}var _g=Gf({name:`legend`,initialState:{settings:{layout:`horizontal`,align:`center`,verticalAlign:`middle`,itemSorter:`value`},size:{width:0,height:0},payload:[]},reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter},addLegendPayload:{reducer(e,t){e.payload.push(Z(t.payload))},prepare:q()},replaceLegendPayload:{reducer(e,t){var{prev:n,next:r}=t.payload,i=vf(e).payload.indexOf(Z(n));i>-1&&(e.payload[i]=Z(r))},prepare:q()},removeLegendPayload:{reducer(e,t){var n=vf(e).payload.indexOf(Z(t.payload));n>-1&&e.payload.splice(n,1)},prepare:q()}}}),{setLegendSize:vg,setLegendSettings:yg,addLegendPayload:bg,replaceLegendPayload:xg,removeLegendPayload:Sg}=_g.actions,Cg=_g.reducer,wg=M((e=>{var t=De();t.useSyncExternalStore,t.useRef,t.useEffect,t.useMemo,t.useDebugValue}));M(((e,t)=>{t.exports=wg()}))();function Tg(e){e()}function Eg(){let e=null,t=null;return{clear(){e=null,t=null},notify(){Tg(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var Dg={notify(){},get:()=>[]};function Og(e,t){let n,r=Dg,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=Eg())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=Dg)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var kg=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,Ag=typeof navigator<`u`&&navigator.product===`ReactNative`,jg=kg||Ag?F.useLayoutEffect:F.useEffect;function Mg(e,t){return e===t?e!==0||t!==0||1/e==1/t:e!==e&&t!==t}function Ng(e,t){if(Mg(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r({store:i,subscription:Og(i),getServerState:r?()=>r:void 0}),[i,r]),o=F.useMemo(()=>i.getState(),[i]);jg(()=>{let{subscription:e}=a;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),o!==i.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[a,o]);let s=n||Lg;return F.createElement(s.Provider,{value:a},t)}var zg=Rg,Bg=new Set([`axisLine`,`tickLine`,`activeBar`,`activeDot`,`activeLabel`,`activeShape`,`allowEscapeViewBox`,`background`,`cursor`,`dot`,`label`,`line`,`margin`,`padding`,`position`,`shape`,`style`,`tick`,`wrapperStyle`,`radius`,`throttledEvents`]);function Vg(e,t){return e==null&&t==null?!0:typeof e==`number`&&typeof t==`number`?e===t||e!==e&&t!==t:e===t}function Hg(e,t){for(var n of new Set([...Object.keys(e),...Object.keys(t)]))if(Bg.has(n)){if(e[n]==null&&t[n]==null)continue;if(!Ng(e[n],t[n]))return!1}else if(!Vg(e[n],t[n]))return!1;return!0}var Ug=Se(Ve()),Wg=[`contextPayload`];function Gg(){return Gg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t(yg(e))},[t,e]),null}function r_(e){var t=W();return(0,F.useEffect)(()=>(t(vg(e)),()=>{t(vg({width:0,height:0}))}),[t,e]),null}function i_(e,t,n,r){return e===`vertical`&&t!=null?{height:t}:e===`horizontal`?{width:n||r}:null}var a_={align:`center`,iconSize:14,inactiveColor:`#ccc`,itemSorter:`value`,layout:`horizontal`,verticalAlign:`bottom`};function o_(e){var t=yl(e,a_),n=zu(),r=ns(),i=gh(),{width:a,height:o,wrapperStyle:s,portal:c}=t,[l,u]=Vu([n]),d=mh(),f=hh();if(d==null||f==null)return null;var p=d-(i?.left||0)-(i?.right||0),m=i_(t.layout,o,a,p),h=c?s:qg(qg({position:`absolute`,width:m?.width||a||`auto`,height:m?.height||o||`auto`},t_(s,t,i,d,f,l)),s),g=c??r;return g==null||n==null?null:(0,Ug.createPortal)(F.createElement(`div`,{className:`recharts-legend-wrapper`,style:h,ref:u},F.createElement(n_,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!c&&F.createElement(r_,{width:l.width,height:l.height}),F.createElement(e_,Gg({},t,m,{margin:i,chartWidth:d,chartHeight:f,contextPayload:n}))),g)}var s_=F.memo(o_,Hg);s_.displayName=`Legend`;function c_(){return c_=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{separator:t=h_.separator,contentStyle:n,itemStyle:r,labelStyle:i=h_.labelStyle,payload:a,formatter:o,itemSorter:s,wrapperClassName:c,labelClassName:l,label:u,labelFormatter:d,accessibilityLayer:f=h_.accessibilityLayer}=e,p=()=>{if(a&&a.length){var e={padding:0,margin:0},n=g_(a,s).map((e,n)=>{if(!e||e.type===`none`)return null;var i=e.formatter||o||m_,{value:s,name:c}=e,l=s,u=c;if(i){var d=i(s,c,e,n,a);if(Array.isArray(d))[l,u]=d;else if(d!=null)l=d;else return null}var f=u_(u_({},h_.itemStyle),{},{color:e.color||h_.itemStyle.color},r);return F.createElement(`li`,{className:`recharts-tooltip-item`,key:`tooltip-item-${n}`,style:f},Bc(u)?F.createElement(`span`,{className:`recharts-tooltip-item-name`},u):null,Bc(u)?F.createElement(`span`,{className:`recharts-tooltip-item-separator`},t):null,F.createElement(`span`,{className:`recharts-tooltip-item-value`},l),F.createElement(`span`,{className:`recharts-tooltip-item-unit`},e.unit||``))});return F.createElement(`ul`,{className:`recharts-tooltip-item-list`,style:e},n)}return null},m=u_(u_({},h_.contentStyle),n),h=u_({margin:0},i),g=!U(u),_=g?u:``,v=P(`recharts-default-tooltip`,c),y=P(`recharts-tooltip-label`,l);g&&d&&a!=null&&(_=d(u,a));var b=f?{role:`status`,"aria-live":`assertive`}:{};return F.createElement(`div`,c_({className:v,style:m},b),F.createElement(`p`,{className:y,style:h},F.isValidElement(_)?_:`${_}`),p())},v_=`recharts-tooltip-wrapper`,y_={visibility:`hidden`};function b_(e){var{coordinate:t,translateX:n,translateY:r}=e;return P(v_,{[`${v_}-right`]:V(n)&&t&&V(t.x)&&n>=t.x,[`${v_}-left`]:V(n)&&t&&V(t.x)&&n=t.y,[`${v_}-top`]:V(r)&&t&&V(t.y)&&r0?i:0),d=n[r]+i;if(t[r])return o[r]?u:d;var f=c[r];return f==null?0:o[r]?Math.max(uf+l?Math.max(u,f):Math.max(d,f)}function S_(e){var{translateX:t,translateY:n,useTranslate3d:r}=e;return{transform:r?`translate3d(${t}px, ${n}px, 0)`:`translate(${t}px, ${n}px)`}}function C_(e){var{allowEscapeViewBox:t,coordinate:n,offsetTop:r,offsetLeft:i,position:a,reverseDirection:o,tooltipBox:s,useTranslate3d:c,viewBox:l}=e,u,d,f;return s.height>0&&s.width>0&&n?(d=x_({allowEscapeViewBox:t,coordinate:n,key:`x`,offset:i,position:a,reverseDirection:o,tooltipDimension:s.width,viewBox:l,viewBoxDimension:l.width}),f=x_({allowEscapeViewBox:t,coordinate:n,key:`y`,offset:r,position:a,reverseDirection:o,tooltipDimension:s.height,viewBox:l,viewBoxDimension:l.height}),u=S_({translateX:d,translateY:f,useTranslate3d:c})):u=y_,{cssProperties:u,cssClasses:b_({translateX:d,translateY:f,coordinate:n})}}var w_={devToolsEnabled:!0,isSsr:!(typeof window<`u`&&window.document&&window.document.createElement&&window.setTimeout)};function T_(){var[e,t]=(0,F.useState)(()=>w_.isSsr||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,F.useEffect)(()=>{if(window.matchMedia){var e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=()=>{t(e.matches)};return e.addEventListener(`change`,n),()=>{e.removeEventListener(`change`,n)}}},[]),e}function E_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function D_(e){for(var t=1;t({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}}));F.useEffect(()=>{var t=t=>{t.key===`Escape`&&r({dismissed:!0,dismissedAtCoordinate:{x:e.coordinate?.x??0,y:e.coordinate?.y??0}})};return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t)}},[e.coordinate?.x,e.coordinate?.y]),n.dismissed&&((e.coordinate?.x??0)!==n.dismissedAtCoordinate.x||(e.coordinate?.y??0)!==n.dismissedAtCoordinate.y)&&r(D_(D_({},n),{},{dismissed:!1}));var{cssClasses:i,cssProperties:a}=C_({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset==`number`?e.offset:e.offset.x,offsetTop:typeof e.offset==`number`?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:{height:e.lastBoundingBox.height,width:e.lastBoundingBox.width},useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),o=D_(D_({},e.hasPortalFromProps?{}:D_(D_({transition:j_({prefersReducedMotion:t,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},a),{},{pointerEvents:`none`,position:`absolute`,top:0,left:0})),{},{visibility:!n.dismissed&&e.active&&e.hasPayload?`visible`:`hidden`},e.wrapperStyle);return F.createElement(`div`,{xmlns:`http://www.w3.org/1999/xhtml`,tabIndex:-1,className:i,style:o,ref:e.innerRef},e.children)}var N_=F.memo(M_),P_=()=>G(e=>e.rootProps.accessibilityLayer)??!0;function F_(){return F_=Object.assign?Object.assign.bind():function(e){for(var t=1;tJ(e.x)&&J(e.y),U_=e=>e.base!=null&&H_(e.base)&&H_(e),W_=e=>e.x,G_=e=>e.y,K_=(e,t)=>{if(typeof e==`function`)return e;var n=`curve${Kc(e)}`;if((n===`curveMonotone`||n===`curveBump`)&&t){var r=V_[`${n}${t===`vertical`?`Y`:`X`}`];if(r)return r}return V_[n]||ys},q_={connectNulls:!1,type:`linear`},J_=e=>{var{type:t=q_.type,points:n=[],baseLine:r,layout:i,connectNulls:a=q_.connectNulls}=e,o=K_(t,i),s=a?n.filter(H_):n;if(Array.isArray(r)){var c,l=n.map((e,t)=>L_(L_({},e),{},{base:r[t]}));return c=i===`vertical`?Cs().y(G_).x1(W_).x0(e=>e.base.x):Cs().x(W_).y1(G_).y0(e=>e.base.y),c.defined(U_).curve(o)(a?l.filter(U_):l)}return(i===`vertical`&&V(r)?Cs().y(G_).x1(W_).x0(r):V(r)?Cs().x(W_).y1(G_).y0(r):Ss().x(W_).y(G_)).defined(H_).curve(o)(s)},Y_=e=>{var{className:t,points:n,path:r,pathRef:i}=e,a=_h();if((!n||!n.length)&&!r)return null;var o={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=n&&n.length?J_(o):r;return F.createElement(`path`,F_({},Vo(e),dl(e),{className:P(`recharts-curve`,t),d:s===null?void 0:s,ref:i}))},X_=[`x`,`y`,`top`,`left`,`width`,`height`,`className`];function Z_(){return Z_=Object.assign?Object.assign.bind():function(e){for(var t=1;t`M${e},${i}v${r}M${a},${t}h${n}`,ov=e=>{var{x:t=0,y:n=0,top:r=0,left:i=0,width:a=0,height:o=0,className:s}=e,c=rv(e,X_),l=$_({x:t,y:n,top:r,left:i,width:a,height:o},c);return!V(t)||!V(n)||!V(a)||!V(o)||!V(r)||!V(i)?null:F.createElement(`path`,Z_({},Uo(l),{className:P(`recharts-cross`,s),d:av(t,n,a,o,r,i)}))};function sv(e,t,n,r){var i=r/2;return{stroke:`none`,fill:`#ccc`,x:e===`horizontal`?t.x-i:n.left+.5,y:e===`horizontal`?n.top+.5:t.y-i,width:e===`horizontal`?r:n.width-1,height:e===`horizontal`?n.height-1:r}}function cv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function lv(e){for(var t=1;te.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),mv=(e,t,n)=>e.map(e=>`${pv(e)} ${t}ms ${n}`).join(`,`),hv=(e,t)=>[Object.keys(e),Object.keys(t)].reduce((e,t)=>e.filter(e=>t.includes(e))),gv=(e,t)=>Object.keys(t).reduce((n,r)=>lv(lv({},n),{},{[r]:e(r,t[r])}),{});function _v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function vv(e){for(var t=1;te+(t-e)*n,Cv=e=>{var{from:t,to:n}=e;return t!==n},wv=(e,t,n)=>{var r=gv((t,n)=>{if(Cv(n)){var[r,i]=e(n.from,n.to,n.velocity);return vv(vv({},n),{},{from:r,velocity:i})}return n},t);return n<1?gv((e,t)=>Cv(t)&&r[e]!=null?vv(vv({},t),{},{velocity:Sv(t.velocity,r[e].velocity,n),from:Sv(t.from,r[e].from,n)}):t,t):wv(e,r,n-1)};function Tv(e,t,n,r,i,a){var o,s=r.reduce((n,r)=>vv(vv({},n),{},{[r]:{from:e[r],velocity:0,to:t[r]}}),{}),c=()=>gv((e,t)=>t.from,s),l=()=>!Object.values(s).filter(Cv).length,u=null,d=r=>{o||=r;var f=(r-o)/n.dt;s=wv(n,s,f),i(vv(vv(vv({},e),t),c())),o=r,l()||(u=a.setTimeout(d))};return()=>(u=a.setTimeout(d),()=>{var e;(e=u)==null||e()})}function Ev(e,t,n,r,i,a,o){var s=null,c=i.reduce((n,r)=>{var i=e[r],a=t[r];return i==null||a==null?n:vv(vv({},n),{},{[r]:[i,a]})},{}),l,u=i=>{l||=i;var d=(i-l)/r,f=gv((e,t)=>Sv(...t,n(d)),c);if(a(vv(vv(vv({},e),t),f)),d<1)s=o.setTimeout(u);else{var p=gv((e,t)=>Sv(...t,n(1)),c);a(vv(vv(vv({},e),t),p))}};return()=>(s=o.setTimeout(u),()=>{var e;(e=s)==null||e()})}var Dv=(e,t,n,r,i,a)=>{var o=hv(e,t);return n==null?()=>(i(vv(vv({},e),t)),()=>{}):n.isStepper===!0?Tv(e,t,n,o,i,a):Ev(e,t,n,r,o,i,a)},Ov=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],kv=(e,t)=>e.map((e,n)=>e*t**n).reduce((e,t)=>e+t),Av=(e,t)=>n=>kv(Ov(e,t),n),jv=(e,t)=>n=>kv([...Ov(e,t).map((e,t)=>e*t).slice(1),0],n),Mv=e=>{var t,n=e.split(`(`);if(n.length!==2||n[0]!==`cubic-bezier`)return null;var r=(t=n[1])==null||(t=t.split(`)`)[0])==null?void 0:t.split(`,`);if(r==null||r.length!==4)return null;var i=r.map(e=>parseFloat(e));return[i[0],i[1],i[2],i[3]]},Nv=function(){var e=[...arguments];if(e.length===1)switch(e[0]){case`linear`:return[0,0,1,1];case`ease`:return[.25,.1,.25,1];case`ease-in`:return[.42,0,1,1];case`ease-out`:return[.42,0,.58,1];case`ease-in-out`:return[0,0,.58,1];default:var t=Mv(e[0]);if(t)return t}return e.length===4?e:[0,0,1,1]},Pv=(e,t,n,r)=>{var i=Av(e,n),a=Av(t,r),o=jv(e,n),s=e=>e>1?1:e<0?0:e,c=e=>{for(var t=e>1?1:e,n=t,r=0;r<8;++r){var c=i(n)-t,l=o(n);if(Math.abs(c-t)<1e-4||l<1e-4)return a(n);n=s(n-c/l)}return a(n)};return c.isStepper=!1,c},Fv=function(){return Pv(...Nv(...arguments))},Iv=function(){var{stiff:e=100,damping:t=8,dt:n=17}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=(r,i,a)=>{var o=a+(-(r-i)*e-a*t)*n/1e3,s=a*n/1e3+r;return Math.abs(s-i)<1e-4&&Math.abs(o)<1e-4?[i,0]:[s,o]};return r.isStepper=!0,r.dt=n,r},Lv=e=>{if(typeof e==`string`)switch(e){case`ease`:case`ease-in-out`:case`ease-out`:case`ease-in`:case`linear`:return Fv(e);case`spring`:return Iv();default:if(e.split(`(`)[0]===`cubic-bezier`)return Fv(e)}return typeof e==`function`?e:null};function Rv(e){var t,n=()=>null,r=!1,i=null,a=o=>{if(!r){if(Array.isArray(o)){if(!o.length)return;var[s,...c]=o;if(typeof s==`number`){i=e.setTimeout(a.bind(null,c),s);return}a(s),i=e.setTimeout(a.bind(null,c));return}typeof o==`string`&&(t=o,n(t)),typeof o==`object`&&(t=o,n(t)),typeof o==`function`&&o()}};return{stop:()=>{r=!0},start:e=>{r=!1,i&&=(i(),null),a(e)},subscribe:e=>(n=e,()=>{n=()=>null}),getTimeoutController:()=>e}}var zv=class{setTimeout(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=performance.now(),r=null,i=a=>{a-n>=t?e(a):typeof requestAnimationFrame==`function`&&(r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>{r!=null&&cancelAnimationFrame(r)}}};function Bv(){return Rv(new zv)}var Vv=(0,F.createContext)(Bv);function Hv(e,t){var n=(0,F.useContext)(Vv);return(0,F.useMemo)(()=>t??n(e),[e,t,n])}var Uv={begin:0,duration:1e3,easing:`ease`,isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}},Wv={t:0},Gv={t:1};function Kv(e){var t=yl(e,Uv),{isActive:n,canBegin:r,duration:i,easing:a,begin:o,onAnimationEnd:s,onAnimationStart:c,children:l}=t,u=T_(),d=n===`auto`?!w_.isSsr&&!u:n,f=Hv(t.animationId,t.animationManager),[p,m]=(0,F.useState)(d?Wv:Gv),h=(0,F.useRef)(null);return(0,F.useEffect)(()=>{d||m(Gv)},[d]),(0,F.useEffect)(()=>{if(!d||!r)return Jc;var e=Dv(Wv,Gv,Lv(a),i,m,f.getTimeoutController());return f.start([c,o,()=>{h.current=e()},i,s]),()=>{f.stop(),h.current&&h.current(),s()}},[d,r,i,a,o,c,s,f]),l(p.t)}function qv(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`animation-`,n=(0,F.useRef)(Hc(t)),r=(0,F.useRef)(e);return r.current!==e&&(n.current=Hc(t),r.current=e),n.current}var Jv=[`radius`],Yv=[`radius`],Xv,Zv,Qv,$v,ey,ty,ny,ry,iy,ay;function oy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function sy(e){for(var t=1;t{var a=Pc(n),o=Pc(r),s=Math.min(Math.abs(a)/2,Math.abs(o)/2),c=o>=0?1:-1,l=a>=0?1:-1,u=+(o>=0&&a>=0||o<0&&a<0),d;if(s>0&&Array.isArray(i)){for(var f=[0,0,0,0],p=0,m=4;ps?s:h}d=Fc(Xv||=my([`M`,`,`,``]),e,t+c*f[0]),f[0]>0&&(d+=Fc(Zv||=my([`A `,`,`,`,0,0,`,`,`,`,`,``]),f[0],f[0],u,e+l*f[0],t)),d+=Fc(Qv||=my([`L `,`,`,``]),e+n-l*f[1],t),f[1]>0&&(d+=Fc($v||=my([`A `,`,`,`,0,0,`,`, + `,`,`,``]),f[1],f[1],u,e+n,t+c*f[1])),d+=Fc(ey||=my([`L `,`,`,``]),e+n,t+r-c*f[2]),f[2]>0&&(d+=Fc(ty||=my([`A `,`,`,`,0,0,`,`, + `,`,`,``]),f[2],f[2],u,e+n-l*f[2],t+r)),d+=Fc(ny||=my([`L `,`,`,``]),e+l*f[3],t+r),f[3]>0&&(d+=Fc(ry||=my([`A `,`,`,`,0,0,`,`, + `,`,`,``]),f[3],f[3],u,e,t+r-c*f[3])),d+=`Z`}else if(s>0&&i===+i&&i>0){var g=Math.min(s,i);d=Fc(iy||=my(`M .,. + A .,.,0,0,.,.,. + L .,. + A .,.,0,0,.,.,. + L .,. + A .,.,0,0,.,.,. + L .,. + A .,.,0,0,.,.,. Z`.split(`.`)),e,t+c*g,g,g,u,e+l*g,t,e+n-l*g,t,g,g,u,e+n,t+c*g,e+n,t+r-c*g,g,g,u,e+n-l*g,t+r,e+l*g,t+r,g,g,u,e,t+r-c*g)}else d=Fc(ay||=my([`M `,`,`,` h `,` v `,` h `,` Z`]),e,t,n,r,-n);return d},gy={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},_y=e=>{var t=yl(e,gy),n=(0,F.useRef)(null),[r,i]=(0,F.useState)(-1);(0,F.useEffect)(()=>{if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&i(e)}catch{}},[]);var{x:a,y:o,width:s,height:c,radius:l,className:u}=t,{animationEasing:d,animationDuration:f,animationBegin:p,isAnimationActive:m,isUpdateAnimationActive:h}=t,g=(0,F.useRef)(s),_=(0,F.useRef)(c),v=(0,F.useRef)(a),y=(0,F.useRef)(o),b=qv((0,F.useMemo)(()=>({x:a,y:o,width:s,height:c,radius:l}),[a,o,s,c,l]),`rectangle-`);if(a!==+a||o!==+o||s!==+s||c!==+c||s===0||c===0)return null;var x=P(`recharts-rectangle`,u);if(!h){var S=Uo(t),{radius:C}=S,w=fy(S,Jv);return F.createElement(`path`,dy({},w,{x:Pc(a),y:Pc(o),width:Pc(s),height:Pc(c),radius:typeof l==`number`?l:void 0,className:x,d:hy(a,o,s,c,l)}))}var T=g.current,E=_.current,D=v.current,O=y.current,k=`0px ${r===-1?1:r}px`,ee=`${r}px ${r}px`,te=mv([`strokeDasharray`],f,typeof d==`string`?d:gy.animationEasing);return F.createElement(Kv,{animationId:b,key:b,canBegin:r>0,duration:f,easing:d,isActive:h,begin:p},e=>{var r=H(T,s,e),i=H(E,c,e),u=H(D,a,e),d=H(O,o,e);n.current&&(g.current=r,_.current=i,v.current=u,y.current=d);var f=m?e>0?{transition:te,strokeDasharray:ee}:{strokeDasharray:k}:{strokeDasharray:ee},p=Uo(t),{radius:h}=p,b=fy(p,Yv);return F.createElement(`path`,dy({},b,{radius:typeof l==`number`?l:void 0,className:x,d:hy(u,d,r,i,l),ref:n,style:sy(sy({},f),t.style)}))})};function vy(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function yy(e){for(var t=1;te*180/Math.PI,Ty=(e,t,n,r)=>({x:e+Math.cos(-Cy*r)*n,y:t+Math.sin(-Cy*r)*n}),Ey=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0,width:0,height:0,brushBottom:0};return Math.min(Math.abs(e-(n.left||0)-(n.right||0)),Math.abs(t-(n.top||0)-(n.bottom||0)))/2},Dy=(e,t)=>{var{x:n,y:r}=e,{x:i,y:a}=t;return Math.sqrt((n-i)**2+(r-a)**2)},Oy=(e,t)=>{var{x:n,y:r}=e,{cx:i,cy:a}=t,o=Dy({x:n,y:r},{x:i,y:a});if(o<=0)return{radius:o,angle:0};var s=(n-i)/o,c=Math.acos(s);return r>a&&(c=2*Math.PI-c),{radius:o,angle:wy(c),angleInRadian:c}},ky=e=>{var{startAngle:t,endAngle:n}=e,r=Math.floor(t/360),i=Math.floor(n/360),a=Math.min(r,i);return{startAngle:t-a*360,endAngle:n-a*360}},Ay=(e,t)=>{var{startAngle:n,endAngle:r}=t,i=Math.floor(n/360),a=Math.floor(r/360);return e+Math.min(i,a)*360},jy=(e,t)=>{var{relativeX:n,relativeY:r}=e,{radius:i,angle:a}=Oy({x:n,y:r},t),{innerRadius:o,outerRadius:s}=t;if(is||i===0)return null;var{startAngle:c,endAngle:l}=ky(t),u=a,d;if(c<=l){for(;u>l;)u-=360;for(;u=c&&u<=l}else{for(;u>c;)u-=360;for(;u=l&&u<=c}return d?yy(yy({},t),{},{radius:i,angle:Ay(u,t)}):null};function My(e){var{cx:t,cy:n,radius:r,startAngle:i,endAngle:a}=e;return{points:[Ty(t,n,r,i),Ty(t,n,r,a)],cx:t,cy:n,radius:r,startAngle:i,endAngle:a}}var Ny,Py,Fy,Iy,Ly,Ry,zy;function By(){return By=Object.assign?Object.assign.bind():function(e){for(var t=1;tLc(t-e)*Math.min(Math.abs(t-e),359.999),Uy=e=>{var{cx:t,cy:n,radius:r,angle:i,sign:a,isExternal:o,cornerRadius:s,cornerIsExternal:c}=e,l=s*(o?1:-1)+r,u=Math.asin(s/l)/Cy,d=c?i:i+a*u,f=Ty(t,n,l,d),p=Ty(t,n,r,d),m=c?i-a*u:i;return{center:f,circleTangency:p,lineTangency:Ty(t,n,l*Math.cos(u*Cy),m),theta:u}},Wy=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:a,endAngle:o}=e,s=Hy(a,o),c=a+s,l=Ty(t,n,i,a),u=Ty(t,n,i,c),d=Fc(Ny||=Vy([`M `,`,`,` + A `,`,`,`,0, + `,`,`,`, + `,`,`,` + `]),l.x,l.y,i,i,+(Math.abs(s)>180),+(a>c),u.x,u.y);if(r>0){var f=Ty(t,n,r,a),p=Ty(t,n,r,c);d+=Fc(Py||=Vy([`L `,`,`,` + A `,`,`,`,0, + `,`,`,`, + `,`,`,` Z`]),p.x,p.y,r,r,+(Math.abs(s)>180),+(a<=c),f.x,f.y)}else d+=Fc(Fy||=Vy([`L `,`,`,` Z`]),t,n);return d},Gy=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,cornerRadius:a,forceCornerRadius:o,cornerIsExternal:s,startAngle:c,endAngle:l}=e,u=Lc(l-c),{circleTangency:d,lineTangency:f,theta:p}=Uy({cx:t,cy:n,radius:i,angle:c,sign:u,cornerRadius:a,cornerIsExternal:s}),{circleTangency:m,lineTangency:h,theta:g}=Uy({cx:t,cy:n,radius:i,angle:l,sign:-u,cornerRadius:a,cornerIsExternal:s}),_=s?Math.abs(c-l):Math.abs(c-l)-p-g;if(_<0)return o?Fc(Iy||=Vy([`M `,`,`,` + a`,`,`,`,0,0,1,`,`,0 + a`,`,`,`,0,0,1,`,`,0 + `]),f.x,f.y,a,a,a*2,a,a,-a*2):Wy({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:c,endAngle:l});var v=Fc(Ly||=Vy([`M `,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,` + A`,`,`,`,0,`,`,`,`,`,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,` + `]),f.x,f.y,a,a,+(u<0),d.x,d.y,i,i,+(_>180),+(u<0),m.x,m.y,a,a,+(u<0),h.x,h.y);if(r>0){var{circleTangency:y,lineTangency:b,theta:x}=Uy({cx:t,cy:n,radius:r,angle:c,sign:u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),{circleTangency:S,lineTangency:C,theta:w}=Uy({cx:t,cy:n,radius:r,angle:l,sign:-u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),T=s?Math.abs(c-l):Math.abs(c-l)-x-w;if(T<0&&a===0)return`${v}L${t},${n}Z`;v+=Fc(Ry||=Vy([`L`,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,` + A`,`,`,`,0,`,`,`,`,`,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,`Z`]),C.x,C.y,a,a,+(u<0),S.x,S.y,r,r,+(T>180),+(u>0),y.x,y.y,a,a,+(u<0),b.x,b.y)}else v+=Fc(zy||=Vy([`L`,`,`,`Z`]),t,n);return v},Ky={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},qy=e=>{var t=yl(e,Ky),{cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:o,forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u,className:d}=t;if(a0&&Math.abs(l-u)<360?Gy({cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:Math.min(m,p/2),forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u}):Wy({cx:n,cy:r,innerRadius:i,outerRadius:a,startAngle:l,endAngle:u});return F.createElement(`path`,By({},Uo(t),{className:f,d:h}))};function Jy(e,t,n){if(e===`horizontal`)return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e===`vertical`)return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(ul(t)){if(e===`centric`){var{cx:r,cy:i,innerRadius:a,outerRadius:o,angle:s}=t,c=Ty(r,i,a,s),l=Ty(r,i,o,s);return[{x:c.x,y:c.y},{x:l.x,y:l.y}]}return My(t)}}var Yy=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ku();function n(e){return t.isSymbol(e)?NaN:Number(e)}e.toNumber=n})),Xy=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yy();function n(e){return e?(e=t.toNumber(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}e.toFinite=n})),Zy=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Nu(),n=Xy();function r(e,r,i){i&&typeof i!=`number`&&t.isIterateeCall(e,r,i)&&(r=i=void 0),e=n.toFinite(e),r===void 0?(r=e,e=0):r=n.toFinite(r),i=i===void 0?e{t.exports=Zy().range})),$y=e=>e.chartData,eb=K([$y],e=>{var t=e.chartData==null?0:e.chartData.length-1;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),tb=(e,t,n,r)=>r?eb(e):$y(e),nb=(e,t,n)=>n?eb(e):$y(e),rb=K([tb],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)});K([eb],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)});var ib=K([$y],e=>{var{chartData:t,dataStartIndex:n,dataEndIndex:r}=e;return t==null?[]:t.slice(n,r+1)});function ab(e){if(Array.isArray(e)&&e.length===2){var[t,n]=e;if(J(t)&&J(n))return!0}return!1}function ob(e,t,n){return n?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function sb(e,t){if(t&&typeof e!=`function`&&Array.isArray(e)&&e.length===2){var[n,r]=e,i,a;if(J(n))i=n;else if(typeof n==`function`)return;if(J(r))a=r;else if(typeof r==`function`)return;var o=[i,a];if(ab(o))return o}}function cb(e,t,n){if(!(!n&&t==null)){if(typeof e==`function`&&t!=null)try{var r=e(t,n);if(ab(r))return ob(r,t,n)}catch{}if(Array.isArray(e)&&e.length===2){var[i,a]=e,o,s;if(i===`auto`)t!=null&&(o=Math.min(...t));else if(V(i))o=i;else if(typeof i==`function`)try{t!=null&&(o=i(t?.[0]))}catch{}else if(typeof i==`string`&&om.test(i)){var c=om.exec(i);if(c==null||c[1]==null||t==null)o=void 0;else{var l=+c[1];o=t[0]-l}}else o=t?.[0];if(a===`auto`)t!=null&&(s=Math.max(...t));else if(V(a))s=a;else if(typeof a==`function`)try{t!=null&&(s=a(t?.[1]))}catch{}else if(typeof a==`string`&&sm.test(a)){var u=sm.exec(a);if(u==null||u[1]==null||t==null)s=void 0;else{var d=+u[1];s=t[1]+d}}else s=t?.[1];var f=[o,s];if(ab(f))return t==null?f:ob(f,t,n)}}}var Q=Se(M(((e,t)=>{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&=1,e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=re.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,!l){if(s<0)throw Error(a+`NaN`)}else if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),ee(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),ee(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||en)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tr?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=+(e[n]1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,ee=r.constructor,te=r.s==i.s?1:-1,A=r.d,j=i.d;if(!r.s)return new ee(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=j.length,T=A.length,g=new ee(te),_=g.d=[],u=0;j[u]==(A[u]||0);)++u;if(j[u]>(A[u]||0)&&--l,x=o==null?o=ee.precision:s?o+(S(r)-S(i))+1:o,x<0)return new ee(0);if(x=x/p+2|0,u=0,O==1)for(d=0,j=j[0],x++;(u1&&(j=e(j,d),A=e(A,d),O=j.length,T=A.length),w=O,v=A.slice(0,O),y=v.length;y=f/2&&++E;do d=0,c=t(j,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(j,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),rh||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function ee(e,t){if(e.length>t)return e.length=t,!0}function te(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}else if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=te,i.config=i.set=A,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i);if((i=e[r=`LN10`])!==void 0)if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i);return this}r=te(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)(),e.Decimal=r)})(e)}))());function lb(e){return e===0?1:Math.floor(new Q.default(e).abs().log(10).toNumber())+1}function ub(e,t,n){for(var r=new Q.default(e),i=0,a=[];r.lt(t)&&i<1e5;)a.push(r.toNumber()),r=r.add(n),i++;return a}var db=e=>{var[t,n]=e,[r,i]=[t,n];return t>n&&([r,i]=[n,t]),[r,i]},fb=(e,t,n)=>{if(e.lte(0))return new Q.default(0);var r=lb(e.toNumber()),i=new Q.default(10).pow(r),a=e.div(i),o=r===1?.1:.05,s=new Q.default(Math.ceil(a.div(o).toNumber())).add(n).mul(o).mul(i);return t?new Q.default(s.toNumber()):new Q.default(Math.ceil(s.toNumber()))},pb=(e,t,n)=>{if(e.lte(0))return new Q.default(0);var r=[1,2,2.5,5],i=e.toNumber(),a=Math.floor(new Q.default(i).abs().log(10).toNumber()),o=new Q.default(10).pow(a),s=e.div(o).toNumber(),c=r.findIndex(e=>e>=s-1e-10);if(c===-1&&(o=o.mul(10),c=0),c+=n,c>=r.length){var l=Math.floor(c/r.length);c%=r.length,o=o.mul(new Q.default(10).pow(l))}var u=new Q.default(r[c]??1).mul(o);return t?u:new Q.default(Math.ceil(u.toNumber()))},mb=(e,t,n)=>{var r=new Q.default(1),i=new Q.default(e);if(!i.isint()&&n){var a=Math.abs(e);a<1?(r=new Q.default(10).pow(lb(e)-1),i=new Q.default(Math.floor(i.div(r).toNumber())).mul(r)):a>1&&(i=new Q.default(Math.floor(e)))}else e===0?i=new Q.default(Math.floor((t-1)/2)):n||(i=new Q.default(Math.floor(e)));for(var o=Math.floor((t-1)/2),s=[],c=0;c4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:fb;if(!Number.isFinite((t-e)/(n-1)))return{step:new Q.default(0),tickMin:new Q.default(0),tickMax:new Q.default(0)};var o=a(new Q.default(t).sub(e).div(n-1),r,i),s;e<=0&&t>=0?s=new Q.default(0):(s=new Q.default(e).add(t).div(2),s=s.sub(new Q.default(s).mod(o)));var c=Math.ceil(s.sub(e).div(o).toNumber()),l=Math.ceil(new Q.default(t).sub(s).div(o).toNumber()),u=c+l+1;return u>n?hb(e,t,n,r,i+1,a):(u0?l+(n-u):l,c=t>0?c:c+(n-u)),{step:o,tickMin:s.sub(new Q.default(c).mul(o)),tickMax:s.add(new Q.default(l).mul(o))})},gb=function(e){var[t,n]=e,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,o=Math.max(r,2),[s,c]=db([t,n]);if(s===-1/0||c===1/0){var l=c===1/0?[s,...Array(r-1).fill(1/0)]:[...Array(r-1).fill(-1/0),c];return t>n?l.reverse():l}if(s===c)return mb(s,r,i);var{step:u,tickMin:d,tickMax:f}=hb(s,c,o,i,0,a===`snap125`?pb:fb),p=ub(d,f.add(new Q.default(.1).mul(u)),u);return t>n?p.reverse():p},_b=function(e,t){var[n,r]=e,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,[o,s]=db([n,r]);if(o===-1/0||s===1/0)return[n,r];if(o===s)return[o];var c=a===`snap125`?pb:fb,l=Math.max(t,2),u=c(new Q.default(s).sub(o).div(l-1),i,0),d=[...ub(new Q.default(o),new Q.default(s),u),s];return i===!1&&(d=d.map(e=>Math.round(e))),n>r?d.reverse():d},vb=e=>e.rootProps.maxBarSize,yb=e=>e.rootProps.barGap,bb=e=>e.rootProps.barCategoryGap,xb=e=>e.rootProps.barSize,Sb=e=>e.rootProps.stackOffset,Cb=e=>e.rootProps.reverseStackOrder,wb=e=>e.options.chartName,Tb=e=>e.rootProps.syncId,Eb=e=>e.rootProps.syncMethod,Db=e=>e.options.eventEmitter,Ob=e=>e.rootProps.baseValue,kb={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},Ab={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:`polygon`,cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:`auto`,orientation:`outer`,reversed:!1,scale:`auto`,tick:!0,tickLine:!0,tickSize:8,type:`auto`,zIndex:kb.axis},jb={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:`auto`,label:!1,orientation:`right`,radiusAxisId:0,reversed:!1,scale:`auto`,stroke:`#ccc`,tick:!0,tickCount:5,tickLine:!0,type:`auto`,zIndex:kb.axis},Mb=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function Nb(e,t,n){if(n!==`auto`)return n;if(e!=null)return qp(e,t)?`category`:`number`}function Pb(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Fb(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},yh],(e,t)=>{if(e!=null)return e;var n=Nb(t,`angleAxis`,zb.type)??`category`;return Fb(Fb({},zb),{},{type:n})}),Hb=K([(e,t)=>e.polarAxis.radiusAxis[t],yh],(e,t)=>{if(e!=null)return e;var n=Nb(t,`radiusAxis`,Bb.type)??`category`;return Fb(Fb({},Bb),{},{type:n})}),Ub=e=>e.polarOptions,Wb=K([pm,mm,Am],Ey),Gb=K([Ub,Wb],(e,t)=>{if(e!=null)return Uc(e.innerRadius,t,0)}),Kb=K([Ub,Wb],(e,t)=>{if(e!=null)return Uc(e.outerRadius,t,t*.8)}),qb=K([Ub],e=>{if(e==null)return[0,0];var{startAngle:t,endAngle:n}=e;return[t,n]});K([Vb,qb],Mb);var Jb=K([Wb,Gb,Kb],(e,t,n)=>{if(!(e==null||t==null||n==null))return[t,n]});K([Hb,Jb],Mb);var Yb=K([X,Ub,Gb,Kb,pm,mm],(e,t,n,r,i,a)=>{if(!(e!==`centric`&&e!==`radial`||t==null||n==null||r==null)){var{cx:o,cy:s,startAngle:c,endAngle:l}=t;return{cx:Uc(o,i,i/2),cy:Uc(s,a,a/2),innerRadius:n,outerRadius:r,startAngle:c,endAngle:l,clockWise:!1}}}),Xb=(e,t)=>t,Zb=(e,t,n)=>n;function Qb(e){return e?.id}function $b(e,t,n){var{chartData:r=[]}=t,{allowDuplicatedCategory:i,dataKey:a}=n,o=new Map;return e.forEach(e=>{var t=e.data??r;if(!(t==null||t.length===0)){var n=Qb(e);t.forEach((t,r)=>{var s=a==null||i?r:String(Y(t,a,null)),c=Y(t,e.dataKey,0),l=o.has(s)?o.get(s):{};Object.assign(l,{[n]:c}),o.set(s,l)})}}),Array.from(o.values())}function ex(e){return`stackId`in e&&e.stackId!=null&&e.dataKey!=null}var tx=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function nx(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function rx(e,t){if(e.length===t.length){for(var n=0;n{var t=X(e);return t===`horizontal`?`xAxis`:t===`vertical`?`yAxis`:t===`centric`?`angleAxis`:`radiusAxis`},ax=e=>e.tooltip.settings.axisId;function ox(e){if(e!=null){var t=e.ticks,n=e.bandwidth,r=e.range(),i=[Math.min(...r),Math.max(...r)];return{domain:()=>e.domain(),range:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(()=>i),rangeMin:()=>i[0],rangeMax:()=>i[1],isInRange(e){var t=i[0],n=i[1];return t<=n?e>=t&&e<=n:e>=n&&e<=t},bandwidth:n?()=>n.call(e):void 0,ticks:t?n=>t.call(e,n):void 0,map:(t,n)=>{var r=e(t);if(r!=null){if(e.bandwidth&&n!=null&&n.position){var i=e.bandwidth();switch(n.position){case`middle`:r+=i/2;break;case`end`:r+=i;break;default:break}}return r}}}}}var sx=(e,t)=>{if(t!=null)switch(e){case`linear`:if(!ab(t)){for(var n,r,i=0;ir)&&(r=a))}return n!==void 0&&r!==void 0?[n,r]:void 0}return t;default:return t}};function cx(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function lx(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function ux(e){let t,n,r;e.length===2?(t=e===cx||e===lx?e:dx,n=e,r=e):(t=cx,n=(t,n)=>cx(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i>>1;n(e[t],r)<0?i=t+1:a=t}while(i>>1;n(e[t],r)<=0?i=t+1:a=t}while(in&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function dx(){return 0}function fx(e){return e===null?NaN:+e}function*px(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var mx=ux(cx),hx=mx.right;mx.left,ux(fx).center;var gx=class extends Map{constructor(e,t=bx){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(_x(this,e))}has(e){return super.has(_x(this,e))}set(e,t){return super.set(vx(this,e),t)}delete(e){return super.delete(yx(this,e))}};function _x({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function vx({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function yx({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function bx(e){return typeof e==`object`&&e?e.valueOf():e}function xx(e=cx){if(e===cx)return Sx;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function Sx(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et))}var Cx=Math.sqrt(50),wx=Math.sqrt(10),Tx=Math.sqrt(2);function Ex(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=Cx?10:a>=wx?5:a>=Tx?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/lt&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*lt&&--c),c0))return[];if(e===t)return[e];let r=t=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function jx(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Mx(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?Sx:xx(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));Mx(e,t,u,d,i)}let a=e[t],o=n,s=r;for(Nx(e,n,t),i(e[r],a)>0&&Nx(e,n,r);o0;)--s}i(e[n],a)===0?Nx(e,n,s):(++s,Nx(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function Nx(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Px(e,t,n){if(e=Float64Array.from(px(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return jx(e);if(t>=1)return Ax(e);var r,i=(r-1)*t,a=Math.floor(i),o=Ax(Mx(e,a).subarray(0,a+1));return o+(jx(e.subarray(a+1))-o)*(i-a)}}function Fx(e,t,n=fx){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function Ix(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?fS(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?fS(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=$x.exec(e))?new hS(t[1],t[2],t[3],1):(t=eS.exec(e))?new hS(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=tS.exec(e))?fS(t[1],t[2],t[3],t[4]):(t=nS.exec(e))?fS(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=rS.exec(e))?SS(t[1],t[2]/100,t[3]/100,1):(t=iS.exec(e))?SS(t[1],t[2]/100,t[3]/100,t[4]):aS.hasOwnProperty(e)?dS(aS[e]):e===`transparent`?new hS(NaN,NaN,NaN,0):null}function dS(e){return new hS(e>>16&255,e>>8&255,e&255,1)}function fS(e,t,n,r){return r<=0&&(e=t=n=NaN),new hS(e,t,n,r)}function pS(e){return e instanceof Kx||(e=uS(e)),e?(e=e.rgb(),new hS(e.r,e.g,e.b,e.opacity)):new hS}function mS(e,t,n,r){return arguments.length===1?pS(e):new hS(e,t,n,r??1)}function hS(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Wx(hS,mS,Gx(Kx,{brighter(e){return e=e==null?Jx:Jx**+e,new hS(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?qx:qx**+e,new hS(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new hS(bS(this.r),bS(this.g),bS(this.b),yS(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:gS,formatHex:gS,formatHex8:_S,formatRgb:vS,toString:vS}));function gS(){return`#${xS(this.r)}${xS(this.g)}${xS(this.b)}`}function _S(){return`#${xS(this.r)}${xS(this.g)}${xS(this.b)}${xS((isNaN(this.opacity)?1:this.opacity)*255)}`}function vS(){let e=yS(this.opacity);return`${e===1?`rgb(`:`rgba(`}${bS(this.r)}, ${bS(this.g)}, ${bS(this.b)}${e===1?`)`:`, ${e})`}`}function yS(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function bS(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function xS(e){return e=bS(e),(e<16?`0`:``)+e.toString(16)}function SS(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new TS(e,t,n,r)}function CS(e){if(e instanceof TS)return new TS(e.h,e.s,e.l,e.opacity);if(e instanceof Kx||(e=uS(e)),!e)return new TS;if(e instanceof TS)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new TS(o,s,c,e.opacity)}function wS(e,t,n,r){return arguments.length===1?CS(e):new TS(e,t,n,r??1)}function TS(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Wx(TS,wS,Gx(Kx,{brighter(e){return e=e==null?Jx:Jx**+e,new TS(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?qx:qx**+e,new TS(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new hS(OS(e>=240?e-240:e+120,i,r),OS(e,i,r),OS(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new TS(ES(this.h),DS(this.s),DS(this.l),yS(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=yS(this.opacity);return`${e===1?`hsl(`:`hsla(`}${ES(this.h)}, ${DS(this.s)*100}%, ${DS(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function ES(e){return e=(e||0)%360,e<0?e+360:e}function DS(e){return Math.max(0,Math.min(1,e||0))}function OS(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var kS=e=>()=>e;function AS(e,t){return function(n){return e+n*t}}function jS(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function MS(e){return(e=+e)==1?NS:function(t,n){return n-t?jS(t,n,e):kS(isNaN(t)?n:t)}}function NS(e,t){var n=t-e;return n?AS(e,n):kS(isNaN(e)?t:e)}var PS=(function e(t){var n=MS(t);function r(e,t){var r=n((e=mS(e)).r,(t=mS(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=NS(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function FS(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:zS(r,i)})),n=HS.lastIndex;return nt&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function tC(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i2?nC:tC,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),zS))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,XS),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=qS,u()},d.clamp=function(e){return arguments.length?(o=e?!0:QS,u()):o!==QS},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function aC(){return iC()(QS,QS)}function oC(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function sC(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function cC(e){return e=sC(Math.abs(e)),e?e[1]:NaN}function lC(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function uC(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var dC=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function fC(e){if(!(t=dC.exec(e)))throw Error(`invalid format: `+e);var t;return new pC({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}fC.prototype=pC.prototype;function pC(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}pC.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function mC(e){out:for(var t=e.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var hC;function gC(e,t){var n=sC(e,t);if(!n)return hC=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(hC=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+sC(e,Math.max(0,t+a-1))[0]}function _C(e,t){var n=sC(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var vC={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:oC,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>_C(e*100,t),r:_C,s:gC,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function yC(e){return e}var bC=Array.prototype.map,xC=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function SC(e){var t=e.grouping===void 0||e.thousands===void 0?yC:lC(bC.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?yC:uC(bC.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=fC(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):vC[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=vC[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=mC(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&hC!==void 0?xC[8+hC/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++op||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(cC(t)/3)))*3,r=10**-n,i=l((e=fC(e),e.type=`f`,e),{suffix:xC[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var CC,wC,TC;EC({thousands:`,`,grouping:[3],currency:[`$`,``]});function EC(e){return CC=SC(e),wC=CC.format,TC=CC.formatPrefix,CC}function DC(e){return Math.max(0,-cC(Math.abs(e)))}function OC(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(cC(t)/3)))*3-cC(Math.abs(e)))}function kC(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,cC(t)-cC(e))+1}function AC(e,t,n,r){var i=kx(e,t,n),a;switch(r=fC(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=OC(i,o))&&(r.precision=a),TC(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=kC(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=DC(i))&&(r.precision=a-(r.type===`%`)*2);break}return wC(r)}function jC(e){var t=e.domain;return e.ticks=function(e){var n=t();return Dx(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return AC(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s0;){if(l=Ox(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function MC(){var e=aC();return e.copy=function(){return rC(e,MC())},Lx.apply(e,arguments),jC(e)}function NC(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,XS),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return NC(e).unknown(t)},e=arguments.length?Array.from(e,XS):[0,1],jC(n)}function PC(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return ae**+t}function VC(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function HC(e){return(t,n)=>-e(-t,n)}function UC(e){let t=e(FC,IC),n=t.domain,r=10,i,a;function o(){return i=VC(r),a=BC(r),n()[0]<0?(i=HC(i),a=HC(a),e(LC,RC)):e(FC,IC),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s0){for(;l<=u;++l)for(d=1;ds)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(fs)break;m.push(f)}m.length*2{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=fC(n)).precision==null&&(n.trim=!0),n=wC(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*rn(PC(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function WC(){let e=UC(iC()).domain([1,10]);return e.copy=()=>rC(e,WC()).base(e.base()),Lx.apply(e,arguments),e}function GC(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function KC(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function qC(e){var t=1,n=e(GC(t),KC(t));return n.constant=function(n){return arguments.length?e(GC(t=+n),KC(t)):t},jC(n)}function JC(){var e=qC(iC());return e.copy=function(){return rC(e,JC()).constant(e.constant())},Lx.apply(e,arguments)}function YC(e){return function(t){return t<0?-((-t)**+e):t**+e}}function XC(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function ZC(e){return e<0?-e*e:e*e}function QC(e){var t=e(QS,QS),n=1;function r(){return n===1?e(QS,QS):n===.5?e(XC,ZC):e(YC(n),YC(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},jC(t)}function $C(){var e=QC(iC());return e.copy=function(){return rC(e,$C()).exponent(e.exponent())},Lx.apply(e,arguments),e}function ew(){return $C.apply(null,arguments).exponent(.5)}function tw(e){return Math.sign(e)*e*e}function nw(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function rw(){var e=aC(),t=[0,1],n=!1,r;function i(t){var i=nw(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(tw(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,XS)).map(tw)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return rw(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},Lx.apply(i,arguments),jC(i)}function iw(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r0?n[i-1]:e[0],i=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return aw().domain([e,t]).range(i).unknown(a)},Lx.apply(jC(o),arguments)}function ow(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[hx(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return ow().domain(e).range(t).unknown(n)},Lx.apply(i,arguments)}var sw=new Date,cw=new Date;function lw(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(slw(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(sw.setTime(+t),cw.setTime(+r),e(sw),e(cw),Math.floor(n(sw,cw))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var uw=lw(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);uw.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?lw(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):uw),uw.range;var dw=1e3,fw=dw*60,pw=fw*60,mw=pw*24,hw=mw*7,gw=mw*30,_w=mw*365,vw=lw(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*dw)},(e,t)=>(t-e)/dw,e=>e.getUTCSeconds());vw.range;var yw=lw(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*dw)},(e,t)=>{e.setTime(+e+t*fw)},(e,t)=>(t-e)/fw,e=>e.getMinutes());yw.range;var bw=lw(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*fw)},(e,t)=>(t-e)/fw,e=>e.getUTCMinutes());bw.range;var xw=lw(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*dw-e.getMinutes()*fw)},(e,t)=>{e.setTime(+e+t*pw)},(e,t)=>(t-e)/pw,e=>e.getHours());xw.range;var Sw=lw(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*pw)},(e,t)=>(t-e)/pw,e=>e.getUTCHours());Sw.range;var Cw=lw(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*fw)/mw,e=>e.getDate()-1);Cw.range;var ww=lw(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/mw,e=>e.getUTCDate()-1);ww.range;var Tw=lw(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/mw,e=>Math.floor(e/mw));Tw.range;function Ew(e){return lw(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*fw)/hw)}var Dw=Ew(0),Ow=Ew(1),kw=Ew(2),Aw=Ew(3),jw=Ew(4),Mw=Ew(5),Nw=Ew(6);Dw.range,Ow.range,kw.range,Aw.range,jw.range,Mw.range,Nw.range;function Pw(e){return lw(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/hw)}var Fw=Pw(0),Iw=Pw(1),Lw=Pw(2),Rw=Pw(3),zw=Pw(4),Bw=Pw(5),Vw=Pw(6);Fw.range,Iw.range,Lw.range,Rw.range,zw.range,Bw.range,Vw.range;var Hw=lw(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Hw.range;var Uw=lw(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Uw.range;var Ww=lw(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Ww.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:lw(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Ww.range;var Gw=lw(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Gw.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:lw(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Gw.range;function Kw(e,t,n,r,i,a){let o=[[vw,1,dw],[vw,5,5*dw],[vw,15,15*dw],[vw,30,30*dw],[a,1,fw],[a,5,5*fw],[a,15,15*fw],[a,30,30*fw],[i,1,pw],[i,3,3*pw],[i,6,6*pw],[i,12,12*pw],[r,1,mw],[r,2,2*mw],[n,1,hw],[t,1,gw],[t,3,3*gw],[e,1,_w]];function s(e,t,n){let r=te).right(o,i);if(a===o.length)return e.every(kx(t/_w,n/_w,r));if(a===0)return uw.every(Math.max(kx(t,n,r),1));let[s,c]=o[i/o[a-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=Qw($w(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?Iw.ceil(a):Iw(a),a=ww.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Zw($w(r.y,0,1)),o=a.getDay(),a=o>4||o===0?Ow.ceil(a):Ow(a),a=Cw.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:+(`W`in r)),o=`Z`in r?Qw($w(r.y,0,1)).getUTCDay():Zw($w(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,Qw(r)):Zw(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in tT?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function ee(e,n,r){return w(e,t,n,r)}function te(e,t,r){return w(e,n,t,r)}function A(e,t,n){return w(e,r,t,n)}function j(e){return o[e.getDay()]}function ne(e){return a[e.getDay()]}function re(e){return c[e.getMonth()]}function ie(e){return s[e.getMonth()]}function ae(e){return i[+(e.getHours()>=12)]}function oe(e){return 1+~~(e.getMonth()/3)}function se(e){return o[e.getUTCDay()]}function ce(e){return a[e.getUTCDay()]}function le(e){return c[e.getUTCMonth()]}function ue(e){return s[e.getUTCMonth()]}function de(e){return i[+(e.getUTCHours()>=12)]}function fe(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var tT={"-":``,_:` `,0:`0`},nT=/^\s*\d+/,rT=/^%/,iT=/[\\^$*+?|[\]().{}]/g;function $(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function cT(e,t,n){var r=nT.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function lT(e,t,n){var r=nT.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function uT(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function dT(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function fT(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function pT(e,t,n){var r=nT.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function mT(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function hT(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function gT(e,t,n){var r=nT.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function _T(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function vT(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function yT(e,t,n){var r=nT.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function bT(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function xT(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function ST(e,t,n){var r=nT.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function CT(e,t,n){var r=nT.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function wT(e,t,n){var r=nT.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function TT(e,t,n){var r=rT.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function ET(e,t,n){var r=nT.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function DT(e,t,n){var r=nT.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function OT(e,t){return $(e.getDate(),t,2)}function kT(e,t){return $(e.getHours(),t,2)}function AT(e,t){return $(e.getHours()%12||12,t,2)}function jT(e,t){return $(1+Cw.count(Ww(e),e),t,3)}function MT(e,t){return $(e.getMilliseconds(),t,3)}function NT(e,t){return MT(e,t)+`000`}function PT(e,t){return $(e.getMonth()+1,t,2)}function FT(e,t){return $(e.getMinutes(),t,2)}function IT(e,t){return $(e.getSeconds(),t,2)}function LT(e){var t=e.getDay();return t===0?7:t}function RT(e,t){return $(Dw.count(Ww(e)-1,e),t,2)}function zT(e){var t=e.getDay();return t>=4||t===0?jw(e):jw.ceil(e)}function BT(e,t){return e=zT(e),$(jw.count(Ww(e),e)+(Ww(e).getDay()===4),t,2)}function VT(e){return e.getDay()}function HT(e,t){return $(Ow.count(Ww(e)-1,e),t,2)}function UT(e,t){return $(e.getFullYear()%100,t,2)}function WT(e,t){return e=zT(e),$(e.getFullYear()%100,t,2)}function GT(e,t){return $(e.getFullYear()%1e4,t,4)}function KT(e,t){var n=e.getDay();return e=n>=4||n===0?jw(e):jw.ceil(e),$(e.getFullYear()%1e4,t,4)}function qT(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+$(t/60|0,`0`,2)+$(t%60,`0`,2)}function JT(e,t){return $(e.getUTCDate(),t,2)}function YT(e,t){return $(e.getUTCHours(),t,2)}function XT(e,t){return $(e.getUTCHours()%12||12,t,2)}function ZT(e,t){return $(1+ww.count(Gw(e),e),t,3)}function QT(e,t){return $(e.getUTCMilliseconds(),t,3)}function $T(e,t){return QT(e,t)+`000`}function eE(e,t){return $(e.getUTCMonth()+1,t,2)}function tE(e,t){return $(e.getUTCMinutes(),t,2)}function nE(e,t){return $(e.getUTCSeconds(),t,2)}function rE(e){var t=e.getUTCDay();return t===0?7:t}function iE(e,t){return $(Fw.count(Gw(e)-1,e),t,2)}function aE(e){var t=e.getUTCDay();return t>=4||t===0?zw(e):zw.ceil(e)}function oE(e,t){return e=aE(e),$(zw.count(Gw(e),e)+(Gw(e).getUTCDay()===4),t,2)}function sE(e){return e.getUTCDay()}function cE(e,t){return $(Iw.count(Gw(e)-1,e),t,2)}function lE(e,t){return $(e.getUTCFullYear()%100,t,2)}function uE(e,t){return e=aE(e),$(e.getUTCFullYear()%100,t,2)}function dE(e,t){return $(e.getUTCFullYear()%1e4,t,4)}function fE(e,t){var n=e.getUTCDay();return e=n>=4||n===0?zw(e):zw.ceil(e),$(e.getUTCFullYear()%1e4,t,4)}function pE(){return`+0000`}function mE(){return`%`}function hE(e){return+e}function gE(e){return Math.floor(e/1e3)}var _E,vE,yE;bE({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function bE(e){return _E=eT(e),vE=_E.format,_E.parse,yE=_E.utcFormat,_E.utcParse,_E}function xE(e){return new Date(e)}function SE(e){return e instanceof Date?+e:+new Date(+e)}function CE(e,t,n,r,i,a,o,s,c,l){var u=aC(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>Px(e,r/t))},n.copy=function(){return NE(t).domain(e)},Rx.apply(n,arguments)}function PE(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=QS,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*eVx,scaleDiverging:()=>FE,scaleDivergingLog:()=>IE,scaleDivergingPow:()=>RE,scaleDivergingSqrt:()=>zE,scaleDivergingSymlog:()=>LE,scaleIdentity:()=>NC,scaleImplicit:()=>zx,scaleLinear:()=>MC,scaleLog:()=>WC,scaleOrdinal:()=>Bx,scalePoint:()=>Ux,scalePow:()=>$C,scaleQuantile:()=>iw,scaleQuantize:()=>aw,scaleRadial:()=>rw,scaleSequential:()=>OE,scaleSequentialLog:()=>kE,scaleSequentialPow:()=>jE,scaleSequentialQuantile:()=>NE,scaleSequentialSqrt:()=>ME,scaleSequentialSymlog:()=>AE,scaleSqrt:()=>ew,scaleSymlog:()=>JC,scaleThreshold:()=>ow,scaleTime:()=>wE,scaleUtc:()=>TE,tickFormat:()=>AC});function VE(e){var t=BE;if(e in t&&typeof t[e]==`function`)return t[e]();var n=`scale${Kc(e)}`;if(n in t&&typeof t[n]==`function`)return t[n]()}function HE(e,t,n){if(typeof e==`function`)return e.copy().domain(t).range(n);if(e!=null){var r=VE(e);if(r!=null)return r.domain(t).range(n),r}}function UE(e,t,n,r){if(!(n==null||r==null))return typeof e.scale==`function`?HE(e.scale,n,r):HE(t,n,r)}function WE(e){return`scale${Kc(e)}`}function GE(e){return WE(e)in BE}var KE=(e,t,n)=>{if(e!=null){var{scale:r,type:i}=e;if(r===`auto`)return i===`category`&&n&&(n.indexOf(`LineChart`)>=0||n.indexOf(`AreaChart`)>=0||n.indexOf(`ComposedChart`)>=0&&!t)?`point`:i===`category`?`band`:`linear`;if(typeof r==`string`)return GE(r)?r:`point`}};function qE(e,t){for(var n=0,r=e.length,i=e[0]t)?n=a+1:r=a}return n}function JE(e,t){if(e){var n=t??e.domain(),r=n.map(t=>e(t)??0),i=e.range();if(!(n.length===0||i.length<2))return e=>{var t=qE(r,e);if(t<=0)return n[0];if(t>=n.length)return n[n.length-1];var i=r[t-1]??0,a=r[t]??0;return Math.abs(e-i)<=Math.abs(e-a)?n[t-1]:n[t]}}}function YE(e){if(e!=null)return`invert`in e&&typeof e.invert==`function`?e.invert.bind(e):JE(e,void 0)}var XE=Se(Qy());function ZE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function QE(e){for(var t=1;te.cartesianAxis.xAxis[t],aD=(e,t)=>iD(e,t)??rD,oD={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:nD,hide:!0,id:0,includeHidden:!1,interval:`preserveEnd`,minTickGap:5,mirror:!1,name:void 0,orientation:`left`,padding:{top:0,bottom:0},reversed:!1,scale:`auto`,tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:`number`,unit:void 0,niceTicks:`auto`,width:60},sD=(e,t)=>e.cartesianAxis.yAxis[t],cD=(e,t)=>sD(e,t)??oD,lD={domain:[0,`auto`],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:``,range:[64,64],scale:`auto`,type:`number`,unit:``},uD=(e,t)=>e.cartesianAxis.zAxis[t]??lD,dD=(e,t,n)=>{switch(t){case`xAxis`:return aD(e,n);case`yAxis`:return cD(e,n);case`zAxis`:return uD(e,n);case`angleAxis`:return Vb(e,n);case`radiusAxis`:return Hb(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},fD=(e,t,n)=>{switch(t){case`xAxis`:return aD(e,n);case`yAxis`:return cD(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},pD=(e,t,n)=>{switch(t){case`xAxis`:return aD(e,n);case`yAxis`:return cD(e,n);case`angleAxis`:return Vb(e,n);case`radiusAxis`:return Hb(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},mD=e=>e.graphicalItems.cartesianItems.some(e=>e.type===`bar`)||e.graphicalItems.polarItems.some(e=>e.type===`radialBar`);function hD(e,t){return n=>{switch(e){case`xAxis`:return`xAxisId`in n&&n.xAxisId===t;case`yAxis`:return`yAxisId`in n&&n.yAxisId===t;case`zAxis`:return`zAxisId`in n&&n.zAxisId===t;case`angleAxis`:return`angleAxisId`in n&&n.angleAxisId===t;case`radiusAxis`:return`radiusAxisId`in n&&n.radiusAxisId===t;default:return!1}}}var gD=e=>e.graphicalItems.cartesianItems,_D=K([Xb,Zb],hD),vD=(e,t,n)=>e.filter(n).filter(e=>t?.includeHidden===!0?!0:!e.hide),yD=K([gD,dD,_D],vD,{memoizeOptions:{resultEqualityCheck:nx}}),bD=K([yD],e=>e.filter(e=>e.type===`area`||e.type===`bar`).filter(ex)),xD=e=>e.filter(e=>!(`stackId`in e)||e.stackId===void 0),SD=K([yD],xD),CD=e=>e.map(e=>e.data).filter(Boolean).flat(1),wD=K([yD],e=>e.some(e=>!e.data)),TD=K([yD],CD,{memoizeOptions:{resultEqualityCheck:nx}}),ED=(e,t)=>{var{chartData:n=[],dataStartIndex:r,dataEndIndex:i}=t;return e.length>0?e:n.slice(r,i+1)},DD=K([TD,tb],ED),OD=(e,t,n)=>t?.dataKey==null?n.length>0?n.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:Y(e,t)}))):e.map(e=>({value:e})):e.map(e=>({value:Y(e,t.dataKey)})),kD=(e,t,n,r,i,a)=>{var{chartData:o=[],dataStartIndex:s,dataEndIndex:c}=r,l=OD(e,t,n);return i&&t?.dataKey!=null&&a.length>0?[...o.slice(s,c+1).map(e=>({value:Y(e,t.dataKey)})).filter(e=>e.value!=null),...l]:l},AD=K([DD,dD,yD,tb,wD,TD],kD);function jD(e){if(Bc(e)||e instanceof Date){var t=Number(e);if(J(t))return t}}function MD(e){if(Array.isArray(e)){var t=[jD(e[0]),jD(e[1])];return ab(t)?t:void 0}var n=jD(e);if(n!=null)return[n,n]}function ND(e){return e.map(jD).filter(qc)}function PD(e,t){var n=jD(e),r=jD(t);return n==null&&r==null?0:n==null?-1:r==null?1:n-r}var FD=K([AD],e=>e?.map(e=>e.value).sort(PD));function ID(e,t){switch(e){case`xAxis`:return t.direction===`x`;case`yAxis`:return t.direction===`y`;default:return!1}}function LD(e,t,n){if(!n||!n.length)return[];var r;if(typeof t==`number`&&!Rc(t))r=t;else if(Array.isArray(t)){var i=ND(t);i.length>0&&(r=Math.max(...i))}return r==null?[]:ND(n.flatMap(t=>{var n=Y(e,t.dataKey),i,a;if(Array.isArray(n)?[i,a]=n:i=a=n,!(!J(i)||!J(a)))return[r-i,r+a]}))}var RD=e=>pD(e,ix(e),ax(e)),zD=K([RD],e=>e?.dataKey),BD=K([bD,tb,RD],$b),VD=(e,t,n,r)=>{var i=t.reduce((e,t)=>{if(t.stackId==null)return e;var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},{});return Object.fromEntries(Object.entries(i).map(t=>{var[i,a]=t,o=r?[...a].reverse():a;return[i,{stackedData:Qp(e,o.map(Qb),n),graphicalItems:o}]}))},HD=K([BD,bD,Sb,Cb],VD),UD=(e,t,n,r)=>{var{dataStartIndex:i,dataEndIndex:a}=t;if(r==null&&n!==`zAxis`){var o=am(e,i,a);if(!(o!=null&&o[0]===0&&o[1]===0))return o}},WD=K([dD],e=>e.allowDataOverflow),GD=e=>{if(e==null||!(`domain`in e))return nD;if(e.domain!=null)return e.domain;if(`ticks`in e&&e.ticks!=null){if(e.type===`number`){var t=ND(e.ticks);return[Math.min(...t),Math.max(...t)]}if(e.type===`category`)return e.ticks.map(String)}return e?.domain??nD},KD=K([dD],GD),qD=K([KD,WD],sb),JD=K([HD,$y,Xb,qD],UD,{memoizeOptions:{resultEqualityCheck:tx}}),YD=e=>e.errorBars,XD=(e,t,n)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>ID(n,e)),ZD=function(){var e=[...arguments].filter(Boolean);if(e.length!==0){var t=e.flat();return[Math.min(...t),Math.max(...t)]}},QD=function(e,t,n,r,i){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:[],o,s;if(n.length>0&&n.forEach(e=>{var n=e.data==null?a:[...e.data],c=r[e.id]?.filter(e=>ID(i,e));n.forEach(n=>{var r=Y(n,t.dataKey??e.dataKey),i=LD(n,r,c);if(i.length>=2){var a=Math.min(...i),l=Math.max(...i);(o==null||as)&&(s=l)}var u=MD(r);u!=null&&(o=o==null?u[0]:Math.min(o,u[0]),s=s==null?u[1]:Math.max(s,u[1]))})}),t?.dataKey!=null&&n.length===0&&e.forEach(e=>{var n=MD(Y(e,t.dataKey));n!=null&&(o=o==null?n[0]:Math.min(o,n[0]),s=s==null?n[1]:Math.max(s,n[1]))}),J(o)&&J(s))return[o,s]},$D=K([DD,dD,SD,YD,Xb,rb],QD,{memoizeOptions:{resultEqualityCheck:tx}});function eO(e){var{value:t}=e;if(Bc(t)||t instanceof Date)return t}var tO=(e,t,n)=>{var r=e.map(eO).filter(e=>e!=null);return n&&(t.dataKey==null||t.allowDuplicatedCategory&&Wc(r))?(0,XE.default)(0,e.length):t.allowDuplicatedCategory?r:Array.from(new Set(r))},nO=e=>e.referenceElements.dots,rO=(e,t,n)=>e.filter(e=>e.ifOverflow===`extendDomain`).filter(e=>t===`xAxis`?e.xAxisId===n:e.yAxisId===n),iO=K([nO,Xb,Zb],rO),aO=e=>e.referenceElements.areas,oO=K([aO,Xb,Zb],rO),sO=e=>e.referenceElements.lines,cO=K([sO,Xb,Zb],rO),lO=(e,t)=>{if(e!=null){var n=ND(e.map(e=>t===`xAxis`?e.x:e.y));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},uO=K(iO,Xb,lO),dO=(e,t)=>{if(e!=null){var n=ND(e.flatMap(e=>[t===`xAxis`?e.x1:e.y1,t===`xAxis`?e.x2:e.y2]));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},fO=K([oO,Xb],dO);function pO(e){if(e.x!=null)return ND([e.x]);var t=e.segment?.map(e=>e.x);return t==null||t.length===0?[]:ND(t)}function mO(e){if(e.y!=null)return ND([e.y]);var t=e.segment?.map(e=>e.y);return t==null||t.length===0?[]:ND(t)}var hO=(e,t)=>{if(e!=null){var n=e.flatMap(e=>t===`xAxis`?pO(e):mO(e));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},gO=K(uO,K([cO,Xb],hO),fO,(e,t,n)=>ZD(e,n,t)),_O=(e,t,n,r,i,a,o,s)=>n??cb(t,o===`vertical`&&s===`xAxis`||o===`horizontal`&&s===`yAxis`?ZD(r,a,i):ZD(a,i),e.allowDataOverflow),vO=K([dD,KD,qD,JD,$D,gO,X,Xb],_O,{memoizeOptions:{resultEqualityCheck:tx}}),yO=[0,1],bO=(e,t,n,r,i,a,o)=>{if(!((e==null||n==null||n.length===0)&&o===void 0)){var{dataKey:s,type:c}=e,l=qp(t,a);return l&&s==null?(0,XE.default)(0,n?.length??0):c===`category`?tO(r,e,l):i===`expand`&&!l?yO:o}},xO=K([dD,X,DD,AD,Sb,Xb,vO],bO),SO=K([dD,mD,wb],KE),CO=(e,t,n)=>{var{niceTicks:r}=t;if(r!==`none`){var i=GD(t),a=Array.isArray(i)&&(i[0]===`auto`||i[1]===`auto`);if((r===`snap125`||r===`adaptive`)&&t!=null&&t.tickCount&&ab(e)){if(a)return gb(e,t.tickCount,t.allowDecimals,r);if(t.type===`number`)return _b(e,t.tickCount,t.allowDecimals,r)}if(r===`auto`&&n===`linear`&&t!=null&&t.tickCount){if(a&&ab(e))return gb(e,t.tickCount,t.allowDecimals,`adaptive`);if(t.type===`number`&&ab(e))return _b(e,t.tickCount,t.allowDecimals,`adaptive`)}}},wO=K([xO,pD,SO],CO),TO=(e,t,n,r)=>{if(r!==`angleAxis`&&e?.type===`number`&&ab(t)&&Array.isArray(n)&&n.length>0){var i=t[0],a=n[0]??0,o=t[1],s=n[n.length-1]??0;return[Math.min(i,a),Math.max(o,s)]}return t},EO=K([dD,xO,wO,Xb],TO),DO=K(K(AD,dD,(e,t)=>{if(!(!t||t.type!==`number`)){var n=1/0,r=Array.from(ND(e.map(e=>e.value))).sort((e,t)=>e-t),i=r[0],a=r[r.length-1];if(i==null||a==null)return 1/0;var o=a-i;if(o===0)return 1/0;for(var s=0;si,(e,t,n,r,i)=>{if(!J(e))return 0;var a=t===`vertical`?r.height:r.width;if(i===`gap`)return e*a/2;if(i===`no-gap`){var o=Uc(n,e*a),s=e*a/2;return s-o-(s-o)/a*o}return 0}),OO=(e,t,n)=>{var r=aD(e,t);return r==null||typeof r.padding!=`string`?0:DO(e,`xAxis`,t,n,r.padding)},kO=(e,t,n)=>{var r=cD(e,t);return r==null||typeof r.padding!=`string`?0:DO(e,`yAxis`,t,n,r.padding)},AO=K(aD,OO,(e,t)=>{if(e==null)return{left:0,right:0};var{padding:n}=e;return typeof n==`string`?{left:t,right:t}:{left:(n.left??0)+t,right:(n.right??0)+t}}),jO=K(cD,kO,(e,t)=>{if(e==null)return{top:0,bottom:0};var{padding:n}=e;return typeof n==`string`?{top:t,bottom:t}:{top:(n.top??0)+t,bottom:(n.bottom??0)+t}}),MO=K([Am,AO,Im,Fm,(e,t,n)=>n],(e,t,n,r,i)=>{var{padding:a}=r;return i?[a.left,n.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),NO=K([Am,X,jO,Im,Fm,(e,t,n)=>n],(e,t,n,r,i,a)=>{var{padding:o}=i;return a?[r.height-o.bottom,o.top]:t===`horizontal`?[e.top+e.height-n.bottom,e.top+n.top]:[e.top+n.top,e.top+e.height-n.bottom]}),PO=(e,t,n,r)=>{switch(t){case`xAxis`:return MO(e,n,r);case`yAxis`:return NO(e,n,r);case`zAxis`:return uD(e,n)?.range;case`angleAxis`:return qb(e);case`radiusAxis`:return Jb(e,n);default:return}},FO=K([dD,PO],Mb),IO=K([dD,SO,K([SO,EO],sx),FO],UE),LO=(e,t,n,r)=>{if(!(n==null||n.dataKey==null)){var{type:i,scale:a}=n;if(qp(e,r)&&(i===`number`||a!==`auto`))return t.map(e=>e.value)}},RO=K([X,AD,pD,Xb],LO),zO=K([IO],ox);K([IO],YE),K([IO,FD],JE),K([yD,YD,Xb],XD);function BO(e,t){return e.idt.id)}var VO=(e,t)=>t,HO=(e,t,n)=>n,UO=K(_m,VO,HO,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(BO)),WO=K(vm,VO,HO,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(BO)),GO=(e,t)=>({width:e.width,height:t.height}),KO=(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height}),qO=K(Am,aD,GO),JO=(e,t,n)=>{switch(t){case`top`:return e.top;case`bottom`:return n-e.bottom;default:return 0}},YO=(e,t,n)=>{switch(t){case`left`:return e.left;case`right`:return n-e.right;default:return 0}},XO=K(mm,Am,UO,VO,HO,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=GO(t,n);o??=JO(t,r,e);var c=r===`top`&&!i||r===`bottom`&&i;a[n.id]=o-Number(c)*s.height,o+=(c?-1:1)*s.height}),a}),ZO=K(pm,Am,WO,VO,HO,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=KO(t,n);o??=YO(t,r,e);var c=r===`left`&&!i||r===`right`&&i;a[n.id]=o-Number(c)*s.width,o+=(c?-1:1)*s.width}),a}),QO=K([Am,aD,(e,t)=>{var n=aD(e,t);if(n!=null)return XO(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:e.left,y:0}:{x:e.left,y:i}}}),$O=K([Am,cD,(e,t)=>{var n=cD(e,t);if(n!=null)return ZO(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:0,y:e.top}:{x:i,y:e.top}}}),ek=K(Am,cD,(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height})),tk=(e,t,n)=>{switch(t){case`xAxis`:return qO(e,n).width;case`yAxis`:return ek(e,n).height;default:return}},nk=(e,t,n,r)=>{if(n!=null){var{allowDuplicatedCategory:i,type:a,dataKey:o}=n,s=qp(e,r),c=t.map(e=>e.value),l=c.filter(e=>e!=null);if(o&&s&&a===`category`&&i&&Wc(l))return c}},rk=K([X,AD,dD,Xb],nk),ik=K([X,fD,SO,zO,rk,RO,PO,wO,Xb],(e,t,n,r,i,a,o,s,c)=>{if(t!=null){var l=qp(e,c);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:c,categoricalDomain:a,duplicateDomain:i,isCategorical:l,niceTicks:s,range:o,realScaleType:n,scale:r}}}),ak=K([X,pD,SO,zO,wO,PO,rk,RO,Xb],(e,t,n,r,i,a,o,s,c)=>{if(!(t==null||r==null)){var l=qp(e,c),{type:u,ticks:d,tickCount:f}=t,p=n===`scaleBand`&&typeof r.bandwidth==`function`?r.bandwidth()/2:2,m=u===`category`&&r.bandwidth?r.bandwidth()/p:0;m=c===`angleAxis`&&a!=null&&a.length>=2?Lc(a[0]-a[1])*2*m:m;var h=d||i;return h?h.map((e,t)=>{var n=o?o.indexOf(e):e,i=r.map(n);return J(i)?{index:t,coordinate:i+m,value:e,offset:m}:null}).filter(qc):l&&s?s.map((e,t)=>{var n=r.map(e);return J(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(qc):r.ticks?r.ticks(f).map((e,t)=>{var n=r.map(e);return J(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(qc):r.domain().map((e,t)=>{var n=r.map(e);return J(n)?{coordinate:n+m,value:o?o[e]:e,index:t,offset:m}:null}).filter(qc)}}),ok=K([X,pD,zO,PO,rk,RO,Xb],(e,t,n,r,i,a,o)=>{if(!(t==null||n==null||r==null||r[0]===r[1])){var s=qp(e,o),{tickCount:c}=t,l=0;return l=o===`angleAxis`&&r?.length>=2?Lc(r[0]-r[1])*2*l:l,s&&a?a.map((e,t)=>{var r=n.map(e);return J(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(qc):n.ticks?n.ticks(c).map((e,t)=>{var r=n.map(e);return J(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(qc):n.domain().map((e,t)=>{var r=n.map(e);return J(r)?{coordinate:r+l,value:i?i[e]:e,index:t,offset:l}:null}).filter(qc)}}),sk=K(dD,zO,(e,t)=>{if(!(e==null||t==null))return QE(QE({},e),{},{scale:t})});K((e,t,n)=>uD(e,n),K([K([dD,SO,xO,FO],UE)],ox),(e,t)=>{if(!(e==null||t==null))return QE(QE({},e),{},{scale:t})});var ck=K([X,_m,vm],(e,t,n)=>{switch(e){case`horizontal`:return t.some(e=>e.reversed)?`right-to-left`:`left-to-right`;case`vertical`:return n.some(e=>e.reversed)?`bottom-to-top`:`top-to-bottom`;case`centric`:case`radial`:return`left-to-right`;default:return}});K([(e,t,n)=>e.renderedTicks[t]?.[n]],e=>{if(!(!e||e.length===0))return t=>{var n=1/0,r=e[0];for(var i of e){var a=Math.abs(i.coordinate-t);ae.options.defaultTooltipEventType,uk=e=>e.options.validateTooltipEventTypes;function dk(e,t,n){if(e==null)return t;var r=e?`axis`:`item`;return n==null?t:n.includes(r)?r:t}function fk(e,t){return dk(t,lk(e),uk(e))}function pk(e){return G(t=>fk(t,e))}var mk=(e,t)=>{var n,r=Number(t);if(!(Rc(r)||t==null))return r>=0?e==null||(n=e[r])==null?void 0:n.value:void 0},hk=e=>e.tooltip.settings,gk={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},_k=Gf({name:`tooltip`,initialState:{itemInteraction:{click:gk,hover:gk},axisInteraction:{click:gk,hover:gk},keyboardInteraction:gk,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:`hover`,axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Z(t.payload))},prepare:q()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:n,next:r}=t.payload,i=vf(e).tooltipItemPayloads.indexOf(Z(n));i>-1&&(e.tooltipItemPayloads[i]=Z(r))},prepare:q()},removeTooltipEntrySettings:{reducer(e,t){var n=vf(e).tooltipItemPayloads.indexOf(Z(t.payload));n>-1&&e.tooltipItemPayloads.splice(n,1)},prepare:q()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.syncInteraction.sourceViewBox=void 0,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),{addTooltipEntrySettings:vk,replaceTooltipEntrySettings:yk,removeTooltipEntrySettings:bk,setTooltipSettingsState:xk,setActiveMouseOverItemIndex:Sk,mouseLeaveItem:Ck,mouseLeaveChart:wk,setActiveClickItemIndex:Tk,setMouseOverAxisIndex:Ek,setMouseClickAxisIndex:Dk,setSyncInteraction:Ok,setKeyboardInteraction:kk}=_k.actions,Ak=_k.reducer;function jk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Mk(e){for(var t=1;t{if(t==null)return gk;var i=Ik(e,t,n);if(i==null)return gk;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(Lk(i)){if(a)return Mk(Mk({},i),{},{active:!0})}else if(r!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:r,graphicalItemId:void 0};return Mk(Mk({},gk),{},{coordinate:i.coordinate})};function zk(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var n=Number(e);return Number.isFinite(n)?n:void 0}function Bk(e,t){var n=zk(e),r=t[0],i=t[1];return n===void 0?!1:n>=Math.min(r,i)&&n<=Math.max(r,i)}function Vk(e,t,n){if(n==null||t==null)return!0;var r=Y(e,t);return r==null||!ab(n)?!0:Bk(r,n)}var Hk=(e,t,n,r)=>{var i=e?.index;if(i==null)return null;var a=Number(i);if(!J(a))return i;var o=0,s=1/0;t.length>0&&(s=t.length-1);var c=Math.max(o,Math.min(a,s)),l=t[c];return l==null||Vk(l,n,r)?String(c):null},Uk=(e,t,n,r,i,a,o)=>{if(a!=null){var s=o[0]?.getPosition(a);if(s!=null)return s;var c=i?.[Number(a)];if(c)switch(n){case`horizontal`:return{x:c.coordinate,y:(r.top+t)/2};default:return{x:(r.left+e)/2,y:c.coordinate}}}},Wk=(e,t,n,r)=>{if(t===`axis`)return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var i=n===`hover`?e.itemInteraction.hover.graphicalItemId:e.itemInteraction.click.graphicalItemId;if(e.syncInteraction.active&&i==null)return e.tooltipItemPayloads;if(i==null&&(r!=null||e.keyboardInteraction.active)){var a=e.tooltipItemPayloads[0];return a==null?[]:[a]}return e.tooltipItemPayloads.filter(e=>e.settings?.graphicalItemId===i)},Gk=e=>e.options.tooltipPayloadSearcher,Kk=e=>e.tooltip;function qk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Jk(e){for(var t=1;te(t)}function tA(e){if(typeof e==`string`)return e}function nA(e){if(!(typeof e!=`object`||!e))return{name:`name`in e?Qk(e.name):void 0,unit:`unit`in e?$k(e.unit):void 0,dataKey:`dataKey`in e?eA(e.dataKey):void 0,payload:`payload`in e?e.payload:void 0,color:`color`in e?tA(e.color):void 0,fill:`fill`in e?tA(e.fill):void 0}}function rA(e,t){return e??t}var iA=(e,t,n,r,i,a,o)=>{if(!(t==null||a==null)){var{chartData:s,computedData:c,dataStartIndex:l,dataEndIndex:u}=n;return e.reduce((e,n)=>{var{dataDefinedOnItem:d,settings:f}=n,p=rA(d,s),m=Array.isArray(p)?zp(p,l,u):p,h=f?.dataKey??r,g=f?.nameKey,_=r&&Array.isArray(m)&&!Array.isArray(m[0])&&o===`axis`?Gc(m,r,i):a(m,t,c,g);return Array.isArray(_)?_.forEach(t=>{var n=nA(t),r=n?.name,i=n?.dataKey,a=n?.payload,o=Jk(Jk({},f),{},{name:r,unit:n?.unit,color:n?.color??f?.color,fill:n?.fill??f?.fill});e.push(lm({tooltipEntrySettings:o,dataKey:i,payload:a,value:Y(a,i),name:r==null?void 0:String(r)}))}):e.push(lm({tooltipEntrySettings:f,dataKey:h,payload:_,value:Y(_,h),name:Y(_,g)??f?.name})),e},[])}},aA=K([RD,mD,wb],KE),oA=K([K([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),RD,K([ix,ax],hD)],vD,{memoizeOptions:{resultEqualityCheck:nx}}),sA=K([oA],e=>e.filter(ex)),cA=K([oA],CD,{memoizeOptions:{resultEqualityCheck:nx}}),lA=K([oA],e=>e.some(e=>!e.data)),uA=K([cA,$y],ED),dA=K([sA,$y,RD],$b),fA=K([uA,RD,oA,$y,lA,cA],kD),pA=K([RD],GD),mA=K([pA,K([RD],e=>e.allowDataOverflow)],sb),hA=K([K([dA,K([oA],e=>e.filter(ex)),Sb,Cb],VD),$y,ix,mA],UD),gA=K([uA,RD,K([oA],xD),YD,ix,ib],QD,{memoizeOptions:{resultEqualityCheck:tx}}),_A=K([K([nO,ix,ax],rO),ix],lO),vA=K([K([aO,ix,ax],rO),ix],dO),yA=K([RD,X,uA,fA,Sb,ix,K([RD,pA,mA,hA,gA,K([_A,K([K([sO,ix,ax],rO),ix],hO),vA],ZD),X,ix],_O)],bO),bA=K([RD,yA,K([yA,RD,aA],CO),ix],TO),xA=e=>PO(e,ix(e),ax(e),!1),SA=K([RD,xA],Mb),CA=K([K([RD,aA,bA,SA],UE)],ox),wA=K([X,RD,aA,CA,xA,K([X,fA,RD,ix],nk),K([X,fA,RD,ix],LO),ix],(e,t,n,r,i,a,o,s)=>{if(t){var{type:c}=t,l=qp(e,s);if(r){var u=n===`scaleBand`&&r.bandwidth?r.bandwidth()/2:2,d=c===`category`&&r.bandwidth?r.bandwidth()/u:0;return d=s===`angleAxis`&&i!=null&&i?.length>=2?Lc(i[0]-i[1])*2*d:d,l&&o?o.map((e,t)=>{var n=r.map(e);return J(n)?{coordinate:n+d,value:e,index:t,offset:d}:null}).filter(qc):r.domain().map((e,t)=>{var n=r.map(e);return J(n)?{coordinate:n+d,value:a?a[e]:e,index:t,offset:d}:null}).filter(qc)}}}),TA=K([lk,uk,hk],(e,t,n)=>dk(n.shared,e,t)),EA=e=>e.tooltip.settings.trigger,DA=e=>e.tooltip.settings.defaultIndex,OA=K([Kk,TA,EA,DA],Rk),kA=K([OA,uA,zD,yA],Hk),AA=K([wA,kA],mk),jA=K([OA],e=>{if(e)return e.dataKey}),MA=K([OA],e=>{if(e)return e.graphicalItemId}),NA=K([Kk,TA,EA,DA],Wk),PA=K([OA,K([pm,mm,X,Am,wA,DA,NA],Uk)],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),FA=K([OA],e=>e?.active??!1),IA=K([K([NA,kA,$y,zD,AA,Gk,TA],iA)],e=>{if(e!=null){var t=e.map(e=>e.payload).filter(e=>e!=null);return Array.from(new Set(t))}});function LA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function RA(e){for(var t=1;tG(RD),UA=()=>{var e=HA(),t=G(wA),n=G(CA);return cm(!e||!n?void 0:RA(RA({},e),{},{scale:n}),t)};function WA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function GA(e){for(var t=1;t{var i=t.find(e=>e&&e.index===n);if(i){if(e===`horizontal`)return{x:i.coordinate,y:r.relativeY};if(e===`vertical`)return{x:r.relativeX,y:i.coordinate}}return{x:0,y:0}},XA=(e,t,n,r)=>{var i=t.find(e=>e&&e.index===n);if(i){if(e===`centric`){var a=i.coordinate,{radius:o}=r;return GA(GA(GA({},r),Ty(r.cx,r.cy,o,a)),{},{angle:a,radius:o})}var s=i.coordinate,{angle:c}=r;return GA(GA(GA({},r),Ty(r.cx,r.cy,s,c)),{},{angle:c,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function ZA(e,t){var{relativeX:n,relativeY:r}=e;return n>=t.left&&n<=t.left+t.width&&r>=t.top&&r<=t.top+t.height}var QA=(e,t,n,r,i)=>{var a=t?.length??0;if(a<=1||e==null)return 0;if(r===`angleAxis`&&i!=null&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var o=0;o0?n[o-1]?.coordinate:n[a-1]?.coordinate,c=n[o]?.coordinate,l=o>=a-1?n[0]?.coordinate:n[o+1]?.coordinate,u=void 0;if(!(s==null||c==null||l==null))if(Lc(c-s)!==Lc(l-c)){var d=[];if(Lc(l-c)===Lc(i[1]-i[0])){u=l;var f=c+i[1]-i[0];d[0]=Math.min(f,(f+s)/2),d[1]=Math.max(f,(f+s)/2)}else{u=s;var p=l+i[1]-i[0];d[0]=Math.min(c,(p+c)/2),d[1]=Math.max(c,(p+c)/2)}var m=[Math.min(c,(u+c)/2),Math.max(c,(u+c)/2)];if(e>m[0]&&e<=m[1]||e>=d[0]&&e<=d[1])return n[o]?.index}else{var h=Math.min(s,l),g=Math.max(s,l);if(e>(h+c)/2&&e<=(g+c)/2)return n[o]?.index}}else if(t)for(var _=0;_(v.coordinate+b.coordinate)/2||_>0&&_(v.coordinate+b.coordinate)/2&&e<=(v.coordinate+y.coordinate)/2)return v.index}}return-1},$A=()=>G(wb),ej=(e,t)=>t,tj=(e,t,n)=>n,nj=(e,t,n,r)=>r,rj=K(wA,e=>(0,Fu.default)(e,e=>e.coordinate)),ij=K([Kk,ej,tj,nj],Rk),aj=K([ij,uA,zD,yA],Hk),oj=(e,t,n)=>{if(t!=null){var r=Kk(e);return t===`axis`?n===`hover`?r.axisInteraction.hover.dataKey:r.axisInteraction.click.dataKey:n===`hover`?r.itemInteraction.hover.dataKey:r.itemInteraction.click.dataKey}},sj=K([Kk,ej,tj,nj],Wk),cj=K([pm,mm,X,Am,wA,nj,sj],Uk),lj=K([ij,cj],(e,t)=>e.coordinate??t),uj=K([wA,aj],mk),dj=K([sj,aj,$y,zD,uj,Gk,ej],iA),fj=K([ij,aj],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),pj=(e,t,n,r,i,a,o)=>{if(!(!e||!n||!r||!i)&&ZA(e,o)){var s=QA(dm(e,t),a,i,n,r),c=YA(t,i,s,e);return{activeIndex:String(s),activeCoordinate:c}}},mj=(e,t,n,r,i,a,o)=>{if(!(!e||!r||!i||!a||!n)){var s=jy(e,n);if(s){var c=QA(fm(s,t),o,a,r,i),l=XA(t,a,c,s);return{activeIndex:String(c),activeCoordinate:l}}}},hj=(e,t,n,r,i,a,o,s)=>{if(!(!e||!t||!r||!i||!a))return t===`horizontal`||t===`vertical`?pj(e,t,r,i,a,o,s):mj(e,t,n,r,i,a,o)},gj=K(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,n)=>n,(e,t,n)=>{if(t!=null){var r=e[t];if(r!=null)return n?r.panoramaElement:r.element}}),_j=K(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(kb));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:rx}});function vj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function yj(e){for(var t=1;tyj(yj({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),{})},wj=new Set(Object.values(kb));function Tj(e){return wj.has(e)}var Ej=Gf({name:`zIndex`,initialState:Cj,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]?e.zIndexMap[n].consumers+=1:e.zIndexMap[n]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:q()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(--e.zIndexMap[n].consumers,e.zIndexMap[n].consumers<=0&&!Tj(n)&&delete e.zIndexMap[n])},prepare:q()},registerZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n,element:r,isPanorama:i}=t.payload;e.zIndexMap[n]?i?e.zIndexMap[n].panoramaElement=Z(r):e.zIndexMap[n].element=Z(r):e.zIndexMap[n]={consumers:0,element:i?void 0:Z(r),panoramaElement:i?Z(r):void 0}},prepare:q()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(t.payload.isPanorama?e.zIndexMap[n].panoramaElement=void 0:e.zIndexMap[n].element=void 0)},prepare:q()}}}),{registerZIndexPortal:Dj,unregisterZIndexPortal:Oj,registerZIndexPortalElement:kj,unregisterZIndexPortalElement:Aj}=Ej.actions,jj=Ej.reducer;function Mj(e){var{zIndex:t,children:n}=e,r=bh()&&t!==void 0&&t!==0,i=Pm(),a=(0,F.useRef)(void 0),o=(0,F.useRef)(new Set),s=W(),c=G(e=>gj(e,t,i));if((0,F.useLayoutEffect)(()=>{if(!r){var e=o.current;e.forEach(e=>{s(Oj({zIndex:e}))}),e.clear(),a.current=void 0;return}if(o.current.has(t)||(s(Dj({zIndex:t})),o.current.add(t)),c){a.current=c;var n=o.current;n.forEach(e=>{e!==t&&(s(Oj({zIndex:e})),n.delete(e))})}},[s,t,r,c]),(0,F.useLayoutEffect)(()=>{var e=o.current;return()=>{e.forEach(e=>{s(Oj({zIndex:e}))}),e.clear()}},[s]),!r)return n;var l=c??a.current;return l?(0,Ug.createPortal)(n,l):null}function Nj(){return Nj=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,F.useContext)(Hj),Wj=Se(M(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i{if(t&&Array.isArray(e)){var n=Number.parseInt(t,10);if(!Rc(n))return e[n]}},Yj=Gf({name:`options`,initialState:{chartName:``,tooltipPayloadSearcher:()=>void 0,eventEmitter:void 0,defaultTooltipEventType:`axis`},reducers:{createEventEmitter:e=>{e.eventEmitter??=Symbol(`rechartsEventEmitter`)}}}),Xj=Yj.reducer,{createEventEmitter:Zj}=Yj.actions;function Qj(e){return e.tooltip.syncInteraction}var $j=Gf({name:`chartData`,initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=Z(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:n,endIndex:r}=t.payload;n!=null&&(e.dataStartIndex=n),r!=null&&(e.dataEndIndex=r)}}}),{setChartData:eM,setDataStartEndIndexes:tM,setComputedData:nM}=$j.actions,rM=$j.reducer,iM=[`x`,`y`];function aM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oM(e){for(var t=1;t{if(e==null)return Jc;var s=(s,c,l)=>{if(t!==l&&e===s){if(c.payload.active===!1){n(Ok({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(r===`index`){var u;if(o&&c!=null&&(u=c.payload)!=null&&u.coordinate&&c.payload.sourceViewBox){var d=c.payload.coordinate,{x:f,y:p}=d,m=uM(d,iM),{x:h,y:g,width:_,height:v}=c.payload.sourceViewBox,y=oM(oM({},m),{},{x:o.x+(_?(f-h)/_:0)*o.width,y:o.y+(v?(p-g)/v:0)*o.height});n(oM(oM({},c),{},{payload:oM(oM({},c.payload),{},{coordinate:y})}))}else n(c);return}if(i!=null){var b;typeof r==`function`?b=i[r(i,{activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate})]:r===`value`&&(b=i.find(e=>String(e.value)===c.payload.label));var{coordinate:x}=c.payload;if(x==null||o==null){n(Ok({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(b==null){n(Ok({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var{x:S,y:C}=x,w=Math.min(S,o.x+o.width),T=Math.min(C,o.y+o.height),E={x:a===`horizontal`?b.coordinate:w,y:a===`horizontal`?T:b.coordinate};n(Ok({active:c.payload.active,coordinate:E,dataKey:c.payload.dataKey,index:String(b.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId}))}}};return Gj.on(Kj,s),()=>{Gj.off(Kj,s)}},[G(e=>e.rootProps.className),n,t,e,r,i,a,o])}function pM(){var e=G(Tb),t=G(Db),n=W();(0,F.useEffect)(()=>{if(e==null)return Jc;var r=(r,i,a)=>{t!==a&&e===r&&n(tM(i))};return Gj.on(qj,r),()=>{Gj.off(qj,r)}},[n,t,e])}function mM(){var e=W();(0,F.useEffect)(()=>{e(Zj())},[e]),fM(),pM()}function hM(e,t,n,r,i,a){var o=G(n=>oj(n,e,t)),s=G(MA),c=G(Db),l=G(Tb),u=G(Eb),d=G(Qj)?.sourceViewBox!=null,f=dh();(0,F.useEffect)(()=>{if(!d&&l!=null&&c!=null){var e=Ok({active:a,coordinate:n,dataKey:o,index:i,label:typeof r==`number`?String(r):r,sourceViewBox:f,graphicalItemId:s});Gj.emit(Kj,l,e,c)}},[d,n,o,s,i,r,c,l,u,a,f])}function gM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _M(e){for(var t=1;t{x(xk({shared:g,trigger:_,axisId:b,active:n,defaultIndex:S}))},[x,g,_,b,n,S]);var C=dh(),w=P_(),T=pk(g),{activeIndex:E,isActive:D}=G(e=>fj(e,T,_,S))??{},O=G(e=>dj(e,T,_,S)),k=G(e=>uj(e,T,_,S)),ee=G(e=>lj(e,T,_,S)),te=O,A=Uj(),j=n??D??!1,[ne,re]=Vu([te,j]),ie=T===`axis`?k:void 0;hM(T,_,ee,ie,E,j);var ae=y??A;if(ae==null||C==null||T==null)return null;var oe=te??CM;j||(oe=CM),s&&oe.length&&(oe=su(oe.filter(e=>e.value!=null&&(e.hide!==!0||t.includeHidden)),u,xM));var se=oe.length>0,ce=_M(_M({},t),{},{payload:oe,label:ie,active:j,activeIndex:E,coordinate:ee,accessibilityLayer:w}),le=F.createElement(N_,{allowEscapeViewBox:r,animationDuration:i,animationEasing:a,isAnimationActive:c,active:j,coordinate:ee,hasPayload:se,offset:l,position:d,reverseDirection:f,useTranslate3d:p,viewBox:C,wrapperStyle:m,lastBoundingBox:ne,innerRef:re,hasPortalFromProps:!!y},SM(o,ce));return F.createElement(F.Fragment,null,(0,Ug.createPortal)(le,ae),j&&F.createElement(Vj,{cursor:h,tooltipEventType:T,coordinate:ee,payload:oe,index:E}))}var EM=e=>null;EM.displayName=`Cell`;function DM(e,t,n){return(t=OM(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function OM(e){var t=kM(e,`string`);return typeof t==`symbol`?t:t+``}function kM(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var AM=class{constructor(e){DM(this,`cache`,new Map),this.maxSize=e}get(e){var t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};function jM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function MM(e){for(var t=1;t{try{var n=document.getElementById(zM);n||(n=document.createElement(`span`),n.setAttribute(`id`,zM),n.setAttribute(`aria-hidden`,`true`),document.body.appendChild(n)),Object.assign(n.style,RM,t),n.textContent=`${e}`;var r=n.getBoundingClientRect();return{width:r.width,height:r.height}}catch{return{width:0,height:0}}},HM=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e==null||w_.isSsr)return{width:0,height:0};if(!IM.enableCache)return VM(e,t);var n=BM(e,t),r=LM.get(n);if(r)return r;var i=VM(e,t);return LM.set(n,i),i},UM;function WM(e,t,n){return(t=GM(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function GM(e){var t=KM(e,`string`);return typeof t==`symbol`?t:t+``}function KM(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var qM=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,JM=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,YM=/^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/,XM=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,ZM={cm:96/2.54,mm:96/25.4,pt:96/72,pc:96/6,in:96,Q:96/(2.54*40),px:1},QM=[`cm`,`mm`,`pt`,`pc`,`in`,`Q`,`px`];function $M(e){return QM.includes(e)}var eN=`NaN`;function tN(e,t){return e*ZM[t]}var nN=class e{static parse(t){var[,n,r]=XM.exec(t)??[];return n==null?e.NaN:new e(parseFloat(n),r??``)}constructor(e,t){this.num=e,this.unit=t,this.num=e,this.unit=t,Rc(e)&&(this.unit=``),t!==``&&!YM.test(t)&&(this.num=NaN,this.unit=``),$M(t)&&(this.num=tN(e,t),this.unit=`px`)}add(t){return this.unit===t.unit?new e(this.num+t.num,this.unit):new e(NaN,``)}subtract(t){return this.unit===t.unit?new e(this.num-t.num,this.unit):new e(NaN,``)}multiply(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num*t.num,this.unit||t.unit)}divide(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num/t.num,this.unit||t.unit)}toString(){return`${this.num}${this.unit}`}isNaN(){return Rc(this.num)}};UM=nN,WM(nN,`NaN`,new UM(NaN,``));function rN(e){if(e==null||e.includes(eN))return eN;for(var t=e;t.includes(`*`)||t.includes(`/`);){var[,n,r,i]=qM.exec(t)??[],a=nN.parse(n??``),o=nN.parse(i??``),s=r===`*`?a.multiply(o):a.divide(o);if(s.isNaN())return eN;t=t.replace(qM,s.toString())}for(;t.includes(`+`)||/.-\d+(?:\.\d+)?/.test(t);){var[,c,l,u]=JM.exec(t)??[],d=nN.parse(c??``),f=nN.parse(u??``),p=l===`+`?d.add(f):d.subtract(f);if(p.isNaN())return eN;t=t.replace(JM,p.toString())}return t}var iN=/\(([^()]*)\)/;function aN(e){for(var t=e,n;(n=iN.exec(t))!=null;){var[,r]=n;t=t.replace(iN,rN(r))}return t}function oN(e){var t=e.replace(/\s+/g,``);return t=aN(t),t=rN(t),t}function sN(e){try{return oN(e)}catch{return eN}}function cN(e){var t=sN(e.slice(5,-1));return t===eN?``:t}var lN=[`x`,`y`,`lineHeight`,`capHeight`,`fill`,`scaleToFit`,`textAnchor`,`verticalAnchor`],uN=[`dx`,`dy`,`angle`,`className`,`breakAll`];function dN(){return dN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:t,breakAll:n,style:r}=e;try{var i=[];return U(t)||(i=n?t.toString().split(``):t.toString().split(mN)),{wordsWithComputedWidth:i.map(e=>({word:e,width:HM(e,r).width})),spaceWidth:n?0:HM(`\xA0`,r).width}}catch{return null}};function gN(e){return e===`start`||e===`middle`||e===`end`||e===`inherit`}function _N(e){return U(e)||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}var vN=(e,t,n,r)=>e.reduce((e,i)=>{var{word:a,width:o}=i,s=e[e.length-1];if(s&&o!=null&&(t==null||r||s.width+o+ne.reduce((e,t)=>e.width>t.width?e:t),bN=`…`,xN=(e,t,n,r,i,a,o,s)=>{var c=hN({breakAll:n,style:r,children:e.slice(0,t)+bN});if(!c)return[!1,[]];var l=vN(c.wordsWithComputedWidth,a,o,s);return[l.length>i||yN(l).width>Number(a),l]},SN=(e,t,n,r,i)=>{var{maxLines:a,children:o,style:s,breakAll:c}=e,l=V(a),u=String(o),d=vN(t,r,n,i);if(!l||i||!(d.length>a||yN(d).width>Number(r)))return d;for(var f=0,p=u.length-1,m=0,h;f<=p&&m<=u.length-1;){var g=Math.floor((f+p)/2),[_,v]=xN(u,g-1,c,s,a,r,n,i),[y]=xN(u,g,c,s,a,r,n,i);if(!_&&!y&&(f=g+1),_&&y&&(p=g-1),!_&&y){h=v;break}m++}return h||d},CN=e=>[{words:U(e)?[]:e.toString().split(mN),width:void 0}],wN=e=>{var{width:t,scaleToFit:n,children:r,style:i,breakAll:a,maxLines:o}=e;if((t||n)&&!w_.isSsr){var s,c,l=hN({breakAll:a,children:r,style:i});if(l){var{wordsWithComputedWidth:u,spaceWidth:d}=l;s=u,c=d}else return CN(r);return SN({breakAll:a,children:r,maxLines:o,style:i},s,c,t,!!n)}return CN(r)},TN=`#808080`,EN={angle:0,breakAll:!1,capHeight:`0.71em`,fill:TN,lineHeight:`1em`,scaleToFit:!1,textAnchor:`start`,verticalAnchor:`end`,x:0,y:0},DN=(0,F.forwardRef)((e,t)=>{var n=yl(e,EN),{x:r,y:i,lineHeight:a,capHeight:o,fill:s,scaleToFit:c,textAnchor:l,verticalAnchor:u}=n,d=fN(n,lN),f=(0,F.useMemo)(()=>wN({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:c,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,c,d.style,d.width]),{dx:p,dy:m,angle:h,className:g,breakAll:_}=d,v=fN(d,uN);if(!Bc(r)||!Bc(i)||f.length===0)return null;var y=Number(r)+(V(p)?p:0),b=Number(i)+(V(m)?m:0);if(!J(y)||!J(b))return null;var x;switch(u){case`start`:x=cN(`calc(${o})`);break;case`middle`:x=cN(`calc(${(f.length-1)/2} * -${a} + (${o} / 2))`);break;default:x=cN(`calc(${f.length-1} * -${a})`);break}var S=[],C=f[0];if(c&&C!=null){var w=C.width,{width:T}=d;S.push(`scale(${V(T)&&V(w)?T/w:1})`)}return h&&S.push(`rotate(${h}, ${y}, ${b})`),S.length&&(v.transform=S.join(` `)),F.createElement(`text`,dN({},Uo(v),{ref:t,x:y,y:b,className:P(`recharts-text`,g),textAnchor:l,fill:s.includes(`url`)?TN:s}),f.map((e,t)=>{var n=e.words.join(_?``:` `);return F.createElement(`tspan`,{x:y,dy:t===0?x:a,key:`${n}-${t}`},n)}))});DN.displayName=`Text`;function ON(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function kN(e){for(var t=1;t{var{viewBox:t,position:n,offset:r=0,parentViewBox:i,clamp:a}=e,{x:o,y:s,height:c,upperWidth:l,lowerWidth:u}=uh(t),d=o,f=o+(l-u)/2,p=(d+f)/2,m=(l+u)/2,h=d+l/2,g=c>=0?1:-1,_=g*r,v=g>0?`end`:`start`,y=g>0?`start`:`end`,b=l>=0?1:-1,x=b*r,S=b>0?`end`:`start`,C=b>0?`start`:`end`,w=i;if(n===`top`){var T={x:d+l/2,y:s-_,horizontalAnchor:`middle`,verticalAnchor:v};return a&&w&&(T.height=Math.max(s-w.y,0),T.width=l),T}if(n===`bottom`){var E={x:f+u/2,y:s+c+_,horizontalAnchor:`middle`,verticalAnchor:y};return a&&w&&(E.height=Math.max(w.y+w.height-(s+c),0),E.width=u),E}if(n===`left`){var D={x:p-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`};return a&&w&&(D.width=Math.max(D.x-w.x,0),D.height=c),D}if(n===`right`){var O={x:p+m+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`};return a&&w&&(O.width=Math.max(w.x+w.width-O.x,0),O.height=c),O}var k=a&&w?{width:m,height:c}:{};return n===`insideLeft`?kN({x:p+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`},k):n===`insideRight`?kN({x:p+m-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`},k):n===`insideTop`?kN({x:d+l/2,y:s+_,horizontalAnchor:`middle`,verticalAnchor:y},k):n===`insideBottom`?kN({x:f+u/2,y:s+c-_,horizontalAnchor:`middle`,verticalAnchor:v},k):n===`insideTopLeft`?kN({x:d+x,y:s+_,horizontalAnchor:C,verticalAnchor:y},k):n===`insideTopRight`?kN({x:d+l-x,y:s+_,horizontalAnchor:S,verticalAnchor:y},k):n===`insideBottomLeft`?kN({x:f+x,y:s+c-_,horizontalAnchor:C,verticalAnchor:v},k):n===`insideBottomRight`?kN({x:f+u-x,y:s+c-_,horizontalAnchor:S,verticalAnchor:v},k):n&&typeof n==`object`&&(V(n.x)||zc(n.x))&&(V(n.y)||zc(n.y))?kN({x:o+Uc(n.x,m),y:s+Uc(n.y,c),horizontalAnchor:`end`,verticalAnchor:`end`},k):kN({x:h,y:s+c/2,horizontalAnchor:`middle`,verticalAnchor:`middle`},k)},PN=[`labelRef`],FN=[`content`];function IN(e,t){if(e==null)return{};var n,r,i=LN(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o,children:s}=e,c=(0,F.useMemo)(()=>({x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o}),[t,n,r,i,a,o]);return F.createElement(WN.Provider,{value:c},s)},KN=()=>{var e=(0,F.useContext)(WN),t=dh();return e||(t?uh(t):void 0)},qN=(0,F.createContext)(null),JN=()=>{var e=(0,F.useContext)(qN),t=G(Yb);return e||t},YN=e=>{var{value:t,formatter:n}=e,r=U(e.children)?t:e.children;return typeof n==`function`?n(r):r},XN=e=>e!=null&&typeof e==`function`,ZN=(e,t)=>Lc(t-e)*Math.min(Math.abs(t-e),360),QN=(e,t,n,r,i)=>{var{offset:a,className:o}=e,{cx:s,cy:c,innerRadius:l,outerRadius:u,startAngle:d,endAngle:f,clockWise:p}=i,m=(l+u)/2,h=ZN(d,f),g=h>=0?1:-1,_,v;switch(t){case`insideStart`:_=d+g*a,v=p;break;case`insideEnd`:_=f-g*a,v=!p;break;case`end`:_=f+g*a,v=p;break;default:throw Error(`Unsupported position ${t}`)}v=h<=0?v:!v;var y=Ty(s,c,m,_),b=Ty(s,c,m,_+(v?1:-1)*359),x=`M${y.x},${y.y} + A${m},${m},0,1,${+!v}, + ${b.x},${b.y}`,S=U(e.id)?Hc(`recharts-radial-line-`):e.id;return F.createElement(`text`,UN({},r,{dominantBaseline:`central`,className:P(`recharts-radial-bar-label`,o)}),F.createElement(`defs`,null,F.createElement(`path`,{id:S,d:x})),F.createElement(`textPath`,{xlinkHref:`#${S}`},n))},$N=(e,t,n)=>{var{cx:r,cy:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:c}=e,l=(s+c)/2;if(n===`outside`){var{x:u,y:d}=Ty(r,i,o+t,l);return{x:u,y:d,textAnchor:u>=r?`start`:`end`,verticalAnchor:`middle`}}if(n===`center`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`middle`};if(n===`centerTop`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`start`};if(n===`centerBottom`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`end`};var{x:f,y:p}=Ty(r,i,(a+o)/2,l);return{x:f,y:p,textAnchor:`middle`,verticalAnchor:`middle`}},eP=e=>e!=null&&`cx`in e&&V(e.cx),tP={angle:0,offset:5,zIndex:kb.label,position:`middle`,textBreakAll:!1};function nP(e){if(!eP(e))return e;var{cx:t,cy:n,outerRadius:r}=e,i=r*2;return{x:t-r,y:n-r,width:i,upperWidth:i,lowerWidth:i,height:i}}function rP(e){var t=yl(e,tP),{viewBox:n,parentViewBox:r,position:i,value:a,children:o,content:s,className:c=``,textBreakAll:l,labelRef:u}=t,d=JN(),f=KN(),p=n==null?i===`center`?f:d??f:eP(n)?n:uh(n),m,h,g=nP(p);if(!p||U(a)&&U(o)&&!(0,F.isValidElement)(s)&&typeof s!=`function`)return null;var _=zN(zN({},t),{},{viewBox:p});if((0,F.isValidElement)(s)){var{labelRef:v}=_;return(0,F.cloneElement)(s,IN(_,PN))}if(typeof s==`function`){var{content:y}=_;if(m=(0,F.createElement)(s,IN(_,FN)),(0,F.isValidElement)(m))return m}else m=YN(t);var b=Uo(t);if(eP(p)){if(i===`insideStart`||i===`insideEnd`||i===`end`)return QN(t,i,m,b,p);h=$N(p,t.offset,t.position)}else{if(!g)return null;var x=NN({viewBox:g,position:i,offset:t.offset,parentViewBox:eP(r)?void 0:r,clamp:!0});h=zN(zN({x:x.x,y:x.y,textAnchor:x.horizontalAnchor,verticalAnchor:x.verticalAnchor},x.width===void 0?{}:{width:x.width}),x.height===void 0?{}:{height:x.height})}return F.createElement(Mj,{zIndex:t.zIndex},F.createElement(DN,UN({ref:u,className:P(`recharts-label`,c)},b,h,{textAnchor:gN(b.textAnchor)?b.textAnchor:h.textAnchor,breakAll:l}),m))}rP.displayName=`Label`;var iP=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?F.createElement(rP,UN({key:`label-implicit`},r)):Bc(e)?F.createElement(rP,UN({key:`label-implicit`,value:e},r)):(0,F.isValidElement)(e)?e.type===rP?(0,F.cloneElement)(e,zN({key:`label-implicit`},r)):F.createElement(rP,UN({key:`label-implicit`,content:e},r)):XN(e)?F.createElement(rP,UN({key:`label-implicit`,content:e},r)):e&&typeof e==`object`?F.createElement(rP,UN({},e,{key:`label-implicit`},r)):null};function aP(e){var{label:t,labelRef:n}=e;return iP(t,KN(),n)||null}var oP=[`valueAccessor`],sP=[`dataKey`,`clockWise`,`id`,`textBreakAll`,`zIndex`];function cP(){return cP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(_N(t))return t},fP=(0,F.createContext)(void 0),pP=fP.Provider,mP=(0,F.createContext)(void 0);mP.Provider;function hP(){return(0,F.useContext)(fP)}function gP(){return(0,F.useContext)(mP)}function _P(e){var{valueAccessor:t=dP}=e,n=lP(e,oP),{dataKey:r,clockWise:i,id:a,textBreakAll:o,zIndex:s}=n,c=lP(n,sP),l=hP(),u=gP(),d=l||u;return!d||!d.length?null:F.createElement(Mj,{zIndex:s??kb.label},F.createElement(es,{className:`recharts-label-list`},d.map((e,i)=>{var s=U(r)?t(e,i):Y(e.payload,r),l=U(a)?{}:{id:`${a}-${i}`};return F.createElement(rP,cP({key:`label-${i}`},Uo(e),c,l,{fill:n.fill??e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:o,viewBox:e.viewBox,index:i,zIndex:0}))})))}_P.displayName=`LabelList`;function vP(e){var{label:t}=e;return t?t===!0?F.createElement(_P,{key:`labelList-implicit`}):F.isValidElement(t)||XN(t)?F.createElement(_P,{key:`labelList-implicit`,content:t}):typeof t==`object`?F.createElement(_P,cP({key:`labelList-implicit`},t,{type:String(t.type)})):null:null}function yP(){return yP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r,className:i}=e,a=P(`recharts-dot`,i);return V(t)&&V(n)&&V(r)?F.createElement(`circle`,yP({},Vo(e),dl(e),{className:a,cx:t,cy:n,r})):null},xP=Gf({name:`polarAxis`,initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Z(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Z(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:SP,removeRadiusAxis:CP,addAngleAxis:wP,removeAngleAxis:TP}=xP.actions,EP=xP.reducer;function DP(e){return e&&typeof e==`object`&&`className`in e&&typeof e.className==`string`?e.className:``}var OP=M((e=>{var t=60103,n=60106,r=60107,i=60108,a=60114,o=60109,s=60110,c=60112,l=60113,u=60120,d=60115,f=60116;if(typeof Symbol==`function`&&Symbol.for){var p=Symbol.for;t=p(`react.element`),n=p(`react.portal`),r=p(`react.fragment`),i=p(`react.strict_mode`),a=p(`react.profiler`),o=p(`react.provider`),s=p(`react.context`),c=p(`react.forward_ref`),l=p(`react.suspense`),u=p(`react.suspense_list`),d=p(`react.memo`),f=p(`react.lazy`),p(`react.block`),p(`react.server.block`),p(`react.fundamental`),p(`react.debug_trace_mode`),p(`react.legacy_hidden`)}function m(e){if(typeof e==`object`&&e){var p=e.$$typeof;switch(p){case t:switch(e=e.type,e){case r:case a:case i:case l:case u:return e;default:switch(e&&=e.$$typeof,e){case s:case c:case f:case d:case o:return e;default:return p}}case n:return p}}}e.isFragment=function(e){return m(e)===r}})),kP=M(((e,t)=>{t.exports=OP()}))(),AP=e=>typeof e==`string`?e:e?e.displayName||e.name||`Component`:``,jP=null,MP=null,NP=e=>{if(e===jP&&Array.isArray(MP))return MP;var t=[];return F.Children.forEach(e,e=>{U(e)||((0,kP.isFragment)(e)?t=t.concat(NP(e.props.children)):t.push(e))}),MP=t,jP=e,t};function PP(e,t){var n=[],r=[];return r=Array.isArray(t)?t.map(e=>AP(e)):[AP(t)],NP(e).forEach(e=>{var t=(0,Ic.default)(e,`type.displayName`)||(0,Ic.default)(e,`type.name`);t&&r.indexOf(t)!==-1&&n.push(e)}),n}var FP=e=>e&&typeof e==`object`&&`clipDot`in e?!!e.clipDot:!0,IP=M((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}e.isPlainObject=t})),LP=M(((e,t)=>{t.exports=IP().isPlainObject})),RP,zP,BP,VP,HP;function UP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function WP(e){for(var t=1;t{var a=n-r,o=Fc(RP||=YP([`M `,`,`,``]),e,t);return o+=Fc(zP||=YP([`L `,`,`,``]),e+n,t),o+=Fc(BP||=YP([`L `,`,`,``]),e+n-a/2,t+i),o+=Fc(VP||=YP([`L `,`,`,``]),e+n-a/2-r,t+i),o+=Fc(HP||=YP([`L `,`,`,` Z`]),e,t),o},ZP={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},QP=e=>{var t=yl(e,ZP),{x:n,y:r,upperWidth:i,lowerWidth:a,height:o,className:s}=t,{animationEasing:c,animationDuration:l,animationBegin:u,isUpdateAnimationActive:d}=t,f=(0,F.useRef)(null),[p,m]=(0,F.useState)(-1),h=(0,F.useRef)(i),g=(0,F.useRef)(a),_=(0,F.useRef)(o),v=(0,F.useRef)(n),y=(0,F.useRef)(r),b=qv(e,`trapezoid-`);if((0,F.useEffect)(()=>{if(f.current&&f.current.getTotalLength)try{var e=f.current.getTotalLength();e&&m(e)}catch{}},[]),n!==+n||r!==+r||i!==+i||a!==+a||o!==+o||i===0&&a===0||o===0)return null;var x=P(`recharts-trapezoid`,s);if(!d)return F.createElement(`g`,null,F.createElement(`path`,JP({},Uo(t),{className:x,d:XP(n,r,i,a,o)})));var S=h.current,C=g.current,w=_.current,T=v.current,E=y.current,D=`0px ${p===-1?1:p}px`,O=`${p}px ${p}px`,k=mv([`strokeDasharray`],l,c);return F.createElement(Kv,{animationId:b,key:b,canBegin:p>0,duration:l,easing:c,isActive:d,begin:u},e=>{var s=H(S,i,e),c=H(C,a,e),l=H(w,o,e),u=H(T,n,e),d=H(E,r,e);f.current&&(h.current=s,g.current=c,_.current=l,v.current=u,y.current=d);var p=e>0?{transition:k,strokeDasharray:O}:{strokeDasharray:D};return F.createElement(`path`,JP({},Uo(t),{className:x,d:XP(u,d,s,c,l),ref:f,style:WP(WP({},p),t.style)}))})},$P=Se(LP()),eF=[`option`,`shapeType`,`activeClassName`,`inActiveClassName`];function tF(e,t){if(e==null)return{};var n,r,i=nF(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var r=W();return(i,a)=>o=>{e?.(i,a,o),r(Sk({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},mF=e=>{var t=W();return(n,r)=>i=>{e?.(n,r,i),t(Ck())}},hF=(e,t,n)=>{var r=W();return(i,a)=>o=>{e?.(i,a,o),r(Tk({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}};function gF(e){var{tooltipEntrySettings:t}=e,n=W(),r=Pm(),i=(0,F.useRef)(null);return(0,F.useLayoutEffect)(()=>{r||(i.current===null?n(vk(t)):i.current!==t&&n(yk({prev:i.current,next:t})),i.current=t)},[t,n,r]),(0,F.useLayoutEffect)(()=>()=>{i.current&&=(n(bk(i.current)),null)},[n]),null}function _F(e){var{legendPayload:t}=e,n=W(),r=Pm(),i=(0,F.useRef)(null);return(0,F.useLayoutEffect)(()=>{r||(i.current===null?n(bg(t)):i.current!==t&&n(xg({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,F.useLayoutEffect)(()=>()=>{i.current&&=(n(Sg(i.current)),null)},[n]),null}var vF=F.useId??(()=>{var[e]=F.useState(()=>Hc(`uid-`));return e});function yF(e,t){var n=vF();return t||(e?`${e}-${n}`:n)}var bF=(0,F.createContext)(void 0),xF=e=>{var{id:t,type:n,children:r}=e,i=yF(`recharts-${n}`,t);return F.createElement(bF.Provider,{value:i},r(i))},SF=Gf({name:`graphicalItems`,initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Z(t.payload))},prepare:q()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=vf(e).cartesianItems.indexOf(Z(n));i>-1&&(e.cartesianItems[i]=Z(r))},prepare:q()},removeCartesianGraphicalItem:{reducer(e,t){var n=vf(e).cartesianItems.indexOf(Z(t.payload));n>-1&&e.cartesianItems.splice(n,1)},prepare:q()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Z(t.payload))},prepare:q()},removePolarGraphicalItem:{reducer(e,t){var n=vf(e).polarItems.indexOf(Z(t.payload));n>-1&&e.polarItems.splice(n,1)},prepare:q()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=vf(e).polarItems.indexOf(Z(n));i>-1&&(e.polarItems[i]=Z(r))},prepare:q()}}}),{addCartesianGraphicalItem:CF,replaceCartesianGraphicalItem:wF,removeCartesianGraphicalItem:TF,addPolarGraphicalItem:EF,removePolarGraphicalItem:DF,replacePolarGraphicalItem:OF}=SF.actions,kF=SF.reducer,AF=(0,F.memo)(e=>{var t=W(),n=(0,F.useRef)(null);return(0,F.useLayoutEffect)(()=>{n.current===null?t(CF(e)):n.current!==e&&t(wF({prev:n.current,next:e})),n.current=e},[t,e]),(0,F.useLayoutEffect)(()=>()=>{n.current&&=(t(TF(n.current)),null)},[t]),null}),jF=[`points`];function MF(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function NF(e){for(var t=1;t{var s=NF(NF(NF({r:3},o),d),{},{index:r,cx:e.x??void 0,cy:e.y??void 0,dataKey:a,value:e.value,payload:e.payload,points:t});return F.createElement(BF,{key:`dot-${r}`,option:n,dotProps:s,className:i})}),p={};return s&&c!=null&&(p.clipPath=`url(#clipPath-${u?``:`dots-`}${c})`),F.createElement(Mj,{zIndex:l},F.createElement(es,LF({className:r},p),f))}function UF(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function WF(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),pm,mm],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),sI=()=>G(oI),cI=()=>G(IA);function lI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function uI(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:r,activeDot:i,dataKey:a,clipPath:o}=e;if(i===!1||t.x==null||t.y==null)return null;var s=uI(uI(uI({},{index:n,dataKey:a,cx:t.x,cy:t.y,r:4,fill:r??`none`,strokeWidth:2,stroke:`#fff`,payload:t.payload,value:t.value}),Ho(i)),dl(i)),c=(0,F.isValidElement)(i)?(0,F.cloneElement)(i,s):typeof i==`function`?i(s):F.createElement(bP,s);return F.createElement(es,{className:`recharts-active-dot`,clipPath:o},c)};function hI(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:i,clipPath:a,zIndex:o=kb.activeDot}=e,s=G(kA),c=cI();if(t==null||c==null)return null;var l=t.find(e=>c.includes(e.payload));return U(l)?null:F.createElement(Mj,{zIndex:o},F.createElement(mI,{point:l,childIndex:Number(s),mainColor:n,dataKey:i,activeDot:r,clipPath:a}))}var gI=(e,t,n)=>{var r=n??e;if(!U(r))return Uc(r,t,0)},_I=(e,t,n)=>{var r={},i=e.filter(ex),a=e.filter(e=>e.stackId==null),o=i.reduce((e,t)=>{var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},r),s=Object.entries(o).map(e=>{var[r,i]=e;return{stackId:r,dataKeys:i.map(e=>e.dataKey),barSize:gI(t,n,i[0]?.barSize)}}),c=a.map(e=>({stackId:void 0,dataKeys:[e.dataKey].filter(e=>e!=null),barSize:gI(t,n,e.barSize)}));return[...s,...c]};function vI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function yI(e){for(var t=1;te+(t.barSize||0),0);d+=(a-1)*o,d>=n&&(d-=(a-1)*o,o=0),d>=n&&u>0&&(l=!0,u*=.9,d=a*u);var f={offset:((n-d)/2>>0)-o,size:0};s=r.reduce((e,t)=>{var n={stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:f.offset+f.size+o,size:l?u:t.barSize??0}},r=[...e,n];return f=n.position,r},c)}else{var p=Uc(t,n,0,!0);n-2*p-(a-1)*o<=0&&(o=0);var m=(n-2*p-(a-1)*o)/a;m>1&&(m>>=0);var h=J(i)?Math.min(m,i):m;s=r.reduce((e,t,n)=>[...e,{stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:p+(m+o)*n+(m-h)/2,size:h}}],c)}return s}}var wI=(e,t,n,r,i,a,o)=>{var s=U(o)?t:o,c=CI(n,r,i===a?a:i,e,s);return i!==a&&c!=null&&(c=c.map(e=>yI(yI({},e),{},{position:yI(yI({},e.position),{},{offset:e.position.offset-i/2})}))),c},TI=(e,t)=>{var n=Qb(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var i=e[r];if(i){var{stackedData:a}=i;if(a)return a.find(e=>e.key===n)}}}},EI=(e,t)=>{if(!(e==null||t==null)){var n=e.find(e=>e.stackId===t.stackId&&t.dataKey!=null&&e.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function DI(e,t){return e&&typeof e==`object`&&`zIndex`in e&&typeof e.zIndex==`number`&&J(e.zIndex)?e.zIndex:t}var OI=e=>{var{chartData:t}=e,n=W(),r=Pm();return(0,F.useEffect)(()=>r?()=>{}:(n(eM(t)),()=>{n(eM(void 0))}),[t,n,r]),null},kI={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},AI=Gf({name:`brush`,initialState:kI,reducers:{setBrushSettings(e,t){return t.payload==null?kI:t.payload}}}),{setBrushSettings:jI}=AI.actions,MI=AI.reducer;function NI(e){return(e%180+180)%180}var PI=function(e){var{width:t,height:n}=e,r=NI(arguments.length>1&&arguments[1]!==void 0?arguments[1]:0)*Math.PI/180,i=Math.atan(n/t),a=r>i&&r{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=vf(e).dots.findIndex(e=>e===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=vf(e).areas.findIndex(e=>e===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(Z(t.payload))},removeLine:(e,t)=>{var n=vf(e).lines.findIndex(e=>e===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:II,removeDot:LI,addArea:RI,removeArea:zI,addLine:BI,removeLine:VI}=FI.actions,HI=FI.reducer,UI=(0,F.createContext)(void 0),WI=e=>{var{children:t}=e,[n]=(0,F.useState)(`${Hc(`recharts`)}-clip`),r=sI();if(r==null)return null;var{x:i,y:a,width:o,height:s}=r;return F.createElement(UI.Provider,{value:n},F.createElement(`defs`,null,F.createElement(`clipPath`,{id:n},F.createElement(`rect`,{x:i,y:a,height:s,width:o}))),t)};function GI(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;re*i)return!1;var a=n();return e*(t-e*a/2-r)>=0&&e*(t+e*a/2-i)<=0}function YI(e,t){return GI(e,t+1)}function XI(e,t,n,r,i){for(var a=(r||[]).slice(),{start:o,end:s}=t,c=0,l=1,u=o,d=function(){var t=r?.[c];if(t===void 0)return{v:GI(r,l)};var a=c,d,f=()=>(d===void 0&&(d=n(t,a)),d),p=t.coordinate,m=c===0||JI(e,p,f,u,s);m||(c=0,u=o,l+=1),m&&(u=p+e*(f()/2+i),c+=l)},f;l<=a.length;)if(f=d(),f)return f.v;return[]}function ZI(e,t,n,r,i){var a=(r||[]).slice().length;if(a===0)return[];for(var{start:o,end:s}=t,c=1;c<=a;c++){for(var l=(a-1)%c,u=o,d=!0,f=function(){var t=r[m];if(t==null)return 0;var a=m,o,c=()=>(o===void 0&&(o=n(t,a)),o),f=t.coordinate,p=m===l||JI(e,f,c,u,s);if(!p)return d=!1,1;p&&(u=f+e*(c()/2+i))},p,m=l;m(u===void 0&&(u=n(r,t)),u);if(t===o-1){var f=e*(l.coordinate+e*d()/2-c);a[t]=l=$I($I({},l),{},{tickCoord:f>0?l.coordinate-f*e:l.coordinate})}else a[t]=l=$I($I({},l),{},{tickCoord:l.coordinate});l.tickCoord!=null&&JI(e,l.tickCoord,d,s,c)&&(c=l.tickCoord-e*(d()/2+i),a[t]=$I($I({},l),{},{isShow:!0}))},u=o-1;u>=0;u--)if(l(u))continue;return a}function iL(e,t,n,r,i,a){var o=(r||[]).slice(),s=o.length,{start:c,end:l}=t;if(a){var u=r[s-1];if(u!=null){var d=n(u,s-1),f=e*(u.coordinate+e*d/2-l);o[s-1]=u=$I($I({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate}),u.tickCoord!=null&&JI(e,u.tickCoord,()=>d,c,l)&&(l=u.tickCoord-e*(d/2+i),o[s-1]=$I($I({},u),{},{isShow:!0}))}}for(var p=a?s-1:s,m=function(t){var r=o[t];if(r==null)return 1;var a=r,s,u=()=>(s===void 0&&(s=n(r,t)),s);if(t===0){var d=e*(a.coordinate-e*u()/2-c);o[t]=a=$I($I({},a),{},{tickCoord:d<0?a.coordinate-d*e:a.coordinate})}else o[t]=a=$I($I({},a),{},{tickCoord:a.coordinate});a.tickCoord!=null&&JI(e,a.tickCoord,u,c,l)&&(c=a.tickCoord+e*(u()/2+i),o[t]=$I($I({},a),{},{isShow:!0}))},h=0;h{var i=typeof l==`function`?l(e.value,r):e.value;return p===`width`?KI(HM(i,{fontSize:t,letterSpacing:n}),m,d):HM(i,{fontSize:t,letterSpacing:n})[p]},g=i[0],_=i[1],v=i.length>=2&&g!=null&&_!=null?Lc(_.coordinate-g.coordinate):1,y=qI(a,v,p);return c===`equidistantPreserveStart`?XI(v,y,h,i,o):c===`equidistantPreserveEnd`?ZI(v,y,h,i,o):(f=c===`preserveStart`||c===`preserveStartEnd`?iL(v,y,h,i,o,c===`preserveStartEnd`):rL(v,y,h,i,o),f.filter(e=>e.isShow))}var oL=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var s=n?n.getBoundingClientRect().width:0,c=i+a,l=o+c+s+(n?r:0);return Math.round(l)}return 0},sL=Gf({name:`renderedTicks`,initialState:{xAxis:{},yAxis:{}},reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:i}=t.payload;e[n][r]=Z(i)},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:cL,removeRenderedTicks:lL}=sL.actions,uL=sL.reducer,dL=[`axisLine`,`width`,`height`,`className`,`hide`,`ticks`,`axisType`,`axisId`];function fL(e,t){if(e==null)return{};var n,r,i=pL(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;rr==null||n==null?Jc:(i(cL({ticks:t.map(e=>({value:e.value,coordinate:e.coordinate,offset:e.offset,index:e.index})),axisId:r,axisType:n})),()=>{i(lL({axisId:r,axisType:n}))}),[i,t,r,n]),null}var DL=(0,F.forwardRef)((e,t)=>{var{ticks:n=[],tick:r,tickLine:i,stroke:a,tickFormatter:o,unit:s,padding:c,tickTextProps:l,orientation:u,mirror:d,x:f,y:p,width:m,height:h,tickSize:g,tickMargin:_,fontSize:v,letterSpacing:y,getTicksConfig:b,events:x,axisType:S,axisId:C}=e,w=aL(gL(gL({},b),{},{ticks:n}),v,y),T=Vo(b),E=Ho(r),D=gN(T.textAnchor)?T.textAnchor:CL(u,d),O=wL(u,d),k={};typeof i==`object`&&(k=i);var ee=gL(gL({},T),{},{fill:`none`},k),te=w.map(e=>gL({entry:e},SL(e,f,p,m,h,u,g,d,_))),A=te.map(e=>{var{entry:t,line:n}=e;return F.createElement(es,{className:`recharts-cartesian-axis-tick`,key:`tick-${t.value}-${t.coordinate}-${t.tickCoord}`},i&&F.createElement(`line`,mL({},ee,n,{className:P(`recharts-cartesian-axis-tick-line`,(0,Ic.default)(i,`className`))})))}),j=te.map((e,t)=>{var{entry:n,tick:i}=e,u=gL(gL({},gL(gL(gL(gL({verticalAnchor:O},T),{},{textAnchor:D,stroke:`none`,fill:a},i),{},{index:t,payload:n,visibleTicksCount:w.length,tickFormatter:o,padding:c},l),{},{angle:l?.angle??T.angle??0})),E);return F.createElement(es,mL({className:`recharts-cartesian-axis-tick-label`,key:`tick-label-${n.value}-${n.coordinate}-${n.tickCoord}`},pl(x,n,t)),r&&F.createElement(TL,{option:r,tickProps:u,value:`${typeof o==`function`?o(n.value,t):n.value}${s||``}`}))});return F.createElement(`g`,{className:`recharts-cartesian-axis-ticks recharts-${S}-ticks`},F.createElement(EL,{ticks:w,axisId:C,axisType:S}),j.length>0&&F.createElement(Mj,{zIndex:kb.label},F.createElement(`g`,{className:`recharts-cartesian-axis-tick-labels recharts-${S}-tick-labels`,ref:t},j)),A.length>0&&F.createElement(`g`,{className:`recharts-cartesian-axis-tick-lines recharts-${S}-tick-lines`},A))}),OL=(0,F.forwardRef)((e,t)=>{var{axisLine:n,width:r,height:i,className:a,hide:o,ticks:s,axisType:c,axisId:l}=e,u=fL(e,dL),[d,f]=(0,F.useState)(``),[p,m]=(0,F.useState)(``),h=(0,F.useRef)(null);(0,F.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>oL({ticks:h.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}));var g=(0,F.useCallback)(e=>{if(e){var t=e.getElementsByClassName(`recharts-cartesian-axis-tick-value`);h.current=t;var n=t[0];if(n){var r=window.getComputedStyle(n),i=r.fontSize,a=r.letterSpacing;(i!==d||a!==p)&&(f(i),m(a))}}},[d,p]);return o||r!=null&&r<=0||i!=null&&i<=0?null:F.createElement(Mj,{zIndex:e.zIndex},F.createElement(es,{className:P(`recharts-cartesian-axis`,a)},F.createElement(xL,{x:e.x,y:e.y,width:r,height:i,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:Vo(e)}),F.createElement(DL,{ref:g,axisType:c,events:u,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:p,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:l}),F.createElement(GN,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},F.createElement(aP,{label:e.label,labelRef:e.labelRef}),e.children)))}),kL=F.forwardRef((e,t)=>{var n=yl(e,bL);return F.createElement(OL,mL({},n,{ref:t}))});kL.displayName=`CartesianAxis`;var AL=[`x1`,`y1`,`x2`,`y2`,`key`],jL=[`offset`],ML=[`xAxisId`,`yAxisId`],NL=[`xAxisId`,`yAxisId`];function PL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function FL(e){for(var t=1;t{var{fill:t}=e;if(!t||t===`none`)return null;var{fillOpacity:n,x:r,y:i,width:a,height:o,ry:s}=e;return F.createElement(`rect`,{x:r,y:i,ry:s,width:a,height:o,stroke:`none`,fill:t,fillOpacity:n,className:`recharts-cartesian-grid-bg`})};function UL(e){var{option:t,lineItemProps:n}=e,r;if(F.isValidElement(t))r=F.cloneElement(t,n);else if(typeof t==`function`)r=t(n);else{var{x1:i,y1:a,x2:o,y2:s,key:c}=n,l=Vo(BL(n,AL))??{},{offset:u}=l,d=BL(l,jL);r=F.createElement(`line`,zL({},d,{x1:i,y1:a,x2:o,y2:s,fill:`none`,key:c}))}return r}function WL(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=BL(e,ML),c=i.map((e,i)=>{var a=FL(FL({},s),{},{x1:t,y1:e,x2:t+n,y2:e,key:`line-${i}`,index:i});return F.createElement(UL,{key:`line-${i}`,option:r,lineItemProps:a})});return F.createElement(`g`,{className:`recharts-cartesian-grid-horizontal`},c)}function GL(e){var{y:t,height:n,vertical:r=!0,verticalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=BL(e,NL),c=i.map((e,i)=>{var a=FL(FL({},s),{},{x1:e,y1:t,x2:e,y2:t+n,key:`line-${i}`,index:i});return F.createElement(UL,{option:r,lineItemProps:a,key:`line-${i}`})});return F.createElement(`g`,{className:`recharts-cartesian-grid-vertical`},c)}function KL(e){var{horizontalFill:t,fillOpacity:n,x:r,y:i,width:a,height:o,horizontalPoints:s,horizontal:c=!0}=e;if(!c||!t||!t.length||s==null)return null;var l=s.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,s)=>{var c=l[s+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=s%t.length;return F.createElement(`rect`,{key:`react-${s}`,y:e,x:r,height:u,width:a,stroke:`none`,fill:t[d],fillOpacity:n,className:`recharts-cartesian-grid-bg`})});return F.createElement(`g`,{className:`recharts-cartesian-gridstripes-horizontal`},u)}function qL(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:i,y:a,width:o,height:s,verticalPoints:c}=e;if(!t||!n||!n.length)return null;var l=c.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,t)=>{var c=l[t+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=t%n.length;return F.createElement(`rect`,{key:`react-${t}`,x:e,y:a,width:u,height:s,stroke:`none`,fill:n[d],fillOpacity:r,className:`recharts-cartesian-grid-bg`})});return F.createElement(`g`,{className:`recharts-cartesian-gridstripes-vertical`},u)}var JL=(e,t)=>{var{xAxis:n,width:r,height:i,offset:a}=e;return Jp(aL(FL(FL(FL({},bL),n),{},{ticks:Yp(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.left,a.left+a.width,t)},YL=(e,t)=>{var{yAxis:n,width:r,height:i,offset:a}=e;return Jp(aL(FL(FL(FL({},bL),n),{},{ticks:Yp(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.top,a.top+a.height,t)},XL={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:`#ccc`,fill:`none`,verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:kb.grid};function ZL(e){var t=mh(),n=hh(),r=ph(),i=FL(FL({},yl(e,XL)),{},{x:V(e.x)?e.x:r.left,y:V(e.y)?e.y:r.top,width:V(e.width)?e.width:r.width,height:V(e.height)?e.height:r.height}),{xAxisId:a,yAxisId:o,x:s,y:c,width:l,height:u,syncWithTicks:d,horizontalValues:f,verticalValues:p}=i,m=Pm(),h=G(e=>ik(e,`xAxis`,a,m)),g=G(e=>ik(e,`yAxis`,o,m));if(!Bp(l)||!Bp(u)||!V(s)||!V(c))return null;var _=i.verticalCoordinatesGenerator||JL,v=i.horizontalCoordinatesGenerator||YL,{horizontalPoints:y,verticalPoints:b}=i;if((!y||!y.length)&&typeof v==`function`){var x=f&&f.length,S=v({yAxis:g?FL(FL({},g),{},{ticks:x?f:g.ticks}):void 0,width:t??l,height:n??u,offset:r},x?!0:d);Hm(Array.isArray(S),`horizontalCoordinatesGenerator should return Array but instead it returned [${typeof S}]`),Array.isArray(S)&&(y=S)}if((!b||!b.length)&&typeof _==`function`){var C=p&&p.length,w=_({xAxis:h?FL(FL({},h),{},{ticks:C?p:h.ticks}):void 0,width:t??l,height:n??u,offset:r},C?!0:d);Hm(Array.isArray(w),`verticalCoordinatesGenerator should return Array but instead it returned [${typeof w}]`),Array.isArray(w)&&(b=w)}return F.createElement(Mj,{zIndex:i.zIndex},F.createElement(`g`,{className:`recharts-cartesian-grid`},F.createElement(HL,{fill:i.fill,fillOpacity:i.fillOpacity,x:i.x,y:i.y,width:i.width,height:i.height,ry:i.ry}),F.createElement(KL,zL({},i,{horizontalPoints:y})),F.createElement(qL,zL({},i,{verticalPoints:b})),F.createElement(WL,zL({},i,{offset:r,horizontalPoints:y,xAxis:h,yAxis:g})),F.createElement(GL,zL({},i,{offset:r,verticalPoints:b,xAxis:h,yAxis:g}))))}ZL.displayName=`CartesianGrid`;var QL=Gf({name:`errorBars`,initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:i}=t.payload;e[n]&&(e[n]=e[n].map(e=>e.dataKey===r.dataKey&&e.direction===r.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(e=>e.dataKey!==r.dataKey||e.direction!==r.direction))}}}),{addErrorBar:$L,replaceErrorBar:eR,removeErrorBar:tR}=QL.actions,nR=QL.reducer,rR=[`children`];function iR(e,t){if(e==null)return{};var n,r,i=aR(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r({x:0,y:0,value:0}),errorBarOffset:0});function sR(e){var{children:t}=e,n=iR(e,rR);return F.createElement(oR.Provider,{value:n},t)}function cR(e,t){var n=G(t=>aD(t,e)),r=G(e=>cD(e,t)),i=n?.allowDataOverflow??rD.allowDataOverflow,a=r?.allowDataOverflow??oD.allowDataOverflow;return{needClip:i||a,needClipX:i,needClipY:a}}function lR(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,i=sI(),{needClipX:a,needClipY:o,needClip:s}=cR(t,n);if(!s||!i)return null;var{x:c,y:l,width:u,height:d}=i;return F.createElement(`clipPath`,{id:`clipPath-${r}`},F.createElement(`rect`,{x:a?c:c-u/2,y:o?l:l-d/2,width:a?u:u*2,height:o?d:d*2}))}var uR=(e,t,n,r)=>sk(e,`xAxis`,t,r),dR=(e,t,n,r)=>ok(e,`xAxis`,t,r),fR=(e,t,n,r)=>sk(e,`yAxis`,n,r),pR=(e,t,n,r)=>ok(e,`yAxis`,n,r),mR=K([X,uR,fR,dR,pR],(e,t,n,r,i)=>qp(e,`xAxis`)?cm(t,r,!1):cm(n,i,!1)),hR=(e,t,n,r,i)=>i;function gR(e){return e.type===`line`}var _R=K([X,uR,fR,dR,pR,K([gD,hR],(e,t)=>e.filter(gR).find(e=>e.id===t)),mR,tb],(e,t,n,r,i,a,o,s)=>{var{chartData:c,dataStartIndex:l,dataEndIndex:u}=s;if(!(a==null||t==null||n==null||r==null||i==null||r.length===0||i.length===0||o==null||e!==`horizontal`&&e!==`vertical`)){var{dataKey:d,data:f}=a,p=f!=null&&f.length>0?f:c?.slice(l,u+1);if(p!=null)return GR({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:p})}});function vR(e){var t=Ho(e),n=3,r=2;if(t!=null){var{r:i,strokeWidth:a}=t,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=n),(Number.isNaN(s)||s<0)&&(s=r),{r:o,strokeWidth:s}}return{r:n,strokeWidth:r}}var yR=[`id`],bR=[`type`,`layout`,`connectNulls`,`needClip`,`shape`],xR=[`activeDot`,`animateNewValues`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`hide`,`isAnimationActive`,`label`,`legendType`,`xAxisId`,`yAxisId`,`id`];function SR(){return SR=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,stroke:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:um(n,t),payload:e}]},jR=F.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:i,fill:a,name:o,hide:s,unit:c,tooltipType:l,id:u}=e,d={dataDefinedOnItem:n,getPosition:Jc,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:um(o,t),hide:s,type:l,color:r,unit:c,graphicalItemId:u}};return F.createElement(gF,{tooltipEntrySettings:d})}),MR=(e,t)=>`${t}px ${e}px`;function NR(e,t){for(var n=e.length%2==0?e:[...e,0],r=[],i=0;i{var r=n.reduce((e,t)=>e+t,0);if(!r)return MR(t,e);for(var i=Math.floor(e/r),a=e%r,o=[],s=0,c=0;sa){o=[...n.slice(0,s),a-c];break}}var d=o.length%2==0?[0,t]:[t];return[...NR(n,i),...o,...d].map(e=>`${e}px`).join(`, `)};function FR(e){var{clipPathId:t,points:n,props:r}=e,{dot:i,dataKey:a,needClip:o}=r,{id:s}=r,c=Vo(OR(r,yR));return F.createElement(HF,{points:n,dot:i,className:`recharts-line-dots`,dotClassName:`recharts-line-dot`,dataKey:a,baseProps:c,needClip:o,clipPathId:t})}function IR(e){var{showLabels:t,children:n,points:r}=e,i=(0,F.useMemo)(()=>r?.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return wR(wR({},t),{},{value:e.value,payload:e.payload,viewBox:t,parentViewBox:void 0,fill:void 0})}),[r]);return F.createElement(pP,{value:t?i:void 0},n)}function LR(e){var{clipPathId:t,pathRef:n,points:r,strokeDasharray:i,props:a}=e,{type:o,layout:s,connectNulls:c,needClip:l,shape:u}=a,d=wR(wR({},Uo(OR(a,bR))),{},{fill:`none`,className:`recharts-line-curve`,clipPath:l?`url(#clipPath-${t})`:void 0,points:r,type:o,layout:s,connectNulls:c,strokeDasharray:i??a.strokeDasharray});return F.createElement(F.Fragment,null,r?.length>1&&F.createElement(fF,SR({shapeType:`curve`,option:u},d,{pathRef:n})),F.createElement(FR,{points:r,clipPathId:t,props:a}))}function RR(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch{return 0}}function zR(e){var{clipPathId:t,props:n,pathRef:r,previousPointsRef:i,longestAnimatedLengthRef:a}=e,{points:o,strokeDasharray:s,isAnimationActive:c,animationBegin:l,animationDuration:u,animationEasing:d,animateNewValues:f,width:p,height:m,onAnimationEnd:h,onAnimationStart:g}=n,_=i.current,v=qv(o,`recharts-line-`),y=(0,F.useRef)(v),[b,x]=(0,F.useState)(!1),S=!b,C=(0,F.useCallback)(()=>{typeof h==`function`&&h(),x(!1)},[h]),w=(0,F.useCallback)(()=>{typeof g==`function`&&g(),x(!0)},[g]),T=RR(r.current),E=(0,F.useRef)(0);y.current!==v&&(E.current=a.current,y.current=v);var D=E.current;return F.createElement(IR,{points:o,showLabels:S},n.children,F.createElement(Kv,{animationId:v,begin:l,duration:u,isActive:c,easing:d,onAnimationEnd:C,onAnimationStart:w,key:v},e=>{var l=H(D,T+D,e),u=Math.min(l,T),d=c?s?PR(u,T,`${s}`.split(/[,\s]+/gim).map(e=>parseFloat(e))):MR(T,u):s==null?void 0:String(s);if(e>0&&T>0&&(i.current=o,a.current=Math.max(a.current,u)),_){var h=_.length/o.length,g=e===1?o:o.map((t,n)=>{var r=Math.floor(n*h);if(_[r]){var i=_[r];return wR(wR({},t),{},{x:H(i.x,t.x,e),y:H(i.y,t.y,e)})}return f?wR(wR({},t),{},{x:H(p*2,t.x,e),y:H(m/2,t.y,e)}):wR(wR({},t),{},{x:t.x,y:t.y})});return i.current=g,F.createElement(LR,{props:n,points:g,clipPathId:t,pathRef:r,strokeDasharray:d})}return F.createElement(LR,{props:n,points:o,clipPathId:t,pathRef:r,strokeDasharray:d})}),F.createElement(vP,{label:n.label}))}function BR(e){var{clipPathId:t,props:n}=e,r=(0,F.useRef)(null),i=(0,F.useRef)(0),a=(0,F.useRef)(null);return F.createElement(zR,{props:n,clipPathId:t,previousPointsRef:r,longestAnimatedLengthRef:i,pathRef:a})}var VR=(e,t)=>({x:e.x??void 0,y:e.y??void 0,value:e.value,errorVal:Y(e.payload,t)}),HR=class extends F.Component{render(){var{hide:e,dot:t,points:n,className:r,xAxisId:i,yAxisId:a,top:o,left:s,width:c,height:l,id:u,needClip:d,zIndex:f}=this.props;if(e)return null;var p=P(`recharts-line`,r),m=u,{r:h,strokeWidth:g}=vR(t),_=FP(t),v=h*2+g,y=d?`url(#clipPath-${_?``:`dots-`}${m})`:void 0;return F.createElement(Mj,{zIndex:f},F.createElement(es,{className:p},d&&F.createElement(`defs`,null,F.createElement(lR,{clipPathId:m,xAxisId:i,yAxisId:a}),!_&&F.createElement(`clipPath`,{id:`clipPath-dots-${m}`},F.createElement(`rect`,{x:s-v/2,y:o-v/2,width:c+v,height:l+v}))),F.createElement(sR,{xAxisId:i,yAxisId:a,data:n,dataPointFormatter:VR,errorBarOffset:0},F.createElement(BR,{props:this.props,clipPathId:m}))),F.createElement(hI,{activeDot:this.props.activeDot,points:n,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:y}))}},UR={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,connectNulls:!1,dot:!0,fill:`#fff`,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:kb.line,type:`linear`};function WR(e){var t=yl(e,UR),{activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,connectNulls:s,dot:c,hide:l,isAnimationActive:u,label:d,legendType:f,xAxisId:p,yAxisId:m,id:h}=t,g=OR(t,xR),{needClip:_}=cR(p,m),v=sI(),y=_h(),b=Pm(),x=G(e=>_R(e,p,m,b,h));if(y!==`horizontal`&&y!==`vertical`||x==null||v==null)return null;var{height:S,width:C,x:w,y:T}=v;return F.createElement(HR,SR({},g,{id:h,connectNulls:s,dot:c,activeDot:n,animateNewValues:r,animationBegin:i,animationDuration:a,animationEasing:o,isAnimationActive:u,hide:l,label:d,legendType:f,xAxisId:p,yAxisId:m,points:x,layout:y,height:S,width:C,left:w,top:T,needClip:_}))}function GR(e){var{layout:t,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,dataKey:o,bandSize:s,displayedData:c}=e;return c.map((e,c)=>{var l=Y(e,o);if(t===`horizontal`)return{x:em({axis:n,ticks:i,bandSize:s,entry:e,index:c}),y:(U(l)?null:r.scale.map(l))??null,value:l,payload:e};var u=U(l)?null:n.scale.map(l),d=em({axis:r,ticks:a,bandSize:s,entry:e,index:c});return u==null||d==null?null:{x:u,y:d,value:l,payload:e}}).filter(Boolean)}function KR(e){var t=yl(e,UR),n=Pm();return F.createElement(xF,{id:t.id,type:`line`},e=>F.createElement(F.Fragment,null,F.createElement(_F,{legendPayload:AR(t)}),F.createElement(jR,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),F.createElement(AF,{type:`line`,id:e,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:n}),F.createElement(WR,SR({},t,{id:e}))))}var qR=F.memo(KR,Hg);qR.displayName=`Line`;function JR(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.xAxisId??0}function YR(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.yAxisId??0}var XR=(e,t,n)=>sk(e,`xAxis`,JR(e,t),n),ZR=(e,t,n)=>ok(e,`xAxis`,JR(e,t),n),QR=(e,t,n)=>sk(e,`yAxis`,YR(e,t),n),$R=(e,t,n)=>ok(e,`yAxis`,YR(e,t),n),ez=K([X,XR,QR,ZR,$R],(e,t,n,r,i)=>qp(e,`xAxis`)?cm(t,r,!1):cm(n,i,!1)),tz=K([gD,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`area`).find(e=>e.id===t)),nz=e=>qp(X(e),`xAxis`)?`yAxis`:`xAxis`,rz=(e,t)=>nz(e)===`yAxis`?YR(e,t):JR(e,t),iz=K([X,XR,QR,ZR,$R,K([tz,(e,t,n)=>HD(e,nz(e),rz(e,t),n)],(e,t)=>{if(!(e==null||t==null)){var{stackId:n}=e,r=Qb(e);if(!(n==null||r==null)){var i=(t[n]?.stackedData)?.find(e=>e.key===r);if(i!=null)return i.map(e=>[e[0],e[1]])}}}),nb,ez,tz,Ob],(e,t,n,r,i,a,o,s,c,l)=>{var{chartData:u,dataStartIndex:d,dataEndIndex:f}=o;if(!(c==null||e!==`horizontal`&&e!==`vertical`||t==null||n==null||r==null||i==null||r.length===0||i.length===0||s==null)){var{data:p}=c,m=p&&p.length>0?p:u?.slice(d,f+1);if(m!=null)return Az({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataStartIndex:d,areaSettings:c,stackedData:a,displayedData:m,chartBaseValue:l,bandSize:s})}}),az=[`id`],oz=[`activeDot`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`fill`,`fillOpacity`,`hide`,`isAnimationActive`,`legendType`,`stroke`,`xAxisId`,`yAxisId`];function sz(){return sz=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,stroke:r,fill:i,legendType:a,hide:o}=e;return[{inactive:o,dataKey:t,type:a,color:hz(r,i),value:um(n,t),payload:e}]},_z=F.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:i,fill:a,name:o,hide:s,unit:c,tooltipType:l,id:u}=e,d={dataDefinedOnItem:n,getPosition:Jc,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:um(o,t),hide:s,type:l,color:hz(r,a),unit:c,graphicalItemId:u}};return F.createElement(gF,{tooltipEntrySettings:d})});function vz(e){var{clipPathId:t,points:n,props:r}=e,{needClip:i,dot:a,dataKey:o}=r,s=Vo(r);return F.createElement(HF,{points:n,dot:a,className:`recharts-area-dots`,dotClassName:`recharts-area-dot`,dataKey:o,baseProps:s,needClip:i,clipPathId:t})}function yz(e){var{showLabels:t,children:n,points:r}=e,i=r.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return dz(dz({},t),{},{value:e.value,payload:e.payload,parentViewBox:void 0,viewBox:t,fill:void 0})});return F.createElement(pP,{value:t?i:void 0},n)}function bz(e){var{points:t,baseLine:n,needClip:r,clipPathId:i,props:a}=e,{layout:o,type:s,stroke:c,connectNulls:l,isRange:u}=a,{id:d}=a,f=cz(a,az),p=Vo(f),m=Uo(f);return F.createElement(F.Fragment,null,t?.length>1&&F.createElement(es,{clipPath:r?`url(#clipPath-${i})`:void 0},F.createElement(Y_,sz({},m,{id:d,points:t,connectNulls:l,type:s,baseLine:n,layout:o,stroke:`none`,className:`recharts-area-area`})),c!==`none`&&F.createElement(Y_,sz({},p,{className:`recharts-area-curve`,layout:o,type:s,connectNulls:l,fill:`none`,points:t})),c!==`none`&&u&&Array.isArray(n)&&F.createElement(Y_,sz({},p,{className:`recharts-area-curve`,layout:o,type:s,connectNulls:l,fill:`none`,points:n}))),F.createElement(vz,{points:t,props:f,clipPathId:i}))}function xz(e){var{alpha:t,baseLine:n,points:r,strokeWidth:i}=e,a=r[0]?.y,o=r[r.length-1]?.y;if(!J(a)||!J(o))return null;var s=t*Math.abs(a-o),c=Math.max(...r.map(e=>e.x||0));return V(n)?c=Math.max(n,c):n&&Array.isArray(n)&&n.length&&(c=Math.max(...n.map(e=>e.x||0),c)),V(c)?F.createElement(`rect`,{x:0,y:ae.y||0));return V(n)?c=Math.max(n,c):n&&Array.isArray(n)&&n.length&&(c=Math.max(...n.map(e=>e.y||0),c)),V(c)?F.createElement(`rect`,{x:a({points:o,baseLine:s}),[o,s]),`recharts-area-`),h=vh(),[g,_]=(0,F.useState)(!1),v=!g,y=(0,F.useCallback)(()=>{typeof p==`function`&&p(),_(!1)},[p]),b=(0,F.useCallback)(()=>{typeof f==`function`&&f(),_(!0)},[f]);if(h==null)return null;var x=i.current,S=a.current;return F.createElement(yz,{showLabels:v,points:o},r.children,F.createElement(Kv,{animationId:m,begin:l,duration:u,isActive:c,easing:d,onAnimationEnd:y,onAnimationStart:b,key:m},e=>{if(x){var l=x.length/o.length,u=e===1?o:o.map((t,n)=>{var r=Math.floor(n*l);if(x[r]){var i=x[r];return dz(dz({},t),{},{x:H(i.x,t.x,e),y:H(i.y,t.y,e)})}return t}),d=V(s)?H(S,s,e):U(s)||Rc(s)?H(S,0,e):s.map((t,n)=>{var r=Math.floor(n*l);if(Array.isArray(S)&&S[r]){var i=S[r];return dz(dz({},t),{},{x:H(i.x,t.x,e),y:H(i.y,t.y,e)})}return t});return e>0&&(i.current=u,a.current=d),F.createElement(bz,{points:u,baseLine:d,needClip:t,clipPathId:n,props:r})}return e>0&&(i.current=o,a.current=s),F.createElement(es,null,c&&F.createElement(`defs`,null,F.createElement(`clipPath`,{id:`animationClipPath-${n}`},F.createElement(Cz,{alpha:e,points:o,baseLine:s,layout:h,strokeWidth:r.strokeWidth}))),F.createElement(es,{clipPath:`url(#animationClipPath-${n})`},F.createElement(bz,{points:o,baseLine:s,needClip:t,clipPathId:n,props:r})))}),F.createElement(vP,{label:r.label}))}function Tz(e){var{needClip:t,clipPathId:n,props:r}=e,i=(0,F.useRef)(null),a=(0,F.useRef)();return F.createElement(wz,{needClip:t,clipPathId:n,props:r,previousPointsRef:i,previousBaselineRef:a})}var Ez=class extends F.PureComponent{render(){var{hide:e,dot:t,points:n,className:r,top:i,left:a,needClip:o,xAxisId:s,yAxisId:c,width:l,height:u,id:d,baseLine:f,zIndex:p}=this.props;if(e)return null;var m=P(`recharts-area`,r),h=d,{r:g,strokeWidth:_}=vR(t),v=FP(t),y=g*2+_,b=o?`url(#clipPath-${v?``:`dots-`}${h})`:void 0;return F.createElement(Mj,{zIndex:p},F.createElement(es,{className:m},o&&F.createElement(`defs`,null,F.createElement(lR,{clipPathId:h,xAxisId:s,yAxisId:c}),!v&&F.createElement(`clipPath`,{id:`clipPath-dots-${h}`},F.createElement(`rect`,{x:a-y/2,y:i-y/2,width:l+y,height:u+y}))),F.createElement(Tz,{needClip:o,clipPathId:h,props:this.props})),F.createElement(hI,{points:n,mainColor:hz(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:b}),this.props.isRange&&Array.isArray(f)&&F.createElement(hI,{points:f,mainColor:hz(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:b}))}},Dz={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,connectNulls:!1,dot:!1,fill:`#3182bd`,fillOpacity:.6,hide:!1,isAnimationActive:`auto`,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,type:`linear`,label:!1,xAxisId:0,yAxisId:0,zIndex:kb.area};function Oz(e){var{activeDot:t,animationBegin:n,animationDuration:r,animationEasing:i,connectNulls:a,dot:o,fill:s,fillOpacity:c,hide:l,isAnimationActive:u,legendType:d,stroke:f,xAxisId:p,yAxisId:m}=e,h=cz(e,oz),g=_h(),_=$A(),{needClip:v}=cR(p,m),y=Pm(),{points:b,isRange:x,baseLine:S}=G(t=>iz(t,e.id,y))??{},C=sI();if(g!==`horizontal`&&g!==`vertical`||C==null||_!==`AreaChart`&&_!==`ComposedChart`)return null;var{height:w,width:T,x:E,y:D}=C;return!b||!b.length?null:F.createElement(Ez,sz({},h,{activeDot:t,animationBegin:n,animationDuration:r,animationEasing:i,baseLine:S,connectNulls:a,dot:o,fill:s,fillOpacity:c,height:w,hide:l,layout:g,isAnimationActive:u,isRange:x,legendType:d,needClip:v,points:b,stroke:f,width:T,left:E,top:D,xAxisId:p,yAxisId:m}))}var kz=(e,t,n,r,i)=>{var a=n??t;if(V(a))return a;var o=e===`horizontal`?i:r,s=o.scale.domain();if(o.type===`number`){var c=Math.max(s[0],s[1]),l=Math.min(s[0],s[1]);return a===`dataMin`?l:a===`dataMax`||c<0?c:Math.max(Math.min(s[0],s[1]),0)}return a===`dataMin`?s[0]:a===`dataMax`?s[1]:s[0]};function Az(e){var{areaSettings:{connectNulls:t,baseValue:n,dataKey:r},stackedData:i,layout:a,chartBaseValue:o,xAxis:s,yAxis:c,displayedData:l,dataStartIndex:u,xAxisTicks:d,yAxisTicks:f,bandSize:p}=e,m=i&&i.length,h=kz(a,o,n,s,c),g=a===`horizontal`,_=!1,v=l.map((e,n)=>{var a;if(m)a=i[u+n];else{var o=Y(e,r);Array.isArray(o)?(a=o,_=!0):a=[h,o]}var l=a?.[1]??null,v=l==null||m&&!t&&Y(e,r)==null;return g?{x:em({axis:s,ticks:d,bandSize:p,entry:e,index:n}),y:v?null:c.scale.map(l)??null,value:a,payload:e}:{x:v?null:s.scale.map(l)??null,y:em({axis:c,ticks:f,bandSize:p,entry:e,index:n}),value:a,payload:e}});return{points:v,baseLine:(m||_?v.map(e=>{var t=Array.isArray(e.value)?e.value[0]:null;return g?{x:e.x,y:t!=null&&e.y!=null?c.scale.map(t)??null:null,payload:e.payload}:{x:t==null?null:s.scale.map(t)??null,y:e.y,payload:e.payload}}):g?c.scale.map(h):s.scale.map(h))??0,isRange:_}}function jz(e){var t=yl(e,Dz),n=Pm();return F.createElement(xF,{id:t.id,type:`area`},e=>F.createElement(F.Fragment,null,F.createElement(_F,{legendPayload:gz(t)}),F.createElement(_z,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),F.createElement(AF,{type:`area`,id:e,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:$p(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),F.createElement(Oz,sz({},t,{id:e}))))}var Mz=F.memo(jz,Hg);Mz.displayName=`Area`;var Nz=!0,Pz=`Invariant failed`;function Fz(e,t){if(!e){if(Nz)throw Error(Pz);var n=typeof t==`function`?t():t,r=n?`${Pz}: ${n}`:Pz;throw Error(r)}}function Iz(){return Iz=Object.assign?Object.assign.bind():function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:0;return(n,r)=>{if(V(e))return e;var i=V(n)||U(n);return i?e(n,r):(!i&&Fz(!1,`minPointSize callback function received a value with type of ${typeof n}. Currently only numbers or null/undefined are supported.`),t)}},zz=(e,t,n)=>n,Bz=K([gD,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`bar`).find(e=>e.id===t)),Vz=K([Bz],e=>e?.maxBarSize),Hz=(e,t,n,r)=>r,Uz=K([X,gD,JR,YR,zz],(e,t,n,r,i)=>t.filter(t=>e===`horizontal`?t.xAxisId===n:t.yAxisId===r).filter(e=>e.isPanorama===i).filter(e=>e.hide===!1).filter(e=>e.type===`bar`)),Wz=(e,t,n)=>{var r=X(e),i=JR(e,t),a=YR(e,t);if(!(i==null||a==null))return r===`horizontal`?HD(e,`yAxis`,a,n):HD(e,`xAxis`,i,n)},Gz=K([Uz,xb,(e,t)=>{var n=X(e),r=JR(e,t),i=YR(e,t);if(!(r==null||i==null))return n===`horizontal`?tk(e,`xAxis`,r):tk(e,`yAxis`,i)}],_I),Kz=(e,t,n)=>{var r=Bz(e,t);if(r==null)return 0;var i=JR(e,t),a=YR(e,t);if(i==null||a==null)return 0;var o=X(e),s=vb(e),{maxBarSize:c}=r,l=U(c)?s:c,u,d;return o===`horizontal`?(u=sk(e,`xAxis`,i,n),d=ok(e,`xAxis`,i,n)):(u=sk(e,`yAxis`,a,n),d=ok(e,`yAxis`,a,n)),cm(u,d,!0)??l??0},qz=(e,t,n)=>{var r=X(e),i=JR(e,t),a=YR(e,t);if(!(i==null||a==null)){var o,s;return r===`horizontal`?(o=sk(e,`xAxis`,i,n),s=ok(e,`xAxis`,i,n)):(o=sk(e,`yAxis`,a,n),s=ok(e,`yAxis`,a,n)),cm(o,s)}},Jz=K([Am,Mm,(e,t,n)=>{var r=JR(e,t);if(r!=null)return sk(e,`xAxis`,r,n)},(e,t,n)=>{var r=YR(e,t);if(r!=null)return sk(e,`yAxis`,r,n)},(e,t,n)=>{var r=JR(e,t);if(r!=null)return ok(e,`xAxis`,r,n)},(e,t,n)=>{var r=YR(e,t);if(r!=null)return ok(e,`yAxis`,r,n)},K([K([Gz,vb,yb,bb,Kz,qz,Vz],wI),Bz],EI),X,nb,qz,K([Wz,Bz],TI),Bz,Hz],(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{var{chartData:p,dataStartIndex:m,dataEndIndex:h}=c;if(!(d==null||o==null||t==null||s!==`horizontal`&&s!==`vertical`||n==null||r==null||i==null||a==null||l==null)){var{data:g}=d,_=g!=null&&g.length>0?g:p?.slice(m,h+1);if(_!=null)return AB({layout:s,barSettings:d,pos:o,parentViewBox:t,bandSize:l,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,stackedData:u,displayedData:_,offset:e,cells:f,dataStartIndex:m})}}),Yz=[`index`];function Xz(){return Xz=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,F.useContext)($z);if(t!=null)return t.stackId;if(e!=null)return $p(e)},tB=(e,t)=>`recharts-bar-stack-clip-path-${e}-${t}`,nB=e=>{var t=(0,F.useContext)($z);if(t!=null){var{stackId:n}=t;return`url(#${tB(n,e)})`}},rB=e=>{var{index:t}=e,n=Zz(e,Yz),r=nB(t);return F.createElement(es,Xz({className:`recharts-bar-stack-layer`,clipPath:r},n))},iB=[`onMouseEnter`,`onMouseLeave`,`onClick`],aB=[`value`,`background`,`tooltipPosition`],oB=[`id`],sB=[`onMouseEnter`,`onClick`,`onMouseLeave`];function cB(){return cB=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,fill:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:um(n,t),payload:e}]},_B=F.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:i,name:a,hide:o,unit:s,tooltipType:c,id:l}=e,u={dataDefinedOnItem:void 0,getPosition:Jc,settings:{stroke:n,strokeWidth:r,fill:i,dataKey:t,nameKey:void 0,name:um(a,t),hide:o,type:c,color:i,unit:s,graphicalItemId:l}};return F.createElement(gF,{tooltipEntrySettings:u})});function vB(e){var t=G(kA),{data:n,dataKey:r,background:i,allOtherBarProps:a}=e,{onMouseEnter:o,onMouseLeave:s,onClick:c}=a,l=mB(a,iB),u=pF(o,r,a.id),d=mF(s),f=hF(c,r,a.id);if(!i||n==null)return null;var p=Ho(i);return F.createElement(Mj,{zIndex:DI(i,kb.barBackground)},n.map((e,n)=>{var{value:a,background:o,tooltipPosition:s}=e,c=mB(e,aB);if(!o)return null;var m=u(e,n),h=d(e,n),g=f(e,n),_=uB(uB(uB(uB(uB({option:i,isActive:String(n)===t},c),{},{fill:`#eee`},o),p),pl(l,e,n)),{},{onMouseEnter:m,onMouseLeave:h,onClick:g,dataKey:r,index:n,className:`recharts-bar-background-rectangle`});return F.createElement(Lz,cB({key:`background-bar-${n}`},_))}))}function yB(e){var{showLabels:t,children:n,rects:r}=e,i=r?.map(e=>{var t={x:e.x,y:e.y,width:e.width,lowerWidth:e.width,upperWidth:e.width,height:e.height};return uB(uB({},t),{},{value:e.value,payload:e.payload,parentViewBox:e.parentViewBox,viewBox:t,fill:e.fill})});return F.createElement(pP,{value:t?i:void 0},n)}function bB(e){var{shape:t,activeBar:n,baseProps:r,entry:i,index:a,dataKey:o}=e,s=G(kA),c=G(jA),l=n&&String(i.originalDataIndex)===s&&(c==null||o===c),[u,d]=(0,F.useState)(!1),[f,p]=(0,F.useState)(!1);(0,F.useEffect)(()=>{var e;return l?(d(!0),e=requestAnimationFrame(()=>{p(!0)})):p(!1),()=>{cancelAnimationFrame(e)}},[l]);var m=(0,F.useCallback)(()=>{l||d(!1)},[l]),h=l&&f,g=l||u,_=l?n===!0?t:n:t,v=F.createElement(Lz,cB({},r,{name:String(r.name)},i,{isActive:h,option:_,index:a,dataKey:o,onTransitionEnd:m}));return g?F.createElement(Mj,{zIndex:kb.activeBar},F.createElement(rB,{index:i.originalDataIndex},v)):v}function xB(e){var{shape:t,baseProps:n,entry:r,index:i,dataKey:a}=e;return F.createElement(Lz,cB({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:i,dataKey:a}))}function SB(e){var{data:t,props:n}=e,r=Vo(n)??{},{id:i}=r,a=mB(r,oB),{shape:o,dataKey:s,activeBar:c}=n,{onMouseEnter:l,onClick:u,onMouseLeave:d}=n,f=mB(n,sB),p=pF(l,s,i),m=mF(d),h=hF(u,s,i);return t?F.createElement(F.Fragment,null,t.map((e,t)=>F.createElement(rB,cB({index:e.originalDataIndex,key:`rectangle-${e?.x}-${e?.y}-${e?.value}-${t}`,className:`recharts-bar-rectangle`},pl(f,e,t),{onMouseEnter:p(e,t),onMouseLeave:m(e,t),onClick:h(e,t)}),c?F.createElement(bB,{shape:o,activeBar:c,baseProps:a,entry:e,index:t,dataKey:s}):F.createElement(xB,{shape:o,baseProps:a,entry:e,index:t,dataKey:s})))):null}function CB(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,onAnimationEnd:l,onAnimationStart:u}=t,d=n.current,f=qv(t,`recharts-bar-`),[p,m]=(0,F.useState)(!1),h=!p,g=(0,F.useCallback)(()=>{typeof l==`function`&&l(),m(!1)},[l]),_=(0,F.useCallback)(()=>{typeof u==`function`&&u(),m(!0)},[u]);return F.createElement(yB,{showLabels:h,rects:r},F.createElement(Kv,{animationId:f,begin:o,duration:s,isActive:a,easing:c,onAnimationEnd:g,onAnimationStart:_,key:f},e=>{var a=e===1?r:r?.map((t,n)=>{var r=d&&d[n];if(r)return uB(uB({},t),{},{x:H(r.x,t.x,e),y:H(r.y,t.y,e),width:H(r.width,t.width,e),height:H(r.height,t.height,e)});if(i===`horizontal`){var a=H(0,t.height,e),o=H(t.stackedBarStart,t.y,e);return uB(uB({},t),{},{y:o,height:a})}var s=H(0,t.width,e),c=H(t.stackedBarStart,t.x,e);return uB(uB({},t),{},{width:s,x:c})});return e>0&&(n.current=a??null),a==null?null:F.createElement(es,null,F.createElement(SB,{props:t,data:a}))}),F.createElement(vP,{label:t.label}),t.children)}function wB(e){var t=(0,F.useRef)(null);return F.createElement(CB,{previousRectanglesRef:t,props:e})}var TB=0,EB=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:Y(e,t)}},DB=class extends F.PureComponent{render(){var{hide:e,data:t,dataKey:n,className:r,xAxisId:i,yAxisId:a,needClip:o,background:s,id:c}=this.props;if(e||t==null)return null;var l=P(`recharts-bar`,r),u=c;return F.createElement(es,{className:l,id:c},o&&F.createElement(`defs`,null,F.createElement(lR,{clipPathId:u,xAxisId:i,yAxisId:a})),F.createElement(es,{className:`recharts-bar-rectangles`,clipPath:o?`url(#clipPath-${u})`:void 0},F.createElement(vB,{data:t,dataKey:n,background:s,allOtherBarProps:this.props}),F.createElement(wB,this.props)))}},OB={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:`ease`,background:!1,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`rect`,minPointSize:TB,xAxisId:0,yAxisId:0,zIndex:kb.bar};function kB(e){var{xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u}=e,{needClip:d}=cR(t,n),f=_h(),p=Pm(),m=PP(e.children,EM),h=G(t=>Jz(t,e.id,p,m));if(f!==`vertical`&&f!==`horizontal`)return null;var g,_=h?.[0];return g=_==null||_.height==null||_.width==null?0:f===`vertical`?_.height/2:_.width/2,F.createElement(sR,{xAxisId:t,yAxisId:n,data:h,dataPointFormatter:EB,errorBarOffset:g},F.createElement(DB,cB({},e,{layout:f,needClip:d,data:h,xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u})))}function AB(e){var{layout:t,barSettings:{dataKey:n,minPointSize:r,hasCustomShape:i},pos:a,bandSize:o,xAxis:s,yAxis:c,xAxisTicks:l,yAxisTicks:u,stackedData:d,displayedData:f,offset:p,cells:m,parentViewBox:h,dataStartIndex:g}=e,_=t===`horizontal`?c:s,v=d?_.scale.domain():null,y=nm({numericAxis:_}),b=_.scale.map(y);return f.map((e,f)=>{var _,x,S,C,w,T;if(d){var E=d[f+g];if(E==null)return null;_=Xp(E,v)}else _=Y(e,n),Array.isArray(_)||(_=[y,_]);var D=Rz(r,TB)(_[1],f);if(t===`horizontal`){var O=c.scale.map(_[0]),k=c.scale.map(_[1]);if(O==null||k==null)return null;x=tm({axis:s,ticks:l,bandSize:o,offset:a.offset,entry:e,index:f}),S=k??O??void 0,C=a.size;var ee=O-k;if(w=Rc(ee)?0:ee,T={x,y:p.top,width:C,height:p.height},Math.abs(D)>0&&Math.abs(w)0&&Math.abs(C)F.createElement(F.Fragment,null,F.createElement(_F,{legendPayload:gB(t)}),F.createElement(_B,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),F.createElement(AF,{type:`bar`,id:e,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),F.createElement(Mj,{zIndex:t.zIndex},F.createElement(kB,cB({},t,{id:e})))))}var MB=F.memo(jB,Hg);MB.displayName=`Bar`;var NB=[`domain`,`range`],PB=[`domain`,`range`];function FB(e,t){if(e==null)return{};var n,r,i=IB(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{if(o!=null)return WB(WB({},a),{},{type:o})},[a,o]);return(0,F.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(YF(s)):n.current!==s&&t(XF({prev:n.current,next:s})),n.current=s)},[s,t]),(0,F.useLayoutEffect)(()=>()=>{n.current&&=(t(ZF(n.current)),null)},[t]),null}var ZB=e=>{var{xAxisId:t,className:n}=e,r=G(Mm),i=Pm(),a=`xAxis`,o=G(e=>ak(e,a,t,i)),s=G(e=>qO(e,t)),c=G(e=>QO(e,t)),l=G(e=>iD(e,t));if(s==null||c==null||l==null)return null;var{dangerouslySetInnerHTML:u,ticks:d,scale:f}=e,p=JB(e,BB),{id:m,scale:h}=l,g=JB(l,VB);return F.createElement(kL,HB({},p,g,{x:c.x,y:c.y,width:s.width,height:s.height,className:P(`recharts-${a} ${a}`,n),viewBox:r,ticks:o,axisType:a,axisId:t}))},QB={allowDataOverflow:rD.allowDataOverflow,allowDecimals:rD.allowDecimals,allowDuplicatedCategory:rD.allowDuplicatedCategory,angle:rD.angle,axisLine:bL.axisLine,height:rD.height,hide:!1,includeHidden:rD.includeHidden,interval:rD.interval,label:!1,minTickGap:rD.minTickGap,mirror:rD.mirror,orientation:rD.orientation,padding:rD.padding,reversed:rD.reversed,scale:rD.scale,tick:rD.tick,tickCount:rD.tickCount,tickLine:bL.tickLine,tickSize:bL.tickSize,type:rD.type,niceTicks:rD.niceTicks,xAxisId:0},$B=F.memo(e=>{var t=yl(e,QB);return F.createElement(F.Fragment,null,F.createElement(XB,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),F.createElement(ZB,t))},RB);$B.displayName=`XAxis`;var eV=[`type`],tV=[`dangerouslySetInnerHTML`,`ticks`,`scale`],nV=[`id`,`scale`];function rV(){return rV=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(o!=null)return aV(aV({},a),{},{type:o})},[o,a]);return(0,F.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(QF(s)):n.current!==s&&t($F({prev:n.current,next:s})),n.current=s)},[s,t]),(0,F.useLayoutEffect)(()=>()=>{n.current&&=(t(eI(n.current)),null)},[t]),null}function fV(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,F.useRef)(null),o=(0,F.useRef)(null),s=G(Mm),c=Pm(),l=W(),u=`yAxis`,d=G(e=>ek(e,t)),f=G(e=>$O(e,t)),p=G(e=>ak(e,u,t,c)),m=G(e=>sD(e,t));if((0,F.useLayoutEffect)(()=>{if(!(r!==`auto`||!d||XN(i)||(0,F.isValidElement)(i)||m==null)){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(d.width)!==Math.round(n)&&l(iI({id:t,width:n}))}}},[p,d,l,i,t,r,m]),d==null||f==null||m==null)return null;var{dangerouslySetInnerHTML:h,ticks:g,scale:_}=e,v=lV(e,tV),{id:y,scale:b}=m,x=lV(m,nV);return F.createElement(kL,rV({},v,x,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:r===`auto`?{width:void 0}:{width:r},width:d.width,height:d.height,className:P(`recharts-${u} ${u}`,n),viewBox:s,ticks:p,axisType:u,axisId:t}))}var pV={allowDataOverflow:oD.allowDataOverflow,allowDecimals:oD.allowDecimals,allowDuplicatedCategory:oD.allowDuplicatedCategory,angle:oD.angle,axisLine:bL.axisLine,hide:!1,includeHidden:oD.includeHidden,interval:oD.interval,label:!1,minTickGap:oD.minTickGap,mirror:oD.mirror,orientation:oD.orientation,padding:oD.padding,reversed:oD.reversed,scale:oD.scale,tick:oD.tick,tickCount:oD.tickCount,tickLine:bL.tickLine,tickSize:bL.tickSize,type:oD.type,niceTicks:oD.niceTicks,width:oD.width,yAxisId:0},mV=F.memo(e=>{var t=yl(e,pV);return F.createElement(F.Fragment,null,F.createElement(dV,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),F.createElement(fV,t))},RB);mV.displayName=`YAxis`;var hV=K([(e,t)=>t,X,Yb,ix,SA,wA,rj,Am],hj);function gV(e){return`getBBox`in e.currentTarget&&typeof e.currentTarget.getBBox==`function`}function _V(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(gV(e)){var i=e.currentTarget.getBBox();n=i.width>0?t.width/i.width:1,r=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;n=a.offsetWidth>0?t.width/a.offsetWidth:1,r=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(e,i)=>({relativeX:Math.round((e-t.left)/n),relativeY:Math.round((i-t.top)/r)});return`touches`in e?Array.from(e.touches).map(e=>o(e.clientX,e.clientY)):o(e.clientX,e.clientY)}var vV=Tf(`mouseClick`),yV=jp();yV.startListening({actionCreator:vV,effect:(e,t)=>{var n=e.payload,r=hV(t.getState(),_V(n));r?.activeIndex!=null&&t.dispatch(Dk({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var bV=Tf(`mouseMove`),xV=jp(),SV=null,CV=null,wV=null;xV.startListening({actionCreator:bV,effect:(e,t)=>{var n=e.payload,{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i?.includes(`mousemove`);SV!==null&&(cancelAnimationFrame(SV),SV=null),CV!==null&&(typeof r!=`number`||!a)&&(clearTimeout(CV),CV=null),wV=_V(n);var o=()=>{var e=t.getState(),n=fk(e,e.tooltip.settings.shared);if(!wV){SV=null,CV=null;return}if(n===`axis`){var r=hV(e,wV);r?.activeIndex==null?t.dispatch(wk()):t.dispatch(Ek({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}SV=null,CV=null};if(!a){o();return}r===`raf`?SV=requestAnimationFrame(o):typeof r==`number`&&CV===null&&(CV=setTimeout(o,r))}});function TV(e,t){return t instanceof HTMLElement?`HTMLElement <${t.tagName} class="${t.className}">`:t===window?`global.window`:e===`children`&&typeof t==`object`&&t?`<>`:t}var EV={accessibilityLayer:!0,barCategoryGap:`10%`,barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:`none`,syncId:void 0,syncMethod:`index`,baseValue:void 0,reverseStackOrder:!1},DV=Gf({name:`rootProps`,initialState:EV,reducers:{updateOptions:(e,t)=>{e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=t.payload.barGap??EV.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),OV=DV.reducer,{updateOptions:kV}=DV.actions,AV=Gf({name:`polarOptions`,initialState:null,reducers:{updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)}}),{updatePolarOptions:jV}=AV.actions,MV=AV.reducer,NV=Tf(`keyDown`),PV=Tf(`focus`),FV=Tf(`blur`),IV=jp(),LV=null,RV=null,zV=null;IV.startListening({actionCreator:NV,effect:(e,t)=>{zV=e.payload,LV!==null&&(cancelAnimationFrame(LV),LV=null);var{throttleDelay:n,throttledEvents:r}=t.getState().eventSettings,i=r===`all`||r.includes(`keydown`);RV!==null&&(typeof n!=`number`||!i)&&(clearTimeout(RV),RV=null);var a=()=>{try{var e=t.getState();if(e.rootProps.accessibilityLayer===!1)return;var{keyboardInteraction:n}=e.tooltip,r=zV;if(r!==`ArrowRight`&&r!==`ArrowLeft`&&r!==`Enter`)return;var i=Hk(n,uA(e),zD(e),yA(e)),a=i==null?-1:Number(i),o=!Number.isFinite(a)||a<0,s=wA(e),c=uA(e),l=fk(e,e.tooltip.settings.shared);if(r===`Enter`){if(o)return;var u=cj(e,l,`hover`,String(n.index));t.dispatch(kk({active:!n.active,activeIndex:n.index,activeCoordinate:u}));return}var d=ck(e)===`left-to-right`?1:-1,f=r===`ArrowRight`?1:-1,p;if(o){var m=zD(e),h=yA(e),g=f*d,_=e=>({active:!1,index:String(e),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(p=-1,g>0){for(var v=0;v=0;y--)if(Hk(_(y),c,m,h)!=null){p=y;break}if(p<0)return}else{p=a+f*d;var b=s?.length||c.length;if(b===0||p>=b||p<0)return}var x=cj(e,l,`hover`,String(p));t.dispatch(kk({active:!0,activeIndex:p.toString(),activeCoordinate:x}))}finally{LV=null,RV=null}};if(!i){a();return}n===`raf`?LV=requestAnimationFrame(a):typeof n==`number`&&RV===null&&(a(),zV=null,RV=setTimeout(()=>{zV?a():(RV=null,LV=null)},n))}}),IV.startListening({actionCreator:PV,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;if(!r.active&&r.index==null){var i=`0`,a=cj(n,fk(n,n.tooltip.settings.shared),`hover`,String(i));t.dispatch(kk({active:!0,activeIndex:i,activeCoordinate:a}))}}}}),IV.startListening({actionCreator:FV,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;r.active&&t.dispatch(kk({active:!1,activeIndex:r.index,activeCoordinate:r.coordinate}))}}});function BV(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(e,n)=>{if(n===`currentTarget`)return t;var r=Reflect.get(e,n);return typeof r==`function`?r.bind(e):r}})}var VV=Tf(`externalEvent`),HV=jp(),UV=new Map,WV=new Map,GV=new Map;HV.startListening({actionCreator:VV,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var i=r.type,a=BV(r);GV.set(i,{handler:n,reactEvent:a});var o=UV.get(i);o!==void 0&&(cancelAnimationFrame(o),UV.delete(i));var{throttleDelay:s,throttledEvents:c}=t.getState().eventSettings,l=c,u=l===`all`||l?.includes(i),d=WV.get(i);d!==void 0&&(typeof s!=`number`||!u)&&(clearTimeout(d),WV.delete(i));var f=()=>{var e=GV.get(i);try{if(!e)return;var{handler:n,reactEvent:r}=e,a=t.getState(),o={activeCoordinate:PA(a),activeDataKey:jA(a),activeIndex:kA(a),activeLabel:AA(a),activeTooltipIndex:kA(a),isTooltipActive:FA(a)};n&&n(o,r)}finally{UV.delete(i),WV.delete(i),GV.delete(i)}};if(!u){f();return}if(s===`raf`){var p=requestAnimationFrame(f);UV.set(i,p)}else if(typeof s==`number`){if(!WV.has(i)){f();var m=setTimeout(f,s);WV.set(i,m)}}else f()}}});var KV=K([K([Kk],e=>e.tooltipItemPayloads),(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(e=>e.settings.graphicalItemId===n);if(r!=null){var{getPosition:i}=r;if(i!=null)return i(t)}}}),qV=Tf(`touchMove`),JV=jp(),YV=null,XV=null,ZV=null,QV=null;JV.startListening({actionCreator:qV,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){QV=BV(n);var{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i.includes(`touchmove`);YV!==null&&(cancelAnimationFrame(YV),YV=null),XV!==null&&(typeof r!=`number`||!a)&&(clearTimeout(XV),XV=null),ZV=Array.from(n.touches).map(e=>_V({clientX:e.clientX,clientY:e.clientY,currentTarget:n.currentTarget}));var o=()=>{if(QV!=null){var e=t.getState(),n=fk(e,e.tooltip.settings.shared);if(n===`axis`){var r=ZV?.[0];if(r==null){YV=null,XV=null;return}var i=hV(e,r);i?.activeIndex!=null&&t.dispatch(Ek({activeIndex:i.activeIndex,activeDataKey:void 0,activeCoordinate:i.activeCoordinate}))}else if(n===`item`){var a=QV.touches[0];if(document.elementFromPoint==null||a==null)return;var o=document.elementFromPoint(a.clientX,a.clientY);if(!o||!o.getAttribute)return;var s=o.getAttribute(ym),c=o.getAttribute(`data-recharts-item-id`)??void 0,l=oA(e).find(e=>e.id===c);if(s==null||l==null||c==null)return;var{dataKey:u}=l,d=KV(e,s,c);t.dispatch(Sk({activeDataKey:u,activeIndex:s,activeCoordinate:d,activeGraphicalItemId:c}))}YV=null,XV=null}};if(!a){o();return}r===`raf`?YV=requestAnimationFrame(o):typeof r==`number`&&XV===null&&(o(),QV=null,XV=setTimeout(()=>{QV?o():(XV=null,YV=null)},r))}}});var $V={throttleDelay:`raf`,throttledEvents:[`mousemove`,`touchmove`,`pointermove`,`scroll`,`wheel`]},eH=Gf({name:`eventSettings`,initialState:$V,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Z(t.payload.throttledEvents))}}}),{setEventSettings:tH}=eH.actions,nH=eH.reducer,rH=Yu({brush:MI,cartesianAxis:aI,chartData:rM,errorBars:nR,eventSettings:nH,graphicalItems:kF,layout:Rp,legend:Cg,options:Xj,polarAxis:EP,polarOptions:MV,referenceElements:HI,renderedTicks:uL,rootProps:OV,tooltip:Ak,zIndex:jj}),iH=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Chart`;return Ff({reducer:rH,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:![`commonjs`,`es6`,`production`].includes(`es6`)}).concat([yV.middleware,xV.middleware,IV.middleware,HV.middleware,JV.middleware]),enhancers:e=>{var t=e;return typeof e==`function`&&(t=e()),t.concat(Nf({type:`raf`}))},devTools:w_.devToolsEnabled&&{serialize:{replacer:TV},name:`recharts-${t}`}})};function aH(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,i=Pm(),a=(0,F.useRef)(null);if(i)return n;a.current??=iH(t,r);var o=cu;return F.createElement(zg,{context:o,store:a.current},n)}function oH(e){var{layout:t,margin:n}=e,r=W(),i=Pm();return(0,F.useEffect)(()=>{i||(r(Fp(t)),r(Pp(n)))},[r,i,t,n]),null}var sH=(0,F.memo)(oH,Hg);function cH(e){var t=W();return(0,F.useEffect)(()=>{t(kV(e))},[t,e]),null}var lH=(0,F.memo)(e=>{var t=W();return(0,F.useEffect)(()=>{t(tH(e))},[t,e]),null},Hg);function uH(e){var{zIndex:t,isPanorama:n}=e,r=(0,F.useRef)(null),i=W();return(0,F.useLayoutEffect)(()=>(r.current&&i(kj({zIndex:t,element:r.current,isPanorama:n})),()=>{i(Aj({zIndex:t,isPanorama:n}))}),[i,t,n]),F.createElement(`g`,{tabIndex:-1,ref:r,className:`recharts-zIndex-layer_${t}`})}function dH(e){var{children:t,isPanorama:n}=e,r=G(_j);if(!r||r.length===0)return t;var i=r.filter(e=>e<0),a=r.filter(e=>e>0);return F.createElement(F.Fragment,null,i.map(e=>F.createElement(uH,{key:e,zIndex:e,isPanorama:n})),t,a.map(e=>F.createElement(uH,{key:e,zIndex:e,isPanorama:n})))}var fH=[`children`];function pH(e,t){if(e==null)return{};var n,r,i=mH(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=mh(),r=hh(),i=P_();if(!Bp(n)||!Bp(r))return null;var{children:a,otherAttributes:o,title:s,desc:c}=e,l,u;return o!=null&&(l=typeof o.tabIndex==`number`?o.tabIndex:i?0:void 0,u=typeof o.role==`string`?o.role:i?`application`:void 0),F.createElement(Yo,hH({},o,{title:s,desc:c,role:u,tabIndex:l,width:n,height:r,style:gH,ref:t}),a)}),vH=e=>{var{children:t}=e,n=G(Im);if(!n)return null;var{width:r,height:i,y:a,x:o}=n;return F.createElement(Yo,{width:r,height:i,x:o,y:a},t)},yH=(0,F.forwardRef)((e,t)=>{var{children:n}=e,r=pH(e,fH);return Pm()?F.createElement(vH,null,F.createElement(dH,{isPanorama:!0},n)):F.createElement(_H,hH({ref:t},r),F.createElement(dH,{isPanorama:!1},n))});function bH(){var e=W(),[t,n]=(0,F.useState)(null),r=G(hm);return(0,F.useEffect)(()=>{if(t!=null){var n=t.getBoundingClientRect().width/t.offsetWidth;J(n)&&n!==r&&e(Lp(n))}},[t,e,r]),n}function xH(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function SH(e){for(var t=1;t(mM(),null);function OH(e){if(typeof e==`number`)return e;if(typeof e==`string`){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var kH=(0,F.forwardRef)((e,t)=>{var n=(0,F.useRef)(null),[r,i]=(0,F.useState)({containerWidth:OH(e.style?.width),containerHeight:OH(e.style?.height)}),a=(0,F.useCallback)((e,t)=>{i(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),o=(0,F.useCallback)(e=>{if(typeof t==`function`&&t(e),n.current!=null&&(n.current.disconnect(),n.current=null),e!=null&&typeof ResizeObserver<`u`){var{width:r,height:i}=e.getBoundingClientRect();a(r,i);var o=new ResizeObserver(e=>{var t=e[0];if(t!=null){var{width:n,height:r}=t.contentRect;a(n,r)}});o.observe(e),n.current=o}},[t,a]);return(0,F.useEffect)(()=>()=>{n.current?.disconnect()},[a]),F.createElement(F.Fragment,null,F.createElement(xh,{width:r.containerWidth,height:r.containerHeight}),F.createElement(`div`,EH({ref:o},e)))}),AH=(0,F.forwardRef)((e,t)=>{var{width:n,height:r}=e,[i,a]=(0,F.useState)({containerWidth:OH(n),containerHeight:OH(r)}),o=(0,F.useCallback)((e,t)=>{a(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),s=(0,F.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null){var{width:n,height:r}=e.getBoundingClientRect();o(n,r)}},[t,o]);return F.createElement(F.Fragment,null,F.createElement(xh,{width:i.containerWidth,height:i.containerHeight}),F.createElement(`div`,EH({ref:s},e)))}),jH=(0,F.forwardRef)((e,t)=>{var{width:n,height:r}=e;return F.createElement(F.Fragment,null,F.createElement(xh,{width:n,height:r}),F.createElement(`div`,EH({ref:t},e)))}),MH=(0,F.forwardRef)((e,t)=>{var{width:n,height:r}=e;return typeof n==`string`||typeof r==`string`?F.createElement(AH,EH({},e,{ref:t})):typeof n==`number`&&typeof r==`number`?F.createElement(jH,EH({},e,{width:n,height:r,ref:t})):F.createElement(F.Fragment,null,F.createElement(xh,{width:n,height:r}),F.createElement(`div`,EH({ref:t},e)))});function NH(e){return e?kH:MH}var PH=(0,F.forwardRef)((e,t)=>{var{children:n,className:r,height:i,onClick:a,onContextMenu:o,onDoubleClick:s,onMouseDown:c,onMouseEnter:l,onMouseLeave:u,onMouseMove:d,onMouseUp:f,onTouchEnd:p,onTouchMove:m,onTouchStart:h,style:g,width:_,responsive:v,dispatchTouchEvents:y=!0}=e,b=(0,F.useRef)(null),x=W(),[S,C]=(0,F.useState)(null),[w,T]=(0,F.useState)(null),E=bH(),D=sh(),O=D?.width>0?D.width:_,k=D?.height>0?D.height:i,ee=(0,F.useCallback)(e=>{E(e),typeof t==`function`&&t(e),C(e),T(e),e!=null&&(b.current=e)},[E,t,C,T]),te=(0,F.useCallback)(e=>{x(vV(e)),x(VV({handler:a,reactEvent:e}))},[x,a]),A=(0,F.useCallback)(e=>{x(bV(e)),x(VV({handler:l,reactEvent:e}))},[x,l]),j=(0,F.useCallback)(e=>{x(wk()),x(VV({handler:u,reactEvent:e}))},[x,u]),ne=(0,F.useCallback)(e=>{x(bV(e)),x(VV({handler:d,reactEvent:e}))},[x,d]),re=(0,F.useCallback)(()=>{x(PV())},[x]),ie=(0,F.useCallback)(()=>{x(FV())},[x]),ae=(0,F.useCallback)(e=>{x(NV(e.key))},[x]),oe=(0,F.useCallback)(e=>{x(VV({handler:o,reactEvent:e}))},[x,o]),se=(0,F.useCallback)(e=>{x(VV({handler:s,reactEvent:e}))},[x,s]),ce=(0,F.useCallback)(e=>{x(VV({handler:c,reactEvent:e}))},[x,c]),le=(0,F.useCallback)(e=>{x(VV({handler:f,reactEvent:e}))},[x,f]),ue=(0,F.useCallback)(e=>{x(VV({handler:h,reactEvent:e}))},[x,h]),de=(0,F.useCallback)(e=>{y&&x(qV(e)),x(VV({handler:m,reactEvent:e}))},[x,y,m]),fe=(0,F.useCallback)(e=>{x(VV({handler:p,reactEvent:e}))},[x,p]),pe=NH(v);return F.createElement(Hj.Provider,{value:S},F.createElement(ts.Provider,{value:w},F.createElement(pe,{width:O??g?.width,height:k??g?.height,className:P(`recharts-wrapper`,r),style:SH({position:`relative`,cursor:`default`,width:O,height:k},g),onClick:te,onContextMenu:oe,onDoubleClick:se,onFocus:re,onBlur:ie,onKeyDown:ae,onMouseDown:ce,onMouseEnter:A,onMouseLeave:j,onMouseMove:ne,onMouseUp:le,onTouchEnd:fe,onTouchMove:de,onTouchStart:ue,ref:ee},F.createElement(DH,null),n)))}),FH=[`width`,`height`,`responsive`,`children`,`className`,`style`,`compact`,`title`,`desc`];function IH(e,t){if(e==null)return{};var n,r,i=LH(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{width:n,height:r,responsive:i,children:a,className:o,style:s,compact:c,title:l,desc:u}=e,d=Vo(IH(e,FH));return c?F.createElement(F.Fragment,null,F.createElement(xh,{width:n,height:r}),F.createElement(yH,{otherAttributes:d,title:l,desc:u},a)):F.createElement(PH,{className:o,style:s,width:n,height:r,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},F.createElement(yH,{otherAttributes:d,title:l,desc:u,ref:t},F.createElement(WI,null,a)))});function zH(){return zH=Object.assign?Object.assign.bind():function(e){for(var t=1;tF.createElement(KH,{chartName:`BarChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:qH,tooltipPayloadSearcher:Jj,categoricalChartProps:e,ref:t})),YH=[`axis`],XH=(0,F.forwardRef)((e,t)=>F.createElement(KH,{chartName:`ComposedChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:YH,tooltipPayloadSearcher:Jj,categoricalChartProps:e,ref:t})),ZH={light:``,dark:`.dark`},QH={width:320,height:200},$H=F.createContext(null);function eU(){let e=F.useContext($H);if(!e)throw Error(`useChart must be used within a `);return e}function tU({id:e,className:t,children:n,config:r,initialDimension:i=QH,...a}){let o=F.useId(),s=`chart-${e??o.replace(/:/g,``)}`;return(0,I.jsx)($H.Provider,{value:{config:r},children:(0,I.jsxs)(`div`,{"data-slot":`chart`,"data-chart":s,className:N(`flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden`,t),...a,children:[(0,I.jsx)(nU,{id:s,config:r}),(0,I.jsx)(lh,{initialDimension:i,children:n})]})})}var nU=({id:e,config:t})=>{let n=Object.entries(t).filter(([,e])=>e.theme??e.color);return n.length?(0,I.jsx)(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(ZH).map(([t,r])=>` +${r} [data-chart=${e}] { +${n.map(([e,n])=>{let r=n.theme?.[t]??n.color;return r?` --color-${e}: ${r};`:null}).join(` +`)} +} +`).join(` +`)}}):null},rU=TM;function iU({active:e,payload:t,className:n,indicator:r=`dot`,hideLabel:i=!1,hideIndicator:a=!1,label:o,labelFormatter:s,labelClassName:c,formatter:l,color:u,nameKey:d,labelKey:f}){let{config:p}=eU(),m=F.useMemo(()=>{if(i||!t?.length)return null;let[e]=t,n=sU(p,e,`${f??e?.dataKey??e?.name??`value`}`),r=!f&&typeof o==`string`?p[o]?.label??o:n?.label;return s?(0,I.jsx)(`div`,{className:N(`font-medium`,c),children:s(r,t)}):r?(0,I.jsx)(`div`,{className:N(`font-medium`,c),children:r}):null},[o,s,t,i,c,p,f]);if(!e||!t?.length)return null;let h=t.length===1&&r!==`dot`;return(0,I.jsxs)(`div`,{className:N(`grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl`,n),children:[h?null:m,(0,I.jsx)(`div`,{className:`grid gap-1.5`,children:t.filter(e=>e.type!==`none`).map((e,t)=>{let n=sU(p,e,`${d??e.name??e.dataKey??`value`}`),i=u??e.payload?.fill??e.color;return(0,I.jsx)(`div`,{className:N(`flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground`,r===`dot`&&`items-center`),children:l&&e?.value!==void 0&&e.name?l(e.value,e.name,e,t,e.payload):(0,I.jsxs)(I.Fragment,{children:[n?.icon?(0,I.jsx)(n.icon,{}):!a&&(0,I.jsx)(`div`,{className:N(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,{"h-2.5 w-2.5":r===`dot`,"w-1":r===`line`,"w-0 border-[1.5px] border-dashed bg-transparent":r===`dashed`,"my-0.5":h&&r===`dashed`}),style:{"--color-bg":i,"--color-border":i}}),(0,I.jsxs)(`div`,{className:N(`flex flex-1 justify-between leading-none`,h?`items-end`:`items-center`),children:[(0,I.jsxs)(`div`,{className:`grid gap-1.5`,children:[h?m:null,(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:n?.label??e.name})]}),e.value!=null&&(0,I.jsx)(`span`,{className:`font-mono font-medium text-foreground tabular-nums`,children:typeof e.value==`number`?e.value.toLocaleString():String(e.value)})]})]})},t)})})]})}var aU=s_;function oU({className:e,hideIcon:t=!1,payload:n,verticalAlign:r=`bottom`,nameKey:i}){let{config:a}=eU();return n?.length?(0,I.jsx)(`div`,{className:N(`flex items-center justify-center gap-4`,r===`top`?`pb-3`:`pt-3`,e),children:n.filter(e=>e.type!==`none`).map((e,n)=>{let r=sU(a,e,`${i??e.dataKey??`value`}`);return(0,I.jsxs)(`div`,{className:N(`flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground`),children:[r?.icon&&!t?(0,I.jsx)(r.icon,{}):(0,I.jsx)(`div`,{className:`h-2 w-2 shrink-0 rounded-[2px]`,style:{backgroundColor:e.color}}),r?.label]},n)})}):null}function sU(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return n in t&&typeof t[n]==`string`?i=t[n]:r&&n in r&&typeof r[n]==`string`&&(i=r[n]),i in e?e[i]:e[n]}var cU=[{key:`total_amount`,label:()=>ne()},{key:`actual_amount`,label:()=>pe()}],lU=e=>Ge(e);function uU({selected:e,onChange:t}){let[n,r]=(0,F.useState)(!1),i=n=>{let r=new Set(e);r.has(n)?r.delete(n):r.add(n),t(r)},a=t=>e.size>0&&!e.has(t);return(0,I.jsxs)(ht,{onOpenChange:r,open:n,children:[(0,I.jsx)(mt,{asChild:!0,children:(0,I.jsxs)(Ze,{className:`h-8 border-dashed`,size:`sm`,variant:`outline`,children:[(0,I.jsx)(on,{className:`size-4`}),ae(),e.size>0&&(0,I.jsx)(`span`,{className:`ml-1 rounded bg-primary px-1 py-0.5 text-[10px] text-primary-foreground`,children:e.size})]})}),(0,I.jsx)(pt,{align:`end`,className:`w-48 p-0`,children:(0,I.jsx)(ft,{children:(0,I.jsxs)(dt,{children:[(0,I.jsx)(ut,{children:Oe()}),(0,I.jsx)(ct,{children:cU.map(({key:e,label:t})=>(0,I.jsxs)(lt,{onSelect:()=>i(e),children:[(0,I.jsx)(`div`,{className:N(`flex size-4 items-center justify-center rounded-sm border border-primary`,a(e)?`opacity-50 [&_svg]:invisible`:`bg-primary [&_svg]:visible`),children:(0,I.jsx)(Dt,{className:`h-4 w-4 text-primary-foreground`})}),(0,I.jsx)(`span`,{children:t()})]},e))}),e.size>0&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(st,{}),(0,I.jsx)(ct,{children:(0,I.jsx)(lt,{className:`justify-center text-center`,onSelect:()=>t(new Set),children:xe()})})]})]})})})]})}var dU={total_amount:{label:ne(),color:`var(--chart-1)`},actual_amount:{label:pe(),color:`var(--chart-2)`}};function fU({data:e,selected:t}){let n=e=>t.size===0||t.has(e);return(0,I.jsx)(`div`,{className:`space-y-4`,children:(0,I.jsx)(tU,{className:`h-80 w-full`,config:dU,children:(0,I.jsxs)(XH,{data:e,children:[(0,I.jsx)(ZL,{strokeDasharray:`3 3`,vertical:!1}),(0,I.jsx)($B,{dataKey:`day`,tickFormatter:Ke}),(0,I.jsx)(mV,{tickFormatter:e=>e>=1e3?`$${(e/1e3).toFixed(0)}k`:`$${e}`,width:60}),(0,I.jsx)(rU,{content:(0,I.jsx)(iU,{className:`min-w-44`,formatter:(e,t,n)=>(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{className:`h-2.5 w-2.5 shrink-0 rounded-xs`,style:{background:n.color}}),(0,I.jsxs)(`div`,{className:`flex flex-1 items-center justify-between gap-6 leading-none`,children:[(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:dU[t]?.label??t}),(0,I.jsx)(`span`,{className:`font-medium font-mono text-foreground tabular-nums`,children:lU(Number(e))})]})]})})}),(0,I.jsx)(aU,{content:(0,I.jsx)(oU,{})}),n(`total_amount`)&&(0,I.jsx)(Mz,{dataKey:`total_amount`,fill:`var(--chart-1)`,fillOpacity:.1,stroke:`var(--chart-1)`,strokeWidth:2.5,type:`monotone`}),n(`actual_amount`)&&(0,I.jsx)(Mz,{dataKey:`actual_amount`,fill:`var(--chart-2)`,fillOpacity:.2,stroke:`var(--chart-2)`,strokeWidth:1.5,type:`monotone`})]})})})}var pU=Object.assign(fU,{Filter:uU});function mU({overview:e,orderStats:t}){return(0,I.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-4 xl:grid-cols-6`,children:[{title:Ee(),value:Ge(e.total_asset??0),icon:cn,hint:ye()},{title:Ae(),value:Ge(e.volume??0),icon:rn,hint:ce()},{title:n(),value:(e.order_count??0).toString(),icon:ln,hint:S()},{title:A(),value:`${((e.success_rate??0)*100).toFixed(1)}%`,icon:un,hint:ee()},{title:te(),value:(t.order_count??0).toString(),icon:tn,hint:m()},{title:we(),value:(t.success_count??0).toString(),icon:ln,hint:h()},{title:d(),value:`${Math.round(t.avg_payment_seconds??0)}s`,icon:kt,hint:k()},{title:D(),value:(t.expired_unpaid_count??0).toString(),icon:an,hint:f()},{title:O(),value:Ge(e.seven_day_volume??0),icon:rn,hint:i()},{title:Le(),value:(e.active_addresses??0).toString(),icon:an,hint:C()},{title:g(),value:(e.online_chains??0).toString(),icon:sn,hint:p()},{title:u(),value:`${((t.success_rate??0)*100).toFixed(1)}%`,icon:tn,hint:b()}].map(e=>(0,I.jsxs)(It,{children:[(0,I.jsxs)(Nt,{className:`flex flex-row items-center justify-between space-y-0 pb-2`,children:[(0,I.jsx)(Mt,{className:`font-medium text-sm`,children:e.title}),(0,I.jsx)(e.icon,{className:`h-4 w-4 text-muted-foreground`})]}),(0,I.jsxs)(Pt,{children:[(0,I.jsx)(`div`,{className:`font-bold text-2xl`,children:e.value}),(0,I.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:e.hint})]})]},e.title))})}var hU={total_amount:{label:v(),color:`var(--chart-2)`},actual_amount:{label:_(),color:`var(--chart-5)`}};function gU({data:e}){return(0,I.jsx)(tU,{className:`h-80 w-full`,config:hU,children:(0,I.jsxs)(JH,{barGap:8,data:e,children:[(0,I.jsx)(ZL,{strokeDasharray:`3 3`,vertical:!1}),(0,I.jsx)($B,{dataKey:`day`,tickFormatter:Ke}),(0,I.jsx)(rU,{content:(0,I.jsx)(iU,{className:`min-w-40`,formatter:(e,t,n)=>(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{className:`h-2.5 w-2.5 shrink-0 rounded-[2px]`,style:{background:n.color}}),(0,I.jsxs)(`div`,{className:`flex flex-1 items-center justify-between gap-6 leading-none`,children:[(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:hU[t]?.label??t}),(0,I.jsx)(`span`,{className:`font-medium font-mono text-foreground tabular-nums`,children:Ge(Number(e))})]})]})})}),(0,I.jsx)(aU,{content:(0,I.jsx)(oU,{})}),(0,I.jsx)(MB,{dataKey:`total_amount`,fill:`var(--color-total_amount)`,radius:[8,8,0,0]}),(0,I.jsx)(MB,{dataKey:`actual_amount`,fill:`var(--color-actual_amount)`,radius:[8,8,0,0]})]})})}var _U={order_count:{label:me(),color:`var(--chart-1)`},success_count:{label:r(),color:`var(--chart-3)`}};function vU({data:e}){return(0,I.jsx)(tU,{className:`h-80 w-full`,config:_U,children:(0,I.jsxs)(XH,{data:e,children:[(0,I.jsx)(ZL,{strokeDasharray:`3 3`,vertical:!1}),(0,I.jsx)($B,{dataKey:`day`}),(0,I.jsx)(mV,{allowDecimals:!1,yAxisId:`left`}),(0,I.jsx)(mV,{allowDecimals:!1,hide:!0,yAxisId:`right`}),(0,I.jsx)(rU,{content:(0,I.jsx)(iU,{className:`min-w-40`,formatter:(e,t,n)=>(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{className:`h-2.5 w-2.5 shrink-0 rounded-[2px]`,style:{background:n.color}}),(0,I.jsxs)(`div`,{className:`flex flex-1 items-center justify-between gap-6 leading-none`,children:[(0,I.jsx)(`span`,{className:`text-muted-foreground`,children:_U[t]?.label??t}),(0,I.jsx)(`span`,{className:`font-medium font-mono text-foreground tabular-nums`,children:Number(e).toLocaleString()})]})]})})}),(0,I.jsx)(aU,{content:(0,I.jsx)(oU,{})}),(0,I.jsx)(MB,{dataKey:`order_count`,fill:`var(--color-order_count)`,radius:[8,8,0,0],yAxisId:`left`}),(0,I.jsx)(qR,{dataKey:`success_count`,dot:{r:3},stroke:`var(--color-success_count)`,strokeWidth:2,type:`monotone`,yAxisId:`right`})]})})}var yU={1:`bg-amber-500/10 text-amber-600`,2:`bg-emerald-500/10 text-emerald-600`,3:`bg-rose-500/10 text-rose-600`},bU={1:he(),2:y(),3:s()};function xU({orders:e}){let t=Be();return(0,I.jsx)(`div`,{className:`overflow-hidden rounded-md border`,children:(0,I.jsxs)(yt,{children:[(0,I.jsx)(Ct,{children:(0,I.jsxs)(Et,{className:`group/row`,children:[(0,I.jsx)(xt,{className:`bg-background group-hover/row:bg-muted`,children:Pe()}),(0,I.jsx)(xt,{className:`bg-background group-hover/row:bg-muted`,children:o()}),(0,I.jsx)(xt,{className:`bg-background group-hover/row:bg-muted`,children:w()}),(0,I.jsx)(xt,{className:`bg-background group-hover/row:bg-muted`,children:Fe()}),(0,I.jsx)(xt,{className:`bg-background group-hover/row:bg-muted`,children:ie()}),(0,I.jsx)(xt,{className:`bg-background group-hover/row:bg-muted`,children:Ie()}),(0,I.jsx)(xt,{className:`bg-background group-hover/row:bg-muted`,children:Me()})]})}),(0,I.jsx)(wt,{children:e.map(e=>(0,I.jsxs)(Et,{className:`group/row cursor-pointer`,onClick:()=>t({to:`/orders`}),children:[(0,I.jsx)(Tt,{className:`bg-background group-hover/row:bg-muted`,children:qe(e.created_at)}),(0,I.jsxs)(Tt,{className:`bg-background font-medium group-hover/row:bg-muted`,children:[(0,I.jsx)(`div`,{children:e.id}),(0,I.jsx)(`div`,{className:`text-muted-foreground text-xs`,children:e.order_id})]}),(0,I.jsx)(Tt,{className:`bg-background group-hover/row:bg-muted`,children:e.receive_address}),(0,I.jsxs)(Tt,{className:`bg-background group-hover/row:bg-muted`,children:[Je(e.amount),` `,e.currency]}),(0,I.jsxs)(Tt,{className:`bg-background group-hover/row:bg-muted`,children:[Je(e.actual_amount,6),` `,e.token||``]}),(0,I.jsx)(Tt,{className:`bg-background group-hover/row:bg-muted`,children:e.network}),(0,I.jsx)(Tt,{className:`bg-background group-hover/row:bg-muted`,children:(0,I.jsx)(jt,{className:N(yU[e.status??1]),children:bU[e.status??1]})})]},e.id))})]})})}var SU=Array.from({length:8},(e,t)=>`stat-${t}`),CU=Array.from({length:10},(e,t)=>`order-${t}`);function wU(){return(0,I.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-4`,children:SU.map(e=>(0,I.jsxs)(It,{children:[(0,I.jsx)(Nt,{className:`pb-2`,children:(0,I.jsx)(We,{className:`h-4 w-24`})}),(0,I.jsxs)(Pt,{children:[(0,I.jsx)(We,{className:`mb-1 h-7 w-20`}),(0,I.jsx)(We,{className:`h-3 w-32`})]})]},e))})}function TU(){return(0,I.jsx)(We,{className:`h-80 w-full rounded-md`})}function EU(){return(0,I.jsx)(`div`,{className:`overflow-hidden rounded-md border`,children:(0,I.jsxs)(yt,{children:[(0,I.jsx)(Ct,{children:(0,I.jsxs)(Et,{children:[(0,I.jsx)(xt,{children:Pe()}),(0,I.jsx)(xt,{children:o()}),(0,I.jsx)(xt,{children:w()}),(0,I.jsx)(xt,{children:Fe()}),(0,I.jsx)(xt,{children:ie()}),(0,I.jsx)(xt,{children:Ie()}),(0,I.jsx)(xt,{children:Me()})]})}),(0,I.jsx)(wt,{children:CU.map(e=>(0,I.jsxs)(Et,{children:[(0,I.jsx)(Tt,{children:(0,I.jsx)(St,{type:`date`})}),(0,I.jsx)(Tt,{children:(0,I.jsxs)(`div`,{className:`space-y-1`,children:[(0,I.jsx)(St,{type:`id`}),(0,I.jsx)(We,{className:`h-3 w-24`})]})}),(0,I.jsx)(Tt,{children:(0,I.jsx)(St,{type:`long`})}),(0,I.jsx)(Tt,{children:(0,I.jsx)(St,{type:`amount`})}),(0,I.jsx)(Tt,{children:(0,I.jsx)(St,{type:`amount`})}),(0,I.jsx)(Tt,{children:(0,I.jsx)(St,{type:`short`})}),(0,I.jsx)(Tt,{children:(0,I.jsx)(St,{type:`badge`})})]},e))})]})})}function DU(){let[e,t]=(0,F.useState)(`today`),[n,r]=(0,F.useState)(new Set),[i,a]=(0,F.useState)(),o=Re.useQuery(`get`,`/admin/api/v1/dashboard/overview`),s={range:e};e===`custom`&&i?.from&&(s.start_at=Math.floor(i.from.getTime()/1e3),i.to&&(s.end_at=Math.floor(i.to.getTime()/1e3)));let c=Re.useQuery(`get`,`/admin/api/v1/dashboard/asset-trend`,{params:{query:s}},{enabled:e!==`custom`||!!i?.from}),u=Re.useQuery(`get`,`/admin/api/v1/dashboard/revenue-trend`,{params:{query:s}},{enabled:e!==`custom`||!!i?.from}),d=Re.useQuery(`get`,`/admin/api/v1/dashboard/order-stats`,{params:{query:s}},{enabled:e!==`custom`||!!i?.from}),f=Re.useQuery(`get`,`/admin/api/v1/dashboard/recent-orders`),p=c.data?.data??[],m=u.data?.data??[],h=f.data?.data??[];return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(_t,{}),(0,I.jsxs)(gt,{className:`flex flex-1 flex-col gap-4 sm:gap-6`,children:[(0,I.jsx)(At,{description:E(),title:l()}),(o.isLoading||d.isLoading)&&(0,I.jsx)(wU,{}),!(o.isLoading||d.isLoading)&&o.data?.data&&(0,I.jsx)(mU,{orderStats:d.data?.data??{},overview:o.data.data}),(0,I.jsx)(OU,{customRange:i,range:e,selectedAddrs:n,setCustomRange:a,setRange:t,setSelectedAddrs:r,trendData:p,trendLoading:c.isLoading}),(0,I.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-7`,children:[(0,I.jsxs)(It,{className:`xl:col-span-4`,children:[(0,I.jsxs)(Nt,{children:[(0,I.jsx)(Mt,{children:j()}),(0,I.jsx)(Ft,{children:ue()})]}),(0,I.jsxs)(Pt,{children:[u.isLoading&&(0,I.jsx)(TU,{}),!u.isLoading&&m.length>0&&(0,I.jsx)(gU,{data:m})]})]}),(0,I.jsxs)(It,{className:`xl:col-span-3`,children:[(0,I.jsxs)(Nt,{children:[(0,I.jsx)(Mt,{children:de()}),(0,I.jsx)(Ft,{children:_e()})]}),(0,I.jsxs)(Pt,{children:[u.isLoading&&(0,I.jsx)(TU,{}),!u.isLoading&&m.length>0&&(0,I.jsx)(vU,{data:m})]})]})]}),(0,I.jsxs)(It,{children:[(0,I.jsxs)(Nt,{children:[(0,I.jsx)(Mt,{children:Ce()}),(0,I.jsx)(Ft,{children:le()})]}),(0,I.jsxs)(Pt,{children:[f.isLoading&&(0,I.jsx)(EU,{}),!f.isLoading&&h.length>0&&(0,I.jsx)(xU,{orders:h}),!f.isLoading&&h.length===0&&(0,I.jsx)(`div`,{className:`py-8 text-center text-muted-foreground`,children:oe()})]})]})]})]})}function OU({customRange:e,range:t,selectedAddrs:n,setCustomRange:r,setRange:i,setSelectedAddrs:o,trendData:s,trendLoading:l}){return(0,I.jsxs)(It,{children:[(0,I.jsxs)(Nt,{className:`flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(Mt,{children:je()}),(0,I.jsx)(Ft,{children:ge()})]}),(0,I.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,I.jsx)(pU.Filter,{data:s,onChange:o,selected:n}),(0,I.jsx)(Mo,{onValueChange:e=>{i(e),e!==`custom`&&r(void 0)},value:t,children:(0,I.jsxs)(Po,{children:[(0,I.jsx)(Fo,{value:`today`,children:c()}),(0,I.jsx)(Fo,{value:`7d`,children:T()}),(0,I.jsx)(Fo,{value:`30d`,children:Ne()}),(0,I.jsx)(Fo,{value:`custom`,children:a()})]})}),t===`custom`&&(0,I.jsx)(jo,{onSelect:e=>r(e),selected:e})]})]}),(0,I.jsxs)(Pt,{children:[l&&(0,I.jsx)(TU,{}),!l&&s.length>0&&(0,I.jsx)(pU,{data:s,range:t,selected:n})]})]})}var kU=DU;export{kU as component}; \ No newline at end of file diff --git a/src/www/assets/data-table-CmcvKcj8.js b/src/www/assets/data-table-CmcvKcj8.js new file mode 100644 index 0000000..353a7b9 --- /dev/null +++ b/src/www/assets/data-table-CmcvKcj8.js @@ -0,0 +1,4 @@ +import{Fl as e,_l as t,al as n,cl as r,dl as i,fl as a,gl as o,hl as s,ll as c,ml as l,nu as u,ol as d,ou as f,pl as p,ru as m,sl as h,ul as g,vl as ee,yl as te}from"./messages-BovT1T-w.js";import{G as ne,P as re}from"./search-provider-Cx1K1ilz.js";import{a as ie,i as _,r as ae,t as v}from"./button-DJA4fnJ8.js";import"./wallet--XSRr4dT.js";import{a as y,l as oe,n as se,o as ce,p as le,r as ue,s as de,t as fe}from"./dropdown-menu-CUea1X0A.js";import{a as pe,c as me,h as he,i as ge,o as _e,r as ve,s as ye,t as be}from"./command-BwVY_kli.js";import{n as xe,r as Se,t as Ce}from"./popover-D5q6Hufu.js";import{a as we,i as Te,n as Ee,r as De,t as Oe}from"./select-DcStuzoT.js";import{t as ke}from"./separator-CRLYw2cW.js";import{t as b}from"./createLucideIcon-D28ivbfF.js";import{t as Ae}from"./check-gDgbfVXu.js";import{t as je}from"./chevrons-up-down-iOmAu5Fh.js";import{t as Me}from"./eye-off-C-BF3gv3.js";import{n as Ne,r as Pe,t as Fe}from"./empty-state-Cam-sX8U.js";import{t as Ie}from"./input-DiRPHDd8.js";import{t as Le}from"./badge-BAmRBT3U.js";var Re=b(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),ze=b(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),Be=b(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),Ve=b(`chevrons-left`,[[`path`,{d:`m11 17-5-5 5-5`,key:`13zhaf`}],[`path`,{d:`m18 17-5-5 5-5`,key:`h8a8et`}]]),He=b(`chevrons-right`,[[`path`,{d:`m6 17 5-5-5-5`,key:`xnjwq`}],[`path`,{d:`m13 17 5-5-5-5`,key:`17xmmf`}]]),Ue=b(`circle-plus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),x=f(m(),1),S=u();function C(e,t){return typeof e==`function`?e(t):e}function w(e,t){return n=>{t.setState(t=>({...t,[e]:C(n,t[e])}))}}function T(e){return e instanceof Function}function We(e){return Array.isArray(e)&&e.every(e=>typeof e==`number`)}function Ge(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i!=null&&i.length&&r(i)})};return r(e),n}function E(e,t,n){let r=[],i;return a=>{let o;n.key&&n.debug&&(o=Date.now());let s=e(a);if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug&&(c=Date.now()),i=t(...s),n==null||n.onChange==null||n.onChange(i),n.key&&n.debug&&n!=null&&n.debug()){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.lengthe?.debugAll??e[t],key:!1,onChange:r}}function Ke(e,t,n,r){let i={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(r),renderValue:()=>i.getValue()??e.options.renderFallbackValue,getContext:E(()=>[e,n,t,i],(e,t,n,r)=>({table:e,column:t,row:n,cell:r,getValue:r.getValue,renderValue:r.renderValue}),D(e.options,`debugCells`,`cell.getContext`))};return e._features.forEach(r=>{r.createCell==null||r.createCell(i,n,t,e)},{}),i}function qe(e,t,n,r){let i={...e._getDefaultColumnDef(),...t},a=i.accessorKey,o=i.id??(a?typeof String.prototype.replaceAll==`function`?a.replaceAll(`.`,`_`):a.replace(/\./g,`_`):void 0)??(typeof i.header==`string`?i.header:void 0),s;if(i.accessorFn?s=i.accessorFn:a&&(s=a.includes(`.`)?e=>{let t=e;for(let e of a.split(`.`))t=t?.[e];return t}:e=>e[i.accessorKey]),!o)throw Error();let c={id:`${String(o)}`,accessorFn:s,parent:r,depth:n,columnDef:i,columns:[],getFlatColumns:E(()=>[!0],()=>[c,...c.columns?.flatMap(e=>e.getFlatColumns())],D(e.options,`debugColumns`,`column.getFlatColumns`)),getLeafColumns:E(()=>[e._getOrderColumnsFn()],e=>{var t;return(t=c.columns)!=null&&t.length?e(c.columns.flatMap(e=>e.getLeafColumns())):[c]},D(e.options,`debugColumns`,`column.getLeafColumns`))};for(let t of e._features)t.createColumn==null||t.createColumn(c,e);return c}var O=`debugHeaders`;function Je(e,t,n){let r={id:n.id??t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{let e=[],t=n=>{n.subHeaders&&n.subHeaders.length&&n.subHeaders.map(t),e.push(n)};return t(r),e},getContext:()=>({table:e,header:r,column:t})};return e._features.forEach(t=>{t.createHeader==null||t.createHeader(r,e)}),r}var Ye={createTable:e=>{e.getHeaderGroups=E(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,i)=>{let a=r?.map(e=>n.find(t=>t.id===e)).filter(Boolean)??[],o=i?.map(e=>n.find(t=>t.id===e)).filter(Boolean)??[],s=n.filter(e=>!(r!=null&&r.includes(e.id))&&!(i!=null&&i.includes(e.id)));return k(t,[...a,...s,...o],e)},D(e.options,O,`getHeaderGroups`)),e.getCenterHeaderGroups=E(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,i)=>(n=n.filter(e=>!(r!=null&&r.includes(e.id))&&!(i!=null&&i.includes(e.id))),k(t,n,e,`center`)),D(e.options,O,`getCenterHeaderGroups`)),e.getLeftHeaderGroups=E(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,r)=>k(t,r?.map(e=>n.find(t=>t.id===e)).filter(Boolean)??[],e,`left`),D(e.options,O,`getLeftHeaderGroups`)),e.getRightHeaderGroups=E(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,r)=>k(t,r?.map(e=>n.find(t=>t.id===e)).filter(Boolean)??[],e,`right`),D(e.options,O,`getRightHeaderGroups`)),e.getFooterGroups=E(()=>[e.getHeaderGroups()],e=>[...e].reverse(),D(e.options,O,`getFooterGroups`)),e.getLeftFooterGroups=E(()=>[e.getLeftHeaderGroups()],e=>[...e].reverse(),D(e.options,O,`getLeftFooterGroups`)),e.getCenterFooterGroups=E(()=>[e.getCenterHeaderGroups()],e=>[...e].reverse(),D(e.options,O,`getCenterFooterGroups`)),e.getRightFooterGroups=E(()=>[e.getRightHeaderGroups()],e=>[...e].reverse(),D(e.options,O,`getRightFooterGroups`)),e.getFlatHeaders=E(()=>[e.getHeaderGroups()],e=>e.map(e=>e.headers).flat(),D(e.options,O,`getFlatHeaders`)),e.getLeftFlatHeaders=E(()=>[e.getLeftHeaderGroups()],e=>e.map(e=>e.headers).flat(),D(e.options,O,`getLeftFlatHeaders`)),e.getCenterFlatHeaders=E(()=>[e.getCenterHeaderGroups()],e=>e.map(e=>e.headers).flat(),D(e.options,O,`getCenterFlatHeaders`)),e.getRightFlatHeaders=E(()=>[e.getRightHeaderGroups()],e=>e.map(e=>e.headers).flat(),D(e.options,O,`getRightFlatHeaders`)),e.getCenterLeafHeaders=E(()=>[e.getCenterFlatHeaders()],e=>e.filter(e=>{var t;return!((t=e.subHeaders)!=null&&t.length)}),D(e.options,O,`getCenterLeafHeaders`)),e.getLeftLeafHeaders=E(()=>[e.getLeftFlatHeaders()],e=>e.filter(e=>{var t;return!((t=e.subHeaders)!=null&&t.length)}),D(e.options,O,`getLeftLeafHeaders`)),e.getRightLeafHeaders=E(()=>[e.getRightFlatHeaders()],e=>e.filter(e=>{var t;return!((t=e.subHeaders)!=null&&t.length)}),D(e.options,O,`getRightLeafHeaders`)),e.getLeafHeaders=E(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(e,t,n)=>[...e[0]?.headers??[],...t[0]?.headers??[],...n[0]?.headers??[]].map(e=>e.getLeafHeaders()).flat(),D(e.options,O,`getLeafHeaders`))}};function k(e,t,n,r){let i=0,a=function(e,t){t===void 0&&(t=1),i=Math.max(i,t),e.filter(e=>e.getIsVisible()).forEach(e=>{var n;(n=e.columns)!=null&&n.length&&a(e.columns,t+1)},0)};a(e);let o=[],s=(e,t)=>{let i={depth:t,id:[r,`${t}`].filter(Boolean).join(`_`),headers:[]},a=[];e.forEach(e=>{let o=[...a].reverse()[0],s=e.column.depth===i.depth,c,l=!1;if(s&&e.column.parent?c=e.column.parent:(c=e.column,l=!0),o&&o?.column===c)o.subHeaders.push(e);else{let i=Je(n,c,{id:[r,t,c.id,e?.id].filter(Boolean).join(`_`),isPlaceholder:l,placeholderId:l?`${a.filter(e=>e.column===c).length}`:void 0,depth:t,index:a.length});i.subHeaders.push(e),a.push(i)}i.headers.push(e),e.headerGroup=i}),o.push(i),t>0&&s(a,t-1)};s(t.map((e,t)=>Je(n,e,{depth:i,index:t})),i-1),o.reverse();let c=e=>e.filter(e=>e.column.getIsVisible()).map(e=>{let t=0,n=0,r=[0];e.subHeaders&&e.subHeaders.length?(r=[],c(e.subHeaders).forEach(e=>{let{colSpan:n,rowSpan:i}=e;t+=n,r.push(i)})):t=1;let i=Math.min(...r);return n+=i,e.colSpan=t,e.rowSpan=n,{colSpan:t,rowSpan:n}});return c(o[0]?.headers??[]),o}var A=(e,t,n,r,i,a,o)=>{let s={id:t,index:r,original:n,depth:i,parentId:o,_valuesCache:{},_uniqueValuesCache:{},getValue:t=>{if(s._valuesCache.hasOwnProperty(t))return s._valuesCache[t];let n=e.getColumn(t);if(n!=null&&n.accessorFn)return s._valuesCache[t]=n.accessorFn(s.original,r),s._valuesCache[t]},getUniqueValues:t=>{if(s._uniqueValuesCache.hasOwnProperty(t))return s._uniqueValuesCache[t];let n=e.getColumn(t);if(n!=null&&n.accessorFn)return n.columnDef.getUniqueValues?(s._uniqueValuesCache[t]=n.columnDef.getUniqueValues(s.original,r),s._uniqueValuesCache[t]):(s._uniqueValuesCache[t]=[s.getValue(t)],s._uniqueValuesCache[t])},renderValue:t=>s.getValue(t)??e.options.renderFallbackValue,subRows:a??[],getLeafRows:()=>Ge(s.subRows,e=>e.subRows),getParentRow:()=>s.parentId?e.getRow(s.parentId,!0):void 0,getParentRows:()=>{let e=[],t=s;for(;;){let n=t.getParentRow();if(!n)break;e.push(n),t=n}return e.reverse()},getAllCells:E(()=>[e.getAllLeafColumns()],t=>t.map(t=>Ke(e,s,t,t.id)),D(e.options,`debugRows`,`getAllCells`)),_getAllCellsByColumnId:E(()=>[s.getAllCells()],e=>e.reduce((e,t)=>(e[t.column.id]=t,e),{}),D(e.options,`debugRows`,`getAllCellsByColumnId`))};for(let t=0;t{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},Ze=(e,t,n)=>{var r,i;let a=n==null||(r=n.toString())==null?void 0:r.toLowerCase();return!!(!((i=e.getValue(t))==null||(i=i.toString())==null||(i=i.toLowerCase())==null)&&i.includes(a))};Ze.autoRemove=e=>N(e);var Qe=(e,t,n)=>{var r;return!!(!((r=e.getValue(t))==null||(r=r.toString())==null)&&r.includes(n))};Qe.autoRemove=e=>N(e);var $e=(e,t,n)=>{var r;return((r=e.getValue(t))==null||(r=r.toString())==null?void 0:r.toLowerCase())===n?.toLowerCase()};$e.autoRemove=e=>N(e);var et=(e,t,n)=>e.getValue(t)?.includes(n);et.autoRemove=e=>N(e);var tt=(e,t,n)=>!n.some(n=>{var r;return!((r=e.getValue(t))!=null&&r.includes(n))});tt.autoRemove=e=>N(e)||!(e!=null&&e.length);var nt=(e,t,n)=>n.some(n=>e.getValue(t)?.includes(n));nt.autoRemove=e=>N(e)||!(e!=null&&e.length);var rt=(e,t,n)=>e.getValue(t)===n;rt.autoRemove=e=>N(e);var it=(e,t,n)=>e.getValue(t)==n;it.autoRemove=e=>N(e);var j=(e,t,n)=>{let[r,i]=n,a=e.getValue(t);return a>=r&&a<=i};j.resolveFilterValue=e=>{let[t,n]=e,r=typeof t==`number`?t:parseFloat(t),i=typeof n==`number`?n:parseFloat(n),a=t===null||Number.isNaN(r)?-1/0:r,o=n===null||Number.isNaN(i)?1/0:i;if(a>o){let e=a;a=o,o=e}return[a,o]},j.autoRemove=e=>N(e)||N(e[0])&&N(e[1]);var M={includesString:Ze,includesStringSensitive:Qe,equalsString:$e,arrIncludes:et,arrIncludesAll:tt,arrIncludesSome:nt,equals:rt,weakEquals:it,inNumberRange:j};function N(e){return e==null||e===``}var at={getDefaultColumnDef:()=>({filterFn:`auto`}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:w(`columnFilters`,e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{let n=t.getCoreRowModel().flatRows[0]?.getValue(e.id);return typeof n==`string`?M.includesString:typeof n==`number`?M.inNumberRange:typeof n==`boolean`||typeof n==`object`&&n?M.equals:Array.isArray(n)?M.arrIncludes:M.weakEquals},e.getFilterFn=()=>T(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn===`auto`?e.getAutoFilterFn():t.options.filterFns?.[e.columnDef.filterFn]??M[e.columnDef.filterFn],e.getCanFilter=()=>(e.columnDef.enableColumnFilter??!0)&&(t.options.enableColumnFilters??!0)&&(t.options.enableFilters??!0)&&!!e.accessorFn,e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var n;return(n=t.getState().columnFilters)==null||(n=n.find(t=>t.id===e.id))==null?void 0:n.value},e.getFilterIndex=()=>t.getState().columnFilters?.findIndex(t=>t.id===e.id)??-1,e.setFilterValue=n=>{t.setColumnFilters(t=>{let r=e.getFilterFn(),i=t?.find(t=>t.id===e.id),a=C(n,i?i.value:void 0);if(ot(r,a,e))return t?.filter(t=>t.id!==e.id)??[];let o={id:e.id,value:a};return i?t?.map(t=>t.id===e.id?o:t)??[]:t!=null&&t.length?[...t,o]:[o]})}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{let n=e.getAllLeafColumns();e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(e=>C(t,e)?.filter(e=>{let t=n.find(t=>t.id===e.id);return!(t&&ot(t.getFilterFn(),e.value,t))}))},e.resetColumnFilters=t=>{e.setColumnFilters(t?[]:e.initialState?.columnFilters??[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function ot(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||t===void 0||typeof t==`string`&&!t}var P={sum:(e,t,n)=>n.reduce((t,n)=>{let r=n.getValue(e);return t+(typeof r==`number`?r:0)},0),min:(e,t,n)=>{let r;return n.forEach(t=>{let n=t.getValue(e);n!=null&&(r>n||r===void 0&&n>=n)&&(r=n)}),r},max:(e,t,n)=>{let r;return n.forEach(t=>{let n=t.getValue(e);n!=null&&(r=n)&&(r=n)}),r},extent:(e,t,n)=>{let r,i;return n.forEach(t=>{let n=t.getValue(e);n!=null&&(r===void 0?n>=n&&(r=i=n):(r>n&&(r=n),i{let n=0,r=0;if(t.forEach(t=>{let i=t.getValue(e);i!=null&&(i=+i)>=i&&(++n,r+=i)}),n)return r/n},median:(e,t)=>{if(!t.length)return;let n=t.map(t=>t.getValue(e));if(!We(n))return;if(n.length===1)return n[0];let r=Math.floor(n.length/2),i=n.sort((e,t)=>e-t);return n.length%2==0?(i[r-1]+i[r])/2:i[r]},unique:(e,t)=>Array.from(new Set(t.map(t=>t.getValue(e))).values()),uniqueCount:(e,t)=>new Set(t.map(t=>t.getValue(e))).size,count:(e,t)=>t.length},st={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t;return((t=e.getValue())==null||t.toString==null?void 0:t.toString())??null},aggregationFn:`auto`}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:w(`grouping`,e),groupedColumnMode:`reorder`}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(t=>t!=null&&t.includes(e.id)?t.filter(t=>t!==e.id):[...t??[],e.id])},e.getCanGroup=()=>(e.columnDef.enableGrouping??!0)&&(t.options.enableGrouping??!0)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue),e.getIsGrouped=()=>t.getState().grouping?.includes(e.id),e.getGroupedIndex=()=>t.getState().grouping?.indexOf(e.id),e.getToggleGroupingHandler=()=>{let t=e.getCanGroup();return()=>{t&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{let n=t.getCoreRowModel().flatRows[0]?.getValue(e.id);if(typeof n==`number`)return P.sum;if(Object.prototype.toString.call(n)===`[object Date]`)return P.extent},e.getAggregationFn=()=>{if(!e)throw Error();return T(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn===`auto`?e.getAutoAggregationFn():t.options.aggregationFns?.[e.columnDef.aggregationFn]??P[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{e.setGrouping(t?[]:e.initialState?.grouping??[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=n=>{if(e._groupingValuesCache.hasOwnProperty(n))return e._groupingValuesCache[n];let r=t.getColumn(n);return r!=null&&r.columnDef.getGroupingValue?(e._groupingValuesCache[n]=r.columnDef.getGroupingValue(e.original),e._groupingValuesCache[n]):e.getValue(n)},e._groupingValuesCache={}},createCell:(e,t,n,r)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===n.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var t;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((t=n.subRows)!=null&&t.length)}}};function ct(e,t,n){if(!(t!=null&&t.length)||!n)return e;let r=e.filter(e=>!t.includes(e.id));return n===`remove`?r:[...t.map(t=>e.find(e=>e.id===t)).filter(Boolean),...r]}var lt={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:w(`columnOrder`,e)}),createColumn:(e,t)=>{e.getIndex=E(e=>[z(t,e)],t=>t.findIndex(t=>t.id===e.id),D(t.options,`debugColumns`,`getIndex`)),e.getIsFirstColumn=n=>z(t,n)[0]?.id===e.id,e.getIsLastColumn=n=>{let r=z(t,n);return r[r.length-1]?.id===e.id}},createTable:e=>{e.setColumnOrder=t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{e.setColumnOrder(t?[]:e.initialState.columnOrder??[])},e._getOrderColumnsFn=E(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(e,t,n)=>r=>{let i=[];if(!(e!=null&&e.length))i=r;else{let t=[...e],n=[...r];for(;n.length&&t.length;){let e=t.shift(),r=n.findIndex(t=>t.id===e);r>-1&&i.push(n.splice(r,1)[0])}i=[...i,...n]}return ct(i,t,n)},D(e.options,`debugTable`,`_getOrderColumnsFn`))}},F=()=>({left:[],right:[]}),ut={getInitialState:e=>({columnPinning:F(),...e}),getDefaultOptions:e=>({onColumnPinningChange:w(`columnPinning`,e)}),createColumn:(e,t)=>{e.pin=n=>{let r=e.getLeafColumns().map(e=>e.id).filter(Boolean);t.setColumnPinning(e=>n===`right`?{left:(e?.left??[]).filter(e=>!(r!=null&&r.includes(e))),right:[...(e?.right??[]).filter(e=>!(r!=null&&r.includes(e))),...r]}:n===`left`?{left:[...(e?.left??[]).filter(e=>!(r!=null&&r.includes(e))),...r],right:(e?.right??[]).filter(e=>!(r!=null&&r.includes(e)))}:{left:(e?.left??[]).filter(e=>!(r!=null&&r.includes(e))),right:(e?.right??[]).filter(e=>!(r!=null&&r.includes(e)))})},e.getCanPin=()=>e.getLeafColumns().some(e=>(e.columnDef.enablePinning??!0)&&(t.options.enableColumnPinning??t.options.enablePinning??!0)),e.getIsPinned=()=>{let n=e.getLeafColumns().map(e=>e.id),{left:r,right:i}=t.getState().columnPinning,a=n.some(e=>r?.includes(e)),o=n.some(e=>i?.includes(e));return a?`left`:o?`right`:!1},e.getPinnedIndex=()=>{var n;let r=e.getIsPinned();return r?((n=t.getState().columnPinning)==null||(n=n[r])==null?void 0:n.indexOf(e.id))??-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=E(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(e,t,n)=>{let r=[...t??[],...n??[]];return e.filter(e=>!r.includes(e.column.id))},D(t.options,`debugRows`,`getCenterVisibleCells`)),e.getLeftVisibleCells=E(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left],(e,t)=>(t??[]).map(t=>e.find(e=>e.column.id===t)).filter(Boolean).map(e=>({...e,position:`left`})),D(t.options,`debugRows`,`getLeftVisibleCells`)),e.getRightVisibleCells=E(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(e,t)=>(t??[]).map(t=>e.find(e=>e.column.id===t)).filter(Boolean).map(e=>({...e,position:`right`})),D(t.options,`debugRows`,`getRightVisibleCells`))},createTable:e=>{e.setColumnPinning=t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>e.setColumnPinning(t?F():e.initialState?.columnPinning??F()),e.getIsSomeColumnsPinned=t=>{let n=e.getState().columnPinning;return t?!!n[t]?.length:!!(n.left?.length||n.right?.length)},e.getLeftLeafColumns=E(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(e,t)=>(t??[]).map(t=>e.find(e=>e.id===t)).filter(Boolean),D(e.options,`debugColumns`,`getLeftLeafColumns`)),e.getRightLeafColumns=E(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(e,t)=>(t??[]).map(t=>e.find(e=>e.id===t)).filter(Boolean),D(e.options,`debugColumns`,`getRightLeafColumns`)),e.getCenterLeafColumns=E(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(e,t,n)=>{let r=[...t??[],...n??[]];return e.filter(e=>!r.includes(e.id))},D(e.options,`debugColumns`,`getCenterLeafColumns`))}};function dt(e){return e||(typeof document<`u`?document:null)}var I={size:150,minSize:20,maxSize:2**53-1},ft=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),pt={getDefaultColumnDef:()=>I,getInitialState:e=>({columnSizing:{},columnSizingInfo:ft(),...e}),getDefaultOptions:e=>({columnResizeMode:`onEnd`,columnResizeDirection:`ltr`,onColumnSizingChange:w(`columnSizing`,e),onColumnSizingInfoChange:w(`columnSizingInfo`,e)}),createColumn:(e,t)=>{e.getSize=()=>{let n=t.getState().columnSizing[e.id];return Math.min(Math.max(e.columnDef.minSize??I.minSize,n??e.columnDef.size??I.size),e.columnDef.maxSize??I.maxSize)},e.getStart=E(e=>[e,z(t,e),t.getState().columnSizing],(t,n)=>n.slice(0,e.getIndex(t)).reduce((e,t)=>e+t.getSize(),0),D(t.options,`debugColumns`,`getStart`)),e.getAfter=E(e=>[e,z(t,e),t.getState().columnSizing],(t,n)=>n.slice(e.getIndex(t)+1).reduce((e,t)=>e+t.getSize(),0),D(t.options,`debugColumns`,`getAfter`)),e.resetSize=()=>{t.setColumnSizing(t=>{let{[e.id]:n,...r}=t;return r})},e.getCanResize=()=>(e.columnDef.enableResizing??!0)&&(t.options.enableColumnResizing??!0),e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let t=0,n=e=>{e.subHeaders.length?e.subHeaders.forEach(n):t+=e.column.getSize()??0};return n(e),t},e.getStart=()=>{if(e.index>0){let t=e.headerGroup.headers[e.index-1];return t.getStart()+t.getSize()}return 0},e.getResizeHandler=n=>{let r=t.getColumn(e.column.id),i=r?.getCanResize();return a=>{if(!r||!i||(a.persist==null||a.persist(),R(a)&&a.touches&&a.touches.length>1))return;let o=e.getSize(),s=e?e.getLeafHeaders().map(e=>[e.column.id,e.column.getSize()]):[[r.id,r.getSize()]],c=R(a)?Math.round(a.touches[0].clientX):a.clientX,l={},u=(e,n)=>{typeof n==`number`&&(t.setColumnSizingInfo(e=>{let r=t.options.columnResizeDirection===`rtl`?-1:1,i=(n-(e?.startOffset??0))*r,a=Math.max(i/(e?.startSize??0),-.999999);return e.columnSizingStart.forEach(e=>{let[t,n]=e;l[t]=Math.round(Math.max(n+n*a,0)*100)/100}),{...e,deltaOffset:i,deltaPercentage:a}}),(t.options.columnResizeMode===`onChange`||e===`end`)&&t.setColumnSizing(e=>({...e,...l})))},d=e=>u(`move`,e),f=e=>{u(`end`,e),t.setColumnSizingInfo(e=>({...e,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},p=dt(n),m={moveHandler:e=>d(e.clientX),upHandler:e=>{p?.removeEventListener(`mousemove`,m.moveHandler),p?.removeEventListener(`mouseup`,m.upHandler),f(e.clientX)}},h={moveHandler:e=>(e.cancelable&&(e.preventDefault(),e.stopPropagation()),d(e.touches[0].clientX),!1),upHandler:e=>{p?.removeEventListener(`touchmove`,h.moveHandler),p?.removeEventListener(`touchend`,h.upHandler),e.cancelable&&(e.preventDefault(),e.stopPropagation()),f(e.touches[0]?.clientX)}},g=mt()?{passive:!1}:!1;R(a)?(p?.addEventListener(`touchmove`,h.moveHandler,g),p?.addEventListener(`touchend`,h.upHandler,g)):(p?.addEventListener(`mousemove`,m.moveHandler,g),p?.addEventListener(`mouseup`,m.upHandler,g)),t.setColumnSizingInfo(e=>({...e,startOffset:c,startSize:o,deltaOffset:0,deltaPercentage:0,columnSizingStart:s,isResizingColumn:r.id}))}}},createTable:e=>{e.setColumnSizing=t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{e.setColumnSizing(t?{}:e.initialState.columnSizing??{})},e.resetHeaderSizeInfo=t=>{e.setColumnSizingInfo(t?ft():e.initialState.columnSizingInfo??ft())},e.getTotalSize=()=>e.getHeaderGroups()[0]?.headers.reduce((e,t)=>e+t.getSize(),0)??0,e.getLeftTotalSize=()=>e.getLeftHeaderGroups()[0]?.headers.reduce((e,t)=>e+t.getSize(),0)??0,e.getCenterTotalSize=()=>e.getCenterHeaderGroups()[0]?.headers.reduce((e,t)=>e+t.getSize(),0)??0,e.getRightTotalSize=()=>e.getRightHeaderGroups()[0]?.headers.reduce((e,t)=>e+t.getSize(),0)??0}},L=null;function mt(){if(typeof L==`boolean`)return L;let e=!1;try{let t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener(`test`,n,t),window.removeEventListener(`test`,n)}catch{e=!1}return L=e,L}function R(e){return e.type===`touchstart`}var ht={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:w(`columnVisibility`,e)}),createColumn:(e,t)=>{e.toggleVisibility=n=>{e.getCanHide()&&t.setColumnVisibility(t=>({...t,[e.id]:n??!e.getIsVisible()}))},e.getIsVisible=()=>{let n=e.columns;return(n.length?n.some(e=>e.getIsVisible()):t.getState().columnVisibility?.[e.id])??!0},e.getCanHide=()=>(e.columnDef.enableHiding??!0)&&(t.options.enableHiding??!0),e.getToggleVisibilityHandler=()=>t=>{e.toggleVisibility==null||e.toggleVisibility(t.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=E(()=>[e.getAllCells(),t.getState().columnVisibility],e=>e.filter(e=>e.column.getIsVisible()),D(t.options,`debugRows`,`_getAllVisibleCells`)),e.getVisibleCells=E(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(e,t,n)=>[...e,...t,...n],D(t.options,`debugRows`,`getVisibleCells`))},createTable:e=>{let t=(t,n)=>E(()=>[n(),n().filter(e=>e.getIsVisible()).map(e=>e.id).join(`_`)],e=>e.filter(e=>e.getIsVisible==null?void 0:e.getIsVisible()),D(e.options,`debugColumns`,t));e.getVisibleFlatColumns=t(`getVisibleFlatColumns`,()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t(`getVisibleLeafColumns`,()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t(`getLeftVisibleLeafColumns`,()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t(`getRightVisibleLeafColumns`,()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t(`getCenterVisibleLeafColumns`,()=>e.getCenterLeafColumns()),e.setColumnVisibility=t=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(t),e.resetColumnVisibility=t=>{e.setColumnVisibility(t?{}:e.initialState.columnVisibility??{})},e.toggleAllColumnsVisible=t=>{t??=!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((e,n)=>({...e,[n.id]:t||!(n.getCanHide!=null&&n.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(e=>!(e.getIsVisible!=null&&e.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(e=>e.getIsVisible==null?void 0:e.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>t=>{e.toggleAllColumnsVisible(t.target?.checked)}}};function z(e,t){return t?t===`center`?e.getCenterVisibleLeafColumns():t===`left`?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}var gt={createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,`__global__`),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,`__global__`),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,`__global__`),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},_t={getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:w(`globalFilter`,e),globalFilterFn:`auto`,getColumnCanGlobalFilter:t=>{var n;let r=(n=e.getCoreRowModel().flatRows[0])==null||(n=n._getAllCellsByColumnId()[t.id])==null?void 0:n.getValue();return typeof r==`string`||typeof r==`number`}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>(e.columnDef.enableGlobalFilter??!0)&&(t.options.enableGlobalFilter??!0)&&(t.options.enableFilters??!0)&&((t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))??!0)&&!!e.accessorFn},createTable:e=>{e.getGlobalAutoFilterFn=()=>M.includesString,e.getGlobalFilterFn=()=>{let{globalFilterFn:t}=e.options;return T(t)?t:t===`auto`?e.getGlobalAutoFilterFn():e.options.filterFns?.[t]??M[t]},e.setGlobalFilter=t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},vt={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:w(`expanded`,e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;e._autoResetExpanded=()=>{if(!t){e._queue(()=>{t=!0});return}if(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},e.setExpanded=t=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(t),e.toggleAllRowsExpanded=t=>{t??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=t=>{e.setExpanded(t?{}:e.initialState?.expanded??{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(e=>e.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>t=>{t.persist==null||t.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{let t=e.getState().expanded;return t===!0||Object.values(t).some(Boolean)},e.getIsAllRowsExpanded=()=>{let t=e.getState().expanded;return typeof t==`boolean`?t===!0:!(!Object.keys(t).length||e.getRowModel().flatRows.some(e=>!e.getIsExpanded()))},e.getExpandedDepth=()=>{let t=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(e=>{let n=e.split(`.`);t=Math.max(t,n.length)}),t},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,t)=>{e.toggleExpanded=n=>{t.setExpanded(r=>{let i=r===!0?!0:!!(r!=null&&r[e.id]),a={};if(r===!0?Object.keys(t.getRowModel().rowsById).forEach(e=>{a[e]=!0}):a=r,n??=!i,!i&&n)return{...a,[e.id]:!0};if(i&&!n){let{[e.id]:t,...n}=a;return n}return r})},e.getIsExpanded=()=>{let n=t.getState().expanded;return!!((t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))??(n===!0||n?.[e.id]))},e.getCanExpand=()=>{var n;return(t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))??((t.options.enableExpanding??!0)&&!!((n=e.subRows)!=null&&n.length))},e.getIsAllParentsExpanded=()=>{let n=!0,r=e;for(;n&&r.parentId;)r=t.getRow(r.parentId,!0),n=r.getIsExpanded();return n},e.getToggleExpandedHandler=()=>{let t=e.getCanExpand();return()=>{t&&e.toggleExpanded()}}}},B=0,V=10,H=()=>({pageIndex:B,pageSize:V}),yt={getInitialState:e=>({...e,pagination:{...H(),...e?.pagination}}),getDefaultOptions:e=>({onPaginationChange:w(`pagination`,e)}),createTable:e=>{let t=!1,n=!1;e._autoResetPageIndex=()=>{if(!t){e._queue(()=>{t=!0});return}if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},e.setPagination=t=>e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(e=>C(t,e)),e.resetPagination=t=>{e.setPagination(t?H():e.initialState.pagination??H())},e.setPageIndex=t=>{e.setPagination(n=>{let r=C(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})},e.resetPageIndex=t=>{var n;e.setPageIndex(t?B:((n=e.initialState)==null||(n=n.pagination)==null?void 0:n.pageIndex)??B)},e.resetPageSize=t=>{var n;e.setPageSize(t?V:((n=e.initialState)==null||(n=n.pagination)==null?void 0:n.pageSize)??V)},e.setPageSize=t=>{e.setPagination(e=>{let n=Math.max(1,C(t,e.pageSize)),r=e.pageSize*e.pageIndex,i=Math.floor(r/n);return{...e,pageIndex:i,pageSize:n}})},e.setPageCount=t=>e.setPagination(n=>{let r=C(t,e.options.pageCount??-1);return typeof r==`number`&&(r=Math.max(-1,r)),{...n,pageCount:r}}),e.getPageOptions=E(()=>[e.getPageCount()],e=>{let t=[];return e&&e>0&&(t=[...Array(e)].fill(null).map((e,t)=>t)),t},D(e.options,`debugTable`,`getPageOptions`)),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{let{pageIndex:t}=e.getState().pagination,n=e.getPageCount();return n===-1?!0:n===0?!1:te.setPageIndex(e=>e-1),e.nextPage=()=>e.setPageIndex(e=>e+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>e.options.pageCount??Math.ceil(e.getRowCount()/e.getState().pagination.pageSize),e.getRowCount=()=>e.options.rowCount??e.getPrePaginationRowModel().rows.length}},U=()=>({top:[],bottom:[]}),bt={getInitialState:e=>({rowPinning:U(),...e}),getDefaultOptions:e=>({onRowPinningChange:w(`rowPinning`,e)}),createRow:(e,t)=>{e.pin=(n,r,i)=>{let a=r?e.getLeafRows().map(e=>{let{id:t}=e;return t}):[],o=i?e.getParentRows().map(e=>{let{id:t}=e;return t}):[],s=new Set([...o,e.id,...a]);t.setRowPinning(e=>n===`bottom`?{top:(e?.top??[]).filter(e=>!(s!=null&&s.has(e))),bottom:[...(e?.bottom??[]).filter(e=>!(s!=null&&s.has(e))),...Array.from(s)]}:n===`top`?{top:[...(e?.top??[]).filter(e=>!(s!=null&&s.has(e))),...Array.from(s)],bottom:(e?.bottom??[]).filter(e=>!(s!=null&&s.has(e)))}:{top:(e?.top??[]).filter(e=>!(s!=null&&s.has(e))),bottom:(e?.bottom??[]).filter(e=>!(s!=null&&s.has(e)))})},e.getCanPin=()=>{let{enableRowPinning:n,enablePinning:r}=t.options;return typeof n==`function`?n(e):n??r??!0},e.getIsPinned=()=>{let n=[e.id],{top:r,bottom:i}=t.getState().rowPinning,a=n.some(e=>r?.includes(e)),o=n.some(e=>i?.includes(e));return a?`top`:o?`bottom`:!1},e.getPinnedIndex=()=>{let n=e.getIsPinned();return n?((n===`top`?t.getTopRows():t.getBottomRows())?.map(e=>{let{id:t}=e;return t}))?.indexOf(e.id)??-1:-1}},createTable:e=>{e.setRowPinning=t=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>e.setRowPinning(t?U():e.initialState?.rowPinning??U()),e.getIsSomeRowsPinned=t=>{let n=e.getState().rowPinning;return t?!!n[t]?.length:!!(n.top?.length||n.bottom?.length)},e._getPinnedRows=(t,n,r)=>(e.options.keepPinnedRows??!0?(n??[]).map(t=>{let n=e.getRow(t,!0);return n.getIsAllParentsExpanded()?n:null}):(n??[]).map(e=>t.find(t=>t.id===e))).filter(Boolean).map(e=>({...e,position:r})),e.getTopRows=E(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(t,n)=>e._getPinnedRows(t,n,`top`),D(e.options,`debugRows`,`getTopRows`)),e.getBottomRows=E(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(t,n)=>e._getPinnedRows(t,n,`bottom`),D(e.options,`debugRows`,`getBottomRows`)),e.getCenterRows=E(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(e,t,n)=>{let r=new Set([...t??[],...n??[]]);return e.filter(e=>!r.has(e.id))},D(e.options,`debugRows`,`getCenterRows`))}},xt={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:w(`rowSelection`,e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>e.setRowSelection(t?{}:e.initialState.rowSelection??{}),e.toggleAllRowsSelected=t=>{e.setRowSelection(n=>{t=t===void 0?!e.getIsAllRowsSelected():t;let r={...n},i=e.getPreGroupedRowModel().flatRows;return t?i.forEach(e=>{e.getCanSelect()&&(r[e.id]=!0)}):i.forEach(e=>{delete r[e.id]}),r})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(n=>{let r=t===void 0?!e.getIsAllPageRowsSelected():t,i={...n};return e.getRowModel().rows.forEach(t=>{W(i,t.id,r,!0,e)}),i}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=E(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?G(e,n):{rows:[],flatRows:[],rowsById:{}},D(e.options,`debugTable`,`getSelectedRowModel`)),e.getFilteredSelectedRowModel=E(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?G(e,n):{rows:[],flatRows:[],rowsById:{}},D(e.options,`debugTable`,`getFilteredSelectedRowModel`)),e.getGroupedSelectedRowModel=E(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?G(e,n):{rows:[],flatRows:[],rowsById:{}},D(e.options,`debugTable`,`getGroupedSelectedRowModel`)),e.getIsAllRowsSelected=()=>{let t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState(),r=!!(t.length&&Object.keys(n).length);return r&&t.some(e=>e.getCanSelect()&&!n[e.id])&&(r=!1),r},e.getIsAllPageRowsSelected=()=>{let t=e.getPaginationRowModel().flatRows.filter(e=>e.getCanSelect()),{rowSelection:n}=e.getState(),r=!!t.length;return r&&t.some(e=>!n[e.id])&&(r=!1),r},e.getIsSomeRowsSelected=()=>{let t=Object.keys(e.getState().rowSelection??{}).length;return t>0&&t{let t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.filter(e=>e.getCanSelect()).some(e=>e.getIsSelected()||e.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(n,r)=>{let i=e.getIsSelected();t.setRowSelection(a=>{if(n=n===void 0?!i:n,e.getCanSelect()&&i===n)return a;let o={...a};return W(o,e.id,n,r?.selectChildren??!0,t),o})},e.getIsSelected=()=>{let{rowSelection:n}=t.getState();return K(e,n)},e.getIsSomeSelected=()=>{let{rowSelection:n}=t.getState();return q(e,n)===`some`},e.getIsAllSubRowsSelected=()=>{let{rowSelection:n}=t.getState();return q(e,n)===`all`},e.getCanSelect=()=>typeof t.options.enableRowSelection==`function`?t.options.enableRowSelection(e):t.options.enableRowSelection??!0,e.getCanSelectSubRows=()=>typeof t.options.enableSubRowSelection==`function`?t.options.enableSubRowSelection(e):t.options.enableSubRowSelection??!0,e.getCanMultiSelect=()=>typeof t.options.enableMultiRowSelection==`function`?t.options.enableMultiRowSelection(e):t.options.enableMultiRowSelection??!0,e.getToggleSelectedHandler=()=>{let t=e.getCanSelect();return n=>{t&&e.toggleSelected(n.target?.checked)}}}},W=(e,t,n,r,i)=>{var a;let o=i.getRow(t,!0);n?(o.getCanMultiSelect()||Object.keys(e).forEach(t=>delete e[t]),o.getCanSelect()&&(e[t]=!0)):delete e[t],r&&(a=o.subRows)!=null&&a.length&&o.getCanSelectSubRows()&&o.subRows.forEach(t=>W(e,t.id,n,r,i))};function G(e,t){let n=e.getState().rowSelection,r=[],i={},a=function(e,t){return e.map(e=>{var t;let o=K(e,n);if(o&&(r.push(e),i[e.id]=e),(t=e.subRows)!=null&&t.length&&(e={...e,subRows:a(e.subRows)}),o)return e}).filter(Boolean)};return{rows:a(t.rows),flatRows:r,rowsById:i}}function K(e,t){return t[e.id]??!1}function q(e,t,n){var r;if(!((r=e.subRows)!=null&&r.length))return!1;let i=!0,a=!1;return e.subRows.forEach(e=>{if(!(a&&!i)&&(e.getCanSelect()&&(K(e,t)?a=!0:i=!1),e.subRows&&e.subRows.length)){let n=q(e,t);n===`all`?a=!0:(n===`some`&&(a=!0),i=!1)}}),i?`all`:a?`some`:!1}var J=/([0-9]+)/gm,St=(e,t,n)=>Ot(X(e.getValue(n)).toLowerCase(),X(t.getValue(n)).toLowerCase()),Ct=(e,t,n)=>Ot(X(e.getValue(n)),X(t.getValue(n))),wt=(e,t,n)=>Y(X(e.getValue(n)).toLowerCase(),X(t.getValue(n)).toLowerCase()),Tt=(e,t,n)=>Y(X(e.getValue(n)),X(t.getValue(n))),Et=(e,t,n)=>{let r=e.getValue(n),i=t.getValue(n);return r>i?1:rY(e.getValue(n),t.getValue(n));function Y(e,t){return e===t?0:e>t?1:-1}function X(e){return typeof e==`number`?isNaN(e)||e===1/0||e===-1/0?``:String(e):typeof e==`string`?e:``}function Ot(e,t){let n=e.split(J).filter(Boolean),r=t.split(J).filter(Boolean);for(;n.length&&r.length;){let e=n.shift(),t=r.shift(),i=parseInt(e,10),a=parseInt(t,10),o=[i,a].sort();if(isNaN(o[0])){if(e>t)return 1;if(t>e)return-1;continue}if(isNaN(o[1]))return isNaN(i)?-1:1;if(i>a)return 1;if(a>i)return-1}return n.length-r.length}var Z={alphanumeric:St,alphanumericCaseSensitive:Ct,text:wt,textCaseSensitive:Tt,datetime:Et,basic:Dt},kt=[Ye,ht,lt,ut,Xe,at,gt,_t,{getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:`auto`,sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:w(`sorting`,e),isMultiSortEvent:e=>e.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{let n=t.getFilteredRowModel().flatRows.slice(10),r=!1;for(let t of n){let n=t?.getValue(e.id);if(Object.prototype.toString.call(n)===`[object Date]`)return Z.datetime;if(typeof n==`string`&&(r=!0,n.split(J).length>1))return Z.alphanumeric}return r?Z.text:Z.basic},e.getAutoSortDir=()=>typeof t.getFilteredRowModel().flatRows[0]?.getValue(e.id)==`string`?`asc`:`desc`,e.getSortingFn=()=>{if(!e)throw Error();return T(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn===`auto`?e.getAutoSortingFn():t.options.sortingFns?.[e.columnDef.sortingFn]??Z[e.columnDef.sortingFn]},e.toggleSorting=(n,r)=>{let i=e.getNextSortingOrder(),a=n!=null;t.setSorting(o=>{let s=o?.find(t=>t.id===e.id),c=o?.findIndex(t=>t.id===e.id),l=[],u,d=a?n:i===`desc`;return u=o!=null&&o.length&&e.getCanMultiSort()&&r?s?`toggle`:`add`:o!=null&&o.length&&c!==o.length-1?`replace`:s?`toggle`:`replace`,u===`toggle`&&(a||i||(u=`remove`)),u===`add`?(l=[...o,{id:e.id,desc:d}],l.splice(0,l.length-(t.options.maxMultiSortColCount??2**53-1))):l=u===`toggle`?o.map(t=>t.id===e.id?{...t,desc:d}:t):u===`remove`?o.filter(t=>t.id!==e.id):[{id:e.id,desc:d}],l})},e.getFirstSortDir=()=>e.columnDef.sortDescFirst??t.options.sortDescFirst??e.getAutoSortDir()===`desc`?`desc`:`asc`,e.getNextSortingOrder=n=>{let r=e.getFirstSortDir(),i=e.getIsSorted();return i?i!==r&&(t.options.enableSortingRemoval??!0)&&(!n||(t.options.enableMultiRemove??!0))?!1:i===`desc`?`asc`:`desc`:r},e.getCanSort=()=>(e.columnDef.enableSorting??!0)&&(t.options.enableSorting??!0)&&!!e.accessorFn,e.getCanMultiSort=()=>e.columnDef.enableMultiSort??t.options.enableMultiSort??!!e.accessorFn,e.getIsSorted=()=>{let n=t.getState().sorting?.find(t=>t.id===e.id);return n?n.desc?`desc`:`asc`:!1},e.getSortIndex=()=>t.getState().sorting?.findIndex(t=>t.id===e.id)??-1,e.clearSorting=()=>{t.setSorting(t=>t!=null&&t.length?t.filter(t=>t.id!==e.id):[])},e.getToggleSortingHandler=()=>{let n=e.getCanSort();return r=>{n&&(r.persist==null||r.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(r):!1))}}},createTable:e=>{e.setSorting=t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{e.setSorting(t?[]:e.initialState?.sorting??[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},st,vt,yt,bt,xt,pt];function At(e){let t=[...kt,...e._features??[]],n={_features:t},r=n._features.reduce((e,t)=>Object.assign(e,t.getDefaultOptions==null?void 0:t.getDefaultOptions(n)),{}),i=e=>n.options.mergeOptions?n.options.mergeOptions(r,e):{...r,...e},a={...e.initialState??{}};n._features.forEach(e=>{a=(e.getInitialState==null?void 0:e.getInitialState(a))??a});let o=[],s=!1,c={_features:t,options:{...r,...e},initialState:a,_queue:e=>{o.push(e),s||(s=!0,Promise.resolve().then(()=>{for(;o.length;)o.shift()();s=!1}).catch(e=>setTimeout(()=>{throw e})))},reset:()=>{n.setState(n.initialState)},setOptions:e=>{n.options=i(C(e,n.options))},getState:()=>n.options.state,setState:e=>{n.options.onStateChange==null||n.options.onStateChange(e)},_getRowId:(e,t,r)=>(n.options.getRowId==null?void 0:n.options.getRowId(e,t,r))??`${r?[r.id,t].join(`.`):t}`,getCoreRowModel:()=>(n._getCoreRowModel||=n.options.getCoreRowModel(n),n._getCoreRowModel()),getRowModel:()=>n.getPaginationRowModel(),getRow:(e,t)=>{let r=(t?n.getPrePaginationRowModel():n.getRowModel()).rowsById[e];if(!r&&(r=n.getCoreRowModel().rowsById[e],!r))throw Error();return r},_getDefaultColumnDef:E(()=>[n.options.defaultColumn],e=>(e??={},{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>{var t;return((t=e.renderValue())==null||t.toString==null?void 0:t.toString())??null},...n._features.reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef==null?void 0:t.getDefaultColumnDef()),{}),...e}),D(e,`debugColumns`,`_getDefaultColumnDef`)),_getColumnDefs:()=>n.options.columns,getAllColumns:E(()=>[n._getColumnDefs()],e=>{let t=function(e,r,i){return i===void 0&&(i=0),e.map(e=>{let a=qe(n,e,i,r),o=e;return a.columns=o.columns?t(o.columns,a,i+1):[],a})};return t(e)},D(e,`debugColumns`,`getAllColumns`)),getAllFlatColumns:E(()=>[n.getAllColumns()],e=>e.flatMap(e=>e.getFlatColumns()),D(e,`debugColumns`,`getAllFlatColumns`)),_getAllFlatColumnsById:E(()=>[n.getAllFlatColumns()],e=>e.reduce((e,t)=>(e[t.id]=t,e),{}),D(e,`debugColumns`,`getAllFlatColumnsById`)),getAllLeafColumns:E(()=>[n.getAllColumns(),n._getOrderColumnsFn()],(e,t)=>t(e.flatMap(e=>e.getLeafColumns())),D(e,`debugColumns`,`getAllLeafColumns`)),getColumn:e=>n._getAllFlatColumnsById()[e]};Object.assign(n,c);for(let e=0;eE(()=>[e.options.data],t=>{let n={rows:[],flatRows:[],rowsById:{}},r=function(t,i,a){i===void 0&&(i=0);let o=[];for(let c=0;ce._autoResetPageIndex()))}function Mt(){return e=>E(()=>[e.getState().expanded,e.getPreExpandedRowModel(),e.options.paginateExpandedRows],(e,t,n)=>!t.rows.length||e!==!0&&!Object.keys(e??{}).length||!n?t:Nt(t),D(e.options,`debugTable`,`getExpandedRowModel`))}function Nt(e){let t=[],n=e=>{var r;t.push(e),(r=e.subRows)!=null&&r.length&&e.getIsExpanded()&&e.subRows.forEach(n)};return e.rows.forEach(n),{rows:t,flatRows:e.flatRows,rowsById:e.rowsById}}function Pt(e,t,n){return n.options.filterFromLeafRows?Ft(e,t,n):It(e,t,n)}function Ft(e,t,n){let r=[],i={},a=n.options.maxLeafRowFilterDepth??100,o=function(e,s){s===void 0&&(s=0);let c=[];for(let u=0;uE(()=>[e.getPreFilteredRowModel(),e.getState().columnFilters,e.getState().globalFilter,e.getFilteredRowModel()],(n,r,i)=>{if(!n.rows.length||!(r!=null&&r.length)&&!i)return n;let a=[...r.map(e=>e.id).filter(e=>e!==t),i?`__global__`:void 0].filter(Boolean);return Pt(n.rows,e=>{for(let t=0;tE(()=>[e.getColumn(t)?.getFacetedRowModel()],e=>{if(!e)return new Map;let n=new Map;for(let r=0;rE(()=>[e.getPreFilteredRowModel(),e.getState().columnFilters,e.getState().globalFilter],(t,n,r)=>{if(!t.rows.length||!(n!=null&&n.length)&&!r){for(let e=0;e{let n=e.getColumn(t.id);if(!n)return;let r=n.getFilterFn();r&&i.push({id:t.id,filterFn:r,resolvedValue:(r.resolveFilterValue==null?void 0:r.resolveFilterValue(t.value))??t.value})});let o=(n??[]).map(e=>e.id),s=e.getGlobalFilterFn(),c=e.getAllLeafColumns().filter(e=>e.getCanGlobalFilter());r&&s&&c.length&&(o.push(`__global__`),c.forEach(e=>{a.push({id:e.id,filterFn:s,resolvedValue:(s.resolveFilterValue==null?void 0:s.resolveFilterValue(r))??r})}));let l,u;for(let e=0;e{n.columnFiltersMeta[t]=e})}if(a.length){for(let e=0;e{n.columnFiltersMeta[t]=e})){n.columnFilters.__global__=!0;break}}n.columnFilters.__global__!==!0&&(n.columnFilters.__global__=!1)}}return Pt(t.rows,e=>{for(let t=0;te._autoResetPageIndex()))}function Bt(e){return e=>E(()=>[e.getState().pagination,e.getPrePaginationRowModel(),e.options.paginateExpandedRows?void 0:e.getState().expanded],(t,n)=>{if(!n.rows.length)return n;let{pageSize:r,pageIndex:i}=t,{rows:a,flatRows:o,rowsById:s}=n,c=r*i,l=c+r;a=a.slice(c,l);let u;u=e.options.paginateExpandedRows?{rows:a,flatRows:o,rowsById:s}:Nt({rows:a,flatRows:o,rowsById:s}),u.flatRows=[];let d=e=>{u.flatRows.push(e),e.subRows.length&&e.subRows.forEach(d)};return u.rows.forEach(d),u},D(e.options,`debugTable`,`getPaginationRowModel`))}function Vt(){return e=>E(()=>[e.getState().sorting,e.getPreSortedRowModel()],(t,n)=>{if(!n.rows.length||!(t!=null&&t.length))return n;let r=e.getState().sorting,i=[],a=r.filter(t=>e.getColumn(t.id)?.getCanSort()),o={};a.forEach(t=>{let n=e.getColumn(t.id);n&&(o[t.id]={sortUndefined:n.columnDef.sortUndefined,invertSorting:n.columnDef.invertSorting,sortingFn:n.getSortingFn()})});let s=e=>{let t=e.map(e=>({...e}));return t.sort((e,t)=>{for(let n=0;n{var t;i.push(e),(t=e.subRows)!=null&&t.length&&(e.subRows=s(e.subRows))}),t};return{rows:s(n.rows),flatRows:i,rowsById:n.rowsById}},D(e.options,`debugTable`,`getSortedRowModel`,()=>e._autoResetPageIndex()))}function Ht(e,t){return e?Ut(e)?x.createElement(e,t):e:null}function Ut(e){return Wt(e)||typeof e==`function`||Gt(e)}function Wt(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function Gt(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function Kt(e){let t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[n]=x.useState(()=>({current:At(t)})),[r,i]=x.useState(()=>n.current.initialState);return n.current.setOptions(t=>({...t,...e,state:{...r,...e.state},onStateChange:t=>{i(t),e.onStateChange==null||e.onStateChange(t)}})),n.current}function qt({column:e,title:n,className:r}){return e.getCanSort()?(0,S.jsx)(`div`,{className:_(`flex items-center space-x-2`,r),children:(0,S.jsxs)(fe,{children:[(0,S.jsx)(oe,{asChild:!0,children:(0,S.jsxs)(v,{className:`h-8 data-[state=open]:bg-accent`,size:`sm`,variant:`ghost`,children:[(0,S.jsx)(`span`,{children:n}),(()=>{let t=e.getIsSorted();return t===`desc`?(0,S.jsx)(Re,{className:`ms-2 h-4 w-4`}):t===`asc`?(0,S.jsx)(ze,{className:`ms-2 h-4 w-4`}):(0,S.jsx)(je,{className:`ms-2 h-4 w-4`})})()]})}),(0,S.jsxs)(ue,{align:`start`,children:[(0,S.jsxs)(y,{onClick:()=>e.toggleSorting(!1),children:[(0,S.jsx)(ze,{className:`size-3.5 text-muted-foreground/70`}),te()]}),(0,S.jsxs)(y,{onClick:()=>e.toggleSorting(!0),children:[(0,S.jsx)(Re,{className:`size-3.5 text-muted-foreground/70`}),ee()]}),e.getCanHide()&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(de,{}),(0,S.jsxs)(y,{onClick:()=>e.toggleVisibility(!1),children:[(0,S.jsx)(Me,{className:`size-3.5 text-muted-foreground/70`}),t()]})]})]})]})}):(0,S.jsx)(`div`,{className:_(`px-2`,r),children:n})}function Jt({className:e,...t}){return(0,S.jsx)(`div`,{className:`relative w-full overflow-x-auto`,"data-slot":`table-container`,children:(0,S.jsx)(`table`,{className:_(`w-full caption-bottom text-sm`,e),"data-slot":`table`,...t})})}function Yt({className:e,...t}){return(0,S.jsx)(`thead`,{className:_(`[&_tr]:border-b`,e),"data-slot":`table-header`,...t})}function Xt({className:e,...t}){return(0,S.jsx)(`tbody`,{className:_(`[&_tr:last-child]:border-0`,e),"data-slot":`table-body`,...t})}function Q({className:e,...t}){return(0,S.jsx)(`tr`,{className:_(`border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted`,e),"data-slot":`table-row`,...t})}function Zt({className:e,...t}){return(0,S.jsx)(`th`,{className:_(`h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),"data-slot":`table-head`,...t})}function $({className:e,...t}){return(0,S.jsx)(`td`,{className:_(`whitespace-nowrap p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),"data-slot":`table-cell`,...t})}var Qt={switch:`h-5 w-9 rounded-full`,action:`h-8 w-8 rounded-md`,badge:`h-5 rounded-full`,id:`h-4`,date:`h-4`,short:`h-4`,long:`h-4`,amount:`h-4`};function $t({type:e=`long`}){return(0,S.jsx)(re,{className:Qt[e]})}var en=`group/row`,tn=ae(`bg-background group-hover/row:bg-muted group-data-[state=selected]/row:bg-muted`,{variants:{sticky:{left:`sticky inset-s-0 z-10`,right:`sticky inset-e-0 z-10`,none:``},shadow:{true:``,false:``},skeleton:{action:`w-8`,switch:`w-9`,badge:``,id:``,date:``,short:``,long:``,amount:``,none:``}},compoundVariants:[{sticky:`left`,shadow:!0,class:`drop-shadow-[0_1px_2px_rgb(0_0_0/_0.1)] dark:drop-shadow-[0_1px_2px_rgb(255_255_255/_0.1)]`},{sticky:`right`,shadow:!0,class:`drop-shadow-[0_-1px_2px_rgb(0_0_0/_0.1)] dark:drop-shadow-[0_-1px_2px_rgb(255_255_255/_0.1)]`}],defaultVariants:{sticky:`none`,shadow:!0,skeleton:`none`}});function nn(e){return _(`px-4`,tn({sticky:e?.sticky,shadow:e?.shadow,skeleton:e?.skeleton}),e?.className,e?.td?.className)}function rn(e){return _(tn({sticky:e?.sticky,shadow:e?.shadow,skeleton:e?.skeleton}),e?.className,e?.th?.className)}function an({table:e,loadingRows:t}){let n=e.getVisibleLeafColumns();return(0,S.jsx)(S.Fragment,{children:Array.from({length:t},(e,t)=>(0,S.jsx)(Q,{className:en,children:n.map(e=>{let t=e.columnDef.meta;return(0,S.jsx)($,{className:nn(t),children:(0,S.jsx)($t,{type:t?.skeleton??`long`})},e.id)})},`skeleton-${t}`))})}function on({table:e,renderExpandedRow:t}){return(0,S.jsx)(S.Fragment,{children:e.getRowModel().rows.map(e=>{let n=(0,S.jsx)(Q,{className:_(en,e.depth>0&&`bg-muted/40`),"data-state":e.getIsSelected()?`selected`:void 0,children:e.getVisibleCells().map(e=>{let t=e.column.columnDef.meta;return(0,S.jsx)($,{className:nn(t),children:Ht(e.column.columnDef.cell,e.getContext())},e.id)})},e.id);return t&&e.getIsExpanded()?(0,S.jsxs)(x.Fragment,{children:[n,(0,S.jsx)(Q,{children:(0,S.jsx)($,{className:`bg-background p-4`,colSpan:e.getVisibleCells().length,children:t(e)})})]},e.id):n})})}function sn({colSpan:e,text:t}){return(0,S.jsx)(Q,{children:(0,S.jsx)($,{className:`p-0`,colSpan:e,children:(0,S.jsx)(Fe,{description:t})})})}function cn({table:e,className:t,emptyText:n=`暂无数据`,loading:r=!1,loadingRows:i=10,renderExpandedRow:a}){let o=e.getVisibleLeafColumns(),s=e.getRowModel().rows,c=r||s.length>0;function l(){return r?(0,S.jsx)(an,{loadingRows:i,table:e}):s.length?(0,S.jsx)(on,{renderExpandedRow:a,table:e}):(0,S.jsx)(sn,{colSpan:o.length,text:n})}return(0,S.jsx)(`div`,{className:`overflow-x-auto rounded-md border`,children:(0,S.jsxs)(Jt,{className:t,children:[c&&(0,S.jsx)(Yt,{children:e.getHeaderGroups().map(e=>(0,S.jsx)(Q,{className:en,children:e.headers.map(e=>{let t=e.column.columnDef.meta;return(0,S.jsx)(Zt,{className:rn(t),colSpan:e.colSpan,children:e.isPlaceholder?null:Ht(e.column.columnDef.header,e.getContext())},e.id)})},e.id))}),(0,S.jsx)(Xt,{children:l()})]})})}function ln({table:e,className:t}){let n=e.getState().pagination.pageIndex+1,r=e.getPageCount(),c=ie(n,r);return(0,S.jsxs)(`div`,{className:_(`flex items-center justify-between`,`@max-2xl/content:flex-col-reverse @max-2xl/content:gap-4`,t),children:[(0,S.jsxs)(`div`,{className:`flex w-full items-center justify-between`,children:[(0,S.jsx)(`div`,{className:`flex @2xl/content:hidden w-auto items-center justify-center whitespace-nowrap font-medium text-sm`,children:o({current:n,total:r})}),(0,S.jsxs)(`div`,{className:`flex @max-2xl/content:flex-row-reverse items-center gap-2`,children:[(0,S.jsxs)(Oe,{onValueChange:t=>{e.setPageSize(Number(t))},value:`${e.getState().pagination.pageSize}`,children:[(0,S.jsx)(Te,{className:`h-8 w-17.5`,children:(0,S.jsx)(we,{placeholder:e.getState().pagination.pageSize})}),(0,S.jsx)(Ee,{side:`top`,children:[10,20,30,40,50].map(e=>(0,S.jsx)(De,{value:`${e}`,children:e},e))})]}),(0,S.jsx)(`p`,{className:`hidden font-medium text-sm sm:block`,children:s()})]})]}),(0,S.jsxs)(`div`,{className:`flex items-center sm:space-x-6 lg:space-x-8`,children:[(0,S.jsx)(`div`,{className:`flex @max-3xl/content:hidden w-auto items-center justify-center whitespace-nowrap font-medium text-sm`,children:o({current:n,total:r})}),(0,S.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,S.jsxs)(v,{className:`@max-md/content:hidden size-8 p-0`,disabled:!e.getCanPreviousPage(),onClick:()=>e.setPageIndex(0),variant:`outline`,children:[(0,S.jsx)(`span`,{className:`sr-only`,children:l()}),(0,S.jsx)(Ve,{className:`h-4 w-4`})]}),(0,S.jsxs)(v,{className:`size-8 p-0`,disabled:!e.getCanPreviousPage(),onClick:()=>e.previousPage(),variant:`outline`,children:[(0,S.jsx)(`span`,{className:`sr-only`,children:p()}),(0,S.jsx)(Be,{className:`h-4 w-4`})]}),c.map((t,r)=>(0,S.jsx)(`div`,{className:`flex items-center`,children:t===`...`?(0,S.jsx)(`span`,{className:`px-1 text-muted-foreground text-sm`,children:`...`}):(0,S.jsxs)(v,{className:`h-8 min-w-8 px-2`,onClick:()=>e.setPageIndex(t-1),variant:n===t?`default`:`outline`,children:[(0,S.jsx)(`span`,{className:`sr-only`,children:a({page:t})}),t]})},`page-${t}-${r}`)),(0,S.jsxs)(v,{className:`size-8 p-0`,disabled:!e.getCanNextPage(),onClick:()=>e.nextPage(),variant:`outline`,children:[(0,S.jsx)(`span`,{className:`sr-only`,children:i()}),(0,S.jsx)(ne,{className:`h-4 w-4`})]}),(0,S.jsxs)(v,{className:`@max-md/content:hidden size-8 p-0`,disabled:!e.getCanNextPage(),onClick:()=>e.setPageIndex(e.getPageCount()-1),variant:`outline`,children:[(0,S.jsx)(`span`,{className:`sr-only`,children:g()}),(0,S.jsx)(He,{className:`h-4 w-4`})]})]})]})]})}function un({column:t,title:n,options:r}){let i=t?.getFacetedUniqueValues(),a=new Set(t?.getFilterValue());return(0,S.jsxs)(Ce,{children:[(0,S.jsx)(Se,{asChild:!0,children:(0,S.jsxs)(v,{className:`h-8 border-dashed`,size:`sm`,variant:`outline`,children:[(0,S.jsx)(Ue,{className:`size-4`}),n,a?.size>0&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(ke,{className:`mx-2 h-4`,orientation:`vertical`}),(0,S.jsx)(Le,{className:`rounded-sm px-1 font-normal lg:hidden`,variant:`secondary`,children:a.size}),(0,S.jsx)(`div`,{className:`hidden space-x-1 lg:flex`,children:a.size>2?(0,S.jsxs)(Le,{className:`rounded-sm px-1 font-normal`,variant:`secondary`,children:[a.size,` selected`]}):r.filter(e=>a.has(e.value)).map(e=>(0,S.jsx)(Le,{className:`rounded-sm px-1 font-normal`,variant:`secondary`,children:e.label},e.value))})]})]})}),(0,S.jsx)(xe,{align:`start`,className:`w-50 p-0`,children:(0,S.jsxs)(be,{children:[(0,S.jsx)(pe,{placeholder:n}),(0,S.jsxs)(ye,{children:[(0,S.jsx)(ve,{children:e()}),(0,S.jsx)(ge,{children:r.map(e=>{let n=a.has(e.value);return(0,S.jsxs)(_e,{onSelect:()=>{n?a.delete(e.value):a.add(e.value);let r=Array.from(a);t?.setFilterValue(r.length?r:void 0)},children:[(0,S.jsx)(`div`,{className:_(`flex size-4 items-center justify-center rounded-sm border border-primary`,n?`bg-primary text-primary-foreground`:`opacity-50 [&_svg]:invisible`),children:(0,S.jsx)(Ae,{className:_(`h-4 w-4 text-background`)})}),e.icon&&(0,S.jsx)(e.icon,{className:`size-4 text-muted-foreground`}),(0,S.jsx)(`span`,{children:e.label}),i?.get(e.value)&&(0,S.jsx)(`span`,{className:`ms-auto flex h-4 w-4 items-center justify-center font-mono text-xs`,children:i.get(e.value)})]},e.value)})}),a.size>0&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(me,{}),(0,S.jsx)(ge,{children:(0,S.jsx)(_e,{className:`justify-center text-center`,onSelect:()=>t?.setFilterValue(void 0),children:`Clear filters`})})]})]})]})})]})}function dn(e){let t=e.columnDef.meta?.label;if(typeof t==`string`&&t.trim())return t;let n=e.columnDef.header;return typeof n==`string`&&n.trim()?n:e.id}function fn({table:e}){return(0,S.jsxs)(fe,{modal:!1,children:[(0,S.jsx)(le,{asChild:!0,children:(0,S.jsxs)(v,{className:`ms-auto hidden h-8 lg:flex`,size:`sm`,variant:`outline`,children:[(0,S.jsx)(Ne,{className:`size-4`}),d()]})}),(0,S.jsxs)(ue,{align:`end`,className:`w-37.5`,children:[(0,S.jsx)(ce,{children:n()}),(0,S.jsx)(de,{}),e.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>(0,S.jsx)(se,{checked:e.getIsVisible(),className:`capitalize`,onCheckedChange:t=>e.toggleVisibility(!!t),children:dn(e)},e.id))]})]})}function pn({table:e,searchPlaceholder:t=c(),searchKey:n,filters:i=[],onRefresh:a}){let o=e.getState().columnFilters.length>0||e.getState().globalFilter;return(0,S.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,S.jsxs)(`div`,{className:`flex flex-1 flex-col-reverse items-start gap-y-2 sm:flex-row sm:items-center sm:space-x-2`,children:[n?(0,S.jsx)(Ie,{className:`h-8 w-37.5 lg:w-62.5`,onChange:t=>e.getColumn(n)?.setFilterValue(t.target.value),placeholder:t,value:e.getColumn(n)?.getFilterValue()??``}):(0,S.jsx)(Ie,{className:`h-8 w-37.5 lg:w-62.5`,onChange:t=>e.setGlobalFilter(t.target.value),placeholder:t,value:e.getState().globalFilter??``}),(0,S.jsx)(`div`,{className:`flex gap-x-2`,children:i.map(t=>{let n=e.getColumn(t.columnId);return n?(0,S.jsx)(un,{column:n,options:t.options,title:t.title},t.columnId):null})}),o&&(0,S.jsxs)(v,{className:`h-8 px-2 lg:px-3`,onClick:()=>{e.resetColumnFilters(),e.setGlobalFilter(``)},variant:`ghost`,children:[r(),(0,S.jsx)(he,{className:`ms-2 h-4 w-4`})]})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a&&(0,S.jsx)(mn,{onRefresh:a}),(0,S.jsx)(fn,{table:e})]})]})}function mn({onRefresh:e}){let[t,n]=(0,x.useState)(!1);return(0,S.jsxs)(v,{className:`hidden h-8 lg:flex`,disabled:t,onClick:(0,x.useCallback)(async()=>{n(!0);try{await e()}catch{}finally{setTimeout(()=>n(!1),500)}},[e]),size:`sm`,variant:`outline`,children:[(0,S.jsx)(Pe,{className:_(`size-4`,t&&`animate-spin`)}),h()]})}export{zt as _,Jt as a,Be as b,Zt as c,qt as d,Kt as f,Rt as g,Lt as h,$t as i,Yt as l,Mt as m,ln as n,Xt as o,jt as p,cn as r,$ as s,pn as t,Q as u,Bt as v,Vt as y}; \ No newline at end of file diff --git a/src/www/assets/display-CkSSrdk4.js b/src/www/assets/display-CkSSrdk4.js new file mode 100644 index 0000000..f2a60fe --- /dev/null +++ b/src/www/assets/display-CkSSrdk4.js @@ -0,0 +1 @@ +import{B as e,F as t,G as n,H as r,I as i,K as a,L as o,R as s,U as c,V as l,W as u,nu as d,z as f}from"./messages-BovT1T-w.js";import{t as p}from"./button-DJA4fnJ8.js";import{t as m}from"./checkbox-B_Isethe.js";import{c as h,i as g,s as _}from"./zod-Cymc5bS-.js";import{a as v,c as y,i as b,l as x,n as S,o as C,r as w,s as T,t as E}from"./form-DdHiBYMe.js";import{t as D}from"./page-header-BBJ9dE3-.js";import{t as O}from"./show-submitted-data-l0RlCwTX.js";var k=d(),A=[{id:`recents`,label:u()},{id:`home`,label:c()},{id:`applications`,label:r()},{id:`desktop`,label:l()},{id:`downloads`,label:e()},{id:`documents`,label:f()}],j=_({items:g(h()).refine(e=>e.some(e=>e),{message:s()})}),M={items:[`recents`,`home`]};function N(){let e=x({resolver:y(j),defaultValues:M});return(0,k.jsx)(E,{...e,children:(0,k.jsxs)(`form`,{className:`space-y-8`,onSubmit:e.handleSubmit(e=>O(e)),children:[(0,k.jsx)(b,{control:e.control,name:`items`,render:()=>(0,k.jsxs)(v,{children:[(0,k.jsxs)(`div`,{className:`mb-4`,children:[(0,k.jsx)(C,{className:`text-base`,children:o()}),(0,k.jsx)(w,{children:i()})]}),A.map(t=>(0,k.jsx)(b,{control:e.control,name:`items`,render:({field:e})=>(0,k.jsxs)(v,{className:`flex flex-row items-start`,children:[(0,k.jsx)(S,{children:(0,k.jsx)(m,{checked:e.value?.includes(t.id),onCheckedChange:n=>n?e.onChange([...e.value,t.id]):e.onChange(e.value?.filter(e=>e!==t.id))})}),(0,k.jsx)(C,{className:`font-normal`,children:t.label})]},t.id)},t.id)),(0,k.jsx)(T,{})]})}),(0,k.jsx)(p,{type:`submit`,children:t()})]})})}function P(){return(0,k.jsx)(D,{description:n(),title:a(),variant:`section`,children:(0,k.jsx)(N,{})})}var F=P;export{F as component}; \ No newline at end of file diff --git a/src/www/assets/dist-15n4mVGL.js b/src/www/assets/dist-15n4mVGL.js new file mode 100644 index 0000000..163813e --- /dev/null +++ b/src/www/assets/dist-15n4mVGL.js @@ -0,0 +1 @@ +import{iu as e,nu as t,ou as n,ru as r}from"./messages-BovT1T-w.js";import{c as i}from"./button-DJA4fnJ8.js";var a=e((e=>{var t=r();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=a()})),s=n(r(),1),c=n(o(),1),l=t(),u=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=i(`Primitive.${t}`),r=s.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,l.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function d(e,t){e&&c.flushSync(()=>e.dispatchEvent(t))}export{d as n,o as r,u as t}; \ No newline at end of file diff --git a/src/www/assets/dist-BEDXr2LC.js b/src/www/assets/dist-BEDXr2LC.js new file mode 100644 index 0000000..dd0d69f --- /dev/null +++ b/src/www/assets/dist-BEDXr2LC.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{r}from"./dist-DG5UMlBd.js";var i=t(n(),1),a=i.useId||(()=>void 0),o=0;function s(e){let[t,n]=i.useState(a());return r(()=>{e||n(e=>e??String(o++))},[e]),e||(t?`radix-${t}`:``)}var c=e(),l=i.createContext(void 0),u=e=>{let{dir:t,children:n}=e;return(0,c.jsx)(l.Provider,{value:t,children:n})};function d(e){let t=i.useContext(l);return e||t||`ltr`}function f(e){let t=i.useRef(e);return i.useEffect(()=>{t.current=e}),i.useMemo(()=>(...e)=>t.current?.(...e),[])}export{s as i,u as n,d as r,f as t}; \ No newline at end of file diff --git a/src/www/assets/dist-BKfJQFVD.js b/src/www/assets/dist-BKfJQFVD.js new file mode 100644 index 0000000..9057b23 --- /dev/null +++ b/src/www/assets/dist-BKfJQFVD.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{n as r,r as i,t as a}from"./dist-15n4mVGL.js";import{d as o}from"./button-DJA4fnJ8.js";import{i as s,o as c,r as l,t as u}from"./dist-DG5UMlBd.js";import{t as d}from"./dist-BEDXr2LC.js";var f=t(n(),1);function p(e,t=globalThis?.document){let n=d(e);f.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var m=e(),h=`DismissableLayer`,g=`dismissableLayer.update`,_=`dismissableLayer.pointerDownOutside`,v=`dismissableLayer.focusOutside`,y,b=f.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),x=f.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:c,onInteractOutside:l,onDismiss:u,...d}=e,h=f.useContext(b),[_,v]=f.useState(null),x=_?.ownerDocument??globalThis?.document,[,S]=f.useState({}),C=o(t,e=>v(e)),D=Array.from(h.layers),[O]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),k=D.indexOf(O),A=_?D.indexOf(_):-1,j=h.layersWithOutsidePointerEventsDisabled.size>0,M=A>=k,N=w(e=>{let t=e.target,n=[...h.branches].some(e=>e.contains(t));!M||n||(i?.(e),l?.(e),e.defaultPrevented||u?.())},x),P=T(e=>{let t=e.target;[...h.branches].some(e=>e.contains(t))||(c?.(e),l?.(e),e.defaultPrevented||u?.())},x);return p(e=>{A===h.layers.size-1&&(r?.(e),!e.defaultPrevented&&u&&(e.preventDefault(),u()))},x),f.useEffect(()=>{if(_)return n&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(y=x.body.style.pointerEvents,x.body.style.pointerEvents=`none`),h.layersWithOutsidePointerEventsDisabled.add(_)),h.layers.add(_),E(),()=>{n&&h.layersWithOutsidePointerEventsDisabled.size===1&&(x.body.style.pointerEvents=y)}},[_,x,n,h]),f.useEffect(()=>()=>{_&&(h.layers.delete(_),h.layersWithOutsidePointerEventsDisabled.delete(_),E())},[_,h]),f.useEffect(()=>{let e=()=>S({});return document.addEventListener(g,e),()=>document.removeEventListener(g,e)},[]),(0,m.jsx)(a.div,{...d,ref:C,style:{pointerEvents:j?M?`auto`:`none`:void 0,...e.style},onFocusCapture:s(e.onFocusCapture,P.onFocusCapture),onBlurCapture:s(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:s(e.onPointerDownCapture,N.onPointerDownCapture)})});x.displayName=h;var S=`DismissableLayerBranch`,C=f.forwardRef((e,t)=>{let n=f.useContext(b),r=f.useRef(null),i=o(t,r);return f.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,m.jsx)(a.div,{...e,ref:i})});C.displayName=S;function w(e,t=globalThis?.document){let n=d(e),r=f.useRef(!1),i=f.useRef(()=>{});return f.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){D(_,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function T(e,t=globalThis?.document){let n=d(e),r=f.useRef(!1);return f.useEffect(()=>{let e=e=>{e.target&&!r.current&&D(v,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function E(){let e=new CustomEvent(g);document.dispatchEvent(e)}function D(e,t,n,{discrete:i}){let a=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&a.addEventListener(e,t,{once:!0}),i?r(a,o):a.dispatchEvent(o)}var O=t(i(),1),k=`Portal`,A=f.forwardRef((e,t)=>{let{container:n,...r}=e,[i,o]=f.useState(!1);l(()=>o(!0),[]);let s=n||i&&globalThis?.document?.body;return s?O.createPortal((0,m.jsx)(a.div,{...r,ref:t}),s):null});A.displayName=k;var j=[`top`,`right`,`bottom`,`left`],M=Math.min,N=Math.max,P=Math.round,F=Math.floor,I=e=>({x:e,y:e}),ee={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function L(e,t,n){return N(e,M(t,n))}function R(e,t){return typeof e==`function`?e(t):e}function z(e){return e.split(`-`)[0]}function B(e){return e.split(`-`)[1]}function V(e){return e===`x`?`y`:`x`}function te(e){return e===`y`?`height`:`width`}function H(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function ne(e){return V(H(e))}function re(e,t,n){n===void 0&&(n=!1);let r=B(e),i=ne(e),a=te(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=fe(o)),[o,fe(o)]}function ie(e){let t=fe(e);return[ae(e),t,ae(t)]}function ae(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var oe=[`left`,`right`],se=[`right`,`left`],ce=[`top`,`bottom`],le=[`bottom`,`top`];function ue(e,t,n){switch(e){case`top`:case`bottom`:return n?t?se:oe:t?oe:se;case`left`:case`right`:return t?ce:le;default:return[]}}function de(e,t,n,r){let i=B(e),a=ue(z(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(ae)))),a}function fe(e){let t=z(e);return ee[t]+e.slice(t.length)}function pe(e){return{top:0,right:0,bottom:0,left:0,...e}}function me(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:pe(e)}function he(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function ge(e,t,n){let{reference:r,floating:i}=e,a=H(t),o=ne(t),s=te(o),c=z(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(B(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function _e(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=R(t,e),p=me(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=he(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=he(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var ve=50,ye=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:_e},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=ge(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=R(e,t)||{};if(l==null)return{};let d=me(u),f={x:n,y:r},p=ne(i),m=te(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=M(d[_],T),D=M(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=L(O,A,k),N=!c.arrow&&B(i)!=null&&A!==j&&a.reference[m]/2-(Ae<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==H(t))||T.every(e=>H(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=H(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function Se(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ce(e){return j.some(t=>e[t]>=0)}var we=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=R(e,t);switch(i){case`referenceHidden`:{let e=Se(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Ce(e)}}}case`escaped`:{let e=Se(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Ce(e)}}}default:return{}}}}},Te=new Set([`left`,`top`]);async function Ee(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=z(n),s=B(n),c=H(n)===`y`,l=Te.has(o)?-1:1,u=a&&c?-1:1,d=R(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var De=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Ee(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Oe=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=R(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=H(z(i)),p=V(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=L(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=L(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},ke=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=R(e,t),u={x:n,y:r},d=H(i),f=V(d),p=u[f],m=u[d],h=R(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=Te.has(z(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Ae=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=R(e,t),u=await o.detectOverflow(t,l),d=z(i),f=B(i),p=H(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=M(h-u[g],v),x=M(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=N(u.left,0),t=N(u.right,0),n=N(u.top,0),r=N(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:N(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:N(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function je(){return typeof window<`u`}function U(e){return Me(e)?(e.nodeName||``).toLowerCase():`#document`}function W(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function G(e){return((Me(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Me(e){return je()?e instanceof Node||e instanceof W(e).Node:!1}function K(e){return je()?e instanceof Element||e instanceof W(e).Element:!1}function q(e){return je()?e instanceof HTMLElement||e instanceof W(e).HTMLElement:!1}function Ne(e){return!je()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof W(e).ShadowRoot}function Pe(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=X(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Fe(e){return/^(table|td|th)$/.test(U(e))}function Ie(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Le=/transform|translate|scale|rotate|perspective|filter/,Re=/paint|layout|strict|content/,J=e=>!!e&&e!==`none`,ze;function Be(e){let t=K(e)?X(e):e;return J(t.transform)||J(t.translate)||J(t.scale)||J(t.rotate)||J(t.perspective)||!He()&&(J(t.backdropFilter)||J(t.filter))||Le.test(t.willChange||``)||Re.test(t.contain||``)}function Ve(e){let t=Z(e);for(;q(t)&&!Y(t);){if(Be(t))return t;if(Ie(t))return null;t=Z(t)}return null}function He(){return ze??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),ze}function Y(e){return/^(html|body|#document)$/.test(U(e))}function X(e){return W(e).getComputedStyle(e)}function Ue(e){return K(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Z(e){if(U(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Ne(e)&&e.host||G(e);return Ne(t)?t.host:t}function We(e){let t=Z(e);return Y(t)?e.ownerDocument?e.ownerDocument.body:e.body:q(t)&&Pe(t)?t:We(t)}function Ge(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=We(e),i=r===e.ownerDocument?.body,a=W(r);if(i){let e=Ke(a);return t.concat(a,a.visualViewport||[],Pe(r)?r:[],e&&n?Ge(e):[])}else return t.concat(r,Ge(r,[],n))}function Ke(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function qe(e){let t=X(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=q(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=P(n)!==a||P(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Je(e){return K(e)?e:e.contextElement}function Q(e){let t=Je(e);if(!q(t))return I(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=qe(t),o=(a?P(n.width):n.width)/r,s=(a?P(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Ye=I(0);function Xe(e){let t=W(e);return!He()||!t.visualViewport?Ye:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ze(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==W(e)?!1:t}function $(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Je(e),o=I(1);t&&(r?K(r)&&(o=Q(r)):o=Q(e));let s=Ze(a,n,r)?Xe(a):I(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=W(a),t=r&&K(r)?W(r):r,n=e,i=Ke(n);for(;i&&r&&t!==n;){let e=Q(i),t=i.getBoundingClientRect(),r=X(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=W(i),i=Ke(n)}}return he({width:u,height:d,x:c,y:l})}function Qe(e,t){let n=Ue(e).scrollLeft;return t?t.left+n:$(G(e)).left+n}function $e(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Qe(e,n),y:n.top+t.scrollTop}}function et(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=G(r),s=t?Ie(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=I(1),u=I(0),d=q(r);if((d||!d&&!a)&&((U(r)!==`body`||Pe(o))&&(c=Ue(r)),d)){let e=$(r);l=Q(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?$e(o,c):I(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function tt(e){return Array.from(e.getClientRects())}function nt(e){let t=G(e),n=Ue(e),r=e.ownerDocument.body,i=N(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=N(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+Qe(e),s=-n.scrollTop;return X(r).direction===`rtl`&&(o+=N(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var rt=25;function it(e,t){let n=W(e),r=G(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=He();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=Qe(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=rt&&(a-=o)}else l<=rt&&(a+=l);return{width:a,height:o,x:s,y:c}}function at(e,t){let n=$(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=q(e)?Q(e):I(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function ot(e,t,n){let r;if(t===`viewport`)r=it(e,n);else if(t===`document`)r=nt(G(e));else if(K(t))r=at(t,n);else{let n=Xe(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return he(r)}function st(e,t){let n=Z(e);return n===t||!K(n)||Y(n)?!1:X(n).position===`fixed`||st(n,t)}function ct(e,t){let n=t.get(e);if(n)return n;let r=Ge(e,[],!1).filter(e=>K(e)&&U(e)!==`body`),i=null,a=X(e).position===`fixed`,o=a?Z(e):e;for(;K(o)&&!Y(o);){let t=X(o),n=Be(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Pe(o)&&!n&&st(e,o))?r=r.filter(e=>e!==o):i=t,o=Z(o)}return t.set(e,r),r}function lt(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Ie(t)?[]:ct(t,this._c):[].concat(n),r],o=ot(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{o(!1,1e-7)},1e3)}n===1&&!vt(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function bt(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Je(e),u=i||a?[...l?Ge(l):[],...t?Ge(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?yt(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?$(e):null;c&&g();function g(){let t=$(e);h&&!vt(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var xt=De,St=Oe,Ct=xe,wt=Ae,Tt=we,Et=be,Dt=ke,Ot=(e,t,n)=>{let r=new Map,i={platform:_t,...n},a={...i.platform,_c:r};return ye(e,t,{...i,platform:a})},kt=typeof document<`u`?f.useLayoutEffect:function(){};function At(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!At(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!At(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function jt(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Mt(e,t){let n=jt(e);return Math.round(t*n)/n}function Nt(e){let t=f.useRef(e);return kt(()=>{t.current=e}),t}function Pt(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=f.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=f.useState(r);At(p,r)||m(r);let[h,g]=f.useState(null),[_,v]=f.useState(null),y=f.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),b=f.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||h,S=o||_,C=f.useRef(null),w=f.useRef(null),T=f.useRef(u),E=c!=null,D=Nt(c),k=Nt(i),A=Nt(l),j=f.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};k.current&&(e.platform=k.current),Ot(C.current,w.current,e).then(e=>{let t={...e,isPositioned:A.current!==!1};M.current&&!At(T.current,t)&&(T.current=t,O.flushSync(()=>{d(t)}))})},[p,t,n,k,A]);kt(()=>{l===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let M=f.useRef(!1);kt(()=>(M.current=!0,()=>{M.current=!1}),[]),kt(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(D.current)return D.current(x,S,j);j()}},[x,S,j,D,E]);let N=f.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),P=f.useMemo(()=>({reference:x,floating:S}),[x,S]),F=f.useMemo(()=>{let e={position:n,left:0,top:0};if(!P.floating)return e;let t=Mt(P.floating,u.x),r=Mt(P.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...jt(P.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,P.floating,u.x,u.y]);return f.useMemo(()=>({...u,update:j,refs:N,elements:P,floatingStyles:F}),[u,j,N,P,F])}var Ft=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Et({element:r.current,padding:i}).fn(n):r?Et({element:r,padding:i}).fn(n):{}}}},It=(e,t)=>{let n=xt(e);return{name:n.name,fn:n.fn,options:[e,t]}},Lt=(e,t)=>{let n=St(e);return{name:n.name,fn:n.fn,options:[e,t]}},Rt=(e,t)=>({fn:Dt(e).fn,options:[e,t]}),zt=(e,t)=>{let n=Ct(e);return{name:n.name,fn:n.fn,options:[e,t]}},Bt=(e,t)=>{let n=wt(e);return{name:n.name,fn:n.fn,options:[e,t]}},Vt=(e,t)=>{let n=Tt(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ht=(e,t)=>{let n=Ft(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ut=`Arrow`,Wt=f.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...o}=e;return(0,m.jsx)(a.svg,{...o,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,m.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});Wt.displayName=Ut;var Gt=Wt,Kt=`Popper`,[qt,Jt]=c(Kt),[Yt,Xt]=qt(Kt),Zt=e=>{let{__scopePopper:t,children:n}=e,[r,i]=f.useState(null);return(0,m.jsx)(Yt,{scope:t,anchor:r,onAnchorChange:i,children:n})};Zt.displayName=Kt;var Qt=`PopperAnchor`,$t=f.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,s=Xt(Qt,n),c=f.useRef(null),l=o(t,c),u=f.useRef(null);return f.useEffect(()=>{let e=u.current;u.current=r?.current||c.current,e!==u.current&&s.onAnchorChange(u.current)}),r?null:(0,m.jsx)(a.div,{...i,ref:l})});$t.displayName=Qt;var en=`PopperContent`,[tn,nn]=qt(en),rn=f.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:s=`center`,alignOffset:c=0,arrowPadding:p=0,avoidCollisions:h=!0,collisionBoundary:g=[],collisionPadding:_=0,sticky:v=`partial`,hideWhenDetached:y=!1,updatePositionStrategy:b=`optimized`,onPlaced:x,...S}=e,C=Xt(en,n),[w,T]=f.useState(null),E=o(t,e=>T(e)),[D,O]=f.useState(null),k=u(D),A=k?.width??0,j=k?.height??0,M=r+(s===`center`?``:`-`+s),N=typeof _==`number`?_:{top:0,right:0,bottom:0,left:0,..._},P=Array.isArray(g)?g:[g],F=P.length>0,I={padding:N,boundary:P.filter(cn),altBoundary:F},{refs:ee,floatingStyles:L,placement:R,isPositioned:z,middlewareData:B}=Pt({strategy:`fixed`,placement:M,whileElementsMounted:(...e)=>bt(...e,{animationFrame:b===`always`}),elements:{reference:C.anchor},middleware:[It({mainAxis:i+j,alignmentAxis:c}),h&&Lt({mainAxis:!0,crossAxis:!1,limiter:v===`partial`?Rt():void 0,...I}),h&&zt({...I}),Bt({...I,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),D&&Ht({element:D,padding:p}),ln({arrowWidth:A,arrowHeight:j}),y&&Vt({strategy:`referenceHidden`,...I})]}),[V,te]=un(R),H=d(x);l(()=>{z&&H?.()},[z,H]);let ne=B.arrow?.x,re=B.arrow?.y,ie=B.arrow?.centerOffset!==0,[ae,oe]=f.useState();return l(()=>{w&&oe(window.getComputedStyle(w).zIndex)},[w]),(0,m.jsx)(`div`,{ref:ee.setFloating,"data-radix-popper-content-wrapper":``,style:{...L,transform:z?L.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ae,"--radix-popper-transform-origin":[B.transformOrigin?.x,B.transformOrigin?.y].join(` `),...B.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,m.jsx)(tn,{scope:n,placedSide:V,onArrowChange:O,arrowX:ne,arrowY:re,shouldHideArrow:ie,children:(0,m.jsx)(a.div,{"data-side":V,"data-align":te,...S,ref:E,style:{...S.style,animation:z?void 0:`none`}})})})});rn.displayName=en;var an=`PopperArrow`,on={top:`bottom`,right:`left`,bottom:`top`,left:`right`},sn=f.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=nn(an,n),a=on[i.placedSide];return(0,m.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,m.jsx)(Gt,{...r,ref:t,style:{...r.style,display:`block`}})})});sn.displayName=an;function cn(e){return e!==null}var ln=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=un(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function un(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var dn=Zt,fn=$t,pn=rn,mn=sn;export{Jt as a,dn as i,mn as n,A as o,pn as r,x as s,fn as t}; \ No newline at end of file diff --git a/src/www/assets/dist-CGm-FpWw.js b/src/www/assets/dist-CGm-FpWw.js new file mode 100644 index 0000000..7983294 --- /dev/null +++ b/src/www/assets/dist-CGm-FpWw.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";var n=e(t(),1);function r(e){let t=n.useRef({value:e,previous:e});return n.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}export{r as t}; \ No newline at end of file diff --git a/src/www/assets/dist-Cp1lAGZy.js b/src/www/assets/dist-Cp1lAGZy.js new file mode 100644 index 0000000..c82a624 --- /dev/null +++ b/src/www/assets/dist-Cp1lAGZy.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{d as n}from"./button-DJA4fnJ8.js";import{r}from"./dist-DG5UMlBd.js";var i=e(t(),1);function a(e,t){return i.useReducer((e,n)=>t[e][n]??e,e)}var o=e=>{let{present:t,children:r}=e,a=s(t),o=typeof r==`function`?r({present:a.isPresent}):i.Children.only(r),c=n(a.ref,l(o));return typeof r==`function`||a.isPresent?i.cloneElement(o,{ref:c}):null};o.displayName=`Presence`;function s(e){let[t,n]=i.useState(),o=i.useRef(null),s=i.useRef(e),l=i.useRef(`none`),[u,d]=a(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return i.useEffect(()=>{let e=c(o.current);l.current=u===`mounted`?e:`none`},[u]),r(()=>{let t=o.current,n=s.current;if(n!==e){let r=l.current,i=c(t);e?d(`MOUNT`):i===`none`||t?.display===`none`?d(`UNMOUNT`):d(n&&r!==i?`ANIMATION_OUT`:`UNMOUNT`),s.current=e}},[e,d]),r(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,r=r=>{let i=c(o.current).includes(CSS.escape(r.animationName));if(r.target===t&&i&&(d(`ANIMATION_END`),!s.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},i=e=>{e.target===t&&(l.current=c(o.current))};return t.addEventListener(`animationstart`,i),t.addEventListener(`animationcancel`,r),t.addEventListener(`animationend`,r),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,i),t.removeEventListener(`animationcancel`,r),t.removeEventListener(`animationend`,r)}}else d(`ANIMATION_END`)},[t,d]),{isPresent:[`mounted`,`unmountSuspended`].includes(u),ref:i.useCallback(e=>{o.current=e?getComputedStyle(e):null,n(e)},[])}}function c(e){return e?.animationName||`none`}function l(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}export{o as t}; \ No newline at end of file diff --git a/src/www/assets/dist-D21KDGR3.js b/src/www/assets/dist-D21KDGR3.js new file mode 100644 index 0000000..2f6f044 --- /dev/null +++ b/src/www/assets/dist-D21KDGR3.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{c as i,d as a}from"./button-DJA4fnJ8.js";import{i as o,n as s,o as c}from"./dist-DG5UMlBd.js";import{i as l,r as u,t as d}from"./dist-BEDXr2LC.js";var f=t(n(),1),p=e();function m(e){let t=e+`CollectionProvider`,[n,r]=c(t),[o,s]=n(t,{collectionRef:{current:null},itemMap:new Map}),l=e=>{let{scope:t,children:n}=e,r=f.useRef(null),i=f.useRef(new Map).current;return(0,p.jsx)(o,{scope:t,itemMap:i,collectionRef:r,children:n})};l.displayName=t;let u=e+`CollectionSlot`,d=i(u),m=f.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,p.jsx)(d,{ref:a(t,s(u,n).collectionRef),children:r})});m.displayName=u;let h=e+`CollectionItemSlot`,g=`data-radix-collection-item`,_=i(h),v=f.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=f.useRef(null),c=a(t,o),l=s(h,n);return f.useEffect(()=>(l.itemMap.set(o,{ref:o,...i}),()=>void l.itemMap.delete(o))),(0,p.jsx)(_,{[g]:``,ref:c,children:r})});v.displayName=h;function y(t){let n=s(e+`CollectionConsumer`,t);return f.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${g}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:l,Slot:m,ItemSlot:v},y,r]}var h=`rovingFocusGroup.onEntryFocus`,g={bubbles:!1,cancelable:!0},_=`RovingFocusGroup`,[v,y,b]=m(_),[x,S]=c(_,[b]),[C,w]=x(_),T=f.forwardRef((e,t)=>(0,p.jsx)(v.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,p.jsx)(v.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,p.jsx)(E,{...e,ref:t})})}));T.displayName=_;var E=f.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:i,loop:c=!1,dir:l,currentTabStopId:m,defaultCurrentTabStopId:v,onCurrentTabStopIdChange:b,onEntryFocus:x,preventScrollOnEntryFocus:S=!1,...w}=e,T=f.useRef(null),E=a(t,T),D=u(l),[O,k]=s({prop:m,defaultProp:v??null,onChange:b,caller:_}),[A,j]=f.useState(!1),N=d(x),P=y(n),F=f.useRef(!1),[I,L]=f.useState(0);return f.useEffect(()=>{let e=T.current;if(e)return e.addEventListener(h,N),()=>e.removeEventListener(h,N)},[N]),(0,p.jsx)(C,{scope:n,orientation:i,dir:D,loop:c,currentTabStopId:O,onItemFocus:f.useCallback(e=>k(e),[k]),onItemShiftTab:f.useCallback(()=>j(!0),[]),onFocusableItemAdd:f.useCallback(()=>L(e=>e+1),[]),onFocusableItemRemove:f.useCallback(()=>L(e=>e-1),[]),children:(0,p.jsx)(r.div,{tabIndex:A||I===0?-1:0,"data-orientation":i,...w,ref:E,style:{outline:`none`,...e.style},onMouseDown:o(e.onMouseDown,()=>{F.current=!0}),onFocus:o(e.onFocus,e=>{let t=!F.current;if(e.target===e.currentTarget&&t&&!A){let t=new CustomEvent(h,g);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=P().filter(e=>e.focusable);M([e.find(e=>e.active),e.find(e=>e.id===O),...e].filter(Boolean).map(e=>e.ref.current),S)}}F.current=!1}),onBlur:o(e.onBlur,()=>j(!1))})})}),D=`RovingFocusGroupItem`,O=f.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:i=!0,active:a=!1,tabStopId:s,children:c,...u}=e,d=l(),m=s||d,h=w(D,n),g=h.currentTabStopId===m,_=y(n),{onFocusableItemAdd:b,onFocusableItemRemove:x,currentTabStopId:S}=h;return f.useEffect(()=>{if(i)return b(),()=>x()},[i,b,x]),(0,p.jsx)(v.ItemSlot,{scope:n,id:m,focusable:i,active:a,children:(0,p.jsx)(r.span,{tabIndex:g?0:-1,"data-orientation":h.orientation,...u,ref:t,onMouseDown:o(e.onMouseDown,e=>{i?h.onItemFocus(m):e.preventDefault()}),onFocus:o(e.onFocus,()=>h.onItemFocus(m)),onKeyDown:o(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){h.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=j(e,h.orientation,h.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=_().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=h.loop?N(n,r+1):n.slice(r+1)}setTimeout(()=>M(n))}}),children:typeof c==`function`?c({isCurrentTabStop:g,hasTabStop:S!=null}):c})})});O.displayName=D;var k={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function A(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function j(e,t,n){let r=A(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return k[r]}function M(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function N(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var P=T,F=O;export{m as i,P as n,S as r,F as t}; \ No newline at end of file diff --git a/src/www/assets/dist-DG5UMlBd.js b/src/www/assets/dist-DG5UMlBd.js new file mode 100644 index 0000000..b2b02b5 --- /dev/null +++ b/src/www/assets/dist-DG5UMlBd.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";var r=t(n(),1),i=e();function a(e,t){let n=r.createContext(t),a=e=>{let{children:t,...a}=e,o=r.useMemo(()=>a,Object.values(a));return(0,i.jsx)(n.Provider,{value:o,children:t})};a.displayName=e+`Provider`;function o(i){let a=r.useContext(n);if(a)return a;if(t!==void 0)return t;throw Error(`\`${i}\` must be used within \`${e}\``)}return[a,o]}function o(e,t=[]){let n=[];function a(t,a){let o=r.createContext(a),s=n.length;n=[...n,a];let c=t=>{let{scope:n,children:a,...c}=t,l=n?.[e]?.[s]||o,u=r.useMemo(()=>c,Object.values(c));return(0,i.jsx)(l.Provider,{value:u,children:a})};c.displayName=t+`Provider`;function l(n,i){let c=i?.[e]?.[s]||o,l=r.useContext(c);if(l)return l;if(a!==void 0)return a;throw Error(`\`${n}\` must be used within \`${t}\``)}return[c,l]}let o=()=>{let t=n.map(e=>r.createContext(e));return function(n){let i=n?.[e]||t;return r.useMemo(()=>({[`__scope${e}`]:{...n,[e]:i}}),[n,i])}};return o.scopeName=e,[a,s(o,...t)]}function s(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let i=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return r.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}typeof window<`u`&&window.document&&window.document.createElement;function c(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}var l=globalThis?.document?r.useLayoutEffect:()=>{},u=r.useInsertionEffect||l;function d({prop:e,defaultProp:t,onChange:n=()=>{},caller:i}){let[a,o,s]=f({defaultProp:t,onChange:n}),c=e!==void 0,l=c?e:a;{let t=r.useRef(e!==void 0);r.useEffect(()=>{let e=t.current;e!==c&&console.warn(`${i} is changing from ${e?`controlled`:`uncontrolled`} to ${c?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=c},[c,i])}return[l,r.useCallback(t=>{if(c){let n=p(t)?t(e):t;n!==e&&s.current?.(n)}else o(t)},[c,e,o,s])]}function f({defaultProp:e,onChange:t}){let[n,i]=r.useState(e),a=r.useRef(n),o=r.useRef(t);return u(()=>{o.current=t},[t]),r.useEffect(()=>{a.current!==n&&(o.current?.(n),a.current=n)},[n,a]),[n,i,o]}function p(e){return typeof e==`function`}function m(e){let[t,n]=r.useState(void 0);return l(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}export{a,c as i,d as n,o,l as r,m as t}; \ No newline at end of file diff --git a/src/www/assets/dist-DlZiaY1y.js b/src/www/assets/dist-DlZiaY1y.js new file mode 100644 index 0000000..fc2e771 --- /dev/null +++ b/src/www/assets/dist-DlZiaY1y.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{d as i}from"./button-DJA4fnJ8.js";import{i as a,n as o,o as s,t as c}from"./dist-DG5UMlBd.js";import{n as l,r as u,t as d}from"./dist-D21KDGR3.js";import{t as f}from"./dist-Cp1lAGZy.js";import{r as p}from"./dist-BEDXr2LC.js";import{t as m}from"./dist-CGm-FpWw.js";var h=t(n(),1),g=e(),_=`Radio`,[v,y]=s(_),[b,x]=v(_),S=h.forwardRef((e,t)=>{let{__scopeRadio:n,name:o,checked:s=!1,required:c,disabled:l,value:u=`on`,onCheck:d,form:f,...p}=e,[m,_]=h.useState(null),v=i(t,e=>_(e)),y=h.useRef(!1),x=m?f||!!m.closest(`form`):!0;return(0,g.jsxs)(b,{scope:n,checked:s,disabled:l,children:[(0,g.jsx)(r.button,{type:`button`,role:`radio`,"aria-checked":s,"data-state":D(s),"data-disabled":l?``:void 0,disabled:l,value:u,...p,ref:v,onClick:a(e.onClick,e=>{s||d?.(),x&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())})}),x&&(0,g.jsx)(E,{control:m,bubbles:!y.current,name:o,value:u,checked:s,required:c,disabled:l,form:f,style:{transform:`translateX(-100%)`}})]})});S.displayName=_;var C=`RadioIndicator`,w=h.forwardRef((e,t)=>{let{__scopeRadio:n,forceMount:i,...a}=e,o=x(C,n);return(0,g.jsx)(f,{present:i||o.checked,children:(0,g.jsx)(r.span,{"data-state":D(o.checked),"data-disabled":o.disabled?``:void 0,...a,ref:t})})});w.displayName=C;var T=`RadioBubbleInput`,E=h.forwardRef(({__scopeRadio:e,control:t,checked:n,bubbles:a=!0,...o},s)=>{let l=h.useRef(null),u=i(l,s),d=m(n),f=c(t);return h.useEffect(()=>{let e=l.current;if(!e)return;let t=window.HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(t,`checked`).set;if(d!==n&&r){let t=new Event(`click`,{bubbles:a});r.call(e,n),e.dispatchEvent(t)}},[d,n,a]),(0,g.jsx)(r.input,{type:`radio`,"aria-hidden":!0,defaultChecked:n,...o,tabIndex:-1,ref:u,style:{...o.style,...f,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});E.displayName=T;function D(e){return e?`checked`:`unchecked`}var O=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],k=`RadioGroup`,[A,j]=s(k,[u,y]),M=u(),N=y(),[P,F]=A(k),I=h.forwardRef((e,t)=>{let{__scopeRadioGroup:n,name:i,defaultValue:a,value:s,required:c=!1,disabled:u=!1,orientation:d,dir:f,loop:m=!0,onValueChange:h,..._}=e,v=M(n),y=p(f),[b,x]=o({prop:s,defaultProp:a??null,onChange:h,caller:k});return(0,g.jsx)(P,{scope:n,name:i,required:c,disabled:u,value:b,onValueChange:x,children:(0,g.jsx)(l,{asChild:!0,...v,orientation:d,dir:y,loop:m,children:(0,g.jsx)(r.div,{role:`radiogroup`,"aria-required":c,"aria-orientation":d,"data-disabled":u?``:void 0,dir:y,..._,ref:t})})})});I.displayName=k;var L=`RadioGroupItem`,R=h.forwardRef((e,t)=>{let{__scopeRadioGroup:n,disabled:r,...o}=e,s=F(L,n),c=s.disabled||r,l=M(n),u=N(n),f=h.useRef(null),p=i(t,f),m=s.value===o.value,_=h.useRef(!1);return h.useEffect(()=>{let e=e=>{O.includes(e.key)&&(_.current=!0)},t=()=>_.current=!1;return document.addEventListener(`keydown`,e),document.addEventListener(`keyup`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`keyup`,t)}},[]),(0,g.jsx)(d,{asChild:!0,...l,focusable:!c,active:m,children:(0,g.jsx)(S,{disabled:c,required:s.required,checked:m,...u,...o,name:s.name,ref:p,onCheck:()=>s.onValueChange(o.value),onKeyDown:a(e=>{e.key===`Enter`&&e.preventDefault()}),onFocus:a(o.onFocus,()=>{_.current&&f.current?.click()})})})});R.displayName=L;var z=`RadioGroupIndicator`,B=h.forwardRef((e,t)=>{let{__scopeRadioGroup:n,...r}=e;return(0,g.jsx)(w,{...N(n),...r,ref:t})});B.displayName=z;var V=I,H=R,U=B;export{H as n,V as r,U as t}; \ No newline at end of file diff --git a/src/www/assets/dist-DvAgZMq72.js b/src/www/assets/dist-DvAgZMq72.js new file mode 100644 index 0000000..f9b94f4 --- /dev/null +++ b/src/www/assets/dist-DvAgZMq72.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{r as n}from"./dist-15n4mVGL.js";var r=e(t(),1),i=e(n(),1);function a(e){if(!e||typeof document>`u`)return;let t=document.head||document.getElementsByTagName(`head`)[0],n=document.createElement(`style`);n.type=`text/css`,t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}var o=e=>{switch(e){case`success`:return l;case`info`:return d;case`warning`:return u;case`error`:return f;default:return null}},s=Array(12).fill(0),c=({visible:e,className:t})=>r.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},r.createElement(`div`,{className:`sonner-spinner`},s.map((e,t)=>r.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),l=r.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},r.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),u=r.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},r.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),d=r.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},r.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),f=r.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},r.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),p=r.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},r.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),r.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),ee=()=>{let[e,t]=r.useState(document.hidden);return r.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},m=1,h=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:m++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let i=Promise.resolve(e instanceof Function?e():e),a=n!==void 0,o,s=i.then(async e=>{if(o=[`resolve`,e],r.isValidElement(e))a=!1,this.create({id:n,type:`default`,message:e});else if(_(e)&&!e.ok){a=!1;let i=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,o=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,s=typeof i==`object`&&!r.isValidElement(i)?i:{message:i};this.create({id:n,type:`error`,description:o,...s})}else if(e instanceof Error){a=!1;let i=typeof t.error==`function`?await t.error(e):t.error,o=typeof t.description==`function`?await t.description(e):t.description,s=typeof i==`object`&&!r.isValidElement(i)?i:{message:i};this.create({id:n,type:`error`,description:o,...s})}else if(t.success!==void 0){a=!1;let i=typeof t.success==`function`?await t.success(e):t.success,o=typeof t.description==`function`?await t.description(e):t.description,s=typeof i==`object`&&!r.isValidElement(i)?i:{message:i};this.create({id:n,type:`success`,description:o,...s})}}).catch(async e=>{if(o=[`reject`,e],t.error!==void 0){a=!1;let i=typeof t.error==`function`?await t.error(e):t.error,o=typeof t.description==`function`?await t.description(e):t.description,s=typeof i==`object`&&!r.isValidElement(i)?i:{message:i};this.create({id:n,type:`error`,description:o,...s})}}).finally(()=>{a&&(this.dismiss(n),n=void 0),t.finally==null||t.finally.call(t)}),c=()=>new Promise((e,t)=>s.then(()=>o[0]===`reject`?t(o[1]):e(o[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:c}:Object.assign(n,{unwrap:c})},this.custom=(e,t)=>{let n=t?.id||m++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},g=(e,t)=>{let n=t?.id||m++;return h.addToast({title:e,...t,id:n}),n},_=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,v=Object.assign(g,{success:h.success,info:h.info,warning:h.warning,error:h.error,custom:h.custom,message:h.message,promise:h.promise,dismiss:h.dismiss,loading:h.loading},{getHistory:()=>h.toasts,getToasts:()=>h.getActiveToasts()});a(`[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}`);function y(e){return e.label!==void 0}var te=3,b=`24px`,x=`16px`,S=4e3,C=356,w=14,T=45,E=200;function D(...e){return e.filter(Boolean).join(` `)}function ne(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var O=e=>{let{invert:t,toast:n,unstyled:i,interacting:a,setHeights:s,visibleToasts:l,heights:u,index:d,toasts:f,expanded:m,removeToast:h,defaultRichColors:g,closeButton:_,style:v,cancelButtonStyle:te,actionButtonStyle:b,className:x=``,descriptionClassName:C=``,duration:w,position:O,gap:k,expandByDefault:A,classNames:j,icons:M,closeButtonAriaLabel:re=`Close toast`}=e,[N,P]=r.useState(null),[F,ie]=r.useState(null),[I,L]=r.useState(!1),[R,z]=r.useState(!1),[B,V]=r.useState(!1),[ae,oe]=r.useState(!1),[se,ce]=r.useState(!1),[le,H]=r.useState(0),[ue,U]=r.useState(0),W=r.useRef(n.duration||w||S),de=r.useRef(null),G=r.useRef(null),fe=d===0,pe=d+1<=l,K=n.type,q=n.dismissible!==!1,me=n.className||``,he=n.descriptionClassName||``,J=r.useMemo(()=>u.findIndex(e=>e.toastId===n.id)||0,[u,n.id]),ge=r.useMemo(()=>n.closeButton??_,[n.closeButton,_]),_e=r.useMemo(()=>n.duration||w||S,[n.duration,w]),Y=r.useRef(0),X=r.useRef(0),ve=r.useRef(0),Z=r.useRef(null),[ye,be]=O.split(`-`),xe=r.useMemo(()=>u.reduce((e,t,n)=>n>=J?e:e+t.height,0),[u,J]),Se=ee(),Ce=n.invert||t,Q=K===`loading`;X.current=r.useMemo(()=>J*k+xe,[J,xe]),r.useEffect(()=>{W.current=_e},[_e]),r.useEffect(()=>{L(!0)},[]),r.useEffect(()=>{let e=G.current;if(e){let t=e.getBoundingClientRect().height;return U(t),s(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>s(e=>e.filter(e=>e.toastId!==n.id))}},[s,n.id]),r.useLayoutEffect(()=>{if(!I)return;let e=G.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,U(r),s(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[I,n.title,n.description,s,n.id,n.jsx,n.action,n.cancel]);let $=r.useCallback(()=>{z(!0),H(X.current),s(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{h(n)},E)},[n,h,s,X]);r.useEffect(()=>{if(n.promise&&K===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return m||a||Se?(()=>{if(ve.current{n.onAutoClose==null||n.onAutoClose.call(n,n),$()},W.current)),()=>clearTimeout(e)},[m,a,n,K,Se,$]),r.useEffect(()=>{n.delete&&($(),n.onDismiss==null||n.onDismiss.call(n,n))},[$,n.delete]);function we(){return M?.loading?r.createElement(`div`,{className:D(j?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":K===`loading`},M.loading):r.createElement(c,{className:D(j?.loader,n?.classNames?.loader),visible:K===`loading`})}let Te=n.icon||M?.[K]||o(K);return r.createElement(`li`,{tabIndex:0,ref:G,className:D(x,me,j?.toast,n?.classNames?.toast,j?.default,j?.[K],n?.classNames?.[K]),"data-sonner-toast":``,"data-rich-colors":n.richColors??g,"data-styled":!(n.jsx||n.unstyled||i),"data-mounted":I,"data-promise":!!n.promise,"data-swiped":se,"data-removed":R,"data-visible":pe,"data-y-position":ye,"data-x-position":be,"data-index":d,"data-front":fe,"data-swiping":B,"data-dismissible":q,"data-type":K,"data-invert":Ce,"data-swipe-out":ae,"data-swipe-direction":F,"data-expanded":!!(m||A&&I),"data-testid":n.testId,style:{"--index":d,"--toasts-before":d,"--z-index":f.length-d,"--offset":`${R?le:X.current}px`,"--initial-height":A?`auto`:`${ue}px`,...v,...n.style},onDragEnd:()=>{V(!1),P(null),Z.current=null},onPointerDown:e=>{e.button!==2&&(Q||!q||(de.current=new Date,H(X.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(V(!0),Z.current={x:e.clientX,y:e.clientY})))},onPointerUp:()=>{if(ae||!q)return;Z.current=null;let e=Number(G.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(G.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),r=new Date().getTime()-de.current?.getTime(),i=N===`x`?e:t,a=Math.abs(i)/r;if(Math.abs(i)>=T||a>.11){H(X.current),n.onDismiss==null||n.onDismiss.call(n,n),ie(N===`x`?e>0?`right`:`left`:t>0?`down`:`up`),$(),oe(!0);return}else{var o,s;(o=G.current)==null||o.style.setProperty(`--swipe-amount-x`,`0px`),(s=G.current)==null||s.style.setProperty(`--swipe-amount-y`,`0px`)}ce(!1),V(!1),P(null)},onPointerMove:t=>{var n,r;if(!Z.current||!q||window.getSelection()?.toString().length>0)return;let i=t.clientY-Z.current.y,a=t.clientX-Z.current.x,o=e.swipeDirections??ne(O);!N&&(Math.abs(a)>1||Math.abs(i)>1)&&P(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0},c=e=>1/(1.5+Math.abs(e)/20);if(N===`y`){if(o.includes(`top`)||o.includes(`bottom`))if(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)s.y=i;else{let e=i*c(i);s.y=Math.abs(e)0)s.x=a;else{let e=a*c(a);s.x=Math.abs(e)0||Math.abs(s.y)>0)&&ce(!0),(n=G.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=G.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},ge&&!n.jsx&&K!==`loading`?r.createElement(`button`,{"aria-label":re,"data-disabled":Q,"data-close-button":!0,onClick:Q||!q?()=>{}:()=>{$(),n.onDismiss==null||n.onDismiss.call(n,n)},className:D(j?.closeButton,n?.classNames?.closeButton)},M?.close??p):null,(K||n.icon||n.promise)&&n.icon!==null&&(M?.[K]!==null||n.icon)?r.createElement(`div`,{"data-icon":``,className:D(j?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||we():null,n.type===`loading`?null:Te):null,r.createElement(`div`,{"data-content":``,className:D(j?.content,n?.classNames?.content)},r.createElement(`div`,{"data-title":``,className:D(j?.title,n?.classNames?.title)},n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title),n.description?r.createElement(`div`,{"data-description":``,className:D(C,he,j?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),r.isValidElement(n.cancel)?n.cancel:n.cancel&&y(n.cancel)?r.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||te,onClick:e=>{y(n.cancel)&&q&&(n.cancel.onClick==null||n.cancel.onClick.call(n.cancel,e),$())},className:D(j?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,r.isValidElement(n.action)?n.action:n.action&&y(n.action)?r.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||b,onClick:e=>{y(n.action)&&(n.action.onClick==null||n.action.onClick.call(n.action,e),!e.defaultPrevented&&$())},className:D(j?.actionButton,n?.classNames?.actionButton)},n.action.label):null)};function k(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function A(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?x:b;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var j=r.forwardRef(function(e,t){let{id:n,invert:a,position:o=`bottom-right`,hotkey:s=[`altKey`,`KeyT`],expand:c,closeButton:l,className:u,offset:d,mobileOffset:f,theme:p=`light`,richColors:ee,duration:m,style:g,visibleToasts:_=te,toastOptions:v,dir:y=k(),gap:b=w,icons:x,containerAriaLabel:S=`Notifications`}=e,[T,E]=r.useState([]),D=r.useMemo(()=>n?T.filter(e=>e.toasterId===n):T.filter(e=>!e.toasterId),[T,n]),ne=r.useMemo(()=>Array.from(new Set([o].concat(D.filter(e=>e.position).map(e=>e.position)))),[D,o]),[j,M]=r.useState([]),[re,N]=r.useState(!1),[P,F]=r.useState(!1),[ie,I]=r.useState(p===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:p),L=r.useRef(null),R=s.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),z=r.useRef(null),B=r.useRef(!1),V=r.useCallback(e=>{E(t=>(t.find(t=>t.id===e.id)?.delete||h.dismiss(e.id),t.filter(({id:t})=>t!==e.id)))},[]);return r.useEffect(()=>h.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{E(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t))});return}setTimeout(()=>{i.flushSync(()=>{E(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[T]),r.useEffect(()=>{if(p!==`system`){I(p);return}if(p===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?I(`dark`):I(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{I(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{I(e?`dark`:`light`)}catch(e){console.error(e)}})}},[p]),r.useEffect(()=>{T.length<=1&&N(!1)},[T]),r.useEffect(()=>{let e=e=>{if(s.every(t=>e[t]||e.code===t)){var t;N(!0),(t=L.current)==null||t.focus()}e.code===`Escape`&&(document.activeElement===L.current||L.current?.contains(document.activeElement))&&N(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[s]),r.useEffect(()=>{if(L.current)return()=>{z.current&&(z.current.focus({preventScroll:!0}),z.current=null,B.current=!1)}},[L.current]),r.createElement(`section`,{ref:t,"aria-label":`${S} ${R}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},ne.map((t,n)=>{let[i,o]=t.split(`-`);return D.length?r.createElement(`ol`,{key:t,dir:y===`auto`?k():y,tabIndex:-1,ref:L,className:u,"data-sonner-toaster":!0,"data-sonner-theme":ie,"data-y-position":i,"data-x-position":o,style:{"--front-toast-height":`${j[0]?.height||0}px`,"--width":`${C}px`,"--gap":`${b}px`,...g,...A(d,f)},onBlur:e=>{B.current&&!e.currentTarget.contains(e.relatedTarget)&&(B.current=!1,z.current&&=(z.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||B.current||(B.current=!0,z.current=e.relatedTarget)},onMouseEnter:()=>N(!0),onMouseMove:()=>N(!0),onMouseLeave:()=>{P||N(!1)},onDragEnd:()=>N(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||F(!0)},onPointerUp:()=>F(!1)},D.filter(e=>!e.position&&n===0||e.position===t).map((n,i)=>r.createElement(O,{key:n.id,icons:x,index:i,toast:n,defaultRichColors:ee,duration:v?.duration??m,className:v?.className,descriptionClassName:v?.descriptionClassName,invert:a,visibleToasts:_,closeButton:v?.closeButton??l,interacting:P,position:t,style:v?.style,unstyled:v?.unstyled,classNames:v?.classNames,cancelButtonStyle:v?.cancelButtonStyle,actionButtonStyle:v?.actionButtonStyle,closeButtonAriaLabel:v?.closeButtonAriaLabel,removeToast:V,toasts:D.filter(e=>e.position==n.position),heights:j.filter(e=>e.position==n.position),setHeights:M,expandByDefault:c,gap:b,expanded:re,swipeDirections:e.swipeDirections}))):null}))});export{v as n,j as t}; \ No newline at end of file diff --git a/src/www/assets/download-CN4vU01G.js b/src/www/assets/download-CN4vU01G.js new file mode 100644 index 0000000..2acba43 --- /dev/null +++ b/src/www/assets/download-CN4vU01G.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/dropdown-menu-CUea1X0A.js b/src/www/assets/dropdown-menu-CUea1X0A.js new file mode 100644 index 0000000..46a8084 --- /dev/null +++ b/src/www/assets/dropdown-menu-CUea1X0A.js @@ -0,0 +1,41 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{n as r,t as i}from"./dist-15n4mVGL.js";import{c as a,d as o,i as s,u as c}from"./button-DJA4fnJ8.js";import{i as l,n as u,o as d}from"./dist-DG5UMlBd.js";import{i as f,n as p,r as m,t as h}from"./dist-D21KDGR3.js";import{t as g}from"./dist-Cp1lAGZy.js";import{i as _,r as v,t as y}from"./dist-BEDXr2LC.js";import{a as b,i as x,n as S,o as C,r as ee,s as te,t as ne}from"./dist-BKfJQFVD.js";import{t as w}from"./createLucideIcon-D28ivbfF.js";import{t as T}from"./check-gDgbfVXu.js";var E=t(n(),1),D=e(),O=`focusScope.autoFocusOnMount`,k=`focusScope.autoFocusOnUnmount`,A={bubbles:!1,cancelable:!0},re=`FocusScope`,ie=E.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:s,...c}=e,[l,u]=E.useState(null),d=y(a),f=y(s),p=E.useRef(null),m=o(t,e=>u(e)),h=E.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;E.useEffect(()=>{if(r){let e=function(e){if(h.paused||!l)return;let t=e.target;l.contains(t)?p.current=t:M(p.current,{select:!0})},t=function(e){if(h.paused||!l)return;let t=e.relatedTarget;t!==null&&(l.contains(t)||M(p.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&M(l)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return l&&r.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,l,h.paused]),E.useEffect(()=>{if(l){ue.add(h);let e=document.activeElement;if(!l.contains(e)){let t=new CustomEvent(O,A);l.addEventListener(O,d),l.dispatchEvent(t),t.defaultPrevented||(ae(pe(j(l)),{select:!0}),document.activeElement===e&&M(l))}return()=>{l.removeEventListener(O,d),setTimeout(()=>{let t=new CustomEvent(k,A);l.addEventListener(k,f),l.dispatchEvent(t),t.defaultPrevented||M(e??document.body,{select:!0}),l.removeEventListener(k,f),ue.remove(h)},0)}}},[l,d,f,h]);let g=E.useCallback(e=>{if(!n&&!r||h.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=oe(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&M(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&M(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,h.paused]);return(0,D.jsx)(i.div,{tabIndex:-1,...c,ref:m,onKeyDown:g})});ie.displayName=re;function ae(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(M(r,{select:t}),document.activeElement!==n)return}function oe(e){let t=j(e);return[se(t,e),se(t.reverse(),e)]}function j(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function se(e,t){for(let n of e)if(!ce(n,{upTo:t}))return n}function ce(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function le(e){return e instanceof HTMLInputElement&&`select`in e}function M(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&le(e)&&t&&e.select()}}var ue=de();function de(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=fe(e,t),e.unshift(t)},remove(t){e=fe(e,t),e[0]?.resume()}}}function fe(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function pe(e){return e.filter(e=>e.tagName!==`A`)}var me=0;function he(){E.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??ge()),document.body.insertAdjacentElement(`beforeend`,e[1]??ge()),me++,()=>{me===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),me--}},[])}function ge(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var N=function(){return N=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Ve;var t=Ue(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Ge=Be(),L=`data-scroll-locked`,Ke=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` + .${ye} { + overflow: hidden ${r}; + padding-right: ${s}px ${r}; + } + body[${L}] { + overflow: hidden ${r}; + overscroll-behavior: contain; + ${[t&&`position: relative ${r};`,n===`margin`&&` + padding-left: ${i}px; + padding-top: ${a}px; + padding-right: ${o}px; + margin-left:0; + margin-top:0; + margin-right: ${s}px ${r}; + `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)} + } + + .${P} { + right: ${s}px ${r}; + } + + .${F} { + margin-right: ${s}px ${r}; + } + + .${P} .${P} { + right: 0 ${r}; + } + + .${F} .${F} { + margin-right: 0 ${r}; + } + + body[${L}] { + ${be}: ${s}px; + } +`},qe=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},Je=function(){E.useEffect(function(){return document.body.setAttribute(L,(qe()+1).toString()),function(){var e=qe()-1;e<=0?document.body.removeAttribute(L):document.body.setAttribute(L,e.toString())}},[])},Ye=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;Je();var a=E.useMemo(function(){return We(i)},[i]);return E.createElement(Ge,{styles:Ke(a,!t,i,n?``:`!important`)})},Xe=!1;if(typeof window<`u`)try{var R=Object.defineProperty({},`passive`,{get:function(){return Xe=!0,!0}});window.addEventListener(`test`,R,R),window.removeEventListener(`test`,R,R)}catch{Xe=!1}var z=Xe?{passive:!1}:!1,Ze=function(e){return e.tagName===`TEXTAREA`},Qe=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!Ze(e)&&n[t]===`visible`)},$e=function(e){return Qe(e,`overflowY`)},et=function(e){return Qe(e,`overflowX`)},tt=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),it(e,r)){var i=at(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},nt=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},rt=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},it=function(e,t){return e===`v`?$e(t):et(t)},at=function(e,t){return e===`v`?nt(t):rt(t)},ot=function(e,t){return e===`h`&&t===`rtl`?-1:1},st=function(e,t,n,r,i){var a=ot(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=at(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&it(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},B=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},ct=function(e){return[e.deltaX,e.deltaY]},lt=function(e){return e&&`current`in e?e.current:e},ut=function(e,t){return e[0]===t[0]&&e[1]===t[1]},dt=function(e){return` + .block-interactivity-${e} {pointer-events: none;} + .allow-interactivity-${e} {pointer-events: all;} +`},ft=0,V=[];function pt(e){var t=E.useRef([]),n=E.useRef([0,0]),r=E.useRef(),i=E.useState(ft++)[0],a=E.useState(Be)[0],o=E.useRef(e);E.useEffect(function(){o.current=e},[e]),E.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=ve([e.lockRef.current],(e.shards||[]).map(lt),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var s=E.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=B(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=tt(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=tt(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return st(h,t,e,h===`h`?s:c,!0)},[]),c=E.useCallback(function(e){var n=e;if(!(!V.length||V[V.length-1]!==a)){var r=`deltaY`in n?ct(n):B(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&ut(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var c=(o.current.shards||[]).map(lt).filter(Boolean).filter(function(e){return e.contains(n.target)});(c.length>0?s(n,c[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),l=E.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:mt(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=E.useCallback(function(e){n.current=B(e),r.current=void 0},[]),d=E.useCallback(function(t){l(t.type,ct(t),t.target,s(t,e.lockRef.current))},[]),f=E.useCallback(function(t){l(t.type,B(t),t.target,s(t,e.lockRef.current))},[]);E.useEffect(function(){return V.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener(`wheel`,c,z),document.addEventListener(`touchmove`,c,z),document.addEventListener(`touchstart`,u,z),function(){V=V.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,c,z),document.removeEventListener(`touchmove`,c,z),document.removeEventListener(`touchstart`,u,z)}},[]);var p=e.removeScrollBar,m=e.inert;return E.createElement(E.Fragment,null,m?E.createElement(a,{styles:dt(i)}):null,p?E.createElement(Ye,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function mt(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var ht=Ae(je,pt),gt=E.forwardRef(function(e,t){return E.createElement(I,N({},e,{ref:t,sideCar:ht}))});gt.classNames=I.classNames;var _t=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},H=new WeakMap,U=new WeakMap,vt={},yt=0,bt=function(e){return e&&(e.host||bt(e.parentNode))},xt=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=bt(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},St=function(e,t,n,r){var i=xt(t,Array.isArray(e)?e:[e]);vt[n]||(vt[n]=new WeakMap);var a=vt[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(H.get(e)||0)+1,l=(a.get(e)||0)+1;H.set(e,c),a.set(e,l),o.push(e),c===1&&i&&U.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),yt++,function(){o.forEach(function(e){var t=H.get(e)-1,i=a.get(e)-1;H.set(e,t),a.set(e,i),t||(U.has(e)||e.removeAttribute(r),U.delete(e)),i||e.removeAttribute(n)}),yt--,yt||(H=new WeakMap,H=new WeakMap,U=new WeakMap,vt={})}},Ct=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||_t(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),St(r,i,n,`aria-hidden`)):function(){return null}},wt=[`Enter`,` `],Tt=[`ArrowDown`,`PageUp`,`Home`],Et=[`ArrowUp`,`PageDown`,`End`],Dt=[...Tt,...Et],Ot={ltr:[...wt,`ArrowRight`],rtl:[...wt,`ArrowLeft`]},kt={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},W=`Menu`,[G,At,jt]=f(W),[K,Mt]=d(W,[jt,b,m]),q=b(),Nt=m(),[Pt,J]=K(W),[Ft,Y]=K(W),It=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=q(t),[c,l]=E.useState(null),u=E.useRef(!1),d=y(a),f=v(i);return E.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,D.jsx)(x,{...s,children:(0,D.jsx)(Pt,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,D.jsx)(Ft,{scope:t,onClose:E.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};It.displayName=W;var Lt=`MenuAnchor`,Rt=E.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=q(n);return(0,D.jsx)(ne,{...i,...r,ref:t})});Rt.displayName=Lt;var zt=`MenuPortal`,[Bt,Vt]=K(zt,{forceMount:void 0}),Ht=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=J(zt,t);return(0,D.jsx)(Bt,{scope:t,forceMount:n,children:(0,D.jsx)(g,{present:n||a.open,children:(0,D.jsx)(C,{asChild:!0,container:i,children:r})})})};Ht.displayName=zt;var X=`MenuContent`,[Ut,Wt]=K(X),Gt=E.forwardRef((e,t)=>{let n=Vt(X,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=J(X,e.__scopeMenu),o=Y(X,e.__scopeMenu);return(0,D.jsx)(G.Provider,{scope:e.__scopeMenu,children:(0,D.jsx)(g,{present:r||a.open,children:(0,D.jsx)(G.Slot,{scope:e.__scopeMenu,children:o.modal?(0,D.jsx)(Kt,{...i,ref:t}):(0,D.jsx)(qt,{...i,ref:t})})})})}),Kt=E.forwardRef((e,t)=>{let n=J(X,e.__scopeMenu),r=E.useRef(null),i=o(t,r);return E.useEffect(()=>{let e=r.current;if(e)return Ct(e)},[]),(0,D.jsx)(Yt,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:l(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),qt=E.forwardRef((e,t)=>{let n=J(X,e.__scopeMenu);return(0,D.jsx)(Yt,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Jt=a(`MenuContent.ScrollLock`),Yt=E.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEntryFocus:u,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:m,onInteractOutside:h,onDismiss:g,disableOutsideScroll:_,...v}=e,y=J(X,n),b=Y(X,n),x=q(n),S=Nt(n),C=At(n),[ne,w]=E.useState(null),T=E.useRef(null),O=o(t,T,y.onContentChange),k=E.useRef(0),A=E.useRef(``),re=E.useRef(0),ae=E.useRef(null),oe=E.useRef(`right`),j=E.useRef(0),se=_?gt:E.Fragment,ce=_?{as:Jt,allowPinchZoom:!0}:void 0,le=e=>{let t=A.current+e,n=C().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=Nn(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){A.current=t,window.clearTimeout(k.current),t!==``&&(k.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};E.useEffect(()=>()=>window.clearTimeout(k.current),[]),he();let M=E.useCallback(e=>oe.current===ae.current?.side&&Fn(e,ae.current?.area),[]);return(0,D.jsx)(Ut,{scope:n,searchRef:A,onItemEnter:E.useCallback(e=>{M(e)&&e.preventDefault()},[M]),onItemLeave:E.useCallback(e=>{M(e)||(T.current?.focus(),w(null))},[M]),onTriggerLeave:E.useCallback(e=>{M(e)&&e.preventDefault()},[M]),pointerGraceTimerRef:re,onPointerGraceIntentChange:E.useCallback(e=>{ae.current=e},[]),children:(0,D.jsx)(se,{...ce,children:(0,D.jsx)(ie,{asChild:!0,trapped:i,onMountAutoFocus:l(a,e=>{e.preventDefault(),T.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:s,children:(0,D.jsx)(te,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:m,onInteractOutside:h,onDismiss:g,children:(0,D.jsx)(p,{asChild:!0,...S,dir:b.dir,orientation:`vertical`,loop:r,currentTabStopId:ne,onCurrentTabStopIdChange:w,onEntryFocus:l(u,e=>{b.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,D.jsx)(ee,{role:`menu`,"aria-orientation":`vertical`,"data-state":On(y.open),"data-radix-menu-content":``,dir:b.dir,...x,...v,ref:O,style:{outline:`none`,...v.style},onKeyDown:l(v.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&le(e.key));let i=T.current;if(e.target!==i||!Dt.includes(e.key))return;e.preventDefault();let a=C().filter(e=>!e.disabled).map(e=>e.ref.current);Et.includes(e.key)&&a.reverse(),jn(a)}),onBlur:l(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(k.current),A.current=``)}),onPointerMove:l(e.onPointerMove,Q(e=>{let t=e.target,n=j.current!==e.clientX;e.currentTarget.contains(t)&&n&&(oe.current=e.clientX>j.current?`right`:`left`,j.current=e.clientX)}))})})})})})})});Gt.displayName=X;var Xt=`MenuGroup`,Zt=E.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,D.jsx)(i.div,{role:`group`,...r,ref:t})});Zt.displayName=Xt;var Qt=`MenuLabel`,$t=E.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,D.jsx)(i.div,{...r,ref:t})});$t.displayName=Qt;var en=`MenuItem`,tn=`menu.itemSelect`,nn=E.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:i,...a}=e,s=E.useRef(null),c=Y(en,e.__scopeMenu),u=Wt(en,e.__scopeMenu),d=o(t,s),f=E.useRef(!1),p=()=>{let e=s.current;if(!n&&e){let t=new CustomEvent(tn,{bubbles:!0,cancelable:!0});e.addEventListener(tn,e=>i?.(e),{once:!0}),r(e,t),t.defaultPrevented?f.current=!1:c.onClose()}};return(0,D.jsx)(rn,{...a,ref:d,disabled:n,onClick:l(e.onClick,p),onPointerDown:t=>{e.onPointerDown?.(t),f.current=!0},onPointerUp:l(e.onPointerUp,e=>{f.current||e.currentTarget?.click()}),onKeyDown:l(e.onKeyDown,e=>{let t=u.searchRef.current!==``;n||t&&e.key===` `||wt.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});nn.displayName=en;var rn=E.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:a,...s}=e,c=Wt(en,n),u=Nt(n),d=E.useRef(null),f=o(t,d),[p,m]=E.useState(!1),[g,_]=E.useState(``);return E.useEffect(()=>{let e=d.current;e&&_((e.textContent??``).trim())},[s.children]),(0,D.jsx)(G.ItemSlot,{scope:n,disabled:r,textValue:a??g,children:(0,D.jsx)(h,{asChild:!0,...u,focusable:!r,children:(0,D.jsx)(i.div,{role:`menuitem`,"data-highlighted":p?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...s,ref:f,onPointerMove:l(e.onPointerMove,Q(e=>{r?c.onItemLeave(e):(c.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:l(e.onPointerLeave,Q(e=>c.onItemLeave(e))),onFocus:l(e.onFocus,()=>m(!0)),onBlur:l(e.onBlur,()=>m(!1))})})})}),an=`MenuCheckboxItem`,on=E.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,D.jsx)(mn,{scope:e.__scopeMenu,checked:n,children:(0,D.jsx)(nn,{role:`menuitemcheckbox`,"aria-checked":kn(n)?`mixed`:n,...i,ref:t,"data-state":An(n),onSelect:l(i.onSelect,()=>r?.(kn(n)?!0:!n),{checkForDefaultPrevented:!1})})})});on.displayName=an;var sn=`MenuRadioGroup`,[cn,ln]=K(sn,{value:void 0,onValueChange:()=>{}}),un=E.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=y(r);return(0,D.jsx)(cn,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,D.jsx)(Zt,{...i,ref:t})})});un.displayName=sn;var dn=`MenuRadioItem`,fn=E.forwardRef((e,t)=>{let{value:n,...r}=e,i=ln(dn,e.__scopeMenu),a=n===i.value;return(0,D.jsx)(mn,{scope:e.__scopeMenu,checked:a,children:(0,D.jsx)(nn,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":An(a),onSelect:l(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});fn.displayName=dn;var pn=`MenuItemIndicator`,[mn,hn]=K(pn,{checked:!1}),gn=E.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...a}=e,o=hn(pn,n);return(0,D.jsx)(g,{present:r||kn(o.checked)||o.checked===!0,children:(0,D.jsx)(i.span,{...a,ref:t,"data-state":An(o.checked)})})});gn.displayName=pn;var _n=`MenuSeparator`,vn=E.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,D.jsx)(i.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});vn.displayName=_n;var yn=`MenuArrow`,bn=E.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=q(n);return(0,D.jsx)(S,{...i,...r,ref:t})});bn.displayName=yn;var xn=`MenuSub`,[Sn,Cn]=K(xn),wn=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=J(xn,t),o=q(t),[s,c]=E.useState(null),[l,u]=E.useState(null),d=y(i);return E.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,D.jsx)(x,{...o,children:(0,D.jsx)(Pt,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,D.jsx)(Sn,{scope:t,contentId:_(),triggerId:_(),trigger:s,onTriggerChange:c,children:n})})})};wn.displayName=xn;var Z=`MenuSubTrigger`,Tn=E.forwardRef((e,t)=>{let n=J(Z,e.__scopeMenu),r=Y(Z,e.__scopeMenu),i=Cn(Z,e.__scopeMenu),a=Wt(Z,e.__scopeMenu),o=E.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:u}=a,d={__scopeMenu:e.__scopeMenu},f=E.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return E.useEffect(()=>f,[f]),E.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),u(null)}},[s,u]),(0,D.jsx)(Rt,{asChild:!0,...d,children:(0,D.jsx)(rn,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":On(n.open),...e,ref:c(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:l(e.onPointerMove,Q(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),f()},100))})),onPointerLeave:l(e.onPointerLeave,Q(e=>{f();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,c=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:c,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:c,y:t.bottom}],side:r}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:l(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||Ot[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});Tn.displayName=Z;var En=`MenuSubContent`,Dn=E.forwardRef((e,t)=>{let n=Vt(X,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=J(X,e.__scopeMenu),s=Y(X,e.__scopeMenu),c=Cn(En,e.__scopeMenu),u=E.useRef(null),d=o(t,u);return(0,D.jsx)(G.Provider,{scope:e.__scopeMenu,children:(0,D.jsx)(g,{present:r||a.open,children:(0,D.jsx)(G.Slot,{scope:e.__scopeMenu,children:(0,D.jsx)(Yt,{id:c.contentId,"aria-labelledby":c.triggerId,...i,ref:d,align:`start`,side:s.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{s.isUsingKeyboardRef.current&&u.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:l(e.onFocusOutside,e=>{e.target!==c.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:l(e.onEscapeKeyDown,e=>{s.onClose(),e.preventDefault()}),onKeyDown:l(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=kt[s.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),c.trigger?.focus(),e.preventDefault())})})})})})});Dn.displayName=En;function On(e){return e?`open`:`closed`}function kn(e){return e===`indeterminate`}function An(e){return kn(e)?`indeterminate`:e?`checked`:`unchecked`}function jn(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Mn(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Nn(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Mn(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Pn(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Fn(e,t){return t?Pn({x:e.clientX,y:e.clientY},t):!1}function Q(e){return t=>t.pointerType===`mouse`?e(t):void 0}var In=It,Ln=Rt,Rn=Ht,zn=Gt,Bn=Zt,Vn=$t,Hn=nn,Un=on,Wn=un,Gn=fn,Kn=gn,qn=vn,Jn=bn,Yn=Tn,Xn=Dn,Zn=`DropdownMenu`,[Qn,$n]=d(Zn,[Mt]),$=Mt(),[er,tr]=Qn(Zn),nr=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=$(t),l=E.useRef(null),[d,f]=u({prop:i,defaultProp:a??!1,onChange:o,caller:Zn});return(0,D.jsx)(er,{scope:t,triggerId:_(),triggerRef:l,contentId:_(),open:d,onOpenChange:f,onOpenToggle:E.useCallback(()=>f(e=>!e),[f]),modal:s,children:(0,D.jsx)(In,{...c,open:d,onOpenChange:f,dir:r,modal:s,children:n})})};nr.displayName=Zn;var rr=`DropdownMenuTrigger`,ir=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...a}=e,o=tr(rr,n),s=$(n);return(0,D.jsx)(Ln,{asChild:!0,...s,children:(0,D.jsx)(i.button,{type:`button`,id:o.triggerId,"aria-haspopup":`menu`,"aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...a,ref:c(t,o.triggerRef),onPointerDown:l(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(o.onOpenToggle(),o.open||e.preventDefault())}),onKeyDown:l(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&o.onOpenToggle(),e.key===`ArrowDown`&&o.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});ir.displayName=rr;var ar=`DropdownMenuPortal`,or=e=>{let{__scopeDropdownMenu:t,...n}=e,r=$(t);return(0,D.jsx)(Rn,{...r,...n})};or.displayName=ar;var sr=`DropdownMenuContent`,cr=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=tr(sr,n),a=$(n),o=E.useRef(!1);return(0,D.jsx)(zn,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:l(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:l(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});cr.displayName=sr;var lr=`DropdownMenuGroup`,ur=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Bn,{...i,...r,ref:t})});ur.displayName=lr;var dr=`DropdownMenuLabel`,fr=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Vn,{...i,...r,ref:t})});fr.displayName=dr;var pr=`DropdownMenuItem`,mr=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Hn,{...i,...r,ref:t})});mr.displayName=pr;var hr=`DropdownMenuCheckboxItem`,gr=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Un,{...i,...r,ref:t})});gr.displayName=hr;var _r=`DropdownMenuRadioGroup`,vr=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Wn,{...i,...r,ref:t})});vr.displayName=_r;var yr=`DropdownMenuRadioItem`,br=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Gn,{...i,...r,ref:t})});br.displayName=yr;var xr=`DropdownMenuItemIndicator`,Sr=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Kn,{...i,...r,ref:t})});Sr.displayName=xr;var Cr=`DropdownMenuSeparator`,wr=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(qn,{...i,...r,ref:t})});wr.displayName=Cr;var Tr=`DropdownMenuArrow`,Er=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Jn,{...i,...r,ref:t})});Er.displayName=Tr;var Dr=`DropdownMenuSubTrigger`,Or=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Yn,{...i,...r,ref:t})});Or.displayName=Dr;var kr=`DropdownMenuSubContent`,Ar=E.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=$(n);return(0,D.jsx)(Xn,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});Ar.displayName=kr;var jr=nr,Mr=ir,Nr=or,Pr=cr,Fr=ur,Ir=fr,Lr=mr,Rr=gr,zr=Sr,Br=wr,Vr=w(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Hr=w(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]);function Ur({className:e,...t}){return(0,D.jsx)(`img`,{alt:`GMPay`,className:s(`size-6`,e),height:24,src:`/images/logo.png`,width:24,...t})}function Wr({...e}){return(0,D.jsx)(jr,{"data-slot":`dropdown-menu`,...e})}function Gr({...e}){return(0,D.jsx)(Mr,{"data-slot":`dropdown-menu-trigger`,...e})}function Kr({className:e,sideOffset:t=4,...n}){return(0,D.jsx)(Nr,{children:(0,D.jsx)(Pr,{className:s(`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in`,e),"data-slot":`dropdown-menu-content`,sideOffset:t,...n})})}function qr({...e}){return(0,D.jsx)(Fr,{"data-slot":`dropdown-menu-group`,...e})}function Jr({className:e,inset:t,variant:n=`default`,...r}){return(0,D.jsx)(Lr,{className:s(`relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[disabled]:opacity-50 data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 data-[variant=destructive]:*:[svg]:text-destructive!`,e),"data-inset":t,"data-slot":`dropdown-menu-item`,"data-variant":n,...r})}function Yr({className:e,children:t,checked:n,...r}){return(0,D.jsxs)(Rr,{checked:n,className:s(`relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0`,e),"data-slot":`dropdown-menu-checkbox-item`,...r,children:[(0,D.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,D.jsx)(zr,{children:(0,D.jsx)(T,{className:`size-4`})})}),t]})}function Xr({className:e,inset:t,...n}){return(0,D.jsx)(Ir,{className:s(`px-2 py-1.5 font-medium text-sm data-[inset]:pl-8`,e),"data-inset":t,"data-slot":`dropdown-menu-label`,...n})}function Zr({className:e,...t}){return(0,D.jsx)(Br,{className:s(`-mx-1 my-1 h-px bg-border`,e),"data-slot":`dropdown-menu-separator`,...t})}function Qr({className:e,...t}){return(0,D.jsx)(`span`,{className:s(`ml-auto text-muted-foreground text-xs tracking-widest`,e),"data-slot":`dropdown-menu-shortcut`,...t})}export{ie as _,Jr as a,Qr as c,Hr as d,Vr as f,he as g,gt as h,qr as i,Gr as l,Ct as m,Yr as n,Xr as o,ir as p,Kr as r,Zr as s,Wr as t,Ur as u}; \ No newline at end of file diff --git a/src/www/assets/ellipsis-Y4gZr59G.js b/src/www/assets/ellipsis-Y4gZr59G.js new file mode 100644 index 0000000..979ddc8 --- /dev/null +++ b/src/www/assets/ellipsis-Y4gZr59G.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/empty-state-Cam-sX8U.js b/src/www/assets/empty-state-Cam-sX8U.js new file mode 100644 index 0000000..ade91a6 --- /dev/null +++ b/src/www/assets/empty-state-Cam-sX8U.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{i as t}from"./button-DJA4fnJ8.js";import{t as n}from"./createLucideIcon-D28ivbfF.js";var r=n(`inbox`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),i=n(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),a=n(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),o=e();function s({className:e,description:n=`暂无数据`,icon:i,title:a}){return(0,o.jsxs)(`div`,{className:t(`flex flex-col items-center justify-center gap-3 py-16 text-center`,e),children:[(0,o.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-full bg-muted text-muted-foreground`,children:i??(0,o.jsx)(r,{className:`size-6`})}),a&&(0,o.jsx)(`p`,{className:`font-medium text-sm`,children:a}),(0,o.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:n})]})}export{a as n,i as r,s as t}; \ No newline at end of file diff --git a/src/www/assets/epay-Db0RVMXe.js b/src/www/assets/epay-Db0RVMXe.js new file mode 100644 index 0000000..a847390 --- /dev/null +++ b/src/www/assets/epay-Db0RVMXe.js @@ -0,0 +1 @@ +import{Mc as e,Nc as t,Pc as n,et as r,jc as i,nt as a,nu as o,ou as s,ru as c,tt as l}from"./messages-BovT1T-w.js";import{t as u}from"./button-DJA4fnJ8.js";import{c as d,s as f}from"./zod-Cymc5bS-.js";import{a as p,c as m,i as h,l as g,n as _,o as v,s as y,t as b}from"./form-DdHiBYMe.js";import{t as x}from"./input-DiRPHDd8.js";import{t as S}from"./page-header-BBJ9dE3-.js";import{a as C,i as w,n as T,t as E}from"./lib-CTYwzR3w.js";var D=s(c(),1),O=o(),k=f({defaultToken:d().min(1,t()),defaultCurrency:d().min(1,e()),defaultNetwork:d().min(1,i())});function A(){let n=w(`epay`),a=C(),o=g({resolver:m(k),defaultValues:{defaultToken:``,defaultCurrency:``,defaultNetwork:``}});(0,D.useEffect)(()=>{let e=n.data?.data;e&&o.reset({defaultToken:E(e,`epay.default_token`),defaultCurrency:E(e,`epay.default_currency`),defaultNetwork:E(e,`epay.default_network`)})},[n.data,o]);async function s(e){await T(a.mutateAsync,[{group:`epay`,key:`epay.default_token`,type:`string`,value:e.defaultToken},{group:`epay`,key:`epay.default_currency`,type:`string`,value:e.defaultCurrency},{group:`epay`,key:`epay.default_network`,type:`string`,value:e.defaultNetwork}],l()),await n.refetch()}return(0,O.jsx)(b,{...o,children:(0,O.jsxs)(`form`,{className:`space-y-6`,onSubmit:o.handleSubmit(s),children:[(0,O.jsx)(h,{control:o.control,name:`defaultToken`,render:({field:e})=>(0,O.jsxs)(p,{children:[(0,O.jsx)(v,{children:t()}),(0,O.jsx)(_,{children:(0,O.jsx)(x,{placeholder:`usdt`,...e})}),(0,O.jsx)(y,{})]})}),(0,O.jsx)(h,{control:o.control,name:`defaultCurrency`,render:({field:t})=>(0,O.jsxs)(p,{children:[(0,O.jsx)(v,{children:e()}),(0,O.jsx)(_,{children:(0,O.jsx)(x,{placeholder:`cny`,...t})}),(0,O.jsx)(y,{})]})}),(0,O.jsx)(h,{control:o.control,name:`defaultNetwork`,render:({field:e})=>(0,O.jsxs)(p,{children:[(0,O.jsx)(v,{children:i()}),(0,O.jsx)(_,{children:(0,O.jsx)(x,{placeholder:`tron`,...e})}),(0,O.jsx)(y,{})]})}),(0,O.jsx)(u,{disabled:a.isPending||n.isLoading,type:`submit`,children:r()})]})})}function j(){return(0,O.jsx)(S,{description:a(),title:n(),variant:`section`,children:(0,O.jsx)(A,{})})}var M=j;export{M as component}; \ No newline at end of file diff --git a/src/www/assets/eye-CDavQcLN.js b/src/www/assets/eye-CDavQcLN.js new file mode 100644 index 0000000..d54b3f7 --- /dev/null +++ b/src/www/assets/eye-CDavQcLN.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/eye-off-C-BF3gv3.js b/src/www/assets/eye-off-C-BF3gv3.js new file mode 100644 index 0000000..d349a67 --- /dev/null +++ b/src/www/assets/eye-off-C-BF3gv3.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/font-provider-DvtNHF7l.js b/src/www/assets/font-provider-DvtNHF7l.js new file mode 100644 index 0000000..a24c144 --- /dev/null +++ b/src/www/assets/font-provider-DvtNHF7l.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{n as r,r as i,t as a}from"./cookies-BNZcTwGc.js";var o=t(n(),1),s=[`inter`,`manrope`,`noto`,`system`],c=e(),l=`font`,u=3600*24*365,d=(0,o.createContext)(null);function f({children:e}){let[t,n]=(0,o.useState)(()=>{let e=a(l);return s.includes(e)?e:s[0]});return(0,o.useEffect)(()=>{(e=>{let t=document.documentElement;t.classList.remove(...[...t.classList].filter(e=>e.startsWith(`font-`))),t.classList.add(`font-${e}`)})(t)},[t]),(0,c.jsx)(d,{value:{font:t,setFont:e=>{i(l,e,u),n(e)},resetFont:()=>{r(l),n(s[0])}},children:e})}var p=()=>{let e=(0,o.useContext)(d);if(!e)throw Error(`useFont must be used within a FontProvider`);return e};export{p as n,s as r,f as t}; \ No newline at end of file diff --git a/src/www/assets/forbidden-BEz-zjy_.js b/src/www/assets/forbidden-BEz-zjy_.js new file mode 100644 index 0000000..752f060 --- /dev/null +++ b/src/www/assets/forbidden-BEz-zjy_.js @@ -0,0 +1 @@ +import{cc as e,d as t,l as n,lc as r,nu as i,u as a}from"./messages-BovT1T-w.js";import{t as o}from"./useRouter-D03zSgJO.js";import{t as s}from"./useNavigate-Dg8CkCoa.js";import{t as c}from"./button-DJA4fnJ8.js";var l=i();function u(){let i=s(),{history:u}=o();return(0,l.jsx)(`div`,{className:`h-svh`,children:(0,l.jsxs)(`div`,{className:`m-auto flex h-full w-full flex-col items-center justify-center gap-2`,children:[(0,l.jsx)(`h1`,{className:`font-bold text-[7rem] leading-tight`,children:`403`}),(0,l.jsx)(`span`,{className:`font-medium`,children:t()}),(0,l.jsxs)(`p`,{className:`text-center text-muted-foreground`,children:[a(),` `,(0,l.jsx)(`br`,{}),n()]}),(0,l.jsxs)(`div`,{className:`mt-6 flex gap-4`,children:[(0,l.jsx)(c,{onClick:()=>u.go(-1),variant:`outline`,children:r()}),(0,l.jsx)(c,{onClick:()=>i({to:`/dashboard`}),children:e()})]})]})})}export{u as t}; \ No newline at end of file diff --git a/src/www/assets/form-DdHiBYMe.js b/src/www/assets/form-DdHiBYMe.js new file mode 100644 index 0000000..541dbf0 --- /dev/null +++ b/src/www/assets/form-DdHiBYMe.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{i as r,s as i}from"./button-DJA4fnJ8.js";import{t as a}from"./label-CsevXZTG.js";import{d as o,l as s,u as c}from"./zod-Cymc5bS-.js";var l=t(n(),1),u=e=>e.type===`checkbox`,d=e=>e instanceof Date,f=e=>e==null,p=e=>typeof e==`object`,m=e=>!f(e)&&!Array.isArray(e)&&p(e)&&!d(e),h=e=>m(e)&&e.target?u(e.target)?e.target.checked:e.target.value:e,g=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),_=e=>{let t=e.constructor&&e.constructor.prototype;return m(t)&&t.hasOwnProperty(`isPrototypeOf`)},v=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function y(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(v&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(m(e)&&_(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=y(e[t]));return r}var b=e=>/^\w*$/.test(e),x=e=>e===void 0,S=e=>Array.isArray(e)?e.filter(Boolean):[],C=e=>S(e.replace(/["|']|\]/g,``).split(/\.|\[/)),w=(e,t,n)=>{if(!t||!m(e))return n;let r=(b(t)?[t]:C(t)).reduce((e,t)=>f(e)?e:e[t],e);return x(r)||r===e?x(e[t])?n:e[t]:r},T=e=>typeof e==`boolean`,E=e=>typeof e==`function`,D=(e,t,n)=>{let r=-1,i=b(t)?[t]:C(t),a=i.length,o=a-1;for(;++rl.useContext(M),P=(e,t,n,r=!0)=>{let i={defaultValues:t._defaultValues};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==k.all&&(t._proxyFormState[i]=!r||k.all),n&&(n[i]=!0),e[i]}});return i},F=typeof window<`u`?l.useLayoutEffect:l.useEffect;function te(e){let t=N(),{control:n=t,disabled:r,name:i,exact:a}=e||{},[o,s]=l.useState(n._formState),c=l.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return F(()=>n._subscribe({name:i,formState:c.current,exact:a,callback:e=>{!r&&s({...n._formState,...e})}}),[i,r,a]),l.useEffect(()=>{c.current.isValid&&n._setValid(!0)},[n]),l.useMemo(()=>P(o,n,c.current,!1),[o,n])}var I=e=>typeof e==`string`,ne=(e,t,n,r,i)=>I(e)?(r&&t.watch.add(e),w(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),w(n,e))):(r&&(t.watchAll=!0),n),re=e=>f(e)||!p(e);function L(e,t,n=new WeakSet){if(re(e)||re(t))return Object.is(e,t);if(d(e)&&d(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(n.has(e)||n.has(t))return!0;n.add(e),n.add(t);for(let a of r){let r=e[a];if(!i.includes(a))return!1;if(a!==`ref`){let e=t[a];if(d(r)&&d(e)||(m(r)||Array.isArray(r))&&(m(e)||Array.isArray(e))?!L(r,e,n):!Object.is(r,e))return!1}}return!0}function ie(e){let t=N(),{control:n=t,name:r,defaultValue:i,disabled:a,exact:o,compute:s}=e||{},c=l.useRef(i),u=l.useRef(s),d=l.useRef(void 0),f=l.useRef(n),p=l.useRef(r);u.current=s;let[m,h]=l.useState(()=>{let e=n._getWatch(r,c.current);return u.current?u.current(e):e}),g=l.useCallback(e=>{let t=ne(r,n._names,e||n._formValues,!1,c.current);return u.current?u.current(t):t},[n._formValues,n._names,r]),_=l.useCallback(e=>{if(!a){let t=ne(r,n._names,e||n._formValues,!1,c.current);if(u.current){let e=u.current(t);L(e,d.current)||(h(e),d.current=e)}else h(t)}},[n._formValues,n._names,a,r]);F(()=>((f.current!==n||!L(p.current,r))&&(f.current=n,p.current=r,_()),n._subscribe({name:r,formState:{values:!0},exact:o,callback:e=>{_(e.values)}})),[n,o,r,_]),l.useEffect(()=>n._removeUnmounted());let v=f.current!==n,y=p.current,b=l.useMemo(()=>{if(a)return null;let e=!v&&!L(y,r);return v||e?g():null},[a,v,r,y,g]);return b===null?m:b}function ae(e){let t=N(),{name:n,disabled:r,control:i=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,c=g(i._names.array,n),u=ie({control:i,name:n,defaultValue:l.useMemo(()=>w(i._formValues,n,w(i._defaultValues,n,o)),[i,n,o]),exact:s}),d=te({control:i,name:n,exact:s}),f=l.useRef(e),p=l.useRef(void 0),m=l.useRef(i.register(n,{...e.rules,value:u,...T(e.disabled)?{disabled:e.disabled}:{}}));f.current=e;let _=l.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!w(d.errors,n)},isDirty:{enumerable:!0,get:()=>!!w(d.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!w(d.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!w(d.validatingFields,n)},error:{enumerable:!0,get:()=>w(d.errors,n)}}),[d,n]),v=l.useCallback(e=>m.current.onChange({target:{value:h(e),name:n},type:O.CHANGE}),[n]),b=l.useCallback(()=>m.current.onBlur({target:{value:w(i._formValues,n),name:n},type:O.BLUR}),[n,i._formValues]),S=l.useCallback(e=>{let t=w(i._fields,n);t&&t._f&&e&&(t._f.ref={focus:()=>E(e.focus)&&e.focus(),select:()=>E(e.select)&&e.select(),setCustomValidity:t=>E(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>E(e.reportValidity)&&e.reportValidity()})},[i._fields,n]),C=l.useMemo(()=>({name:n,value:u,...T(r)||d.disabled?{disabled:d.disabled||r}:{},onChange:v,onBlur:b,ref:S}),[n,r,d.disabled,v,b,S,u]);return l.useEffect(()=>{let e=i._options.shouldUnregister||a,t=p.current;t&&t!==n&&!c&&i.unregister(t),i.register(n,{...f.current.rules,...T(f.current.disabled)?{disabled:f.current.disabled}:{}});let r=(e,t)=>{let n=w(i._fields,e);n&&n._f&&(n._f.mount=t)};if(r(n,!0),e){let e=y(w(i._options.defaultValues,n,f.current.defaultValue));D(i._defaultValues,n,e),x(w(i._formValues,n))&&D(i._formValues,n,e)}return!c&&i.register(n),p.current=n,()=>{(c?e&&!i._state.action:e)?i.unregister(n):r(n,!1)}},[n,i,c,a]),l.useEffect(()=>{i._setDisabledField({disabled:r,name:n})},[r,n,i]),l.useMemo(()=>({field:C,formState:d,fieldState:_}),[C,d,_])}var oe=e=>e.render(ae(e)),se=l.createContext(null);se.displayName=`HookFormContext`;var ce=()=>l.useContext(se),R=e=>{let{children:t,watch:n,getValues:r,getFieldState:i,setError:a,clearErrors:o,setValue:s,trigger:c,formState:u,resetField:d,reset:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v}=e,y=l.useMemo(()=>({watch:n,getValues:r,getFieldState:i,setError:a,clearErrors:o,setValue:s,trigger:c,formState:u,resetField:d,reset:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v}),[o,h,u,i,r,p,g,f,d,a,_,s,v,c,m,n]);return l.createElement(se.Provider,{value:y},l.createElement(M.Provider,{value:y.control},t))},le=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},ue=e=>Array.isArray(e)?e:[e],de=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function fe(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&m(i)&&a){let e=fe(i,a);m(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var z=e=>m(e)&&!Object.keys(e).length,pe=e=>e.type===`file`,me=e=>{if(!v)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},he=e=>e.type===`select-multiple`,B=e=>e.type===`radio`,ge=e=>B(e)||u(e),_e=e=>me(e)&&e.isConnected;function V(e,t){let n=t.slice(0,-1).length,r=0;for(;r{for(let t in e)if(E(e[t]))return!0;return!1};function W(e){return Array.isArray(e)||m(e)&&!U(e)}function ye(e,t={}){for(let n in e){let r=e[n];W(r)?(t[n]=Array.isArray(r)?[]:{},ye(r,t[n])):x(r)||(t[n]=!0)}return t}function G(e,t,n){n||=ye(t);for(let r in e){let i=e[r];if(W(i))x(t)||re(n[r])?n[r]=ye(i,Array.isArray(i)?[]:{}):G(i,f(t)?{}:t[r],n[r]);else{let e=t[r];n[r]=!L(i,e)}}return n}var K={value:!1,isValid:!1},be={value:!0,isValid:!0},q=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!x(e[0].attributes.value)?x(e[0].value)||e[0].value===``?be:{value:e[0].value,isValid:!0}:be:K}return K},xe=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>x(e)?e:t?e===``?NaN:e&&+e:n&&I(e)?new Date(e):r?r(e):e,Se={isValid:!1,value:null},Ce=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Se):Se;function we(e){let t=e.ref;return pe(t)?t.files:B(t)?Ce(e.refs).value:he(t)?[...t.selectedOptions].map(({value:e})=>e):u(t)?q(e.refs).value:xe(x(t.value)?e.ref.value:t.value,e)}var Te=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,Ee=(e,t,n,r)=>{let i={};for(let n of e){let e=w(t,n);e&&D(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},J=e=>e instanceof RegExp,Y=e=>x(e)?e:J(e)?e.source:m(e)?J(e.value)?e.value.source:e.value:e,De=e=>({isOnSubmit:!e||e===k.onSubmit,isOnBlur:e===k.onBlur,isOnChange:e===k.onChange,isOnAll:e===k.all,isOnTouch:e===k.onTouched}),Oe=`AsyncFunction`,ke=e=>!!e&&!!e.validate&&!!(E(e.validate)&&e.validate.constructor.name===Oe||m(e.validate)&&Object.values(e.validate).find(e=>e.constructor.name===Oe)),Ae=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),je=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(t=>e.startsWith(t)&&/^\.\w+/.test(e.slice(t.length)))),X=(e,t,n,r)=>{for(let i of n||Object.keys(e)){let n=w(e,i);if(n){let{_f:e,...a}=n;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(X(a,t))break}else if(m(a)&&X(a,t))break}}};function Me(e,t,n){let r=w(e,n);if(r||b(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=w(t,r),o=w(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var Ne=(e,t,n,r)=>{n(e);let{name:i,...a}=e;return z(a)||Object.keys(a).length>=Object.keys(t).length||Object.keys(a).find(e=>t[e]===(!r||k.all))},Pe=(e,t,n)=>!e||!t||e===t||ue(e).some(e=>e&&(n?e===t:e.startsWith(t)||t.startsWith(e))),Fe=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:(n?r.isOnChange:i.isOnChange)?e:!0,Ie=(e,t)=>!S(w(e,t)).length&&H(e,t),Le=(e,t,n)=>{let r=ue(w(e,n));return D(r,ee,t[n]),D(e,n,r),e};function Re(e,t,n=`validate`){if(I(e)||Array.isArray(e)&&e.every(I)||T(e)&&!e)return{type:n,message:I(e)?e:``,ref:t}}var Z=e=>m(e)&&!J(e)?e:{value:e,message:``},ze=async(e,t,n,r,i,a)=>{let{ref:o,refs:s,required:c,maxLength:l,minLength:d,min:p,max:h,pattern:g,validate:_,name:v,valueAsNumber:y,mount:b}=e._f,S=w(n,v);if(!b||t.has(v))return{};let C=s?s[0]:o,D=e=>{i&&C.reportValidity&&(C.setCustomValidity(T(e)?``:e||``),C.reportValidity())},O={},k=B(o),j=u(o),ee=k||j,M=(y||pe(o))&&x(o.value)&&x(S)||me(o)&&o.value===``||S===``||Array.isArray(S)&&!S.length,N=le.bind(null,v,r,O),P=(e,t,n,r=A.maxLength,i=A.minLength)=>{let a=e?t:n;O[v]={type:e?r:i,message:a,ref:o,...N(e?r:i,a)}};if(a?!Array.isArray(S)||!S.length:c&&(!ee&&(M||f(S))||T(S)&&!S||j&&!q(s).isValid||k&&!Ce(s).isValid)){let{value:e,message:t}=I(c)?{value:!!c,message:c}:Z(c);if(e&&(O[v]={type:A.required,message:t,ref:C,...N(A.required,t)},!r))return D(t),O}if(!M&&(!f(p)||!f(h))){let e,t,n=Z(h),i=Z(p);if(!f(S)&&!isNaN(S)){let r=o.valueAsNumber||S&&+S;f(n.value)||(e=r>n.value),f(i.value)||(t=rnew Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;I(n.value)&&S&&(e=s?a(S)>a(n.value):c?S>n.value:r>new Date(n.value)),I(i.value)&&S&&(t=s?a(S)+e.value,i=!f(t.value)&&S.length<+t.value;if((n||i)&&(P(n,e.message,t.message),!r))return D(O[v].message),O}if(g&&!M&&I(S)){let{value:e,message:t}=Z(g);if(J(e)&&!S.match(e)&&(O[v]={type:A.pattern,message:t,ref:o,...N(A.pattern,t)},!r))return D(t),O}if(_){if(E(_)){let e=Re(await _(S,n),C);if(e&&(O[v]={...e,...N(A.validate,e.message)},!r))return D(e.message),O}else if(m(_)){let e={};for(let t in _){if(!z(e)&&!r)break;let i=Re(await _[t](S,n),C,t);i&&(e={...i,...N(t,i.message)},D(i.message),r&&(O[v]=e))}if(!z(e)&&(O[v]={ref:C,...e},!r))return O}}return D(!0),O},Be={mode:k.onSubmit,reValidateMode:k.onChange,shouldFocusError:!0};function Ve(e={}){let t={...Be,...e},n={submitCount:0,isDirty:!1,isReady:!1,isLoading:E(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},r={},i=(m(t.defaultValues)||m(t.values))&&y(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:y(i),o={action:!1,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},c,l=0,p={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},_={...p},b={..._},C={array:de(),state:de()},M=t.criteriaMode===k.all,N=e=>t=>{clearTimeout(l),l=setTimeout(e,t)},P=async e=>{if(!o.keepIsValid&&!t.disabled&&(_.isValid||b.isValid||e)){let e;t.resolver?(e=z((await R()).errors),F()):e=await V({fields:r,onlyCheckValid:!0,eventType:O.VALID}),e!==n.isValid&&C.state.next({isValid:e})}},F=(e,r)=>{!t.disabled&&(_.isValidating||_.validatingFields||b.isValidating||b.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?D(n.validatingFields,e,r):H(n.validatingFields,e))}),C.state.next({validatingFields:n.validatingFields,isValidating:!z(n.validatingFields)}))},te=e=>{let t=G(i,a),r=Te(e);D(n.dirtyFields,r,w(t,r))},re=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,u&&Array.isArray(w(r,e))){let t=s(w(r,e),c.argA,c.argB);l&&D(r,e,t)}if(u&&Array.isArray(w(n.errors,e))){let t=s(w(n.errors,e),c.argA,c.argB);l&&D(n.errors,e,t),Ie(n.errors,e)}if((_.touchedFields||b.touchedFields)&&u&&Array.isArray(w(n.touchedFields,e))){let t=s(w(n.touchedFields,e),c.argA,c.argB);l&&D(n.touchedFields,e,t)}(_.dirtyFields||b.dirtyFields)&&te(e),C.state.next({name:e,isDirty:U(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else D(a,e,i)},ie=(e,t)=>{D(n.errors,e,t),C.state.next({errors:n.errors})},ae=e=>{n.errors=e,C.state.next({errors:n.errors,isValid:!1})},oe=(e,t,n,s)=>{let c=w(r,e);if(c){let r=w(a,e,x(n)?w(i,e):n);x(r)||s&&s.defaultChecked||t?D(a,e,t?r:we(c._f)):K(e,r),o.mount&&!o.action&&P()}},se=(e,r,a,o,s)=>{let c=!1,l=!1,u={name:e};if(!t.disabled){if(!a||o){(_.isDirty||b.isDirty)&&(l=n.isDirty,n.isDirty=u.isDirty=U(),c=l!==u.isDirty);let t=L(w(i,e),r);l=!!w(n.dirtyFields,e),t?H(n.dirtyFields,e):D(n.dirtyFields,e,!0),u.dirtyFields=n.dirtyFields,c||=(_.dirtyFields||b.dirtyFields)&&l!==!t}if(a){let t=w(n.touchedFields,e);t||(D(n.touchedFields,e,a),u.touchedFields=n.touchedFields,c||=(_.touchedFields||b.touchedFields)&&t!==a)}c&&s&&C.state.next(u)}return c?u:{}},ce=(e,r,i,a)=>{let o=w(n.errors,e),s=(_.isValid||b.isValid)&&T(r)&&n.isValid!==r;if(t.delayError&&i?(c=N(()=>ie(e,i)),c(t.delayError)):(clearTimeout(l),c=null,i?D(n.errors,e,i):H(n.errors,e)),(i?!L(o,i):o)||!z(a)||s){let t={...a,...s&&T(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},C.state.next(t)}},R=async e=>(F(e,!0),await t.resolver(a,t.context,Ee(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),le=async e=>{let{errors:t}=await R(e);if(F(e),e)for(let r of e){let e=w(t,r);e?D(n.errors,r,e):H(n.errors,r)}else n.errors=t;return t},B=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(m(i))for(let e in i)i[e]&&Ve(`${j}.${e}`,{message:I(i.message)?i.message:``,type:A.validate});else I(i)||!i?Ve(j,{message:i||``,type:A.validate}):Z(j);return i}return!0},V=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await B({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...d}=u;if(r){let o=s.array.has(r.name),c=u._f&&ke(u._f);c&&_.validatingFields&&F([r.name],!0);let d=await ze(u,s.disabled,a,M,t.shouldUseNativeValidation&&!i,o);if(c&&_.validatingFields&&F([r.name]),d[r.name]&&(l.valid=!1,i)||(!i&&(w(d,r.name)?o?Le(n.errors,d,r.name):D(n.errors,r.name,d[r.name]):H(n.errors,r.name)),e.shouldUseNativeValidation&&d[r.name]))break}!z(d)&&await V({context:l,onlyCheckValid:i,fields:d,name:o,eventType:c})}}return l.valid},ve=()=>{for(let e of s.unMount){let t=w(r,e);t&&(t._f.refs?t._f.refs.every(e=>!_e(e)):!_e(t._f.ref))&&Ge(e)}s.unMount=new Set},U=(e,n)=>!t.disabled&&(e&&n&&D(a,e,n),!L(Oe(),i)),W=(e,t,n)=>ne(e,s,{...o.mount?a:x(t)?i:I(e)?{[e]:t}:t},n,t),ye=e=>S(w(o.mount?a:i,e,t.shouldUnregister?w(i,e,[]):[])),K=(e,t,n={})=>{let i=w(r,e),o=t;if(i){let n=i._f;n&&(!n.disabled&&D(a,e,xe(t,n)),o=me(n.ref)&&f(t)?``:t,he(n.ref)?[...n.ref.options].forEach(e=>e.selected=o.includes(e.value)):n.refs?u(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(Array.isArray(o)?e.checked=!!o.find(t=>t===e.value):e.checked=o===e.value||!!o)}):n.refs.forEach(e=>e.checked=e.value===o):pe(n.ref)?n.ref.value=``:(n.ref.value=o,n.ref.type||C.state.next({name:e,values:y(a)})))}(n.shouldDirty||n.shouldTouch)&&se(e,o,n.shouldTouch,n.shouldDirty,!0),n.shouldValidate&&J(e)},be=(e,t,n)=>{for(let i in t){if(!t.hasOwnProperty(i))return;let a=t[i],o=e+`.`+i,c=w(r,o);(s.array.has(e)||m(a)||c&&!c._f)&&!d(a)?be(o,a,n):K(o,a,n)}},q=(e,t,i={})=>{let c=w(r,e),l=s.array.has(e),u=y(t);D(a,e,u),l?(C.array.next({name:e,values:y(a)}),(_.isDirty||_.dirtyFields||b.isDirty||b.dirtyFields)&&i.shouldDirty&&(te(e),C.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:U(e,u)}))):c&&!c._f&&!f(u)?be(e,u,i):K(e,u,i),je(e,s)?C.state.next({...n,name:e,values:y(a)}):C.state.next({name:o.mount?e:void 0,values:y(a)})},Se=async i=>{o.mount=!0;let l=i.target,u=l.name,f=!0,p=w(r,u),m=e=>{f=Number.isNaN(e)||d(e)&&isNaN(e.getTime())||L(e,w(a,u,e))},g=De(t.mode),v=De(t.reValidateMode);if(p){let o,d,x=l.type?we(p._f):h(i),S=i.type===O.BLUR||i.type===O.FOCUS_OUT,T=!Ae(p._f)&&!e.validate&&!t.resolver&&!w(n.errors,u)&&!p._f.deps||Fe(S,w(n.touchedFields,u),n.isSubmitted,v,g),E=je(u,s,S);D(a,u,x),S?(!l||!l.readOnly)&&(p._f.onBlur&&p._f.onBlur(i),c&&c(0)):p._f.onChange&&p._f.onChange(i);let k=se(u,x,S),A=!z(k)||E;if(!S&&C.state.next({name:u,type:i.type,values:y(a)}),T)return(_.isValid||b.isValid)&&(t.mode===`onBlur`?S&&P():S||P()),A&&C.state.next({name:u,...E?{}:k});if(!t.resolver&&e.validate&&await B({name:u,eventType:i.type}),!S&&E&&C.state.next({...n}),t.resolver){let{errors:e}=await R([u]);if(F([u]),m(x),f){let t=Me(n.errors,r,u),i=Me(e,r,t.name||u);o=i.error,u=i.name,d=z(e)}}else F([u],!0),o=(await ze(p,s.disabled,a,M,t.shouldUseNativeValidation))[u],F([u]),m(x),f&&(o?d=!1:(_.isValid||b.isValid)&&(d=await V({fields:r,onlyCheckValid:!0,name:u,eventType:i.type})));f&&(p._f.deps&&(!Array.isArray(p._f.deps)||p._f.deps.length>0)&&J(p._f.deps),ce(u,d,o,k))}},Ce=(e,t)=>{if(w(n.errors,t)&&e.focus)return e.focus(),1},J=async(e,i={})=>{let a,o,c=ue(e);if(t.resolver){let t=await le(x(e)?e:c);a=z(t),o=e?!c.some(e=>w(t,e)):a}else e?(o=(await Promise.all(c.map(async e=>{let t=w(r,e);return await V({fields:t&&t._f?{[e]:t}:t,eventType:O.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&P()):o=a=await V({fields:r,name:e,eventType:O.TRIGGER});return C.state.next({...!I(e)||(_.isValid||b.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&X(r,Ce,e?c:s.mount),o},Oe=(e,t)=>{let r={...o.mount?a:i};return t&&(r=fe(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),x(e)?r:I(e)?w(r,e):e.map(e=>w(r,e))},Re=(e,t)=>({invalid:!!w((t||n).errors,e),isDirty:!!w((t||n).dirtyFields,e),error:w((t||n).errors,e),isValidating:!!w(n.validatingFields,e),isTouched:!!w((t||n).touchedFields,e)}),Z=e=>{let t=e?ue(e):void 0;t?.forEach(e=>H(n.errors,e)),t?t.forEach(e=>{C.state.next({name:e,errors:n.errors})}):C.state.next({errors:{}})},Ve=(e,t,i)=>{let a=(w(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=w(n.errors,e)||{};D(n.errors,e,{...l,...t,ref:a}),C.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},He=(e,t)=>E(e)?C.state.subscribe({next:n=>`values`in n&&e(W(void 0,t),n)}):W(e,t,!0),Ue=e=>C.state.subscribe({next:t=>{Pe(e.name,t.name,e.exact)&&Ne(t,e.formState||_,et,e.reRenderRoot)&&e.callback({values:{...a},...n,...t,defaultValues:i})}}).unsubscribe,We=e=>(o.mount=!0,b={...b,...e.formState},Ue({...e,formState:{...p,...e.formState}})),Ge=(e,o={})=>{for(let c of e?ue(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(H(r,c),H(a,c)),!o.keepError&&H(n.errors,c),!o.keepDirty&&H(n.dirtyFields,c),!o.keepTouched&&H(n.touchedFields,c),!o.keepIsValidating&&H(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&H(i,c);C.state.next({values:y(a)}),C.state.next({...n,...o.keepDirty?{isDirty:U()}:{}}),!o.keepIsValid&&P()},Ke=({disabled:e,name:t})=>{if(T(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&P()}},qe=(e,n={})=>{let a=w(r,e),c=T(n.disabled)||T(t.disabled),l=!s.registerName.has(e)&&a&&!a._f.mount;return D(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?Ke({disabled:T(n.disabled)?n.disabled:t.disabled,name:e}):oe(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:Y(n.min),max:Y(n.max),minLength:Y(n.minLength),maxLength:Y(n.maxLength),pattern:Y(n.pattern)}:{},name:e,onChange:Se,onBlur:Se,ref:c=>{if(c){s.registerName.add(e),qe(e,n),s.registerName.delete(e),a=w(r,e);let t=x(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=ge(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;D(r,e,{_f:{...a._f,...o?{refs:[...l.filter(_e),t,...Array.isArray(w(i,e))?[{}]:[]],ref:{type:t.type,name:e}}:{ref:t}}}),oe(e,!1,void 0,t)}else a=w(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(g(s.array,e)&&o.action)&&s.unMount.add(e)}}},Je=()=>t.shouldFocusError&&X(r,Ce,s.mount),Ye=e=>{T(e)&&(C.state.next({disabled:e}),X(r,(t,n)=>{let i=w(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},Xe=(e,i)=>async o=>{let c;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let l=y(a);if(C.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await R();F(),n.errors=e,l=y(t)}else await V({fields:r,eventType:O.SUBMIT});if(s.disabled.size)for(let e of s.disabled)H(l,e);if(H(n.errors,ee),z(n.errors)){C.state.next({errors:{}});try{await e(l,o)}catch(e){c=e}}else i&&await i({...n.errors},o),Je(),setTimeout(Je);if(C.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:z(n.errors)&&!c,submitCount:n.submitCount+1,errors:n.errors}),c)throw c},Ze=(e,t={})=>{w(r,e)&&(x(t.defaultValue)?q(e,y(w(i,e))):(q(e,t.defaultValue),D(i,e,y(t.defaultValue))),t.keepTouched||H(n.touchedFields,e),t.keepDirty||(H(n.dirtyFields,e),n.isDirty=t.defaultValue?U(e,y(w(i,e))):U()),t.keepError||(H(n.errors,e),_.isValid&&P()),C.state.next({...n}))},Q=(e,c={})=>{let l=e?y(e):i,u=y(l),d=z(e),f=d?i:u;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Object.keys(G(i,a))]);for(let t of Array.from(e)){let e=w(n.dirtyFields,t),r=w(a,t),i=w(f,t);e&&!x(r)?D(f,t,r):!e&&!x(i)&&q(t,i)}}else{if(v&&x(e))for(let e of s.mount){let t=w(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(me(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)q(e,w(f,e));else r={}}a=t.shouldUnregister?c.keepDefaultValues?y(i):{}:y(f),C.array.next({values:{...f}}),C.state.next({values:{...f}})}s={mount:c.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!_.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!z(f),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,c.keepErrors||(n.errors={}),C.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:d?!1:c.keepDirty?n.isDirty:!!(c.keepDefaultValues&&!L(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?G(i,a):n.dirtyFields:c.keepDefaultValues&&e?G(i,e):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},Qe=(e,n)=>Q(E(e)?e(a):e,{...t.resetOptions,...n}),$e=(e,t={})=>{let n=w(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&E(e.select)&&e.select()})}},et=e=>{n={...n,...e}},$={control:{register:qe,unregister:Ge,getFieldState:Re,handleSubmit:Xe,setError:Ve,_subscribe:Ue,_runSchema:R,_updateIsValidating:F,_focusError:Je,_getWatch:W,_getDirty:U,_setValid:P,_setFieldArray:re,_setDisabledField:Ke,_setErrors:ae,_getFieldArray:ye,_reset:Q,_resetDefaultValues:()=>E(t.defaultValues)&&t.defaultValues().then(e=>{Qe(e,t.resetOptions),C.state.next({isLoading:!1})}),_removeUnmounted:ve,_disableForm:Ye,_subjects:C,_proxyFormState:_,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e}}},subscribe:We,trigger:J,register:qe,handleSubmit:Xe,watch:He,setValue:q,getValues:Oe,reset:Qe,resetField:Ze,clearErrors:Z,unregister:Ge,setError:Ve,setFocus:$e,getFieldState:Re};return{...$,formControl:$}}function He(e={}){let t=l.useRef(void 0),n=l.useRef(void 0),[r,i]=l.useState({isDirty:!1,isValidating:!1,isLoading:E(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:E(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:r},e.defaultValues&&!E(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...i}=Ve(e);t.current={...i,formState:r}}let a=t.current.control;return a._options=e,F(()=>{let e=a._subscribe({formState:a._proxyFormState,callback:()=>i({...a._formState}),reRenderRoot:!0});return i(e=>({...e,isReady:!0})),a._formState.isReady=!0,e},[a]),l.useEffect(()=>a._disableForm(e.disabled),[a,e.disabled]),l.useEffect(()=>{e.mode&&(a._options.mode=e.mode),e.reValidateMode&&(a._options.reValidateMode=e.reValidateMode)},[a,e.mode,e.reValidateMode]),l.useEffect(()=>{e.errors&&(a._setErrors(e.errors),a._focusError())},[a,e.errors]),l.useEffect(()=>{e.shouldUnregister&&a._subjects.state.next({values:a._getWatch()})},[a,e.shouldUnregister]),l.useEffect(()=>{if(a._proxyFormState.isDirty){let e=a._getDirty();e!==r.isDirty&&a._subjects.state.next({isDirty:e})}},[a,r.isDirty]),l.useEffect(()=>{e.values&&!L(e.values,n.current)?(a._reset(e.values,{keepFieldsRef:!0,...a._options.resetOptions}),a._options.resetOptions?.keepIsValid||a._setValid(),n.current=e.values,i(e=>({...e}))):a._resetDefaultValues()},[a,e.values]),l.useEffect(()=>{a._state.mount||(a._setValid(),a._state.mount=!0),a._state.watch&&(a._state.watch=!1,a._subjects.state.next({...a._formState})),a._removeUnmounted()}),t.current.formState=l.useMemo(()=>P(r,a),[a,r]),t.current}var Ue=(e,t,n)=>{if(e&&`reportValidity`in e){let r=w(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},We=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?Ue(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>Ue(t,n,e))}},Ge=(e,t)=>{t.shouldUseNativeValidation&&We(e,t);let n={};for(let r in e){let i=w(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.ref});if(Ke(t.names||Object.keys(e),r)){let e=Object.assign({},w(n,r));D(e,`root`,a),D(n,r,e)}else D(n,r,a)}return n},Ke=(e,t)=>{let n=qe(t);return e.some(e=>qe(e).match(`^${n}\\.\\d+`))};function qe(e){return e.replace(/\]|\[/g,``)}function Je(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}function Ye(e,t){for(var n={};e.length;){var r=e[0],i=r.code,a=r.message,o=r.path.join(`.`);if(!n[o])if(`unionErrors`in r){var s=r.unionErrors[0].errors[0];n[o]={message:s.message,type:s.code}}else n[o]={message:a,type:i};if(`unionErrors`in r&&r.unionErrors.forEach(function(t){return t.errors.forEach(function(t){return e.push(t)})}),t){var c=n[o].types,l=c&&c[r.code];n[o]=le(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()}return n}function Xe(e,t){for(var n={};e.length;){var r=e[0],i=r.code,a=r.message,o=r.path.join(`.`);if(!n[o])if(r.code===`invalid_union`&&r.errors.length>0){var s=r.errors[0][0];n[o]={message:s.message,type:s.code}}else n[o]={message:a,type:i};if(r.code===`invalid_union`&&r.errors.forEach(function(t){return t.forEach(function(t){return e.push(t)})}),t){var c=n[o].types,l=c&&c[r.code];n[o]=le(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()}return n}function Ze(e,t,n){if(n===void 0&&(n={}),function(e){return`_def`in e&&typeof e._def==`object`&&`typeName`in e._def}(e))return function(r,i,a){try{return Promise.resolve(Je(function(){return Promise.resolve(e[n.mode===`sync`?`parse`:`parseAsync`](r,t)).then(function(e){return a.shouldUseNativeValidation&&We({},a),{errors:{},values:n.raw?Object.assign({},r):e}})},function(e){if(function(e){return Array.isArray(e?.issues)}(e))return{values:{},errors:Ge(Ye(e.errors,!a.shouldUseNativeValidation&&a.criteriaMode===`all`),a)};throw e}))}catch(e){return Promise.reject(e)}};if(function(e){return`_zod`in e&&typeof e._zod==`object`}(e))return function(r,i,a){try{return Promise.resolve(Je(function(){return Promise.resolve((n.mode===`sync`?s:c)(e,r,t)).then(function(e){return a.shouldUseNativeValidation&&We({},a),{errors:{},values:n.raw?Object.assign({},r):e}})},function(e){if(function(e){return e instanceof o}(e))return{values:{},errors:Ge(Xe(e.issues,!a.shouldUseNativeValidation&&a.criteriaMode===`all`),a)};throw e}))}catch(e){return Promise.reject(e)}};throw Error(`Invalid input: not a Zod schema`)}var Q=e(),Qe=R,$e=l.createContext({}),et=({...e})=>(0,Q.jsx)($e.Provider,{value:{name:e.name},children:(0,Q.jsx)(oe,{...e})}),$=()=>{let e=l.useContext($e),t=l.useContext(tt),{getFieldState:n}=ce(),r=te({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within `);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}},tt=l.createContext({});function nt({className:e,...t}){let n=l.useId();return(0,Q.jsx)(tt.Provider,{value:{id:n},children:(0,Q.jsx)(`div`,{className:r(`grid gap-2`,e),"data-slot":`form-item`,...t})})}function rt({className:e,...t}){let{error:n,formItemId:i}=$();return(0,Q.jsx)(a,{className:r(`data-[error=true]:text-destructive`,e),"data-error":!!n,"data-slot":`form-label`,htmlFor:i,...t})}function it({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:a}=$();return(0,Q.jsx)(i,{"aria-describedby":t?`${r} ${a}`:`${r}`,"aria-invalid":!!t,"data-slot":`form-control`,id:n,...e})}function at({className:e,...t}){let{formDescriptionId:n}=$();return(0,Q.jsx)(`p`,{className:r(`text-muted-foreground text-sm`,e),"data-slot":`form-description`,id:n,...t})}function ot({className:e,...t}){let{error:n,formMessageId:i}=$(),a=n?String(n?.message??``):t.children;return a?(0,Q.jsx)(`p`,{className:r(`text-destructive text-sm`,e),"data-slot":`form-message`,id:i,...t,children:a}):null}export{nt as a,Ze as c,et as i,He as l,it as n,rt as o,at as r,ot as s,Qe as t}; \ No newline at end of file diff --git a/src/www/assets/general-error-DKtbS-qh.js b/src/www/assets/general-error-DKtbS-qh.js new file mode 100644 index 0000000..0b25c90 --- /dev/null +++ b/src/www/assets/general-error-DKtbS-qh.js @@ -0,0 +1 @@ +import{cc as e,dc as t,lc as n,nu as r,uc as i}from"./messages-BovT1T-w.js";import{t as a}from"./useRouter-D03zSgJO.js";import{t as o}from"./useNavigate-Dg8CkCoa.js";import{i as s,t as c}from"./button-DJA4fnJ8.js";var l=r();function u({className:r,minimal:u=!1}){let d=o(),{history:f}=a();return(0,l.jsx)(`div`,{className:s(`h-svh w-full`,r),children:(0,l.jsxs)(`div`,{className:`m-auto flex h-full w-full flex-col items-center justify-center gap-2`,children:[!u&&(0,l.jsx)(`h1`,{className:`font-bold text-[7rem] leading-tight`,children:`500`}),(0,l.jsx)(`span`,{className:`font-medium`,children:t()}),(0,l.jsx)(`p`,{className:`text-center text-muted-foreground`,children:i()}),!u&&(0,l.jsxs)(`div`,{className:`mt-6 flex gap-4`,children:[(0,l.jsx)(c,{onClick:()=>f.go(-1),variant:`outline`,children:n()}),(0,l.jsx)(c,{onClick:()=>d({to:`/dashboard`}),children:e()})]})]})})}export{u as t}; \ No newline at end of file diff --git a/src/www/assets/header-DbmR8lIc.js b/src/www/assets/header-DbmR8lIc.js new file mode 100644 index 0000000..b62615f --- /dev/null +++ b/src/www/assets/header-DbmR8lIc.js @@ -0,0 +1 @@ +import{Ds as e,Jl as t,Os as n,Ps as r,Ql as i,Yl as a,n as o,nu as s,ou as c,ru as l}from"./messages-BovT1T-w.js";import{i as u}from"./auth-store-BpIS8RMn.js";import{t as d}from"./link-CA4H4hTz.js";import{B as f,H as p,L as m,M as h,V as g,d as _,f as v,g as y,l as b,n as x,o as S,p as C,u as w}from"./search-provider-Cx1K1ilz.js";import{i as T,t as E}from"./button-DJA4fnJ8.js";import{a as D,i as O,l as k,o as A,r as j,s as M,t as N}from"./dropdown-menu-CUea1X0A.js";import{g as P}from"./command-BwVY_kli.js";import{t as F}from"./separator-CRLYw2cW.js";var I=c(l(),1),L=s();function R(){let[i,s]=b(),[c,l]=(0,I.useState)(!1),{user:h}=u(),x=h?.username?.trim()||o(),T=x.charAt(0).toUpperCase()||`U`,P=h?.last_login_at?n({time:S(h.last_login_at)}):e();return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(m,{onOpenChange:l,open:c,children:(0,L.jsx)(y,{})}),(0,L.jsxs)(N,{modal:!1,children:[(0,L.jsx)(k,{asChild:!0,children:(0,L.jsx)(E,{className:`relative h-8 w-8 rounded-full`,variant:`ghost`,children:(0,L.jsxs)(w,{className:`h-8 w-8`,children:[(0,L.jsx)(v,{alt:x,src:`/avatars/01.png`}),(0,L.jsx)(_,{children:T})]})})}),(0,L.jsxs)(j,{align:`end`,className:`w-56`,forceMount:!0,children:[(0,L.jsx)(A,{className:`p-0 font-normal`,children:(0,L.jsxs)(`div`,{className:`flex items-center gap-2 px-1 py-1.5 text-start text-sm`,children:[(0,L.jsxs)(w,{className:`h-8 w-8 rounded-lg`,children:[(0,L.jsx)(v,{alt:x,src:`/avatars/01.png`}),(0,L.jsx)(_,{className:`rounded-lg`,children:T})]}),(0,L.jsxs)(`div`,{className:`grid flex-1 text-start text-sm leading-tight`,children:[(0,L.jsx)(`span`,{className:`truncate font-semibold`,children:x}),(0,L.jsx)(`span`,{className:`truncate text-muted-foreground text-xs`,children:P})]})]})}),(0,L.jsx)(M,{}),(0,L.jsxs)(O,{children:[(0,L.jsx)(D,{asChild:!0,children:(0,L.jsxs)(d,{to:`/account/password`,children:[(0,L.jsx)(p,{className:`mr-2 size-4`}),a()]})}),(0,L.jsxs)(D,{onClick:()=>l(!0),onSelect:e=>e.preventDefault(),children:[(0,L.jsx)(f,{className:`mr-2 size-4`}),r()]})]}),(0,L.jsx)(M,{}),(0,L.jsxs)(D,{onClick:()=>s(!0),variant:`destructive`,children:[(0,L.jsx)(g,{className:`mr-2 size-4`}),t()]})]})]}),(0,L.jsx)(C,{onOpenChange:s,open:!!i})]})}function z({className:e=``,placeholder:t}){let{setOpen:n}=x();return(0,L.jsxs)(E,{className:T(`group relative h-8 w-full flex-1 justify-start rounded-md bg-muted/25 font-normal text-muted-foreground text-sm shadow-none hover:bg-accent sm:w-40 sm:pe-12 md:flex-none lg:w-52 xl:w-64`,e),onClick:()=>n(!0),variant:`outline`,children:[(0,L.jsx)(P,{"aria-hidden":`true`,className:`absolute inset-s-1.5 top-1/2 -translate-y-1/2`,size:16}),(0,L.jsx)(`span`,{className:`ms-4`,children:t??i()}),(0,L.jsxs)(`kbd`,{className:`pointer-events-none absolute inset-e-[0.3rem] top-[0.3rem] hidden h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-medium font-mono text-[10px] opacity-100 group-hover:bg-accent sm:flex`,children:[(0,L.jsx)(`span`,{className:`text-xs`,children:`⌘`}),`K`]})]})}function B({className:e,fixed:t,children:n,...r}){let[i,a]=(0,I.useState)(0);return(0,I.useEffect)(()=>{let e=()=>{a(document.body.scrollTop||document.documentElement.scrollTop)};return document.addEventListener(`scroll`,e,{passive:!0}),()=>document.removeEventListener(`scroll`,e)},[]),(0,L.jsx)(`header`,{className:T(`z-50 h-16`,t&&`header-fixed peer/header sticky top-0 w-[inherit]`,i>10&&t?`shadow`:`shadow-none`,e),...r,children:(0,L.jsxs)(`div`,{className:T(`relative flex h-full items-center gap-3 p-4 sm:gap-4`,i>10&&t&&`after:absolute after:inset-0 after:-z-10 after:bg-background/20 after:backdrop-blur-lg`),children:[(0,L.jsx)(h,{className:`max-md:scale-125`,variant:`outline`}),(0,L.jsx)(F,{className:`h-6`,orientation:`vertical`}),n]})})}export{z as n,R as r,B as t}; \ No newline at end of file diff --git a/src/www/assets/help-F2O9kOnX.js b/src/www/assets/help-F2O9kOnX.js new file mode 100644 index 0000000..f6ad109 --- /dev/null +++ b/src/www/assets/help-F2O9kOnX.js @@ -0,0 +1 @@ +import{Ll as e,Rl as t,nu as n,zl as r}from"./messages-BovT1T-w.js";import{t as i}from"./telescope-67IWjQye.js";var a=n();function o(){return(0,a.jsx)(`div`,{className:`h-svh`,children:(0,a.jsxs)(`div`,{className:`m-auto flex h-full w-full flex-col items-center justify-center gap-2`,children:[(0,a.jsx)(i,{size:72}),(0,a.jsx)(`h1`,{className:`font-bold text-4xl leading-tight`,children:r()}),(0,a.jsxs)(`p`,{className:`text-center text-muted-foreground`,children:[t(),` `,(0,a.jsx)(`br`,{}),e()]})]})})}var s=o;export{s as component}; \ No newline at end of file diff --git a/src/www/assets/index-CvQvpjMM.js b/src/www/assets/index-CvQvpjMM.js new file mode 100644 index 0000000..a4966f6 --- /dev/null +++ b/src/www/assets/index-CvQvpjMM.js @@ -0,0 +1,9 @@ +import{iu as e,nu as t,ou as n,ru as r}from"./messages-BovT1T-w.js";import{f as i}from"./auth-store-BpIS8RMn.js";import{n as a,t as o}from"./router-Dohuf5K5.js";import{n as s}from"./useRouter-D03zSgJO.js";import{t as c}from"./Matches-LuvVcyUg.js";import{r as l}from"./dist-15n4mVGL.js";import{n as u}from"./_error-DGJYkCxd.js";import{n as d,o as f}from"./wallet--XSRr4dT.js";import{t as p}from"./font-provider-DvtNHF7l.js";import{t as m}from"./theme-provider-CRKya7Cx.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var h=n(r(),1),g=t();function _({router:e,children:t,...n}){Object.keys(n).length>0&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,g.jsx)(s.Provider,{value:e,children:t});return e.options.Wrap?(0,g.jsx)(e.options.Wrap,{children:r}):r}function v({router:e,...t}){return(0,g.jsx)(_,{router:e,...t,children:(0,g.jsx)(c,{})})}var y=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,ee||(ee=!0,oe());else{var t=n(l);t!==null&&le(x,t.startTime-e)}}var ee=!1,te=-1,ne=5,re=-1;function ie(){return g?!0:!(e.unstable_now()-ret&&ie());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&le(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?oe():ee=!1}}}var oe;if(typeof y==`function`)oe=function(){y(ae)};else if(typeof MessageChannel<`u`){var se=new MessageChannel,ce=se.port2;se.port1.onmessage=ae,oe=function(){ce.postMessage(null)}}else oe=function(){_(ae,0)};function le(t,n){te=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(te),te=-1):h=!0,le(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,oe()))),r},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),b=e(((e,t)=>{t.exports=y()})),x=e((e=>{var t=b(),n=r(),i=l();function a(e){var t=`https://react.dev/errors/`+e;if(1ge||(e.current=he[ge],he[ge]=null,ge--)}function T(e,t){ge++,he[ge]=e.current,e.current=t}var ve=_e(null),ye=_e(null),be=_e(null),xe=_e(null);function Se(e,t){switch(T(be,t),T(ye,e),T(ve,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}w(ve),T(ve,e)}function Ce(){w(ve),w(ye),w(be)}function we(e){e.memoizedState!==null&&T(xe,e);var t=ve.current,n=Hd(t,e.type);t!==n&&(T(ye,e),T(ve,n))}function Te(e){ye.current===e&&(w(ve),w(ye)),xe.current===e&&(w(xe),Qf._currentValue=me)}var Ee,De;function Oe(e){if(Ee===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ee=t&&t[1]||``,De=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ke=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Oe(n):``}function je(e,t){switch(e.tag){case 26:case 27:case 5:return Oe(e.type);case 16:return Oe(`Lazy`);case 13:return e.child!==t&&t!==null?Oe(`Suspense Fallback`):Oe(`Suspense`);case 19:return Oe(`SuspenseList`);case 0:case 15:return Ae(e.type,!1);case 11:return Ae(e.type.render,!1);case 1:return Ae(e.type,!0);case 31:return Oe(`Activity`);default:return``}}function Me(e){try{var t=``,n=null;do t+=je(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Ne=Object.prototype.hasOwnProperty,Pe=t.unstable_scheduleCallback,Fe=t.unstable_cancelCallback,Ie=t.unstable_shouldYield,Le=t.unstable_requestPaint,Re=t.unstable_now,ze=t.unstable_getCurrentPriorityLevel,Be=t.unstable_ImmediatePriority,Ve=t.unstable_UserBlockingPriority,He=t.unstable_NormalPriority,Ue=t.unstable_LowPriority,We=t.unstable_IdlePriority,Ge=t.log,Ke=t.unstable_setDisableYieldValue,qe=null,Je=null;function Ye(e){if(typeof Ge==`function`&&Ke(e),Je&&typeof Je.setStrictMode==`function`)try{Je.setStrictMode(qe,e)}catch{}}var Xe=Math.clz32?Math.clz32:$e,Ze=Math.log,Qe=Math.LN2;function $e(e){return e>>>=0,e===0?32:31-(Ze(e)/Qe|0)|0}var et=256,tt=262144,nt=4194304;function rt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function it(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=rt(n))):i=rt(o):i=rt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=rt(n))):i=rt(o)):i=rt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function at(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ot(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function st(){var e=nt;return nt<<=1,!(nt&62914560)&&(nt=4194304),e}function ct(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function lt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ut(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),xn=!1;if(bn)try{var Sn={};Object.defineProperty(Sn,`passive`,{get:function(){xn=!0}}),window.addEventListener(`test`,Sn,Sn),window.removeEventListener(`test`,Sn,Sn)}catch{xn=!1}var Cn=null,wn=null,Tn=null;function En(){if(Tn)return Tn;var e,t=wn,n=t.length,r,i=`value`in Cn?Cn.value:Cn.textContent,a=i.length;for(e=0;e=ir),sr=` `,cr=!1;function lr(e,t){switch(e){case`keyup`:return nr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function ur(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var dr=!1;function fr(e,t){switch(e){case`compositionend`:return ur(t);case`keypress`:return t.which===32?(cr=!0,sr):null;case`textInput`:return e=t.data,e===sr&&cr?null:e;default:return null}}function pr(e,t){if(dr)return e===`compositionend`||!rr&&lr(e,t)?(e=En(),Tn=wn=Cn=null,dr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Fr(n)}}function Lr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Lr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Rr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=qt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=qt(e.document)}return t}function zr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Br=bn&&`documentMode`in document&&11>=document.documentMode,Vr=null,Hr=null,Ur=null,Wr=!1;function Gr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Wr||Vr==null||Vr!==qt(r)||(r=Vr,`selectionStart`in r&&zr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Ur&&Pr(Ur,r)||(Ur=r,r=Ed(Hr,`onSelect`),0>=o,i-=o,Li=1<<32-Xe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),A&&zi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),A&&zi(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return A&&zi(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),A&&zi(i,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===v&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case g:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===v){if(r.tag===7){n(e,r.sibling),c=i(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===oe&&Fa(l)===r.type){n(e,r.sibling),c=i(r,o.props),Ha(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===v?(c=wi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=Ci(o.type,o.key,o.props,null,e.mode,c),Ha(c,o),c.return=e,e=c)}return s(e);case _:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=i(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Di(o,e.mode,c),c.return=e,e=c}return s(e);case oe:return o=Fa(o),b(e,r,o,c)}if(pe(o))return h(e,r,o,c);if(ue(o)){if(l=ue(o),typeof l!=`function`)throw Error(a(150));return o=l.call(o),y(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Va(o),c);if(o.$$typeof===te)return b(e,r,ua(e,o),c);Ua(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,o),c.return=e,e=c):(n(e,r),c=Ti(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ba=0;var i=b(e,t,n,r);return za=null,i}catch(t){if(t===ka||t===ja)throw t;var a=yi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Ga=Wa(!0),Ka=Wa(!1),qa=!1;function Ja(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ya(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Xa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Za(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,W&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=gi(e),hi(e,null,n),t}return fi(e,r,t,n),gi(e)}function Qa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}function $a(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var eo=!1;function to(){if(eo){var e=ba;if(e!==null)throw e}}function no(e,t,n,r){eo=!1;var i=e.updateQueue;qa=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(q&f)===f:(r&f)===f){f!==0&&f===ya&&(eo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=m({},d,f);break a;case 2:qa=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Kl|=o,e.lanes=o,e.memoizedState=d}}function ro(e,t){if(typeof e!=`function`)throw Error(a(191,e));e.call(t)}function io(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=S.T,s={};S.T=s,zs(e,!1,t,n);try{var c=i(),l=S.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Rs(e,t,Ca(c,r),pu(e)):Rs(e,t,r,pu(e))}catch(n){Rs(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{C.p=a,o!==null&&s.types!==null&&(o.types=s.types),S.T=o}}function Os(){}function ks(e,t,n,r){if(e.tag!==5)throw Error(a(476));var i=As(e).queue;Ds(e,i,t,me,n===null?Os:function(){return js(e),n(r)})}function As(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:me,baseState:me,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bo,lastRenderedState:me},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Bo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function js(e){var t=As(e);t.next===null&&(t=e.alternate.memoizedState),Rs(e,t.next.queue,{},pu())}function Ms(){return j(Qf)}function Ns(){return R().memoizedState}function Ps(){return R().memoizedState}function Fs(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=Xa(n);var r=Za(t,e,n);r!==null&&(hu(r,t,n),Qa(r,t,n)),t={cache:ha()},e.payload=t;return}t=t.return}}function Is(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Bs(e)?Vs(t,n):(n=pi(e,t,n,r),n!==null&&(hu(n,e,r),Hs(n,t,r)))}function Ls(e,t,n){Rs(e,t,n,pu())}function Rs(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Bs(e))Vs(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Nr(s,o))return fi(e,t,i,0),G===null&&di(),!1}catch{}if(n=pi(e,t,i,r),n!==null)return hu(n,e,r),Hs(n,t,r),!0}return!1}function zs(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Bs(e)){if(t)throw Error(a(479))}else t=pi(e,n,r,2),t!==null&&hu(t,e,2)}function Bs(e){var t=e.alternate;return e===P||t!==null&&t===P}function Vs(e,t){xo=bo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Hs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}var Us={readContext:j,use:Ro,useCallback:L,useContext:L,useEffect:L,useImperativeHandle:L,useLayoutEffect:L,useInsertionEffect:L,useMemo:L,useReducer:L,useRef:L,useState:L,useDebugValue:L,useDeferredValue:L,useTransition:L,useSyncExternalStore:L,useId:L,useHostTransitionStatus:L,useFormState:L,useActionState:L,useOptimistic:L,useMemoCache:L,useCacheRefresh:L};Us.useEffectEvent=L;var Ws={readContext:j,use:Ro,useCallback:function(e,t){return Fo().memoizedState=[e,t===void 0?null:t],e},useContext:j,useEffect:ms,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),fs(4194308,4,bs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return fs(4194308,4,e,t)},useInsertionEffect:function(e,t){fs(4,2,e,t)},useMemo:function(e,t){var n=Fo();t=t===void 0?null:t;var r=e();if(So){Ye(!0);try{e()}finally{Ye(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Fo();if(n!==void 0){var i=n(t);if(So){Ye(!0);try{n(t)}finally{Ye(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Is.bind(null,P,e),[r.memoizedState,e]},useRef:function(e){var t=Fo();return e={current:e},t.memoizedState=e},useState:function(e){e=Xo(e);var t=e.queue,n=Ls.bind(null,P,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Ss,useDeferredValue:function(e,t){return Ts(Fo(),e,t)},useTransition:function(){var e=Xo(!1);return e=Ds.bind(null,P,e.queue,!0,!1),Fo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=P,i=Fo();if(A){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),G===null)throw Error(a(349));q&127||Go(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,ms(qo.bind(null,r,o,e),[e]),r.flags|=2048,us(9,{destroy:void 0},Ko.bind(null,r,o,n,t),null),n},useId:function(){var e=Fo(),t=G.identifierPrefix;if(A){var n=Ri,r=Li;n=(r&~(1<<32-Xe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Co++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(i,{is:r.is}):s.createElement(i)}}o[E]=t,o[yt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Lc(t)}}return B(t),Rc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Lc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(a(166));if(e=be.current,Xi(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=O,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[E]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||qi(t,!0)}else e=Bd(e).createTextNode(r),e[E]=t,t.stateNode=e}return B(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Xi(t),n!==null){if(e===null){if(!r)throw Error(a(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(a(557));e[E]=t}else Zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;B(t),e=!1}else n=Qi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(_o(t),t):(_o(t),null);if(t.flags&128)throw Error(a(558))}return B(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=Xi(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(a(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(a(317));i[E]=t}else Zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;B(t),i=!1}else i=Qi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(_o(t),t):(_o(t),null)}return _o(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Bc(t,t.updateQueue),B(t),null);case 4:return Ce(),e===null&&Sd(t.stateNode.containerInfo),B(t),null;case 10:return ia(t.type),B(t),null;case 19:if(w(N),r=t.memoizedState,r===null)return B(t),null;if(i=(t.flags&128)!=0,o=r.rendering,o===null)if(i)Vc(r,!1);else{if(Y!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=vo(e),o!==null){for(t.flags|=128,Vc(r,!1),e=o.updateQueue,t.updateQueue=e,Bc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Si(n,e),n=n.sibling;return T(N,N.current&1|2),A&&zi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Re()>nu&&(t.flags|=128,i=!0,Vc(r,!1),t.lanes=4194304)}else{if(!i)if(e=vo(o),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,Bc(t,e),Vc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!A)return B(t),null}else 2*Re()-r.renderingStartTime>nu&&n!==536870912&&(t.flags|=128,i=!0,Vc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(B(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Re(),e.sibling=null,n=N.current,T(N,i?n&1|2:n&1),A&&zi(t,r.treeForkCount),e);case 22:case 23:return _o(t),lo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(B(t),t.subtreeFlags&6&&(t.flags|=8192)):B(t),n=t.updateQueue,n!==null&&Bc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&w(Ta),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ia(M),B(t),null;case 25:return null;case 30:return null}throw Error(a(156,t.tag))}function Uc(e,t){switch(Hi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ia(M),Ce(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Te(t),null;case 31:if(t.memoizedState!==null){if(_o(t),t.alternate===null)throw Error(a(340));Zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(_o(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));Zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return w(N),null;case 4:return Ce(),null;case 10:return ia(t.type),null;case 22:case 23:return _o(t),lo(),e!==null&&w(Ta),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ia(M),null;case 25:return null;default:return null}}function Wc(e,t){switch(Hi(t),t.tag){case 3:ia(M),Ce();break;case 26:case 27:case 5:Te(t);break;case 4:Ce();break;case 31:t.memoizedState!==null&&_o(t);break;case 13:_o(t);break;case 19:w(N);break;case 10:ia(t.type);break;case 22:case 23:_o(t),lo(),e!==null&&w(Ta);break;case 24:ia(M)}}function Gc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Kc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function qc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{io(t,n)}catch(t){Z(e,e.return,t)}}}function Jc(e,t,n){n.props=Zs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Yc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Xc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Zc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Qc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[yt]=t}catch(t){Z(e,e.return,t)}}function $c(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function el(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||$c(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function tl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=dn));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(tl(e,t,n),e=e.sibling;e!==null;)tl(e,t,n),e=e.sibling}function nl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(nl(e,t,n),e=e.sibling;e!==null;)nl(e,t,n),e=e.sibling}function rl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[E]=e,t[yt]=n}catch(t){Z(e,e.return,t)}}var il=!1,V=!1,al=!1,ol=typeof WeakSet==`function`?WeakSet:Set,H=null;function sl(e,t){if(e=e.containerInfo,Rd=sp,e=Rr(e),zr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||i!==0&&f.nodeType!==3||(c=s+i),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===i&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,H=t;H!==null;)if(t=H,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,H=e;else for(;H!==null;){switch(t=H,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[E]=e,D(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,i).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Ir(s,h),v=Ir(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,S.T=null,n=lu,lu=null;var o=au,s=su;if(X=0,ou=au=null,su=0,W&6)throw Error(a(331));var c=W;if(W|=4,Il(o.current),Ol(o,o.current,s,n),W=c,id(0,!1),Je&&typeof Je.onPostCommitFiberRoot==`function`)try{Je.onPostCommitFiberRoot(qe,o)}catch{}return!0}finally{C.p=i,S.T=r,Vu(e,t)}}function Wu(e,t,n){t=ki(n,t),t=rc(e.stateNode,t,2),e=Za(e,t,2),e!==null&&(lt(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(iu===null||!iu.has(r))){e=ki(n,e),n=ic(2),r=Za(t,n,2),r!==null&&(ac(n,r,t,e),lt(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Bl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Wl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,G===e&&(q&n)===n&&(Y===4||Y===3&&(q&62914560)===q&&300>Re()-eu?!(W&2)&&Su(e,0):Jl|=n,Xl===q&&(Xl=0)),rd(e)}function qu(e,t){t===0&&(t=st()),e=mi(e,t),e!==null&&(lt(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(a(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return Pe(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Xe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=q,a=it(r,r===G?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||at(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Gd()&&(e=nd);for(var t=Re(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}X!==0&&X!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Yt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),D(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Yt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Yt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Yt(n.imageSizes)+`"]`)):i+=`[href="`+Yt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),D(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Yt(r)+`"][href="`+Yt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=m({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),D(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=At(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);D(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=At(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),D(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=At(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),D(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var i=(i=be.current)?gf(i):null;if(!i)throw Error(a(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=At(i).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=At(i).hoistableStyles,s=o.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=i.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(i,e,n,s.state))),t&&r===null)throw Error(a(528,``));return s}if(t&&r!==null)throw Error(a(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=At(i).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(a(444,e))}}function Af(e){return`href="`+Yt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),D(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Yt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Yt(n.href)+`"]`);if(r)return t.instance=r,D(r),r;var i=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),D(r),Pd(r,`style`,i),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Af(n.href);var o=e.querySelector(jf(i));if(o)return t.state.loading|=4,t.instance=o,D(o),o;r=Mf(n),(i=mf.get(i))&&Rf(r,i),o=(e.ownerDocument||e).createElement(`link`),D(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(i=e.querySelector(Ff(o)))?(t.instance=i,D(i),i):(r=n,(i=mf.get(o))&&(r=m({},n),zf(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),D(i),Pd(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(a(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,D(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),D(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=x()}))(),1),te=(e,t)=>{e instanceof Function&&u(async()=>{let{onCLS:e,onINP:t,onFCP:n,onLCP:r,onTTFB:i}=await import(`./web-vitals-f_BHH8AE.js`);return{onCLS:e,onINP:t,onFCP:n,onLCP:r,onTTFB:i}},[]).then(({onCLS:n,onINP:r,onFCP:i,onLCP:a,onTTFB:o})=>{n(e,t),r(e,t),i(e,t),a(e,t),o(e,t)})},ne=document.getElementById(`app`);ne&&!ne.innerHTML&&ee.createRoot(ne).render((0,g.jsx)(h.StrictMode,{children:(0,g.jsx)(i,{client:o,children:(0,g.jsx)(m,{children:(0,g.jsx)(p,{children:(0,g.jsx)(d,{children:(0,g.jsx)(f,{children:(0,g.jsx)(v,{router:a})})})})})})}));var re=document.getElementById(`splash`);if(re){let e=300+Math.random()*700,t=()=>{re.style.opacity=`0`,re.addEventListener(`transitionend`,()=>{re.remove(),document.getElementById(`splash-style`)?.remove(),document.getElementById(`app-bootstrap-script`)?.remove()},{once:!0})},n=e-(Date.now()-(window.__splashStart??Date.now()));n>0?setTimeout(t,n):t()}te(console.log); \ No newline at end of file diff --git a/src/www/assets/index-TVbhXeum.css b/src/www/assets/index-TVbhXeum.css new file mode 100644 index 0000000..3dd98e8 --- /dev/null +++ b/src/www/assets/index-TVbhXeum.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:var(--font-inter);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-950:oklch(12.9% .042 264.695);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-3xl:48rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xs:.125rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-lg:16px;--blur-xl:24px;--blur-3xl:64px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-inter);--default-mono-font-family:var(--font-mono);--font-inter:"Inter Variable", sans-serif;--color-border:var(--border)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{font-family:var(--font-inter);overflow-x:hidden}body{background-color:var(--background);color:var(--foreground);width:100%;min-height:100svh}body:has(:is(div[data-variant=inset])){background-color:var(--sidebar)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.\@container\/content{container:content/inline-size}.faded-bottom:after{content:var(--tw-content);pointer-events:none;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);inset-inline-start:calc(var(--spacing) * 0);bottom:calc(var(--spacing) * 0);content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing) * 32);content:var(--tw-content);content:var(--tw-content);border-bottom-right-radius:calc(var(--radius) * 1.8);border-bottom-left-radius:calc(var(--radius) * 1.8);content:var(--tw-content);background-image:linear-gradient(180deg,transparent 10%,var(--background) 70%);width:100%;display:none;position:absolute}@media (width>=48rem){.faded-bottom:after{content:var(--tw-content);display:block}}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.inset-s-0{inset-inline-start:calc(var(--spacing) * 0)}.inset-s-1\.5{inset-inline-start:calc(var(--spacing) * 1.5)}.inset-s-44{inset-inline-start:calc(var(--spacing) * 44)}.start{inset-inline-start:var(--spacing)}.start-full{inset-inline-start:100%}.end{inset-inline-end:var(--spacing)}.inset-e-0{inset-inline-end:calc(var(--spacing) * 0)}.inset-e-1{inset-inline-end:calc(var(--spacing) * 1)}.inset-e-3{inset-inline-end:calc(var(--spacing) * 3)}.inset-e-\[0\.3rem\]{inset-inline-end:.3rem}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-\[-10\%\]{top:-10%}.top-\[0\.3rem\]{top:.3rem}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-\[-5\%\]{right:-5%}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-\[-10\%\]{bottom:-10%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-\[-5\%\]{left:-5%}.left-\[50\%\]{left:50%}.left-\[70px\]{left:70px}.left-\[240px\]{left:240px}.left-\[310px\]{left:310px}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-999{z-index:999}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[3\]{z-index:3}.z-\[4\]{z-index:4}.col-span-1{grid-column:span 1/span 1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-auto{margin:auto}.container{margin-inline:auto;padding-inline:2rem}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-3{margin-inline:calc(var(--spacing) * -3)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.ms-2{margin-inline-start:calc(var(--spacing) * 2)}.ms-4{margin-inline-start:calc(var(--spacing) * 4)}.ms-auto{margin-inline-start:auto}.me-2{margin-inline-end:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-\(--cell-size\){width:var(--cell-size);height:var(--cell-size)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-72{width:calc(var(--spacing) * 72);height:calc(var(--spacing) * 72)}.size-80{width:calc(var(--spacing) * 80);height:calc(var(--spacing) * 80)}.size-\[1\.2rem\]{width:1.2rem;height:1.2rem}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-\(--cell-size\){height:var(--cell-size)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-72{height:calc(var(--spacing) * 72)}.h-80{height:calc(var(--spacing) * 80)}.h-\[320px\]{height:320px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-svh{min-height:100svh}.w-\(--cell-size\){width:var(--cell-size)}.w-\(--radix-dropdown-menu-trigger-width\){width:var(--radix-dropdown-menu-trigger-width)}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-9\/12{width:75%}.w-11{width:calc(var(--spacing) * 11)}.w-11\/12{width:91.6667%}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-17\.5{width:calc(var(--spacing) * 17.5)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-25{width:calc(var(--spacing) * 25)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-37\.5{width:calc(var(--spacing) * 37.5)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-50{width:calc(var(--spacing) * 50)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-72{width:calc(var(--spacing) * 72)}.w-\[340px\]{width:340px}.w-\[440px\]{width:440px}.w-\[inherit\]{width:inherit}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-52{max-width:calc(var(--spacing) * 52)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-\(--cell-size\){min-width:var(--cell-size)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-80{min-width:calc(var(--spacing) * 80)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[700px\]{min-width:700px}.min-w-\[900px\]{min-width:900px}.min-w-\[980px\]{min-width:980px}.min-w-\[1200px\]{min-width:1200px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-xs{min-width:var(--container-xs)}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\/2{--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-52{--tw-translate-y:calc(var(--spacing) * -52);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-0{rotate:0deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-y-180{--tw-rotate-y:rotateY(180deg);transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-caret-blink{animation:1.25s ease-out infinite caret-blink}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.appearance-none{appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[36px\]{border-radius:36px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-\[8px\]{border-top-left-radius:8px;border-top-right-radius:8px}.rounded-t-\[10px\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-l-md{border-top-left-radius:calc(var(--radius) * .8);border-bottom-left-radius:calc(var(--radius) * .8)}.rounded-tl-\[inherit\]{border-top-left-radius:inherit}.rounded-r-md{border-top-right-radius:calc(var(--radius) * .8);border-bottom-right-radius:calc(var(--radius) * .8)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--color-border\){border-color:var(--color-border)}.border-border,.border-border\/40{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/40{border-color:color-mix(in oklab, var(--border) 40%, transparent)}}.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-input{border-color:var(--input)}.border-muted{border-color:var(--muted)}.border-primary{border-color:var(--primary)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-\[\#ecedef\]{background-color:#ecedef}.bg-accent{background-color:var(--accent)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-background,.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/40{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/40{background-color:color-mix(in oklab, var(--card) 40%, transparent)}}.bg-destructive{background-color:var(--destructive)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/25{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/25{background-color:color-mix(in oklab, var(--muted) 25%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/10{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500\/10{background-color:#62748e1a}@supports (color:color-mix(in lab, red, red)){.bg-slate-500\/10{background-color:color-mix(in oklab, var(--color-slate-500) 10%, transparent)}}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-950{background-color:var(--color-slate-950)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-\[linear-gradient\(rgba\(0\,0\,0\,0\.03\)_1px\,transparent_1px\)\,linear-gradient\(90deg\,rgba\(0\,0\,0\,0\.03\)_1px\,transparent_1px\)\]{background-image:linear-gradient(#00000008 1px,#0000 1px),linear-gradient(90deg,#00000008 1px,#0000 1px)}.bg-\[size\:48px_48px\]{background-size:48px 48px}.fill-current{fill:currentColor}.fill-foreground{fill:var(--foreground)}.fill-primary{fill:var(--primary)}.stroke-primary{stroke:var(--primary)}.stroke-white{stroke:var(--color-white)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-12{padding:calc(var(--spacing) * 12)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-\(--cell-size\){padding-inline:var(--cell-size)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.ps-2{padding-inline-start:calc(var(--spacing) * 2)}.pe-1{padding-inline-end:calc(var(--spacing) * 1)}.pe-4{padding-inline-end:calc(var(--spacing) * 4)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-inter{font-family:Inter Variable,sans-serif}.font-manrope{font-family:Manrope Variable,sans-serif}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[7rem\]{font-size:7rem}.text-\[10px\]{font-size:10px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-600{color:var(--color-amber-600)}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-emerald-600{color:var(--color-emerald-600)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/80{color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.text-muted-foreground,.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-rose-600{color:var(--color-rose-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab, var(--sidebar-foreground) 70%, transparent)}}.text-slate-600{color:var(--color-slate-600)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-dashed{text-decoration-style:dashed}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-95{opacity:.95}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-\[1px\]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-background{--tw-ring-color:var(--background)}.ring-border{--tw-ring-color:var(--border)}.ring-ring\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.ring-ring\/50{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_-1px_2px_rgb\(0_0_0\/_0\.1\)\]{--tw-drop-shadow-size:drop-shadow(0 -1px 2px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-\[0_1px_2px_rgb\(0_0_0\/_0\.1\)\]{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.delay-100{transition-delay:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.delay-100{--tw-animation-delay:.1s;animation-delay:.1s}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.\[--cell-size\:--spacing\(8\)\]{--cell-size:calc(var(--spacing) * 8)}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\:bg-accent:is(:where(.group):hover *){background-color:var(--accent)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}.group-hover\/row\:bg-muted:is(:where(.group\/row):hover *){background-color:var(--muted)}}.group-focus-visible\:ring-2:is(:where(.group):focus-visible *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-has-data-\[size\=lg\]\/avatar-group\:size-10:is(:where(.group\/avatar-group):has([data-size=lg]) *){width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.group-has-data-\[size\=sm\]\/avatar-group\:size-6:is(:where(.group\/avatar-group):has([data-size=sm]) *){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[focused\=true\]\/day\:relative:is(:where(.group\/day)[data-focused=true] *){position:relative}.group-data-\[focused\=true\]\/day\:z-10:is(:where(.group\/day)[data-focused=true] *){z-index:10}.group-data-\[focused\=true\]\/day\:border-ring:is(:where(.group\/day)[data-focused=true] *){border-color:var(--ring)}.group-data-\[focused\=true\]\/day\:ring-\[3px\]:is(:where(.group\/day)[data-focused=true] *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.group-data-\[orientation\=horizontal\]\/tabs\:h-9:is(:where(.group\/tabs)[data-orientation=horizontal] *){height:calc(var(--spacing) * 9)}.group-data-\[orientation\=vertical\]\/tabs\:h-fit:is(:where(.group\/tabs)[data-orientation=vertical] *){height:fit-content}.group-data-\[orientation\=vertical\]\/tabs\:w-full:is(:where(.group\/tabs)[data-orientation=vertical] *){width:100%}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:justify-start:is(:where(.group\/tabs)[data-orientation=vertical] *){justify-content:flex-start}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[size\=default\]\/avatar\:size-2\.5:is(:where(.group\/avatar)[data-size=default] *){width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.group-data-\[size\=default\]\/switch\:size-4:is(:where(.group\/switch)[data-size=default] *){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-data-\[size\=lg\]\/avatar\:size-3:is(:where(.group\/avatar)[data-size=lg] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/alert-dialog-content\:grid:is(:where(.group\/alert-dialog-content)[data-size=sm] *){display:grid}.group-data-\[size\=sm\]\/alert-dialog-content\:grid-cols-2:is(:where(.group\/alert-dialog-content)[data-size=sm] *){grid-template-columns:repeat(2,minmax(0,1fr))}.group-data-\[size\=sm\]\/avatar\:size-2:is(:where(.group\/avatar)[data-size=sm] *){width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:text-xs:is(:where(.group\/avatar)[data-size=sm] *){font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.group-data-\[size\=sm\]\/switch\:size-3:is(:where(.group\/switch)[data-size=sm] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[state\=checked\]\:shadow-2xl:is(:where(.group)[data-state=checked] *){--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[state\=checked\]\:ring-primary:is(:where(.group)[data-state=checked] *){--tw-ring-color:var(--primary)}.group-data-\[state\=open\]\/collapsible\:rotate-90:is(:where(.group\/collapsible)[data-state=open] *){rotate:90deg}.group-data-\[state\=selected\]\/row\:bg-muted:is(:where(.group\/row)[data-state=selected] *){background-color:var(--muted)}.group-data-\[state\=unchecked\]\:hidden:is(:where(.group)[data-state=unchecked] *){display:none}.group-data-\[state\=unchecked\]\:fill-muted-foreground:is(:where(.group)[data-state=unchecked] *){fill:var(--muted-foreground)}.group-data-\[state\=unchecked\]\:stroke-muted-foreground:is(:where(.group)[data-state=unchecked] *){stroke:var(--muted-foreground)}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:-z-10:after{content:var(--tw-content);z-index:calc(10 * -1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:bg-background\/20:after{content:var(--tw-content);background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.after\:bg-background\/20:after{background-color:color-mix(in oklab, var(--background) 20%, transparent)}}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:backdrop-blur-lg:after{content:var(--tw-content);--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.group-data-\[orientation\=horizontal\]\/tabs\:after\:inset-x-0:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-\[orientation\=horizontal\]\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);bottom:-5px}.group-data-\[orientation\=horizontal\]\/tabs\:after\:h-0\.5:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-\[orientation\=vertical\]\/tabs\:after\:inset-y-0:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-\[orientation\=vertical\]\/tabs\:after\:-right-1:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-\[orientation\=vertical\]\/tabs\:after\:w-0\.5:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) * .8);border-bottom-left-radius:calc(var(--radius) * .8)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) * .8);border-bottom-right-radius:calc(var(--radius) * .8)}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent:hover{border-color:var(--accent)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/8:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/8:hover{background-color:color-mix(in oklab, var(--destructive) 8%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-muted\/60:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-solid:hover{text-decoration-style:solid}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:translate-y-3:focus{--tw-translate-y:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.focus\:transform:focus{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:bg-transparent:active{background-color:#0000}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-focus\:border-ring:has(:focus){border-color:var(--ring)}.has-focus\:ring-\[3px\]:has(:focus){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-focus\:ring-ring\/50:has(:focus){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.has-data-\[layout\=fixed\]\:h-svh:has([data-layout=fixed]){height:100svh}.peer-data-\[variant\=inset\]\:has-data-\[layout\=fixed\]\:h-\[calc\(100svh-\(var\(--spacing\)\*4\)\)\]:is(:where(.peer)[data-variant=inset]~*):has([data-layout=fixed]){height:calc(100svh - (var(--spacing) * 4))}.has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_auto_1fr\]:has([data-slot=alert-dialog-media]){grid-template-rows:auto auto 1fr}.has-data-\[slot\=alert-dialog-media\]\:gap-x-6:has([data-slot=alert-dialog-media]){column-gap:calc(var(--spacing) * 6)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-1\.5:has(>svg){padding-inline:calc(var(--spacing) * 1.5)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[empty\=true\]\:text-muted-foreground[data-empty=true]{color:var(--muted-foreground)}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:calc(var(--spacing) * 1.5)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing) * 44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing) * 1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) * .8)}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) * .8);border-bottom-right-radius:calc(var(--radius) * .8)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:var(--primary)}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:var(--primary-foreground)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:var(--accent-foreground)}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) * .8)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) * .8);border-bottom-left-radius:calc(var(--radius) * .8)}.data-\[range-start\=true\]\:bg-primary[data-range-start=true]{background-color:var(--primary)}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true]{color:var(--primary-foreground)}.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:var(--primary)}.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:var(--primary-foreground)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=default\]\:h-\[1\.15rem\][data-size=default]{height:1.15rem}.data-\[size\=default\]\:w-8[data-size=default]{width:calc(var(--spacing) * 8)}.data-\[size\=lg\]\:size-10[data-size=lg]{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.data-\[size\=sm\]\:size-6[data-size=sm]{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.data-\[size\=sm\]\:h-3\.5[data-size=sm]{height:calc(var(--spacing) * 3.5)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:w-6[data-size=sm]{width:calc(var(--spacing) * 6)}.data-\[size\=sm\]\:max-w-xs[data-size=sm]{max-width:var(--container-xs)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}:is(.\*\:data-\[slot\=avatar\]\:ring-2>*)[data-slot=avatar]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.\*\:data-\[slot\=avatar\]\:ring-background>*)[data-slot=avatar]{--tw-ring-color:var(--background)}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing) * 12)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-\[state\=active\]\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *)[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]:after{content:var(--tw-content);opacity:1}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-muted[data-state=open]{background-color:var(--muted)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.supports-backdrop-filter\:bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, transparent)}}}@media not all and (width>=64rem){.max-lg\:hidden{display:none}}@media not all and (width>=48rem){.max-md\:hidden{display:none}.max-md\:scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@media (width>=40rem){.sm\:static{position:static}.sm\:z-auto{z-index:auto}.sm\:mx-0{margin-inline:calc(var(--spacing) * 0)}.sm\:my-0{margin-block:calc(var(--spacing) * 0)}.sm\:my-4{margin-block:calc(var(--spacing) * 4)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:w-40{width:calc(var(--spacing) * 40)}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:w-56{width:calc(var(--spacing) * 56)}.sm\:w-120{width:calc(var(--spacing) * 120)}.sm\:max-w-3xl{max-width:var(--container-3xl)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:min-w-0{min-width:calc(var(--spacing) * 0)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.sm\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-md{border-radius:calc(var(--radius) * .8)}.sm\:border-0{border-style:var(--tw-border-style);border-width:0}.sm\:bg-transparent{background-color:#0000}.sm\:p-0{padding:calc(var(--spacing) * 0)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:pe-12{padding-inline-end:calc(var(--spacing) * 12)}.sm\:text-left{text-align:left}.sm\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:row-span-2:is(:where(.group\/alert-dialog-content)[data-size=default] *){grid-row:span 2/span 2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:place-items-start:is(:where(.group\/alert-dialog-content)[data-size=default] *){place-items:start}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:text-left:is(:where(.group\/alert-dialog-content)[data-size=default] *){text-align:left}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:group-has-data-\[slot\=alert-dialog-media\]\/alert-dialog-content\:col-start-2:is(:where(.group\/alert-dialog-content)[data-size=default] *):is(:where(.group\/alert-dialog-content):has([data-slot=alert-dialog-media]) *){grid-column-start:2}.sm\:group-data-\[size\=default\]\/alert-dialog-content\:has-data-\[slot\=alert-dialog-media\]\:grid-rows-\[auto_1fr\]:is(:where(.group\/alert-dialog-content)[data-size=default] *):has([data-slot=alert-dialog-media]){grid-template-rows:auto 1fr}.data-\[size\=default\]\:sm\:max-w-lg[data-size=default]{max-width:var(--container-lg)}}@media (width>=48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.md\:flex-none{flex:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:p-0{padding:calc(var(--spacing) * 0)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) * 1.4)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (width>=64rem){.lg\:sticky{position:sticky}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:my-6{margin-block:calc(var(--spacing) * 6)}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-\[400px\]{height:400px}.lg\:w-1\/5{width:20%}.lg\:w-52{width:calc(var(--spacing) * 52)}.lg\:w-62\.5{width:calc(var(--spacing) * 62.5)}.lg\:w-72{width:calc(var(--spacing) * 72)}.lg\:w-\[550px\]{width:550px}.lg\:max-w-none{max-width:none}.lg\:max-w-xl{max-width:var(--container-xl)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:flex-col{flex-direction:column}.lg\:flex-row{flex-direction:row}:where(.lg\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.lg\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.lg\:space-x-0>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 0) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-x-reverse)))}:where(.lg\:space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.lg\:space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 8) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-x-reverse)))}:where(.lg\:space-x-12>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 12) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-x-reverse)))}.lg\:p-8{padding:calc(var(--spacing) * 8)}.lg\:px-0{padding-inline:calc(var(--spacing) * 0)}.lg\:px-3{padding-inline:calc(var(--spacing) * 3)}}@media (width>=80rem){.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-4{grid-column:span 4/span 4}.xl\:w-64{width:calc(var(--spacing) * 64)}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}:where(.xl\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)))}.xl\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@media (width>=96rem){.\32 xl\:w-80{width:calc(var(--spacing) * 80)}}@container content not (width>=48rem){.\@max-3xl\/content\:hidden{display:none}}@container content not (width>=42rem){.\@max-2xl\/content\:flex-col-reverse{flex-direction:column-reverse}.\@max-2xl\/content\:flex-row-reverse{flex-direction:row-reverse}.\@max-2xl\/content\:gap-4{gap:calc(var(--spacing) * 4)}}@container content not (width>=28rem){.\@max-md\/content\:hidden{display:none}}@container content (width>=42rem){.\@2xl\/content\:hidden{display:none}}@container content (width>=80rem){.\@7xl\/content\:mx-auto{margin-inline:auto}.\@7xl\/content\:w-full{width:100%}.\@7xl\/content\:max-w-7xl{max-width:var(--container-7xl)}}.rtl\:rotate-180:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *){rotate:180deg}:where(.rtl\:space-x-reverse:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *)>:not(:last-child)){--tw-space-x-reverse:1}.dark\:block:is([data-mode=dark] *){display:block}.dark\:hidden:is([data-mode=dark] *){display:none}.dark\:scale-0:is([data-mode=dark] *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:scale-100:is([data-mode=dark] *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:-rotate-90:is([data-mode=dark] *){rotate:-90deg}.dark\:rotate-0:is([data-mode=dark] *){rotate:0deg}.dark\:border-input:is([data-mode=dark] *){border-color:var(--input)}.dark\:bg-background:is([data-mode=dark] *){background-color:var(--background)}.dark\:bg-destructive\/60:is([data-mode=dark] *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is([data-mode=dark] *){background-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.dark\:bg-input\/30:is([data-mode=dark] *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is([data-mode=dark] *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:bg-\[linear-gradient\(rgba\(255\,255\,255\,0\.03\)_1px\,transparent_1px\)\,linear-gradient\(90deg\,rgba\(255\,255\,255\,0\.03\)_1px\,transparent_1px\)\]:is([data-mode=dark] *){background-image:linear-gradient(#ffffff08 1px,#0000 1px),linear-gradient(90deg,#ffffff08 1px,#0000 1px)}.dark\:text-muted-foreground:is([data-mode=dark] *){color:var(--muted-foreground)}.dark\:drop-shadow-\[0_-1px_2px_rgb\(255_255_255\/_0\.1\)\]:is([data-mode=dark] *){--tw-drop-shadow-size:drop-shadow(0 -1px 2px var(--tw-drop-shadow-color,#ffffff1a));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.dark\:drop-shadow-\[0_1px_2px_rgb\(255_255_255\/_0\.1\)\]:is([data-mode=dark] *){--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#ffffff1a));--tw-drop-shadow:var(--tw-drop-shadow-size);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is([data-mode=dark] *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is([data-mode=dark] *):hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.dark\:hover\:bg-background:is([data-mode=dark] *):hover{background-color:var(--background)}.dark\:hover\:bg-input\/50:is([data-mode=dark] *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is([data-mode=dark] *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:text-accent-foreground:is([data-mode=dark] *):hover{color:var(--accent-foreground)}.dark\:hover\:text-foreground:is([data-mode=dark] *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is([data-mode=dark] *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is([data-mode=dark] *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is([data-mode=dark] *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is([data-mode=dark] *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is([data-mode=dark] *)[data-active=true][aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is([data-mode=dark] *)[data-active=true][aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is([data-mode=dark] *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is([data-mode=dark] *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[state\=active\]\:bg-input\/30:is([data-mode=dark] *)[data-state=active]{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is([data-mode=dark] *)[data-state=active]{color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-transparent:is([data-mode=dark] *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is([data-mode=dark] *):is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.dark\:data-\[state\=checked\]\:bg-primary:is([data-mode=dark] *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is([data-mode=dark] *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is([data-mode=dark] *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is([data-mode=dark] *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is([data-mode=dark] *)[data-state=unchecked]{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is([data-mode=dark] *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is([data-mode=dark] *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke=\#ccc]{stroke:var(--border)}@supports (color:color-mix(in lab, red, red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke=\#ccc]{stroke:color-mix(in oklab, var(--border) 50%, transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke=\#fff]{stroke:#0000}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke=\#ccc]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke=\#ccc]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline-offset:2px;outline:2px solid #0000}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke=\#fff]{stroke:#0000}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline-offset:2px;outline:2px solid #0000}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing) * 0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing) * 12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing) * 3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing) * 5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:visible svg{visibility:visible}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) * .8);border-bottom-left-radius:calc(var(--radius) * .8)}.\[\&\:has\(\[data-state\=checked\]\)\>div\]\:border-primary:has([data-state=checked])>div{border-color:var(--primary)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.rtl\:\*\*\:\[\.rdp-button\\_next\>svg\]\:rotate-180:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_next>svg),:is(.rtl\:\*\*\:\[\.rdp-button\\_previous\>svg\]\:rotate-180:where(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_previous>svg){rotate:180deg}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:text-destructive\![data-variant=destructive]>*):is(svg){color:var(--destructive)!important}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-8>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) * .8);border-bottom-right-radius:calc(var(--radius) * .8)}.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button{border-top-left-radius:calc(var(--radius) * .8);border-bottom-left-radius:calc(var(--radius) * .8)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button,.\[\&\>circle\]\:hidden>circle{display:none}.\[\&\>div\]\:h-full>div{height:100%}.\[\&\>img\]\:absolute>img{position:absolute}.\[\&\>img\]\:top-\[15\%\]>img{top:15%}.\[\&\>img\]\:left-20>img{left:calc(var(--spacing) * 20)}.\[\&\>img\]\:h-full>img{height:100%}.\[\&\>img\]\:w-full>img{width:100%}.\[\&\>img\]\:object-cover>img{object-fit:cover}.\[\&\>img\]\:object-top-left>img{object-position:left top}.\[\&\>img\]\:select-none>img{-webkit-user-select:none;user-select:none}.\[\&\>path\]\:stroke-current>path{stroke:currentColor}.\[\&\>span\]\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.group-has-data-\[size\=lg\]\/avatar-group\:\[\&\>svg\]\:size-5:is(:where(.group\/avatar-group):has([data-size=lg]) *)>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.group-has-data-\[size\=sm\]\/avatar-group\:\[\&\>svg\]\:size-3:is(:where(.group\/avatar-group):has([data-size=sm]) *)>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=default\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=default] *)>svg,.group-data-\[size\=lg\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=lg] *)>svg{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:\[\&\>svg\]\:hidden:is(:where(.group\/avatar)[data-size=sm] *)>svg{display:none}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:#0000}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab, var(--secondary) 90%, transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}a.\[a\&\]\:hover\:underline:hover{text-decoration-line:underline}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-cyrillic-ext-wght-normal-DSNfmdVt.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-cyrillic-wght-normal-B2hlT84T.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-devanagari-wght-normal-Cv-Vwajv.woff2)format("woff2-variations");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-greek-ext-wght-normal-12T8GTDR.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-greek-wght-normal-Ymb6dZNd.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-vietnamese-wght-normal-DLTJy58D.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-latin-ext-wght-normal-W1qJv59z.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-latin-wght-normal-BYSzYMf3.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(60% .2 250);--chart-2:oklch(65% .18 145);--chart-3:oklch(72% .19 60);--chart-4:oklch(55% .22 300);--chart-5:oklch(58% .22 25);--chart-6:oklch(62% .2 190);--chart-7:oklch(68% .18 330);--chart-8:oklch(70% .17 85);--chart-9:oklch(56% .21 210);--chart-10:oklch(64% .19 10);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}[data-mode=dark]{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(65% .2 250);--chart-2:oklch(70% .18 145);--chart-3:oklch(75% .19 60);--chart-4:oklch(62% .22 300);--chart-5:oklch(65% .22 25);--chart-6:oklch(68% .2 190);--chart-7:oklch(72% .18 330);--chart-8:oklch(75% .17 85);--chart-9:oklch(62% .21 210);--chart-10:oklch(70% .19 10);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}@keyframes splash-bar{0%{transform:translate(-100%)}to{transform:translate(600%)}}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@keyframes caret-blink{0%,70%,to{opacity:1}20%,50%{opacity:0}} diff --git a/src/www/assets/input-DiRPHDd8.js b/src/www/assets/input-DiRPHDd8.js new file mode 100644 index 0000000..e29799f --- /dev/null +++ b/src/www/assets/input-DiRPHDd8.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{i as t}from"./button-DJA4fnJ8.js";var n=e();function r({className:e,type:r,...i}){return(0,n.jsx)(`input`,{className:t(`h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30`,`focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50`,`aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40`,e),"data-slot":`input`,type:r,...i})}export{r as t}; \ No newline at end of file diff --git a/src/www/assets/install-BDL3tVBh.js b/src/www/assets/install-BDL3tVBh.js new file mode 100644 index 0000000..e8aa9ed --- /dev/null +++ b/src/www/assets/install-BDL3tVBh.js @@ -0,0 +1 @@ +import{Bs as e,Gs as t,Hs as n,Is as r,Js as i,Ks as a,Ls as o,Rs as s,Us as c,Vs as l,Ws as u,Xs as d,Ys as f,nu as p,ou as m,qs as ee,ru as h,zs as te}from"./messages-BovT1T-w.js";import{o as g}from"./auth-store-BpIS8RMn.js";import{t as _}from"./useNavigate-Dg8CkCoa.js";import{i as v,r as y,t as b}from"./button-DJA4fnJ8.js";import{u as ne}from"./dropdown-menu-CUea1X0A.js";import{a as x,i as S,o as C,r as w,s as T,t as E}from"./command-BwVY_kli.js";import{n as D,r as O,t as k}from"./popover-D5q6Hufu.js";import{t as A}from"./check-gDgbfVXu.js";import{t as j}from"./chevron-down-CdmvZsfI.js";import{t as re}from"./circle-check-Dh8WOZF0.js";import{n as ie,t as ae}from"./theme-switch-BjXQNOij.js";import{t as oe}from"./loader-circle-fg8-aSyl.js";import{c as M,n as N,s as se}from"./zod-Cymc5bS-.js";import{a as P,c as F,i as I,l as L,n as R,o as z,s as B,t as V}from"./form-DdHiBYMe.js";import{t as H}from"./input-DiRPHDd8.js";import{a as U,i as W,n as G,r as ce,t as le}from"./card-DuQAN29P.js";var K=m(h(),1),q=p(),ue=`ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&`,J=14,Y=20,de={slow:400,medium:200,fast:80},X=e=>e[Math.floor(Math.random()*e.length)],Z=()=>ue[Math.floor(Math.random()*41)];function fe({glitchColors:e=[`#2b4539`,`#61dca3`,`#61b3dc`],glitchSpeed:t=`medium`,centerVignette:n=!1,outerVignette:r=!0,smooth:i=!0,className:a}){let o=(0,K.useRef)(null),s=(0,K.useRef)(0),c=(0,K.useRef)([]),l=(0,K.useRef)(0),u=(0,K.useRef)(0),d=(0,K.useCallback)((t,n)=>{c.current=Array.from({length:t*n},()=>({char:Z(),color:X(e),opacity:Math.random()*.5+.1}))},[e]),f=(0,K.useCallback)(()=>{let e=o.current;if(!e)return;let t=e.getContext(`2d`);if(!t)return;t.clearRect(0,0,e.width,e.height),t.font=`${J}px monospace`;let n=c.current,r=l.current,i=u.current;for(let e=0;e{let t=c.current,n=t.length,r=Math.floor(n*.05);for(let a=0;a{let e=o.current;if(!e)return;let n=()=>{let t=e.parentElement;t&&(e.width=t.clientWidth,e.height=t.clientHeight,l.current=Math.ceil(e.width/Y),u.current=Math.ceil(e.height/Y),d(l.current,u.current),f())},r=new ResizeObserver(n);e.parentElement&&r.observe(e.parentElement),n();let i=setInterval(p,de[t]);return()=>{r.disconnect(),clearInterval(i),cancelAnimationFrame(s.current)}},[p,f,d,t]),(0,q.jsxs)(`div`,{className:`absolute inset-0 overflow-hidden ${a??``}`,children:[(0,q.jsx)(`canvas`,{className:`absolute inset-0`,ref:o}),r&&(0,q.jsx)(`div`,{className:`absolute inset-0`,style:{background:`radial-gradient(ellipse at center, transparent 50%, rgba(0,0,0,0.85) 100%)`}}),n&&(0,q.jsx)(`div`,{className:`absolute inset-0`,style:{background:`radial-gradient(ellipse at center, rgba(0,0,0,0.6) 0%, transparent 70%)`}})]})}function pe({value:e,onChange:t,options:n,placeholder:r=``,searchPlaceholder:i=`Search...`,emptyText:a=`No options found.`,className:o,disabled:s}){let[c,l]=(0,K.useState)(!1),u=n.map(e=>typeof e==`string`?{value:e,label:e}:e);return(0,q.jsxs)(k,{onOpenChange:l,open:c,children:[(0,q.jsxs)(`div`,{className:v(`relative`,o),children:[(0,q.jsx)(H,{className:`pr-10`,disabled:s,onChange:e=>t(e.target.value),placeholder:r,value:e}),(0,q.jsx)(O,{asChild:!0,children:(0,q.jsx)(b,{"aria-expanded":c,"aria-label":`Show options`,className:`absolute top-1/2 right-1 size-8 -translate-y-1/2`,disabled:s,size:`icon`,type:`button`,variant:`ghost`,children:(0,q.jsx)(j,{className:`size-4`})})})]}),(0,q.jsx)(D,{align:`end`,className:`w-48 p-0`,children:(0,q.jsxs)(E,{children:[(0,q.jsx)(x,{placeholder:i}),(0,q.jsxs)(T,{children:[(0,q.jsx)(w,{children:a}),(0,q.jsx)(S,{children:u.map(n=>(0,q.jsxs)(C,{onSelect:()=>{t(n.value),l(!1)},value:n.value,children:[(0,q.jsx)(A,{className:v(`size-4`,e===n.value?`opacity-100`:`opacity-0`)}),n.label??n.value]},n.value))})]})]})})]})}var me=y(`relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current`}},defaultVariants:{variant:`default`}});function he({className:e,variant:t,...n}){return(0,q.jsx)(`div`,{className:v(me({variant:t}),e),"data-slot":`alert`,role:`alert`,...n})}function ge({className:e,...t}){return(0,q.jsx)(`div`,{className:v(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),"data-slot":`alert-title`,...t})}function _e({className:e,...t}){return(0,q.jsx)(`div`,{className:v(`col-start-2 grid justify-items-start gap-1 text-muted-foreground text-sm [&_p]:leading-relaxed`,e),"data-slot":`alert-description`,...t})}var Q=[`0.0.0.0`,`127.0.0.1`,`localhost`],ve=se({app_name:M().min(1,`App Name is required`),app_uri:M().min(1,`App URI is required`).url(`Must be a valid URL (e.g. http://your-server-ip:8000)`),http_bind_addr:M().min(1,`Bind address is required`),http_bind_port:N({error:`Port must be a number`}).int().min(1,`Port must be ≥ 1`).max(65535,`Port must be ≤ 65535`),runtime_root_path:M().min(1,`Runtime root path is required`),log_save_path:M().min(1,`Log save path is required`),order_expiration_time:N({error:`Must be a number`}).int().min(1,`Must be ≥ 1 minute`),order_notice_max_retry:N({error:`Must be a number`}).int().min(0,`Must be ≥ 0`)}),$={app_name:`epusdt`,app_uri:``,http_bind_addr:`0.0.0.0`,http_bind_port:8e3,runtime_root_path:`./runtime`,log_save_path:`./logs`,order_expiration_time:10,order_notice_max_retry:1};function ye(){let p=_(),[m,h]=(0,K.useState)(!1),[v,y]=(0,K.useState)(!1),[x,S]=(0,K.useState)(null),[C,w]=(0,K.useState)(null),T=L({resolver:F(ve),defaultValues:$,mode:`onChange`});(0,K.useEffect)(()=>{let e=!0;async function t(){try{let{data:t}=await g.GET(`/api/install/defaults`);if(!(e&&t))return;let n=Object.fromEntries(Object.entries(t).filter(([,e])=>e!==``&&e!=null));T.reset({...$,...n})}catch{}}return t().catch(()=>void 0),()=>{e=!1}},[T]),(0,K.useEffect)(()=>{if(x===null)return;if(x===0){p({to:`/sign-in`});return}let e=setTimeout(()=>S(e=>e===null?null:e-1),1e3);return()=>clearTimeout(e)},[x,p]);async function E(e){h(!0),w(null);try{let{data:t,error:n,response:i}=await g.POST(`/api/install`,{body:e});if(!i.ok||n){w({variant:`destructive`,message:n?.error||r()});return}y(!0),S(3),w({variant:`default`,message:t?.message||o()})}catch{w({variant:`destructive`,message:r()})}finally{h(!1)}}let D=e();return m&&(D=te()),v&&(D=s()),(0,q.jsxs)(`div`,{className:`relative flex min-h-svh items-center justify-center px-4 py-10`,children:[(0,q.jsx)(fe,{centerVignette:!1,glitchColors:[`#3f3f46`,`#71717a`,`#a1a1aa`],glitchSpeed:`fast`,outerVignette:!1,smooth:!0}),(0,q.jsxs)(le,{className:`max-w-xl border border-border/40 bg-card/40 shadow-xl backdrop-blur-xl`,children:[(0,q.jsxs)(W,{className:`space-y-6`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(ne,{className:`size-10 shrink-0`}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{className:`font-medium text-xl leading-tight`,children:`GMPay`}),(0,q.jsx)(`p`,{className:`mt-1 whitespace-nowrap text-muted-foreground text-xs`,children:`安全、高效的 USDT 支付中间件`})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(ie,{}),(0,q.jsx)(ae,{})]})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(U,{className:`text-2xl`,children:d()}),(0,q.jsx)(ce,{children:f()})]})]}),(0,q.jsx)(G,{children:(0,q.jsx)(V,{...T,children:(0,q.jsxs)(`form`,{className:`grid gap-4`,onSubmit:T.handleSubmit(E),children:[C?(0,q.jsxs)(he,{variant:C.variant,children:[C.variant===`default`?(0,q.jsx)(re,{}):null,(0,q.jsx)(ge,{children:C.variant===`default`?`Success`:`Error`}),(0,q.jsxs)(_e,{children:[C.message,x!==null&&x>0&&(0,q.jsxs)(`span`,{className:`ml-1 text-muted-foreground text-xs`,children:[`(`,x,`s 后跳转登录页)`]})]})]}):null,(0,q.jsx)(I,{control:T.control,name:`app_name`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsx)(z,{children:i()}),(0,q.jsx)(R,{children:(0,q.jsx)(H,{placeholder:`epusdt`,...e})}),(0,q.jsx)(B,{})]})}),(0,q.jsx)(I,{control:T.control,name:`app_uri`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsxs)(z,{children:[ee(),` *`]}),(0,q.jsx)(R,{children:(0,q.jsx)(H,{placeholder:`http://your-server-ip:8000`,...e})}),(0,q.jsx)(B,{})]})}),(0,q.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,q.jsx)(I,{control:T.control,name:`http_bind_addr`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsx)(z,{children:a()}),(0,q.jsx)(R,{children:(0,q.jsx)(pe,{onChange:e.onChange,options:Q,placeholder:`0.0.0.0`,value:e.value??``})}),(0,q.jsx)(B,{})]})}),(0,q.jsx)(I,{control:T.control,name:`http_bind_port`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsx)(z,{children:t()}),(0,q.jsx)(R,{children:(0,q.jsx)(H,{placeholder:`8000`,type:`number`,...e,value:e.value??``})}),(0,q.jsx)(B,{})]})})]}),(0,q.jsx)(I,{control:T.control,name:`runtime_root_path`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsx)(z,{children:u()}),(0,q.jsx)(R,{children:(0,q.jsx)(H,{placeholder:`./runtime`,...e})}),(0,q.jsx)(B,{})]})}),(0,q.jsx)(I,{control:T.control,name:`log_save_path`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsx)(z,{children:c()}),(0,q.jsx)(R,{children:(0,q.jsx)(H,{placeholder:`./logs`,...e})}),(0,q.jsx)(B,{})]})}),(0,q.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,q.jsx)(I,{control:T.control,name:`order_expiration_time`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsx)(z,{children:n()}),(0,q.jsx)(R,{children:(0,q.jsx)(H,{placeholder:`10`,type:`number`,...e})}),(0,q.jsx)(B,{})]})}),(0,q.jsx)(I,{control:T.control,name:`order_notice_max_retry`,render:({field:e})=>(0,q.jsxs)(P,{children:[(0,q.jsx)(z,{children:l()}),(0,q.jsx)(R,{children:(0,q.jsx)(H,{placeholder:`1`,type:`number`,...e})}),(0,q.jsx)(B,{})]})})]}),(0,q.jsxs)(b,{className:`mt-2 w-full`,disabled:m||v,type:`submit`,children:[m?(0,q.jsx)(oe,{className:`animate-spin`}):null,D]})]})})})]})]})}var be=ye;export{be as component}; \ No newline at end of file diff --git a/src/www/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 b/src/www/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..de83a9c7418a1121c8a59bbc7002c69c43cbe76a GIT binary patch literal 25960 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 bX8aVHA=YmlRlob!7u&+mJ0~xUw*UYD-|trf literal 0 HcmV?d00001 diff --git a/src/www/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 b/src/www/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d750914763177b95070fba3dc83c3d4466919c01 GIT binary patch literal 18748 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/inter-greek-wght-normal-CkhJZR-_.woff2 b/src/www/assets/inter-greek-wght-normal-CkhJZR-_.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..024f0770326a416e2e8da7ea541959bc049c29d1 GIT binary patch literal 18996 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 b/src/www/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..479d010d2902fa3a5b48e84a973db1978b2e9949 GIT binary patch literal 85068 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 b/src/www/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d15208de03cd1ad7c5199f0a0ce915fe841e4722 GIT binary patch literal 48256 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∾Na#*TBTU(!jF?9zmR-!C*+RdvGrd0&{`| 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,o.jsx)(r.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));c.displayName=s;var l=c;function u({className:e,...t}){return(0,o.jsx)(l,{className:i(`flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50`,e),"data-slot":`label`,...t})}export{u as t}; \ No newline at end of file diff --git a/src/www/assets/lib-CTYwzR3w.js b/src/www/assets/lib-CTYwzR3w.js new file mode 100644 index 0000000..bc981f7 --- /dev/null +++ b/src/www/assets/lib-CTYwzR3w.js @@ -0,0 +1 @@ +import{f as e}from"./messages-BovT1T-w.js";import{a as t}from"./auth-store-BpIS8RMn.js";import{n}from"./dist-DvAgZMq72.js";function r(e){return t.useQuery(`get`,`/admin/api/v1/settings`,e?{params:{query:{group:e}}}:void 0)}function i(){return t.useMutation(`put`,`/admin/api/v1/settings`)}function a(){return t.useMutation(`delete`,`/admin/api/v1/settings/{key}`)}function o(e,t,n=``){return e?.find(e=>e.key===t)?.value??n}async function s(t,r,i=e()){await t({body:{items:r}}),n.success(i)}export{i as a,r as i,s as n,a as r,o as t}; \ No newline at end of file diff --git a/src/www/assets/link-CA4H4hTz.js b/src/www/assets/link-CA4H4hTz.js new file mode 100644 index 0000000..dac4eb4 --- /dev/null +++ b/src/www/assets/link-CA4H4hTz.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{a as r,i,t as a}from"./useRouter-D03zSgJO.js";import{l as o,s as ee,t as te,u as s}from"./useStore-1-QVtiLb.js";import{a as ne,c,n as re}from"./ClientOnly-CtYi2y5F.js";import{r as l}from"./dist-15n4mVGL.js";var ie=`Error preloading route! ☝️`,u=t(n(),1);e();var ae=t(l(),1);function d(e,t){let n=a(),l=i(t),{activeProps:d,inactiveProps:g,activeOptions:_,to:v,preload:pe,preloadDelay:me,preloadIntentProximity:he,hashScrollIntoView:ge,replace:y,startTransition:_e,resetScroll:b,viewTransition:ve,children:x,target:S,disabled:C,style:w,className:T,onClick:E,onBlur:D,onFocus:O,onMouseEnter:k,onMouseLeave:A,onTouchStart:j,ignoreBlocker:M,params:ye,search:be,hash:xe,state:Se,mask:Ce,reloadDocument:we,unsafeRelative:Te,from:Ee,_fromLocation:De,...N}=e,P=re(),F=u.useMemo(()=>e,[n,e.from,e._fromLocation,e.hash,e.to,e.search,e.params,e.state,e.mask,e.unsafeRelative]),I=te(n.stores.location,e=>e,(e,t)=>e.href===t.href),L=u.useMemo(()=>{let e={_fromLocation:I,...F};return n.buildLocation(e)},[n,I,F]),R=L.maskedLocation?L.maskedLocation.publicHref:L.publicHref,z=L.maskedLocation?L.maskedLocation.external:L.external,B=u.useMemo(()=>ue(R,z,n.history,C),[C,z,R,n.history]),V=u.useMemo(()=>{if(B?.external)return s(B.href,n.protocolAllowlist)?void 0:B.href;if(!de(v)&&!(typeof v!=`string`||v.indexOf(`:`)===-1))try{return new URL(v),s(v,n.protocolAllowlist)?void 0:v}catch{}},[v,B,n.protocolAllowlist]),H=u.useMemo(()=>{if(V)return!1;if(_?.exact){if(!ne(I.pathname,L.pathname,n.basepath))return!1}else{let e=c(I.pathname,n.basepath),t=c(L.pathname,n.basepath);if(!(e.startsWith(t)&&(e.length===t.length||e[t.length]===`/`)))return!1}return(_?.includeSearch??!0)&&!ee(I.search,L.search,{partial:!_?.exact,ignoreUndefined:!_?.explicitUndefined})?!1:_?.includeHash?P&&I.hash===L.hash:!0},[_?.exact,_?.explicitUndefined,_?.includeHash,_?.includeSearch,I,V,P,L.hash,L.pathname,L.search,n.basepath]),U=H?o(d,{})??oe:f,W=H?f:o(g,{})??f,G=[T,U.className,W.className].filter(Boolean).join(` `),K=(w||U.style||W.style)&&{...w,...U.style,...W.style},[Oe,q]=u.useState(!1),J=u.useRef(!1),Y=e.reloadDocument||V?!1:pe??n.options.defaultPreload,X=me??n.options.defaultPreloadDelay??0,Z=u.useCallback(()=>{n.preloadRoute({...F,_builtLocation:L}).catch(e=>{console.warn(e),console.warn(ie)})},[n,F,L]);r(l,u.useCallback(e=>{e?.isIntersecting&&Z()},[Z]),m,{disabled:!!C||Y!==`viewport`}),u.useEffect(()=>{J.current||!C&&Y===`render`&&(Z(),J.current=!0)},[C,Z,Y]);let ke=e=>{let t=e.currentTarget.getAttribute(`target`),r=S===void 0?t:S;if(!C&&!fe(e)&&!e.defaultPrevented&&(!r||r===`_self`)&&e.button===0){e.preventDefault(),(0,ae.flushSync)(()=>{q(!0)});let t=n.subscribe(`onResolved`,()=>{t(),q(!1)});n.navigate({...F,replace:y,resetScroll:b,hashScrollIntoView:ge,startTransition:_e,viewTransition:ve,ignoreBlocker:M})}};if(V)return{...N,ref:l,href:V,...x&&{children:x},...S&&{target:S},...C&&{disabled:C},...w&&{style:w},...T&&{className:T},...E&&{onClick:E},...D&&{onBlur:D},...O&&{onFocus:O},...k&&{onMouseEnter:k},...A&&{onMouseLeave:A},...j&&{onTouchStart:j}};let Q=e=>{if(C||Y!==`intent`)return;if(!X){Z();return}let t=e.currentTarget;if(p.has(t))return;let n=setTimeout(()=>{p.delete(t),Z()},X);p.set(t,n)},Ae=e=>{C||Y!==`intent`||Z()},$=e=>{if(C||!Y||!X)return;let t=e.currentTarget,n=p.get(t);n&&(clearTimeout(n),p.delete(t))};return{...N,...U,...W,href:B?.href,ref:l,onClick:h([E,ke]),onBlur:h([D,$]),onFocus:h([O,Q]),onMouseEnter:h([k,Q]),onMouseLeave:h([A,$]),onTouchStart:h([j,Ae]),disabled:!!C,target:S,...K&&{style:K},...G&&{className:G},...C&&se,...H&&ce,...P&&Oe&&le}}var f={},oe={className:`active`},se={role:`link`,"aria-disabled":!0},ce={"data-status":`active`,"aria-current":`page`},le={"data-transitioning":`transitioning`},p=new WeakMap,m={rootMargin:`100px`},h=e=>t=>{for(let n of e)if(n){if(t.defaultPrevented)return;n(t)}};function ue(e,t,n,r){if(!r)return t?{href:e,external:!0}:{href:n.createHref(e)||`/`,external:!1}}function de(e){if(typeof e!=`string`)return!1;let t=e.charCodeAt(0);return t===47?e.charCodeAt(1)!==47:t===46}var g=u.forwardRef((e,t)=>{let{_asChild:n,...r}=e,{type:i,...a}=d(r,t),o=typeof r.children==`function`?r.children({isActive:a[`data-status`]===`active`}):r.children;if(!n){let{disabled:e,...t}=a;return u.createElement(`a`,t,o)}return u.createElement(n,a,o)});function fe(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}export{g as t}; \ No newline at end of file diff --git a/src/www/assets/loader-circle-fg8-aSyl.js b/src/www/assets/loader-circle-fg8-aSyl.js new file mode 100644 index 0000000..ca07aef --- /dev/null +++ b/src/www/assets/loader-circle-fg8-aSyl.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/long-text-BXQXVuRh.js b/src/www/assets/long-text-BXQXVuRh.js new file mode 100644 index 0000000..1faa19e --- /dev/null +++ b/src/www/assets/long-text-BXQXVuRh.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{i as r}from"./button-DJA4fnJ8.js";import{a as i,i as a,o,s}from"./wallet--XSRr4dT.js";import{n as c,r as l,t as u}from"./popover-D5q6Hufu.js";var d=t(n(),1),f=e();function p({children:e,className:t=``,contentClassName:n=``}){let p=(0,d.useRef)(null),[h,g]=(0,d.useState)(!1),_=e=>{p.current=e,e&&m(e)&&queueMicrotask(()=>g(!0))};return h?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`div`,{className:`hidden sm:block`,children:(0,f.jsx)(o,{delayDuration:0,children:(0,f.jsxs)(a,{children:[(0,f.jsx)(s,{asChild:!0,children:(0,f.jsx)(`div`,{className:r(`truncate`,t),ref:_,children:e})}),(0,f.jsx)(i,{children:(0,f.jsx)(`p`,{className:n,children:e})})]})})}),(0,f.jsx)(`div`,{className:`sm:hidden`,children:(0,f.jsxs)(u,{children:[(0,f.jsx)(l,{asChild:!0,children:(0,f.jsx)(`div`,{className:r(`truncate`,t),ref:_,children:e})}),(0,f.jsx)(c,{className:r(`w-fit`,n),children:(0,f.jsx)(`p`,{children:e})})]})})]}):(0,f.jsx)(`div`,{className:r(`truncate`,t),ref:_,children:e})}var m=e=>e?e.offsetHeightNLE2ohHnO7KT}jeRDl8jf;2B`5eN#|B*;Gtf=mD~(S89o0we>4 z6a*jzhb9M%8w>{G7}a$5!k*m%#w?3D>ItkNNNWREv-y$<0%x^FoZlCCue)uT4sHoWL_??MyFoIE zMEcP%(JkU~vB2hJsS5N6T+qZGeGU)&MwtXMu@ct zx_DZ`I%CoilFah(-`rRCrC#NyAw9sL2_>KhK7NEmP_sbBtXd_=n3l6$KhNi8f9`uP z*$E^(F-8nwDUD%^8WCe;ULFA{;!YiO{}#86kC9S}$sNv)G*ntT=lzjJ$Sfj@Bw8s^Q{!&SISCS=N1$Tz+(5uNQ=#rWw*z?udDaA8 zT#IG?e^Y<?@E_I;5O0Oz^|(mWchP-gj+D1#ewpm{(E+|Kq}hjz@_9|0wJcgOq;?Ne+1gD}Of2;)fi& z6e@>Yh0}-BuRFWw{&t<6i^`?J(#`JEO<-^cx085J2!>ox1cgvo2*OVYKlolJi{F29 zwdQ1{TE==LBv(ZxLQOfW#CVS{W9jn}z}a14sZE_l&CvPJ<8RpPedKW4sXOLpy6Hu2 zibxQjh=dT5VAOwHM-za4MD%c_(FJkWUYD2}lG$P+5W4e=n1O4?ryd0x*vFamB=cF@d?>v0A7(lFxQ@{8CeM z0DI@9Xl|FJ#)>wM?F-V)IhKk3*~6$XG`DI!C$;mBr<#v?d9-cTni&nHdtM&6cLB`f zzW&s;4u#D~-DkrhyVP9j-n#1mh32&7#yS=u&277j;8Nsa@#Sx_djI8w=`-<|`#QHX zajVNQnMB@Hx$3Mw(2QDA4dU z7Sq45yj^JH>MUYo=t9Gj?X^q%eYIxc3L_g@2q650ef0^9P`j<|JmVd1{^Fg<=zmxdE~x1-Y&)D zu~24VZP@FLt5q+?-(`15S9lnIF$+Ag$Bouw9XkICF2{2lQEL{6WcaW*UVf6)7`lAw zdBd0*+OlYaarZRR*R`4b=iYAKk`AKO!)WSbu@101hj_fB{QiqpH!s=VzHT>o!*TeI zXmLWhyx{Dy)Dv^{?5%tK*}wH3-}z6#W1uNe8)y#H1cX3cpdrv0s1Il&5PTRf-nHzt zR?EASSSyY5mMsCzv)-n)nxeImsO8BTqE(1v)lF4V4)NLj{DuyLIEd z?q6e2na0u=paCF z;5C5xVm(?Z30<24NqPt2xf_~c!c0F9aP&64`s6`N3v>z-K_TQx+wm<1=ZtI6tLdy` z^jsd?D_`!s0z8o7FvmsKMTy#ayMwe=U5b=!~A`EtG8 zJq}*{lf@7F6@148y(wGUd%>gQlTbJsPiBgxa^>tfMZ~Z|K_E6ao6tC#vQFOeDaQXx zK!Y08q7LDz$1=sheJjJ<8NkyJ4+tY0_+0q*av$_Y~P@ zJ6e$gEGm^rXJBBUuex${DJh`)ir-AH(jFFNHd9NK=!hH4O4Mjlu2gNLQ)^a7fyNOt z%hR>xJ0(ZAN^32(ReHQ!TJj1ZmZTaQbTbASukN0oEr;d2+8j`%oP}1kQs;t{p#W{8 zjaoHYw1^uNDpHZz9wv=bc9F{({E!oUdDSqqPpJV*!FuA|E0}9e;)z>00F}&U;A^$b zuGRdm6k#2*dbq-_U9y|83kY91Wc_~thO91oGx`f4lWGmH83CwsU$J009)R_*;}1eP z0f0GBh?a=9(nbh?KyHEeIxO}>K{;OHJt9`$O2mBf3{H1@BA4CDE1QP_QIrR86gq)6 zFL}`7XDx;RP%*0Ub6~kPBU7I#xh+56!kQmODa7oI$|Y&aip9_53rn*@{v?9$9{BD6 z|Gfpl`i{RCI0HOY3vfWZ_sz9Jrd3v3Bg1lQEwsQNqagx10~!6h~4(g1|$tl&ontdtdkC?L-YVI;6lR*0g4JS)V}gM4WO#6(6o zB-tRp76H)1pT)=k{sps2uLW-aQY;!^?VHz|dAg>mvLKM9Mm}QZw2x7I$yFxDp z0v}mp36m0h<0_XDd3voH14c&qR0oPEbbo24sBQqDW;Ifkj~)iJ=RQgSLA`7SqhiZ} z%TW6U|5J)o(-sOTNfuh?#)J+Ny4b}^+%!Qhqlmx_Qi#bERtVg}2K*CJx{sxSNp6)$ zrGbpMk=1ONsi3ySWp5nN(^i+KjKe7;IQe}p`zU@H3ZzIw( zj7nh)(lFJ}I|ZmODNw>xN;CjXh7^z^w*@72vOP&Gy`lJvb~}DO;mPy2VfxGH;){&n zrQnl>>9=6BA4BOyr-JaR7i9~Zk;VswhHQ<*x>E<3DFk7arzz`jR9wt4g@nD2)i9k} z*yHVMf8s^t6eA6_v2ScX>?Ef{S;waj4c-rK($9GEq%dKP63$s_W2AcyWtF~9xL5rU z=LfFi2`I(%izTXhY#|{$xkdAODH+AGqJV~*WaH?spQjfhi>J53CtP3Q@){SHe06a+ ziiCugculT;j8NW01GX-aV);?yrdG%9;``I@hbDT|q&j|tKkXrzpDKz|={prF8_^r= zKo&1kJbgzePthwx$} zDORBeifv7wcF8xcg_uG%)wM3c@s>u;f1&dnA&cD4a(N$S#Wd8C7!9Q&>jQwmT%$Sf zo1C5(Jv%wwU(HBd5Iev=_{zDQILdKKQqoC8@=fw8*BZgJRr%p@+nLL=h)$@O-iYnK z^)s)Rf+*d^+NJ7${=jQMnYe}Ziz~Ct$kmCF(6l0Z&u@{`*J;`nOG;#)QalUQ1w%z% zEq1ni&%{TegZ>;g%}`tOGm*byybFI@cXr8bXVJn<24?G$fo5l7Ynow*rI%$mTGb2l zA@jS1q+K+d#_De~APprYD%(W6X?;p1dQ%48XMs>C0^qt3)8fr@@|HZ8!*9E?7|E1u z|1vp_FDz6qI@3$T!E3S5y=e_sdZh5qhk6`Pk$9~c`V<-eRy=~j;z?2XpnUls^xRBt zbpZ!)q`rGavSR5$T^+)3Ij$UGRT`Cd;EZNXz@3e75^Jeax?_pAq@89~HM+>g(BWP+Pi2 z+NA*`t@K}^);XeT*}HJbGws)1w^_eqbW%E$bP}YGwM{OCjxke-#29j?Q zX{0V5YU`qlOD(YdQXnOLenLY%9D-tf5mI!*^vb##8(C>~KQ4rD9l3=mT_HGHi#;rl zT8!4i=@GGyy+D6%b;gstlXN;rMbEfP5m7Ch9IJw?qS9B{*YkY!#?_X3VNGXbVJz_| zXM<}u^GCIO*baVOF&-`dryAerYY9RmWvTW+G+3l-VL}ZfkKmBvy5JiM*C%et^0*tD z$f(Y`!Cb4hHw|1#6}D8D7%V+}{;)S@w5p)Ff%wr2D#h%9#N%zG*eZhc65UfpxC zp_`5C)VIAWHtnH4U8t?F)`$<%m-+xtQgMq4g@-?!Mx*_0C#v@r67H^#OWiq6uAQSp zrQ>|vd*+mLdnz0MIW=oM%$~O5mI(ymgsnzgVTQjNzJg9WNwK%#rksD75-GHDyc}4J zYk<@s<5KgeF%lwQ3;M`*$NfXTKM`O0uo|YYLymkL#(pvyChdFhAiF=94z?3J`;?P3 zmq-Thmxf)x&vm>yq!@^#9VYYoFyM^RhA%gagSZ}1}r+P6xqN6>$A`xPGRcNvAo4V<| zHwP)e)tILrjTY~g#5_9Om;QvSFi>W)b^tv~MX~TDv|!&V zzPMacOloF&XcZB<2HcKPflsxYWx$AfHuDeYbwRgeD7hSA`Z#22^UZ%+| zYD+jIV!C+vQdCji_^yOnc4Ta7J#xi*H#d88Mp$4CFD{^~R&WLZbb!kwLlGpy7U=!? z?926>Gu7v+`2pc?F@L7xS_hb+N%lsC%V7e$ygq0rDNbjedRlkp2{F}q{$i7=*t9%` zV$tGaIhDY z1_2M+$TN8^KsTT#glo?TW%oy!O?jBv*0l3^rA^06qn@MW=!IK?S@D@{8$q~*Z}mbw z@SycAHjCGeC5qM-75xJXt)g`oxm4Wy``$~JpRn)VX=RriZdJGy25j>{hE!}+ChjZ(xEdxK&jcDA(<)en z3ou0>0(4(S`g_F(#sQoX0vy>QEUDE{0~T1-R{zv4G*Oe-n>3p!64cZ|_7Xt-jYIt+ z?;4lr=3)l6DE8?7#H_v>(+5yrA`$_@T*Sw2M?I7FkCjOV4k`Wf1 zM7;w|7)cYiO5j0LF0|#L4vZJ9Eoz2F78Js@{h>UtC?DqBos~TM`4;z1^NF&kXR^h+ zBCvrbpY2IUkEjITetS>b?QQ{T&uAw4VRz~kz?C!E_!}kq6$egVs)hZ0f9xR{FN=Ks z1ElfauKFfte(9w)M39VmH^hpLiHa;Ydq%fM`=&nYai)KAaAZpD$&e!P6jLNskBK1Z z2rt(t8c^eTvGy*(a<|G2BUYz4!MU7{g?(TfMTcXB?giTq9_d{EqAcQLAp-Qym>t$n z7e6h0nr>)1FBuiDD_?`SmyZ^p_S00-SmQcFZ_0H;u0^V$9gZ~^u6~~C?%_+E)KpHX zx>{0Nb;Yo!D}5sFiV^B>eS531bMhwnuG2;dS8bLzO4v95xQuv*KEt!?c9UAP*Fb7x zkpP#;_lGO#?s`ATAIETY1dI-z*r+KsyX0CAtl##RZXHW&h_%(b^sVBkNPP4dJSH~O zqg#XM%(oTjKHvVqBAVhJr%FnN5f+r4!omsP{PL5mq~0tcul%q>HYNo9N^c#+c{2cO zMD6HUjpF)HU)u$lcU6>`xBS=R$9E6g7AN}46RJy2?A};JYnhN&7F=3P2TBNVVy77b z4BM)ZC5=haWh3tUQ%>DS_e%Bf7{*4jZIiL(Kr(DEAIT>TdU}BsoMdQk3o`A}E+^+v z=5$|^wD5=0#Vg9Zs3swPAitrk=rj_z=A%9Z`CH`#=qz5Y_Fz=*XsXKK(ykNM(|1gR zb-fbM-;TEXtTjpJE7LNWqx0Bpe;4o5&@k_#p$XMVF64d@{Wv_dO5towax~xah^LU2 z+OX?Ym0>e2)u)`#5cq_X&LgTql~oRMFPoDHp9r|Edl)u1yc?$9G^T#(ZG!wF`{Nl! zBd*zsCv2My1>48QZkD%FS*!slaMj+q3Z$PQl>z1j!E{OC(rSub`F;Dqw-s`I)!jr5 zc}3cG^KSLS4|81ka6q1d>H<{B3C)5mf}y(qP9JFV=Cf@a>?7<_JImz4|HqVpVn3{7G17GkPU(`d?^{WOPSCL6#1XD;le_5GQ9{=S)v zLvffkn43mdp%!8oyqzibKce%fkcywIGWtGz4D|@DzhpfVMRfcejQ#X@_Jwv9b_x4P z!LgVHP%|MFx^XV>zU{w_Lg@q+)8Fiqw>`4oq;&tP zL39rY)}E3oC^=b>@UyZ%;o7A*net(|l~l(c-|oK%mh4$&*})jB;VVs3y`#_jx*lgq zdt=E3W+_VgpQ0_T>#0Pf`6PmT)%f5`gPjQtzSjGOw;nQ5>fF@~3+~lDK)f*5~8?PL`(+CfZZE z*RB}U_X_se6$cA58dwGcT#SXBqtFk=oo0~zGkhZjxiRbVy(vPNPw~Sa@YZt|c=-G9 z=ZU}eLX~JJHp+f3{p`Z4N$fWBC+WARnK5>^e!jAGBIR` z6Ax(4%$z0SN~RbKvSxK91H@WQoOsR?oVAPFi3c~f38SyKw?|)V%Q5+_^_Y~_tUkZow_Q;S70v|hj$Rv1o%Ue*4lo=DZ^1_UC&@3K;P>~N7T zc`*j0uke#L-|M@hl@tE^G-&z2Dj>aDspI^$8p2!wGC)TnC+Rk!82up462Fkj)Fx?9 ztZpwGyTh4dYMq7&Q6|R=vtoH{QcwiO+7wIzi)AT%wLO*Zd=G>-lYI2QIlW7kZC`Ew zp0F*YYc;*vp#O7KI{BU!f!gn@QR=g+GEMeFdyL*Q9>$mjESB$|<9XWx-tvxkOi4)a z_8l={g4kp>>1G0&vb;Pjlj@U^Ql?%S1_ zQH@h4=%jgT_VrX2{gc)?g#4|A}@7S3OGqWxKC>t91 zNt(BII3`+KPyxM-T|16_W2Jv7SFpZszFzbNKQQN-MIPga#b4%`?$N~w^6$4y9%?~8 z#(8j4wD{r<=g!oVf8Q?N6@j!#x(#dHMuFZyTYa@`fNOY%i=j&a9oZT3GJV&}ymh9} zO{p1}d#)k&wp{lmTqa+ z;_{>4f2ta6mrxKyJFzfIE6!DCZc!jw$;*=1#1_Z+{DUxVw5X-&OoLj9Znaf$JhMNy zFy+FH9BD+_Fx=h68(cbi6$eAt)p)Z?6RUf=8{#@R)ZLS6ky}f*sE1@2$4=*iFD924 z>N_~Wxu-ZIR+Ss%ZZ5(0vEz9SD8+P*t}ue69wU-YF~vnELsDuZgZ-1onSIvno4Pz4 z7;ae;6&;EjVq;ze$)w?XFEHr;I-VKTz?w6Kjt@r0&=~sxSkQg^0K+=WP4t`S4!zg` zhW`<}%a3~|SR~f44&mxwo6>(h6%CYdX%*J|JIDCO5PA{RyT;-Ef=jlKqqSe9XPbh3 z?uiiFh!Pndz%|n}*DZHE6h=cZ_Juc=m^jK$z8J@n5_zMENt4P~WaeZ}Xa$2&5gG~v zl+|*QCj?}mJ3$ZtCLkbO0k8`MVSWOjhs4hS;{qv< z1%MDyo1g@e5M~mFiW!aqA_+&qY-U-G;VDjwTrgLT*mP*ZL6pqlIECJ%fhEZAuPZ6R zf2sOV#Z!Nu3jfNnrw=Tzr(f~`*bVYboVXz8kHvR3M|FAgRXsdW{WUaaO|Mt!vNF^` zM(LUyyF?*tZlWN@N*U%n=xIE#5*4y1%xO+QOnZ3F>OM9*-Tcl>wI>}?} zO!-2bT3{Y~#`^X3XX@o#2lscLj2Fw(@zyjvYQT79yw7^93%f2!?b7Gc0qHAQ zoNR0Nu5NSp$K5trx$IA}+rfh1bv>JUz6!1jZY(a&_TUZ*L_i%Z0SLn9{Ec3_GYb*k zDRFHLh(2vb&qD6BmYnVPcf8>6^*dvh=mR3}cRDuQ>D;&ygqjzTIfn#Ihg)1F9B~f=S`!*>alL$ORF3QzAHhSJ+Di<@@t@@@YgqH5IR|NZ? z{0buiLZg_t_(jl$73&oStZyfJ*4}Zm&ojmi)M|pQDTE87VcI1RbkvfxGW+uLwsKk@ zh*u4S-7ueG#??Py7m`lWm)$cJt~ls*Fo!;1Z-hA{wU}Y3DH(ORZF8cY&_M8=u!M4ahzFLXm4aQCKxz|^HjE_*Cmg2S>Qx{XzZ0IbPqMPcWR zm7AoAj8O7fBZEaa?^G0FD7aBJV);(3FDS%hV5k-TO>jIo@FkFEc$&~NdVNKOGSmnI z6R^n2P(kvzuq;){tm?OckD`wcw44FqmQ;jtgN!wS4O-Z^DU!CNjS-fH;ON3tA@Oid z>WFK#;cLV>7w&wU)%Z1s^R`ww%3(Y|MqwEL@Gd;uXg&A{gzO>A`dB2Yog=xVt#pJV z1_~fi6@9c|wl8dV{4z0^X4+sjXx}^#?Tu!P$fEW|Re3VR_xeTG%?phUqy~1*?DI~s zUFXxx;K!%FK<@Pq7@C9A`p_Vf<}Ga$9%l_bY3GK&N2D%kvjS6Og$b+H_9A5wm0xUe zgk>3!@|>5Xcm}!Un>KO^GQgrDJLX>kiYKkOY|+}73J$Y4-*}sP`S%~ro<39kxzSU~ zjlT0c=HEVy@IAg@vUCzo2j?T#Jw12Hv=MNbmvnQuej9da0jLN!>rb@6)Z8)Z%Yf^9 zo&HkW0zk+RM)5&*{f(xQ_f*Q$U6Bt#QJEI#v{Jb8m+sd0bScT{f_i+2!Jo9=sH4mt zWKZ?!PSpVk662{45ur0;D8rqXZ+~bk{YA^YTx$Egs;ZT;@3BI zEA~!El;P3yl0*MNyS2Dn-PS>jF+_w?NVu(dOW6fj0Rvk*8oN~s+x9761~hL+udRbSKhyL~Mm!^4m*V$Gue`3D6t6OsMUm#1o~9aP@Cr1-`GsXT8#x z?TIANF-M;t6&e+5 z7Z51jlzc1^$Wt89JYyvb3VJUXwPK~byey5A2-!N3`f#HhA$LIH`a7S?HEgvZ|Dd7A zKnGEhh`icy*2w!Kwyk33p#>yy|395TLB(V7FqZue)Nm zOC&1!)2CKR(GN+r*Q>JcJRGsYvQ!9b`h28Vdwgk*=Gjbz7mQ=1|4Am8e+MCVSPD@S zD-T2*df>H})vN)R+fkSwC_^>`v-55PeFH8EMw63$Mv};a0!a(v^Q}hyAE2 zsgN(7mM&2tF1_4JdpJ^6Q9&`apNNDV4iRn~sQGA|6q<$^qvf?eSJpFsVO*G8ichhA z>orW4?P>ow_^7-Dyru%&(qw%uE)f%sqiLbTm_H(ddC4;$$iA#N_S%hhSW-f{0n`>i`#tzMt@Wwp?-5h{5o9@mrEN>v6yizB-7 zTSE3=qS@>6Nm>$X^Wg{6vwV7#YgGK@!mL9HE8I>mSTYRdqer&n2ZgT)>nV)(Z2bd{ zIrBk4cHZ0ohzmvjBQ0HBMgTyXi=r?Q<-9=2j*;SZ!09yoZ^FzJzi}mFfLNd zd2<97wfgA^Yg5pZS00b#N$^A3p|6363#m8T3vMw@bWOEppfjtkf%n$oTvDRmxL`~? z*Fte8tzBX+p6{Z|a>(Sy4GO{eZMp&=XvrkUlVot8RO~&~qQhoe?j!lHfKp~|5owC( zF?|B9UdF^jBMU~@Fo?29s>XccvW~P55eXl1uYatl(t#7_(Ksp zmp;e8kGbgK^FH`8@|N%{*CMN@GluK@1d_jGQb0;Ohmm}=h`kk+>oBEUQ-M;ce%axo zsI0U#dlt;ITHt7BVRQ+A`-+FPvr@0O@N?i1$JC?vKIm-!4pU0!!`=o2WY87z$I_#3 zj3LJQt~6vB^eFwK6opO|qMuY-?;f0I0uA&TROSsDPaSw|7-^BSF=8-+qYt=V2tz|> zO3a?#n6hAs}YG=u32&3}t~psDn7;0Ow)6x+(f0-zT_0B_Lk@l1|x&7%*k z5PBB@*(6;QwF9tvXz4`YfyfabQq#h+#?xKWGOZ^e0|*3)VlEm`+jC;GiLf)J8r8AU zPSHlyBNylWfDZ36Fc6&l@2m z{l-EZ-uQy^BuM-j!!{j=Rqp8M)&I(`l9#nW0tk>MUc@p4>vE*z6NFufFv-kclt!&ki{qXc+e zu9_(mUpKkV{GQSN?}ZxLG6`~Kt}i9n;8zhqCQz%e{>6XchF-o9IVsykCkyMDv zT#>OYQ2*Z8xPI1V8Ak5Qn!8;D&LIE(L`&dCOjqk2yJB~w3-Gq3#7JU=98MHO`hJlf zMTRS_5JF&OZ*aFWgQa1%=?23b*(`_(u?hyh`?TbXkf=IW=dBZ}Y`&?(QO@*BG%`jm z(=5?1&N#@?^?P8M)hhU#0oR|-2H`ShxbIg^<#Hqqg48c0%(xJq}kWNY3;dRyrIuV~#u| zcE!4XD_TBRA#oEd2CQ3SR~F-vm^qQZ{K;eT@)F<4m8m;NdYq-!AQt$;EiJcPTy|){ zJ?@~*7GJHsEx<$ zx$lDC`uw5T@2|$ExI!TrxlkS|BDmH$1!QwxEt{@;FJ8QA502yp3!(St>GG4z?kk39 z9!yjEVZ)aEu6zzrC9FFMqkiNQcBWD-QD&PPt6a@v57F1MK zKyVQtz{zeyPu2Pup4e)AYdKEhm{3RYuyz;alv-o5K{m(A1|aM;1|v(1>{t=9RQvC+xraG^fCCfj8X9?h{a#;RVeCh7lv zhvUE6wxWM4i{y7on5(-k=K0~Q@Lvja>A^zhf^oWzQ_8hJs4bSpy5Mwo@tqz(Wwp*Q zsuA!hcA!9y>~>S3Rq*en?fT}!n;KKg<_QIEa)2ykW3ptD!6z?z2B3I~3f!-vxv#e- zJW^%}Zk^W%AnMgMwG!dH@85F>3Op?&K_I^v=JSn=sC*sZHz2^D>neHnHbp(dmJQ`e zH?E?HQd2cTiWPR**4dfsGI*`6v)ivc85?=)WBtrE0$Hw{lJ1Ch)~{ENIzsr}w{|IW z`@t{w?sQrOoiBTPX738Sw&$BC^zUR%u%!nb4*fZeXXMQdWAI<=c!QK+V9L3jI=+6rX;`d~;Ey=V#87*3ul2O;_m+};W-#>A^R zw%(=sB3L>~Ilp!?O?a;DMBe;PeL!1x_Ib#%o*vj!zK^(8LR5c^4HGef;Ml}FN@woN+p97d9W+XJH%%iV z()PX*9DJro%#MSpDn31_g^Is!i^;Api|763HNxTY<@dTymK(vrz1-$V+AiTGKYEAo zsQC1ajSc5KY%DR|)|>)pXt^q;t&NI*F-?_y@!xy-I&?6^+i_MbnvabB_nw)6)67ib zl0adx8!RvQnHut^y@-~Gf7+@ql6#R4Qiw7iw6!IrU6oCFq#V*LSZ=GH!Muv(n~>EK zA*$_#s*0I#VW;su?i)~8h-zu&XV2Bxy9O`}*<{VlFjmC`Q`u)<{?O$mM=L5DB;RHY z8U9;!HB(Z1^qa=(y*n zxm9hi`cbrS3TQrjNc&Yf`0l-_t$x#f`bIzJB}- zZJY?faCUoH#E2%Go!7r_YWeBcsSxL#l2hlo8{$Q_I0g`ovk`X*KUg2Bz9}?%pb{hj z1lnP>)L-f^eX9Bd>eC=DfP`Hh3RXH$xBU0+JG(?(NC=I!?0>Y{a35yMMaZ< zn7f}oO_?#*HhOK+=Cl|`^CPTtxxi#lgrh9ZmDLvXd-fml`P!JUkdO&0bdJ+ASZr)i zPzvQ#B2_paGE^%{N{Uk|#z*;lF5FLTzj%=M-6n5WApZYLh1g`{{50b^Y#&z6XbLW=^baIVQrA?2DASALjNhY9w7RE;0^aAV2dJj+k$mo2zDb@-HCMfioWYD7gnFiH zg>52MlVtk9glJ{ousVBzI*g5A(Mt$TA{Aggc2Z82kt|ZpOx2@?B8zj`lB_)0tTeP` zHnk4^JhKs&WWlCRmoD=OF4Hy7YBOpX(w6G9+C~A7EDlJksZ+=9T38`eps);jsVzz>#m~E@l~OC)rhGsKK&dnA&81w!a#!l6b|~Zv;lM06Ko^oQ%85LlyaGUIT;HwM^-m|-lKT<3G5Ku=X|^#Jp3f{7*CyH z)Y-!O63QWC)i8>gqG3hzH(OSZ-bsn_^HXys%-O?CIK?v8>127#c+%k~tz&c=Y)FTf z4*`)8MKn|5GCiG1_bhMOaGuv>H;-E0$j!Cwm$`+)Xf03!m#Ca^Z&y(XyT5r?*uL*BEfls@x z`%UOSg!+^*zw7=ZP4|zX_Izl{wD}B%FYoU-%@Q@%`Hvl3+&sJj)@<5}T1i$^O*c%- zc3cpG5fsA-lH&0NLXlV^mB|%Km0F|K>1l@L3`UdLVzt>FPM6!`_4!F;3e^e&BNH>VvWin@ z&ZEU{H7QamTdjB)*pZ;80xvIS{vIG?bmtb?S zP%Hogo&Yj~hn1q4)w>w7q0UlN5Nxcq4;cg_aMGA8n@J6r#$(LZ-72yYoFHjq%YoB| z50gLPqLnCBu0o|49a}vq)oO{;Q&yo|r5b8}+p0Huf3Hbz6dtoZ|6(Hl^Vi4WGXMb3 C%jrD; literal 0 HcmV?d00001 diff --git a/src/www/assets/manrope-greek-wght-normal-DL7QRZyv.woff2 b/src/www/assets/manrope-greek-wght-normal-DL7QRZyv.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e74e7189632e9be70aa32c83057e9637cce6b3df GIT binary patch literal 9444 zcmV+;0RR9100000000000000000000 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 yUH7%t literal 0 HcmV?d00001 diff --git a/src/www/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 b/src/www/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..71eb731d558046199aa7f985adbf812890a093a1 GIT binary patch literal 24836 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2 b/src/www/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1e4b7a4b3fb95ad762a8882885b3331cc0e073ed GIT binary patch literal 8520 zcmV-OA-CRlPew8T0RR9103k>K6951J0EdJC03g}`0RR9100000000000000000000 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 Csflp_ literal 0 HcmV?d00001 diff --git a/src/www/assets/matchContext-BcwcZvp2.js b/src/www/assets/matchContext-BcwcZvp2.js new file mode 100644 index 0000000..245fa18 --- /dev/null +++ b/src/www/assets/matchContext-BcwcZvp2.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";var n=e(t(),1),r=n.createContext(void 0),i=n.createContext(void 0);export{r as n,i as t}; \ No newline at end of file diff --git a/src/www/assets/messages-BovT1T-w.js b/src/www/assets/messages-BovT1T-w.js new file mode 100644 index 0000000..3890ddb --- /dev/null +++ b/src/www/assets/messages-BovT1T-w.js @@ -0,0 +1 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=u()})),f=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),p=o(((e,t)=>{t.exports=f()})),m={},h=`en-US`,g=[`en-US`,`zh-CN`],_=`PARAGLIDE_LOCALE`,v=3456e4,y=[`cookie`,`preferredLanguage`,`baseLocale`],b=[],x,S;function C(e){if(b.length===0)return;let t=typeof e==`string`?e:e.href;if(x===t)return S;let n=new URL(t,`http://dummy.com`),r;for(let e of b)if(new m(e.match,n.href).exec(n.href)){r=e;break}return x=t,S=r,r}function w(e){let t=C(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:y}var T=void 0;globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var E=!1,D=()=>{if(T){let e=T?.getStore()?.locale;if(e)return e}let e=y;typeof window<`u`&&window.location?.href&&(e=w(window.location.href));let t=O(e,typeof window<`u`?window.location?.href:void 0);if(t)return E||(E=!0,A(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://inlang.com/m/gerre34r/library-inlang-paraglideJs/errors#no-locale-found`)};function O(e,t){let n;for(let t of e){if(t===`cookie`)n=N();else if(t===`baseLocale`)n=h;else if(t===`preferredLanguage`)n=P();else if(I(t)&&F.has(t)){let e=F.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return M(t)}}let e=j(n);if(e)return e}}var k=e=>{e?window.location.href=e:window.location.reload()},A=(e,t)=>{let n={reload:!0,...t},r;try{r=D()}catch{}let i=[],a=y;typeof window<`u`&&window.location?.href&&(a=w(window.location.href));for(let t of a)if(t===`cookie`){if(typeof document>`u`||typeof window>`u`)continue;let t=`${_}=${e}; path=/; max-age=${v}`;document.cookie=t}else if(t===`baseLocale`)continue;else if(I(t)&&F.has(t)){let n=F.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),i.push(r))}}let o=()=>{n.reload&&window.location&&e!==r&&k(void 0)};if(i.length)return Promise.all(i).then(()=>{o()});o()};function j(e){if(typeof e!=`string`)return;let t=e.toLowerCase();for(let e of g)if(e.toLowerCase()===t)return e}function M(e){let t=j(e);if(t)return t;throw Error(`Invalid locale: ${e}. Expected one of: ${g.join(`, `)}`)}function N(){if(typeof document>`u`||!document.cookie)return;let e=document.cookie.match(RegExp(`(^| )${_}=([^;]+)`))?.[2];return j(e)}function P(){if(!navigator?.languages?.length)return;let e=navigator.languages.map(e=>({fullTag:e,baseTag:e.split(`-`)[0]}));for(let t of e){let e=j(t.fullTag);if(e)return e;let n=j(t.baseTag);if(n)return n}}var F=new Map;function I(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}var L=()=>`Search`,ee=()=>`搜索`,te=((e={},t={})=>(t.locale??D())===`en-US`?L(e):ee(e)),R=()=>`Cancel`,z=()=>`取消`,B=((e={},t={})=>(t.locale??D())===`en-US`?R(e):z(e)),V=()=>`Continue`,H=()=>`继续`,U=((e={},t={})=>(t.locale??D())===`en-US`?V(e):H(e)),W=()=>`Change Password`,G=()=>`修改密码`,K=((e={},t={})=>(t.locale??D())===`en-US`?W(e):G(e)),q=()=>`Sign out`,J=()=>`退出登录`,Y=((e={},t={})=>(t.locale??D())===`en-US`?q(e):J(e)),X=()=>`Are you sure you want to sign out? You will need to sign in again to access your account.`,Z=()=>`您确定要退出登录吗?您需要重新登录才能访问您的账户。`,Q=((e={},t={})=>(t.locale??D())===`en-US`?X(e):Z(e)),ne=()=>`Toggle theme`,re=()=>`切换主题`,ie=((e={},t={})=>(t.locale??D())===`en-US`?ne(e):re(e)),ae=()=>`Light`,oe=()=>`浅色`,se=((e={},t={})=>(t.locale??D())===`en-US`?ae(e):oe(e)),ce=()=>`Dark`,le=()=>`深色`,ue=((e={},t={})=>(t.locale??D())===`en-US`?ce(e):le(e)),de=()=>`System`,fe=()=>`系统`,pe=((e={},t={})=>(t.locale??D())===`en-US`?de(e):fe(e)),me=()=>`Skip to Main`,he=()=>`跳至主内容`,ge=((e={},t={})=>(t.locale??D())===`en-US`?me(e):he(e)),_e=()=>`Switch language`,ve=()=>`切换语言`,ye=((e={},t={})=>(t.locale??D())===`en-US`?_e(e):ve(e)),be=()=>`Learn more`,xe=()=>`了解更多`,Se=((e={},t={})=>(t.locale??D())===`en-US`?be(e):xe(e)),Ce=()=>`Coming Soon`,we=()=>`即将推出`,Te=((e={},t={})=>(t.locale??D())===`en-US`?Ce(e):we(e)),Ee=()=>`We are putting the finishing touches on this feature. Stay tuned for a better experience.`,De=()=>`我们正在打磨这一功能,敬请期待更好的体验`,Oe=((e={},t={})=>(t.locale??D())===`en-US`?Ee(e):De(e)),ke=()=>`Hang tight 👀`,Ae=()=>`再等等 👀`,je=((e={},t={})=>(t.locale??D())===`en-US`?ke(e):Ae(e)),Me=()=>`Type a command or search...`,Ne=()=>`输入命令或搜索...`,Pe=((e={},t={})=>(t.locale??D())===`en-US`?Me(e):Ne(e)),Fe=()=>`No results found.`,Ie=()=>`未找到结果。`,Le=((e={},t={})=>(t.locale??D())===`en-US`?Fe(e):Ie(e)),Re=()=>`Theme Settings`,ze=()=>`主题设置`,Be=((e={},t={})=>(t.locale??D())===`en-US`?Re(e):ze(e)),Ve=()=>`Adjust the appearance and layout to suit your preferences.`,He=()=>`调整外观和布局以适合您的偏好。`,Ue=((e={},t={})=>(t.locale??D())===`en-US`?Ve(e):He(e)),We=()=>`Reset`,Ge=()=>`重置`,Ke=((e={},t={})=>(t.locale??D())===`en-US`?We(e):Ge(e)),qe=()=>`Theme`,Je=()=>`主题`,Ye=((e={},t={})=>(t.locale??D())===`en-US`?qe(e):Je(e)),Xe=()=>`Sidebar`,Ze=()=>`侧边栏`,Qe=((e={},t={})=>(t.locale??D())===`en-US`?Xe(e):Ze(e)),$e=()=>`Layout`,et=()=>`布局`,tt=((e={},t={})=>(t.locale??D())===`en-US`?$e(e):et(e)),nt=()=>`Direction`,rt=()=>`方向`,it=((e={},t={})=>(t.locale??D())===`en-US`?nt(e):rt(e)),at=()=>`Inset`,ot=()=>`嵌入`,st=((e={},t={})=>(t.locale??D())===`en-US`?at(e):ot(e)),ct=()=>`Floating`,lt=()=>`浮动`,ut=((e={},t={})=>(t.locale??D())===`en-US`?ct(e):lt(e)),dt=()=>`Sidebar`,ft=()=>`侧边栏`,pt=((e={},t={})=>(t.locale??D())===`en-US`?dt(e):ft(e)),mt=()=>`Default`,ht=()=>`默认`,gt=((e={},t={})=>(t.locale??D())===`en-US`?mt(e):ht(e)),_t=()=>`Compact`,vt=()=>`紧凑`,yt=((e={},t={})=>(t.locale??D())===`en-US`?_t(e):vt(e)),bt=()=>`Full layout`,xt=()=>`完整布局`,St=((e={},t={})=>(t.locale??D())===`en-US`?bt(e):xt(e)),Ct=()=>`Left to Right`,wt=()=>`从左到右`,Tt=((e={},t={})=>(t.locale??D())===`en-US`?Ct(e):wt(e)),Et=()=>`Right to Left`,Dt=()=>`从右到左`,Ot=((e={},t={})=>(t.locale??D())===`en-US`?Et(e):Dt(e)),kt=()=>`Asc`,At=()=>`升序`,jt=((e={},t={})=>(t.locale??D())===`en-US`?kt(e):At(e)),Mt=()=>`Desc`,Nt=()=>`降序`,Pt=((e={},t={})=>(t.locale??D())===`en-US`?Mt(e):Nt(e)),Ft=()=>`Hide`,It=()=>`隐藏`,Lt=((e={},t={})=>(t.locale??D())===`en-US`?Ft(e):It(e)),Rt=e=>`Page ${e?.current} of ${e?.total}`,zt=e=>`第 ${e?.current} 页,共 ${e?.total} 页`,Bt=((e,t={})=>(t.locale??D())===`en-US`?Rt(e):zt(e)),Vt=()=>`Rows per page`,Ht=()=>`每页行数`,Ut=((e={},t={})=>(t.locale??D())===`en-US`?Vt(e):Ht(e)),Wt=()=>`Go to first page`,Gt=()=>`跳转到第一页`,Kt=((e={},t={})=>(t.locale??D())===`en-US`?Wt(e):Gt(e)),qt=()=>`Go to previous page`,Jt=()=>`跳转到上一页`,Yt=((e={},t={})=>(t.locale??D())===`en-US`?qt(e):Jt(e)),Xt=e=>`Go to page ${e?.page}`,Zt=e=>`跳转到第 ${e?.page} 页`,Qt=((e,t={})=>(t.locale??D())===`en-US`?Xt(e):Zt(e)),$t=()=>`Go to next page`,en=()=>`跳转到下一页`,tn=((e={},t={})=>(t.locale??D())===`en-US`?$t(e):en(e)),nn=()=>`Go to last page`,rn=()=>`跳转到最后一页`,an=((e={},t={})=>(t.locale??D())===`en-US`?nn(e):rn(e)),on=()=>`Filter...`,sn=()=>`筛选...`,cn=((e={},t={})=>(t.locale??D())===`en-US`?on(e):sn(e)),ln=()=>`Reset`,un=()=>`重置`,dn=((e={},t={})=>(t.locale??D())===`en-US`?ln(e):un(e)),fn=()=>`Refresh`,pn=()=>`刷新`,mn=((e={},t={})=>(t.locale??D())===`en-US`?fn(e):pn(e)),hn=()=>`View`,gn=()=>`视图`,_n=((e={},t={})=>(t.locale??D())===`en-US`?hn(e):gn(e)),vn=()=>`Toggle columns`,yn=()=>`切换列`,bn=((e={},t={})=>(t.locale??D())===`en-US`?vn(e):yn(e)),xn=()=>`Select date range`,Sn=()=>`选择时间范围`,Cn=((e={},t={})=>(t.locale??D())===`en-US`?xn(e):Sn(e)),wn=()=>`Today`,Tn=()=>`今天`,En=((e={},t={})=>(t.locale??D())===`en-US`?wn(e):Tn(e)),Dn=()=>`Yesterday`,On=()=>`昨天`,kn=((e={},t={})=>(t.locale??D())===`en-US`?Dn(e):On(e)),An=()=>`Last 7 days`,jn=()=>`最近 7 天`,Mn=((e={},t={})=>(t.locale??D())===`en-US`?An(e):jn(e)),Nn=()=>`Last 30 days`,Pn=()=>`最近 30 天`,Fn=((e={},t={})=>(t.locale??D())===`en-US`?Nn(e):Pn(e)),In=()=>`This month`,Ln=()=>`本月`,Rn=((e={},t={})=>(t.locale??D())===`en-US`?In(e):Ln(e)),zn=()=>`Last month`,Bn=()=>`上月`,Vn=((e={},t={})=>(t.locale??D())===`en-US`?zn(e):Bn(e)),Hn=()=>`Overview`,Un=()=>`概览`,Wn=((e={},t={})=>(t.locale??D())===`en-US`?Hn(e):Un(e)),Gn=()=>`Dashboard`,Kn=()=>`仪表盘`,qn=((e={},t={})=>(t.locale??D())===`en-US`?Gn(e):Kn(e)),Jn=()=>`Orders`,Yn=()=>`订单管理`,Xn=((e={},t={})=>(t.locale??D())===`en-US`?Jn(e):Yn(e)),Zn=()=>`Payments`,Qn=()=>`支付管理`,$n=((e={},t={})=>(t.locale??D())===`en-US`?Zn(e):Qn(e)),er=()=>`Blockchain`,tr=()=>`区块链`,nr=((e={},t={})=>(t.locale??D())===`en-US`?er(e):tr(e)),rr=()=>`Chains & Tokens`,ir=()=>`链与代币`,ar=((e={},t={})=>(t.locale??D())===`en-US`?rr(e):ir(e)),or=()=>`RPC Nodes`,sr=()=>`RPC 节点`,cr=((e={},t={})=>(t.locale??D())===`en-US`?or(e):sr(e)),lr=()=>`System`,ur=()=>`系统`,dr=((e={},t={})=>(t.locale??D())===`en-US`?lr(e):ur(e)),fr=()=>`Settings`,pr=()=>`系统配置`,mr=((e={},t={})=>(t.locale??D())===`en-US`?fr(e):pr(e)),hr=()=>`Account Security`,gr=()=>`账户安全`,_r=((e={},t={})=>(t.locale??D())===`en-US`?hr(e):gr(e)),vr=()=>`Manage your account security settings.`,yr=()=>`管理你的账户安全设置。`,br=((e={},t={})=>(t.locale??D())===`en-US`?vr(e):yr(e)),xr=()=>`Change Password`,Sr=()=>`修改密码`,Cr=((e={},t={})=>(t.locale??D())===`en-US`?xr(e):Sr(e)),wr=()=>`Change Password`,Tr=()=>`修改密码`,Er=((e={},t={})=>(t.locale??D())===`en-US`?wr(e):Tr(e)),Dr=()=>`Update your login password.`,Or=()=>`更新你的登录密码。`,kr=((e={},t={})=>(t.locale??D())===`en-US`?Dr(e):Or(e)),Ar=()=>`General`,jr=()=>`基础配置`,Mr=((e={},t={})=>(t.locale??D())===`en-US`?Ar(e):jr(e)),Nr=()=>`Telegram`,Pr=()=>`Telegram 配置`,Fr=((e={},t={})=>(t.locale??D())===`en-US`?Nr(e):Pr(e)),Ir=()=>`Exchange Rate`,Lr=()=>`汇率配置`,Rr=((e={},t={})=>(t.locale??D())===`en-US`?Ir(e):Lr(e)),zr=()=>`EPay Config`,Br=()=>`EPay 配置`,Vr=((e={},t={})=>(t.locale??D())===`en-US`?zr(e):Br(e)),Hr=()=>`Default Token`,Ur=()=>`默认代币`,Wr=((e={},t={})=>(t.locale??D())===`en-US`?Hr(e):Ur(e)),Gr=()=>`Default Currency`,Kr=()=>`默认法币`,qr=((e={},t={})=>(t.locale??D())===`en-US`?Gr(e):Kr(e)),Jr=()=>`Default Network`,Yr=()=>`默认网络`,Xr=((e={},t={})=>(t.locale??D())===`en-US`?Jr(e):Yr(e)),Zr=()=>`System error / Parameter validation failed`,Qr=()=>`系统错误 / 参数校验失败`,$r=((e={},t={})=>(t.locale??D())===`en-US`?Zr(e):Qr(e)),ei=()=>`Wallet address already exists`,ti=()=>`钱包地址已存在`,ni=((e={},t={})=>(t.locale??D())===`en-US`?ei(e):ti(e)),ri=()=>`Order already exists`,ii=()=>`订单已存在`,ai=((e={},t={})=>(t.locale??D())===`en-US`?ri(e):ii(e)),oi=()=>`No available wallet address`,si=()=>`无可用钱包地址`,ci=((e={},t={})=>(t.locale??D())===`en-US`?oi(e):si(e)),li=()=>`Invalid payment amount`,ui=()=>`无效支付金额`,di=((e={},t={})=>(t.locale??D())===`en-US`?li(e):ui(e)),fi=()=>`No available amount channel`,pi=()=>`无可用金额通道`,mi=((e={},t={})=>(t.locale??D())===`en-US`?fi(e):pi(e)),hi=()=>`Exchange rate calculation failed`,gi=()=>`汇率计算失败`,_i=((e={},t={})=>(t.locale??D())===`en-US`?hi(e):gi(e)),vi=()=>`Block transaction already processed`,yi=()=>`区块交易已处理`,bi=((e={},t={})=>(t.locale??D())===`en-US`?vi(e):yi(e)),xi=()=>`Order not found`,Si=()=>`订单不存在`,Ci=((e={},t={})=>(t.locale??D())===`en-US`?xi(e):Si(e)),wi=()=>`Request parameter parsing failed`,Ti=()=>`请求参数解析失败`,Ei=((e={},t={})=>(t.locale??D())===`en-US`?wi(e):Ti(e)),Di=()=>`Order status has changed`,Oi=()=>`订单状态已变更`,ki=((e={},t={})=>(t.locale??D())===`en-US`?Di(e):Oi(e)),Ai=()=>`Sub-order count exceeded`,ji=()=>`子订单数量超限`,Mi=((e={},t={})=>(t.locale??D())===`en-US`?Ai(e):ji(e)),Ni=()=>`Cannot switch network for sub-order`,Pi=()=>`不能对子订单切换网络`,Fi=((e={},t={})=>(t.locale??D())===`en-US`?Ni(e):Pi(e)),Ii=()=>`Order is not in pending payment status`,Li=()=>`订单不是待支付状态`,Ri=((e={},t={})=>(t.locale??D())===`en-US`?Ii(e):Li(e)),zi=()=>`Gateway not configured`,Bi=()=>`网关未配置`,Vi=((e={},t={})=>(t.locale??D())===`en-US`?zi(e):Bi(e)),Hi=()=>`Supported asset already exists`,Ui=()=>`支持的资产已存在`,Wi=((e={},t={})=>(t.locale??D())===`en-US`?Hi(e):Ui(e)),Gi=()=>`Supported asset does not exist`,Ki=()=>`支持的资产不存在`,qi=((e={},t={})=>(t.locale??D())===`en-US`?Gi(e):Ki(e)),Ji=()=>`Request failed`,Yi=()=>`请求失败`,Xi=((e={},t={})=>(t.locale??D())===`en-US`?Ji(e):Yi(e)),Zi=()=>`Server error, please try again later`,Qi=()=>`服务器错误,请稍后重试`,$i=((e={},t={})=>(t.locale??D())===`en-US`?Zi(e):Qi(e)),ea=()=>`Oops! Something went wrong :')`,ta=()=>`出错了 :')`,na=((e={},t={})=>(t.locale??D())===`en-US`?ea(e):ta(e)),ra=()=>`We apologize for the inconvenience. Please try again later.`,ia=()=>`抱歉给您带来不便,请稍后重试。`,aa=((e={},t={})=>(t.locale??D())===`en-US`?ra(e):ia(e)),oa=()=>`Go Back`,sa=()=>`返回`,ca=((e={},t={})=>(t.locale??D())===`en-US`?oa(e):sa(e)),la=()=>`Back to Home`,ua=()=>`回到首页`,da=((e={},t={})=>(t.locale??D())===`en-US`?la(e):ua(e)),fa=()=>`Oops! Page Not Found!`,pa=()=>`页面未找到!`,ma=((e={},t={})=>(t.locale??D())===`en-US`?fa(e):pa(e)),ha=()=>`It seems like the page you're looking for does not exist or might have been removed.`,ga=()=>`您访问的页面不存在或已被移除。`,_a=((e={},t={})=>(t.locale??D())===`en-US`?ha(e):ga(e)),va=()=>`Welcome back`,ya=()=>`欢迎回来`,ba=((e={},t={})=>(t.locale??D())===`en-US`?va(e):ya(e)),xa=()=>`Sign in to GMPay`,Sa=()=>`登录 GMPay 后台`,Ca=((e={},t={})=>(t.locale??D())===`en-US`?xa(e):Sa(e)),wa=()=>`Use your admin account to access the console and manage payment orders, wallet configuration and callback notifications.`,Ta=()=>`使用管理员账号进入控制台,继续处理收款订单、钱包配置与通知回调。`,Ea=((e={},t={})=>(t.locale??D())===`en-US`?wa(e):Ta(e)),Da=()=>`Username`,Oa=()=>`账号`,ka=((e={},t={})=>(t.locale??D())===`en-US`?Da(e):Oa(e)),Aa=()=>`admin`,ja=()=>`admin`,Ma=((e={},t={})=>(t.locale??D())===`en-US`?Aa(e):ja(e)),Na=()=>`Password`,Pa=()=>`密码`,Fa=((e={},t={})=>(t.locale??D())===`en-US`?Na(e):Pa(e)),Ia=()=>`Please enter your username`,La=()=>`请输入账号`,Ra=((e={},t={})=>(t.locale??D())===`en-US`?Ia(e):La(e)),za=()=>`Please enter your password`,Ba=()=>`请输入密码`,Va=((e={},t={})=>(t.locale??D())===`en-US`?za(e):Ba(e)),Ha=()=>`Sign In`,Ua=()=>`登录`,Wa=((e={},t={})=>(t.locale??D())===`en-US`?Ha(e):Ua(e)),Ga=()=>`epusdt Setup`,Ka=()=>`epusdt 安装配置`,qa=((e={},t={})=>(t.locale??D())===`en-US`?Ga(e):Ka(e)),Ja=()=>`Fill in the details below to create your configuration file.`,Ya=()=>`填写以下信息以创建配置文件。`,Xa=((e={},t={})=>(t.locale??D())===`en-US`?Ja(e):Ya(e)),Za=()=>`App Name`,Qa=()=>`应用名称`,$a=((e={},t={})=>(t.locale??D())===`en-US`?Za(e):Qa(e)),eo=()=>`App URI`,to=()=>`应用地址`,no=((e={},t={})=>(t.locale??D())===`en-US`?eo(e):to(e)),ro=()=>`HTTP Bind Address`,io=()=>`HTTP 绑定地址`,ao=((e={},t={})=>(t.locale??D())===`en-US`?ro(e):io(e)),oo=()=>`HTTP Bind Port`,so=()=>`HTTP 绑定端口`,co=((e={},t={})=>(t.locale??D())===`en-US`?oo(e):so(e)),lo=()=>`Runtime Root Path`,uo=()=>`运行时根目录`,fo=((e={},t={})=>(t.locale??D())===`en-US`?lo(e):uo(e)),po=()=>`Log Save Path`,mo=()=>`日志保存路径`,ho=((e={},t={})=>(t.locale??D())===`en-US`?po(e):mo(e)),go=()=>`Order Expiration (min)`,_o=()=>`订单过期时间(分钟)`,vo=((e={},t={})=>(t.locale??D())===`en-US`?go(e):_o(e)),yo=()=>`Max Callback Retries`,bo=()=>`最大回调重试次数`,xo=((e={},t={})=>(t.locale??D())===`en-US`?yo(e):bo(e)),So=()=>`Install`,Co=()=>`开始安装`,wo=((e={},t={})=>(t.locale??D())===`en-US`?So(e):Co(e)),To=()=>`Installing…`,Eo=()=>`安装中…`,Do=((e={},t={})=>(t.locale??D())===`en-US`?To(e):Eo(e)),Oo=()=>`Done!`,ko=()=>`完成!`,Ao=((e={},t={})=>(t.locale??D())===`en-US`?Oo(e):ko(e)),jo=()=>`Done! The server is starting…`,Mo=()=>`安装完成!服务正在启动…`,No=((e={},t={})=>(t.locale??D())===`en-US`?jo(e):Mo(e)),Po=()=>`Install failed.`,Fo=()=>`安装失败。`,Io=((e={},t={})=>(t.locale??D())===`en-US`?Po(e):Fo(e)),Lo=()=>`Settled By Sub`,Ro=()=>`子单结算`,zo=((e={},t={})=>(t.locale??D())===`en-US`?Lo(e):Ro(e)),Bo=()=>`Appearance`,Vo=()=>`外观设置`,Ho=((e={},t={})=>(t.locale??D())===`en-US`?Bo(e):Vo(e)),Uo=()=>`Admin Console`,Wo=()=>`管理控制台`,Go=((e={},t={})=>(t.locale??D())===`en-US`?Uo(e):Wo(e)),Ko=()=>`Payment Assets`,qo=()=>`收款资产`,Jo=((e={},t={})=>(t.locale??D())===`en-US`?Ko(e):qo(e)),Yo=()=>`Transactions`,Xo=()=>`交易`,Zo=((e={},t={})=>(t.locale??D())===`en-US`?Yo(e):Xo(e)),Qo=()=>`Finance`,$o=()=>`财务`,es=((e={},t={})=>(t.locale??D())===`en-US`?Qo(e):$o(e)),ts=()=>`Address Management`,ns=()=>`地址管理`,rs=((e={},t={})=>(t.locale??D())===`en-US`?ts(e):ns(e)),is=e=>`Last login: ${e?.time}`,as=e=>`上次登录: ${e?.time}`,os=((e,t={})=>(t.locale??D())===`en-US`?is(e):as(e)),ss=()=>`Welcome to Admin Console`,cs=()=>`欢迎使用管理后台`,ls=((e={},t={})=>(t.locale??D())===`en-US`?ss(e):cs(e)),us=()=>`Dashboard`,ds=()=>`仪表盘`,fs=((e={},t={})=>(t.locale??D())===`en-US`?us(e):ds(e)),ps=()=>`View asset balances, revenue trends, and recent order statuses.`,ms=()=>`查看资产、流水与最近订单状态。`,hs=((e={},t={})=>(t.locale??D())===`en-US`?ps(e):ms(e)),gs=()=>`Time`,_s=()=>`时间`,vs=((e={},t={})=>(t.locale??D())===`en-US`?gs(e):_s(e)),ys=()=>`Order ID`,bs=()=>`订单号`,xs=((e={},t={})=>(t.locale??D())===`en-US`?ys(e):bs(e)),Ss=()=>`Wallet Address`,Cs=()=>`钱包地址`,ws=((e={},t={})=>(t.locale??D())===`en-US`?Ss(e):Cs(e)),Ts=()=>`Fiat Amount`,Es=()=>`法币金额`,Ds=((e={},t={})=>(t.locale??D())===`en-US`?Ts(e):Es(e)),Os=()=>`Token Amount`,ks=()=>`代币金额`,As=((e={},t={})=>(t.locale??D())===`en-US`?Os(e):ks(e)),js=()=>`Chain`,Ms=()=>`链`,Ns=((e={},t={})=>(t.locale??D())===`en-US`?js(e):Ms(e)),Ps=()=>`Status`,Fs=()=>`状态`,Is=((e={},t={})=>(t.locale??D())===`en-US`?Ps(e):Fs(e)),Ls=()=>`Revenue Trend`,Rs=()=>`流水趋势`,zs=((e={},t={})=>(t.locale??D())===`en-US`?Ls(e):Rs(e)),Bs=()=>`Trend of successful and failed order amounts`,Vs=()=>`成功与失败订单金额趋势`,Hs=((e={},t={})=>(t.locale??D())===`en-US`?Bs(e):Vs(e)),Us=()=>`Order Statistics`,Ws=()=>`订单统计`,Gs=((e={},t={})=>(t.locale??D())===`en-US`?Us(e):Ws(e)),Ks=()=>`Daily order count and conversion rate trend`,qs=()=>`每日订单数与成交率趋势`,Js=((e={},t={})=>(t.locale??D())===`en-US`?Ks(e):qs(e)),Ys=()=>`Recent Orders`,Xs=()=>`最近订单`,Zs=((e={},t={})=>(t.locale??D())===`en-US`?Ys(e):Xs(e)),Qs=()=>`Payment status of the latest 20 orders`,$s=()=>`最新 20 笔订单收款状态`,ec=((e={},t={})=>(t.locale??D())===`en-US`?Qs(e):$s(e)),tc=()=>`No recent orders`,nc=()=>`暂无最近订单`,rc=((e={},t={})=>(t.locale??D())===`en-US`?tc(e):nc(e)),ic=()=>`Asset Trend`,ac=()=>`资产趋势`,oc=((e={},t={})=>(t.locale??D())===`en-US`?ic(e):ac(e)),sc=()=>`Switch between today, 7 days, 30 days, and custom views`,cc=()=>`支持今日、7 天、30 天与自定义视图切换`,lc=((e={},t={})=>(t.locale??D())===`en-US`?sc(e):cc(e)),uc=()=>`Filter`,dc=()=>`筛选`,fc=((e={},t={})=>(t.locale??D())===`en-US`?uc(e):dc(e)),pc=()=>`No data`,mc=()=>`无数据`,hc=((e={},t={})=>(t.locale??D())===`en-US`?pc(e):mc(e)),gc=()=>`Clear filters`,_c=()=>`清除筛选`,vc=((e={},t={})=>(t.locale??D())===`en-US`?gc(e):_c(e)),yc=()=>`Total Amount`,bc=()=>`总金额`,xc=((e={},t={})=>(t.locale??D())===`en-US`?yc(e):bc(e)),Sc=()=>`Actual Amount`,Cc=()=>`实收金额`,wc=((e={},t={})=>(t.locale??D())===`en-US`?Sc(e):Cc(e)),Tc=()=>`Total Asset Balance (USD)`,Ec=()=>`总资产余额 (USD)`,Dc=((e={},t={})=>(t.locale??D())===`en-US`?Tc(e):Ec(e)),Oc=()=>`Current available asset pool`,kc=()=>`当前可用资金池`,Ac=((e={},t={})=>(t.locale??D())===`en-US`?Oc(e):kc(e)),jc=()=>`Total Volume`,Mc=()=>`总流水`,Nc=((e={},t={})=>(t.locale??D())===`en-US`?jc(e):Mc(e)),Pc=()=>`Cumulative successful payment amount`,Fc=()=>`累计成功收款金额`,Ic=((e={},t={})=>(t.locale??D())===`en-US`?Pc(e):Fc(e)),Lc=()=>`Total Orders`,Rc=()=>`总订单量`,zc=((e={},t={})=>(t.locale??D())===`en-US`?Lc(e):Rc(e)),Bc=()=>`Cumulative number of orders`,Vc=()=>`累计订单数量`,Hc=((e={},t={})=>(t.locale??D())===`en-US`?Bc(e):Vc(e)),Uc=()=>`Total Conversion Rate`,Wc=()=>`总成交率`,Gc=((e={},t={})=>(t.locale??D())===`en-US`?Uc(e):Wc(e)),Kc=()=>`Cumulative paid / total orders`,qc=()=>`累计已支付 / 总订单`,Jc=((e={},t={})=>(t.locale??D())===`en-US`?Kc(e):qc(e)),Yc=()=>`Order Count`,Xc=()=>`订单总数`,Zc=((e={},t={})=>(t.locale??D())===`en-US`?Yc(e):Xc(e)),Qc=()=>`Total orders in the selected period`,$c=()=>`当前筛选周期内订单总数`,el=((e={},t={})=>(t.locale??D())===`en-US`?Qc(e):$c(e)),tl=()=>`Successful Orders`,nl=()=>`成功订单`,rl=((e={},t={})=>(t.locale??D())===`en-US`?tl(e):nl(e)),il=()=>`Paid orders in the selected period`,al=()=>`当前筛选周期内已支付订单`,ol=((e={},t={})=>(t.locale??D())===`en-US`?il(e):al(e)),sl=()=>`Average Payment Time`,cl=()=>`平均支付耗时`,ll=((e={},t={})=>(t.locale??D())===`en-US`?sl(e):cl(e)),ul=()=>`Average time from order creation to payment success`,dl=()=>`订单创建到支付成功平均耗时`,fl=((e={},t={})=>(t.locale??D())===`en-US`?ul(e):dl(e)),pl=()=>`Expired Unpaid`,ml=()=>`超时未支付`,hl=((e={},t={})=>(t.locale??D())===`en-US`?pl(e):ml(e)),gl=()=>`Expired and unpaid orders`,_l=()=>`已过期且未支付订单`,vl=((e={},t={})=>(t.locale??D())===`en-US`?gl(e):_l(e)),yl=()=>`Last 7 Days Volume`,bl=()=>`最近7日流水`,xl=((e={},t={})=>(t.locale??D())===`en-US`?yl(e):bl(e)),Sl=()=>`Cumulative payments in the last 7 days`,Cl=()=>`近 7 天累计收款`,wl=((e={},t={})=>(t.locale??D())===`en-US`?Sl(e):Cl(e)),Tl=()=>`Active Address Count`,El=()=>`活跃地址数量`,Dl=((e={},t={})=>(t.locale??D())===`en-US`?Tl(e):El(e)),Ol=()=>`Addresses with transactions in the last 24 hours`,kl=()=>`近 24 小时有流水地址`,Al=((e={},t={})=>(t.locale??D())===`en-US`?Ol(e):kl(e)),jl=()=>`Online Chain Count`,Ml=()=>`在线链数量`,Nl=((e={},t={})=>(t.locale??D())===`en-US`?jl(e):Ml(e)),Pl=()=>`Currently available payment networks`,Fl=()=>`当前可用收款网络`,Il=((e={},t={})=>(t.locale??D())===`en-US`?Pl(e):Fl(e)),Ll=()=>`Order Success Rate`,Rl=()=>`订单成功率`,zl=((e={},t={})=>(t.locale??D())===`en-US`?Ll(e):Rl(e)),Bl=()=>`Conversion rate in the selected period`,Vl=()=>`当前筛选周期内成交率`,Hl=((e={},t={})=>(t.locale??D())===`en-US`?Bl(e):Vl(e)),Ul=()=>`Total Amount`,Wl=()=>`总金额`,Gl=((e={},t={})=>(t.locale??D())===`en-US`?Ul(e):Wl(e)),Kl=()=>`Actual Amount`,ql=()=>`实收金额`,Jl=((e={},t={})=>(t.locale??D())===`en-US`?Kl(e):ql(e)),Yl=()=>`Order Count`,Xl=()=>`订单数`,Zl=((e={},t={})=>(t.locale??D())===`en-US`?Yl(e):Xl(e)),Ql=()=>`Successful Orders`,$l=()=>`成功订单`,eu=((e={},t={})=>(t.locale??D())===`en-US`?Ql(e):$l(e)),tu=()=>`Pending`,nu=()=>`待支付`,ru=((e={},t={})=>(t.locale??D())===`en-US`?tu(e):nu(e)),iu=()=>`Paid`,au=()=>`已支付`,ou=((e={},t={})=>(t.locale??D())===`en-US`?iu(e):au(e)),su=()=>`Expired`,cu=()=>`已过期`,lu=((e={},t={})=>(t.locale??D())===`en-US`?su(e):cu(e)),uu=()=>`Today`,du=()=>`今日`,fu=((e={},t={})=>(t.locale??D())===`en-US`?uu(e):du(e)),pu=()=>`7 days`,mu=()=>`7天`,hu=((e={},t={})=>(t.locale??D())===`en-US`?pu(e):mu(e)),gu=()=>`30 days`,_u=()=>`30天`,vu=((e={},t={})=>(t.locale??D())===`en-US`?gu(e):_u(e)),yu=()=>`Custom`,bu=()=>`自定义`,xu=((e={},t={})=>(t.locale??D())===`en-US`?yu(e):bu(e)),Su=()=>`Close Order`,Cu=()=>`关闭订单`,wu=((e={},t={})=>(t.locale??D())===`en-US`?Su(e):Cu(e)),Tu=()=>`Resend Callback`,Eu=()=>`回调重发`,Du=((e={},t={})=>(t.locale??D())===`en-US`?Tu(e):Eu(e)),Ou=()=>`Please enter the block transaction ID`,ku=()=>`请输入区块交易 ID`,Au=((e={},t={})=>(t.locale??D())===`en-US`?Ou(e):ku(e)),ju=()=>`Order marked as paid`,Mu=()=>`订单已标记为已支付`,Nu=((e={},t={})=>(t.locale??D())===`en-US`?ju(e):Mu(e)),Pu=()=>`Order export failed`,Fu=()=>`订单导出失败`,Iu=((e={},t={})=>(t.locale??D())===`en-US`?Pu(e):Fu(e)),Lu=()=>`Order export succeeded`,Ru=()=>`订单导出成功`,zu=((e={},t={})=>(t.locale??D())===`en-US`?Lu(e):Ru(e)),Bu=()=>`Exporting...`,Vu=()=>`导出中...`,Hu=((e={},t={})=>(t.locale??D())===`en-US`?Bu(e):Vu(e)),Uu=()=>`Export Orders`,Wu=()=>`导出订单`,Gu=((e={},t={})=>(t.locale??D())===`en-US`?Uu(e):Wu(e)),Ku=()=>`Search orders, filter by status, and perform补单/close/resend callback actions.`,qu=()=>`搜索订单、筛选状态与执行补单/关闭/回调操作。`,Ju=((e={},t={})=>(t.locale??D())===`en-US`?Ku(e):qu(e)),Yu=()=>`Order Management`,Xu=()=>`订单管理`,Zu=((e={},t={})=>(t.locale??D())===`en-US`?Yu(e):Xu(e)),Qu=()=>`Details`,$u=()=>`详情`,ed=((e={},t={})=>(t.locale??D())===`en-US`?Qu(e):$u(e)),td=()=>`Manual Mark Paid`,nd=()=>`补单`,rd=((e={},t={})=>(t.locale??D())===`en-US`?td(e):nd(e)),id=()=>`Confirm`,ad=()=>`确认`,od=((e={},t={})=>(t.locale??D())===`en-US`?id(e):ad(e)),sd=e=>`You are about to perform the “${e?.action}” action on order ${e?.id}.`,cd=e=>`即将对订单 ${e?.id} 执行“${e?.action}”操作。`,ld=((e,t={})=>(t.locale??D())===`en-US`?sd(e):cd(e)),ud=e=>`Confirm ${e?.action}`,dd=e=>`${e?.action}确认`,fd=((e,t={})=>(t.locale??D())===`en-US`?ud(e):dd(e)),pd=()=>`Mark as Paid`,md=()=>`标记已支付`,hd=((e={},t={})=>(t.locale??D())===`en-US`?pd(e):md(e)),gd=e=>`Fill in the on-chain transaction ID for order ${e?.id}.`,_d=e=>`为订单 ${e?.id} 填写链上交易 ID。`,vd=((e,t={})=>(t.locale??D())===`en-US`?gd(e):_d(e)),yd=()=>`Block Transaction ID`,bd=()=>`区块交易 ID`,xd=((e={},t={})=>(t.locale??D())===`en-US`?yd(e):bd(e)),Sd=()=>`Submitting...`,Cd=()=>`提交中...`,wd=((e={},t={})=>(t.locale??D())===`en-US`?Sd(e):Cd(e)),Td=()=>`Confirm Manual Mark Paid`,Ed=()=>`确认补单`,Dd=((e={},t={})=>(t.locale??D())===`en-US`?Td(e):Ed(e)),Od=()=>`Status`,kd=()=>`状态`,Ad=((e={},t={})=>(t.locale??D())===`en-US`?Od(e):kd(e)),jd=()=>`Chain`,Md=()=>`链`,Nd=((e={},t={})=>(t.locale??D())===`en-US`?jd(e):Md(e)),Pd=()=>`Search order ID / merchant order ID...`,Fd=()=>`搜索订单号 / 商户订单号...`,Id=((e={},t={})=>(t.locale??D())===`en-US`?Pd(e):Fd(e)),Ld=()=>`No order data`,Rd=()=>`暂无订单数据`,zd=((e={},t={})=>(t.locale??D())===`en-US`?Ld(e):Rd(e)),Bd=()=>`Status`,Vd=()=>`状态`,Hd=((e={},t={})=>(t.locale??D())===`en-US`?Bd(e):Vd(e)),Ud=()=>`Merchant Order ID`,Wd=()=>`商户订单号`,Gd=((e={},t={})=>(t.locale??D())===`en-US`?Ud(e):Wd(e)),Kd=()=>`Order Name`,qd=()=>`订单名称`,Jd=((e={},t={})=>(t.locale??D())===`en-US`?Kd(e):qd(e)),Yd=()=>`Fiat Amount`,Xd=()=>`法币金额`,Zd=((e={},t={})=>(t.locale??D())===`en-US`?Yd(e):Xd(e)),Qd=()=>`Token Amount`,$d=()=>`代币金额`,ef=((e={},t={})=>(t.locale??D())===`en-US`?Qd(e):$d(e)),tf=()=>`Chain`,nf=()=>`链`,rf=((e={},t={})=>(t.locale??D())===`en-US`?tf(e):nf(e)),af=()=>`Address`,of=()=>`地址`,sf=((e={},t={})=>(t.locale??D())===`en-US`?af(e):of(e)),cf=()=>`Created At`,lf=()=>`创建时间`,uf=((e={},t={})=>(t.locale??D())===`en-US`?cf(e):lf(e)),df=()=>`Updated At`,ff=()=>`更新时间`,pf=((e={},t={})=>(t.locale??D())===`en-US`?df(e):ff(e)),mf=()=>`On-chain Transaction ID`,hf=()=>`链上交易 ID`,gf=((e={},t={})=>(t.locale??D())===`en-US`?mf(e):hf(e)),_f=()=>`Payment Type`,vf=()=>`支付类型`,yf=((e={},t={})=>(t.locale??D())===`en-US`?_f(e):vf(e)),bf=()=>`Assigned Address`,xf=()=>`已分配地址`,Sf=((e={},t={})=>(t.locale??D())===`en-US`?bf(e):xf(e)),Cf=()=>`Callback Status`,wf=()=>`回调状态`,Tf=((e={},t={})=>(t.locale??D())===`en-US`?Cf(e):wf(e)),Ef=()=>`Callback Count`,Df=()=>`回调次数`,Of=((e={},t={})=>(t.locale??D())===`en-US`?Ef(e):Df(e)),kf=()=>`Notify URL`,Af=()=>`通知地址`,jf=((e={},t={})=>(t.locale??D())===`en-US`?kf(e):Af(e)),Mf=()=>`Redirect URL`,Nf=()=>`跳转地址`,Pf=((e={},t={})=>(t.locale??D())===`en-US`?Mf(e):Nf(e)),Ff=()=>`Actions`,If=()=>`操作`,Lf=((e={},t={})=>(t.locale??D())===`en-US`?Ff(e):If(e)),Rf=()=>`Yes`,zf=()=>`是`,Bf=((e={},t={})=>(t.locale??D())===`en-US`?Rf(e):zf(e)),Vf=()=>`No`,Hf=()=>`否`,Uf=((e={},t={})=>(t.locale??D())===`en-US`?Vf(e):Hf(e)),Wf=()=>`Succeeded`,Gf=()=>`已成功`,Kf=((e={},t={})=>(t.locale??D())===`en-US`?Wf(e):Gf(e)),qf=()=>`Not Called Back / Failed`,Jf=()=>`未回调/失败`,Yf=((e={},t={})=>(t.locale??D())===`en-US`?qf(e):Jf(e)),Xf=()=>`View Details`,Zf=()=>`查看详情`,Qf=((e={},t={})=>(t.locale??D())===`en-US`?Xf(e):Zf(e)),$f=()=>`Manual Mark Paid`,ep=()=>`手动补单`,tp=((e={},t={})=>(t.locale??D())===`en-US`?$f(e):ep(e)),np=()=>`Open menu`,rp=()=>`打开菜单`,ip=((e={},t={})=>(t.locale??D())===`en-US`?np(e):rp(e)),ap=()=>`Merchant Order ID`,op=()=>`商户订单号`,sp=((e={},t={})=>(t.locale??D())===`en-US`?ap(e):op(e)),cp=()=>`Order Name`,lp=()=>`订单名称`,up=((e={},t={})=>(t.locale??D())===`en-US`?cp(e):lp(e)),dp=()=>`Amount`,fp=()=>`金额`,pp=((e={},t={})=>(t.locale??D())===`en-US`?dp(e):fp(e)),mp=()=>`Actual Paid`,hp=()=>`实付`,gp=((e={},t={})=>(t.locale??D())===`en-US`?mp(e):hp(e)),_p=()=>`Chain`,vp=()=>`链`,yp=((e={},t={})=>(t.locale??D())===`en-US`?_p(e):vp(e)),bp=()=>`Receive Address`,xp=()=>`收款地址`,Sp=((e={},t={})=>(t.locale??D())===`en-US`?bp(e):xp(e)),Cp=()=>`Callback URL`,wp=()=>`回调地址`,Tp=((e={},t={})=>(t.locale??D())===`en-US`?Cp(e):wp(e)),Ep=()=>`Redirect URL`,Dp=()=>`跳转地址`,Op=((e={},t={})=>(t.locale??D())===`en-US`?Ep(e):Dp(e)),kp=()=>`Block Transaction ID`,Ap=()=>`区块交易 ID`,jp=((e={},t={})=>(t.locale??D())===`en-US`?kp(e):Ap(e)),Mp=()=>`Parent Order`,Np=()=>`父订单`,Pp=((e={},t={})=>(t.locale??D())===`en-US`?Mp(e):Np(e)),Fp=()=>`Created At`,Ip=()=>`创建时间`,Lp=((e={},t={})=>(t.locale??D())===`en-US`?Fp(e):Ip(e)),Rp=()=>`Updated At`,zp=()=>`更新时间`,Bp=((e={},t={})=>(t.locale??D())===`en-US`?Rp(e):zp(e)),Vp=()=>`Order Details`,Hp=()=>`订单详情`,Up=((e={},t={})=>(t.locale??D())===`en-US`?Vp(e):Hp(e)),Wp=()=>`View the full API response for the current order.`,Gp=()=>`查看当前订单的完整接口返回信息。`,Kp=((e={},t={})=>(t.locale??D())===`en-US`?Wp(e):Gp(e)),qp=()=>`Loading...`,Jp=()=>`加载中...`,Yp=((e={},t={})=>(t.locale??D())===`en-US`?qp(e):Jp(e)),Xp=()=>`View the current status of chains and tokens available for payments.`,Zp=()=>`查看当前可用于收款的链与代币状态。`,Qp=((e={},t={})=>(t.locale??D())===`en-US`?Xp(e):Zp(e)),$p=()=>`Payment Assets`,em=()=>`收款资产`,tm=((e={},t={})=>(t.locale??D())===`en-US`?$p(e):em(e)),nm=()=>`Chain`,rm=()=>`链`,im=((e={},t={})=>(t.locale??D())===`en-US`?nm(e):rm(e)),am=()=>`Search chains or tokens...`,om=()=>`搜索链或代币...`,sm=((e={},t={})=>(t.locale??D())===`en-US`?am(e):om(e)),cm=()=>`No payment asset data`,lm=()=>`暂无收款资产数据`,um=((e={},t={})=>(t.locale??D())===`en-US`?cm(e):lm(e)),dm=()=>`Chain`,fm=()=>`链`,pm=((e={},t={})=>(t.locale??D())===`en-US`?dm(e):fm(e)),mm=()=>`Supported Tokens`,hm=()=>`支持代币`,gm=((e={},t={})=>(t.locale??D())===`en-US`?mm(e):hm(e)),_m=()=>`Wallet deleted successfully`,vm=()=>`钱包删除成功`,ym=((e={},t={})=>(t.locale??D())===`en-US`?_m(e):vm(e)),bm=()=>`Status updated`,xm=()=>`状态已更新`,Sm=((e={},t={})=>(t.locale??D())===`en-US`?bm(e):xm(e)),Cm=()=>`Please configure chains and tokens in chain management first`,wm=()=>`请先在链管理中配置链与代币`,Tm=((e={},t={})=>(t.locale??D())===`en-US`?Cm(e):wm(e)),Em=()=>`Please enter at least one wallet address`,Dm=()=>`请输入至少一个钱包地址`,Om=((e={},t={})=>(t.locale??D())===`en-US`?Em(e):Dm(e)),km=e=>`Batch import completed, succeeded ${e?.success}/${e?.total}`,Am=e=>`批量导入完成,成功 ${e?.success}/${e?.total}`,jm=((e,t={})=>(t.locale??D())===`en-US`?km(e):Am(e)),Mm=()=>`Batch Import`,Nm=()=>`批量导入`,Pm=((e={},t={})=>(t.locale??D())===`en-US`?Mm(e):Nm(e)),Fm=()=>`Add Wallet`,Im=()=>`新增钱包`,Lm=((e={},t={})=>(t.locale??D())===`en-US`?Fm(e):Im(e)),Rm=()=>`Manage payment addresses, balance status, and remarks.`,zm=()=>`管理收款地址、余额状态与备注。`,Bm=((e={},t={})=>(t.locale??D())===`en-US`?Rm(e):zm(e)),Vm=()=>`Address Management`,Hm=()=>`地址管理`,Um=((e={},t={})=>(t.locale??D())===`en-US`?Vm(e):Hm(e)),Wm=()=>`Delete`,Gm=()=>`删除`,Km=((e={},t={})=>(t.locale??D())===`en-US`?Wm(e):Gm(e)),qm=()=>`Confirm`,Jm=()=>`确认`,Ym=((e={},t={})=>(t.locale??D())===`en-US`?qm(e):Jm(e)),Xm=e=>`Perform “${e?.action}” on wallet ${e?.address}.`,Zm=e=>`将对钱包 ${e?.address} 执行“${e?.action}”操作。`,Qm=((e,t={})=>(t.locale??D())===`en-US`?Xm(e):Zm(e)),$m=()=>`Delete Wallet`,eh=()=>`删除钱包`,th=((e={},t={})=>(t.locale??D())===`en-US`?$m(e):eh(e)),nh=()=>`Confirm Wallet Action`,rh=()=>`钱包操作确认`,ih=((e={},t={})=>(t.locale??D())===`en-US`?nh(e):rh(e)),ah=()=>`Batch Import Wallets`,oh=()=>`批量导入钱包`,sh=((e={},t={})=>(t.locale??D())===`en-US`?ah(e):oh(e)),ch=()=>`One wallet address per line, imported as watch-only wallets.`,lh=()=>`每行一个钱包地址,导入为观察钱包。`,uh=((e={},t={})=>(t.locale??D())===`en-US`?ch(e):lh(e)),dh=()=>`Network`,fh=()=>`网络`,ph=((e={},t={})=>(t.locale??D())===`en-US`?dh(e):fh(e)),mh=()=>`Chain`,hh=()=>`链`,gh=((e={},t={})=>(t.locale??D())===`en-US`?mh(e):hh(e)),_h=()=>`Select chain`,vh=()=>`选择链`,yh=((e={},t={})=>(t.locale??D())===`en-US`?_h(e):vh(e)),bh=()=>`Unnamed chain`,xh=()=>`未命名链`,Sh=((e={},t={})=>(t.locale??D())===`en-US`?bh(e):xh(e)),Ch=()=>`Wallet Address`,wh=()=>`钱包地址`,Th=((e={},t={})=>(t.locale??D())===`en-US`?Ch(e):wh(e)),Eh=()=>`Cancel`,Dh=()=>`取消`,Oh=((e={},t={})=>(t.locale??D())===`en-US`?Eh(e):Dh(e)),kh=()=>`Importing...`,Ah=()=>`导入中...`,jh=((e={},t={})=>(t.locale??D())===`en-US`?kh(e):Ah(e)),Mh=()=>`Start Import`,Nh=()=>`开始导入`,Ph=((e={},t={})=>(t.locale??D())===`en-US`?Mh(e):Nh(e)),Fh=()=>`Search addresses or remarks...`,Ih=()=>`搜索地址或备注...`,Lh=((e={},t={})=>(t.locale??D())===`en-US`?Fh(e):Ih(e)),Rh=()=>`No address data`,zh=()=>`暂无地址数据`,Bh=((e={},t={})=>(t.locale??D())===`en-US`?Rh(e):zh(e)),Vh=()=>`Status`,Hh=()=>`状态`,Uh=((e={},t={})=>(t.locale??D())===`en-US`?Vh(e):Hh(e)),Wh=()=>`Enabled`,Gh=()=>`启用`,Kh=((e={},t={})=>(t.locale??D())===`en-US`?Wh(e):Gh(e)),qh=()=>`Address`,Jh=()=>`地址`,Yh=((e={},t={})=>(t.locale??D())===`en-US`?qh(e):Jh(e)),Xh=()=>`Order Count`,Zh=()=>`订单数`,Qh=((e={},t={})=>(t.locale??D())===`en-US`?Xh(e):Zh(e)),$h=()=>`Source`,eg=()=>`来源`,tg=((e={},t={})=>(t.locale??D())===`en-US`?$h(e):eg(e)),ng=()=>`Remark`,rg=()=>`备注`,ig=((e={},t={})=>(t.locale??D())===`en-US`?ng(e):rg(e)),ag=()=>`Created At`,og=()=>`创建时间`,sg=((e={},t={})=>(t.locale??D())===`en-US`?ag(e):og(e)),cg=()=>`Updated At`,lg=()=>`更新时间`,ug=((e={},t={})=>(t.locale??D())===`en-US`?cg(e):lg(e)),dg=()=>`Actions`,fg=()=>`操作`,pg=((e={},t={})=>(t.locale??D())===`en-US`?dg(e):fg(e)),mg=()=>`Edit Remark`,hg=()=>`编辑备注`,gg=((e={},t={})=>(t.locale??D())===`en-US`?mg(e):hg(e)),_g=()=>`Loading...`,vg=()=>`加载中...`,yg=((e={},t={})=>(t.locale??D())===`en-US`?_g(e):vg(e)),bg=()=>`Please configure supported tokens in chain management first`,xg=()=>`请先在链管理中配置支持代币`,$=((e={},t={})=>(t.locale??D())===`en-US`?bg(e):xg(e)),Sg=()=>`Edit Wallet`,Cg=()=>`编辑钱包`,wg=((e={},t={})=>(t.locale??D())===`en-US`?Sg(e):Cg(e)),Tg=()=>`Add Wallet`,Eg=()=>`新增钱包`,Dg=((e={},t={})=>(t.locale??D())===`en-US`?Tg(e):Eg(e)),Og=()=>`Modify wallet remark information.`,kg=()=>`修改钱包备注信息。`,Ag=((e={},t={})=>(t.locale??D())===`en-US`?Og(e):kg(e)),jg=()=>`Add a new payment wallet.`,Mg=()=>`添加新的收款钱包。`,Ng=((e={},t={})=>(t.locale??D())===`en-US`?jg(e):Mg(e)),Pg=()=>`Please enter wallet address`,Fg=()=>`请输入钱包地址`,Ig=((e={},t={})=>(t.locale??D())===`en-US`?Pg(e):Fg(e)),Lg=()=>`Optional`,Rg=()=>`选填`,zg=((e={},t={})=>(t.locale??D())===`en-US`?Lg(e):Rg(e)),Bg=()=>`Saving...`,Vg=()=>`保存中...`,Hg=((e={},t={})=>(t.locale??D())===`en-US`?Bg(e):Vg(e)),Ug=()=>`Save`,Wg=()=>`保存`,Gg=((e={},t={})=>(t.locale??D())===`en-US`?Ug(e):Wg(e)),Kg=()=>`Wallet remark updated successfully`,qg=()=>`钱包备注更新成功`,Jg=((e={},t={})=>(t.locale??D())===`en-US`?Kg(e):qg(e)),Yg=()=>`Wallet added successfully`,Xg=()=>`钱包添加成功`,Zg=((e={},t={})=>(t.locale??D())===`en-US`?Yg(e):Xg(e)),Qg=()=>`Please enter a valid address`,$g=()=>`请输入有效地址`,e_=((e={},t={})=>(t.locale??D())===`en-US`?Qg(e):$g(e)),t_=()=>`Please select a chain`,n_=()=>`请选择链`,r_=((e={},t={})=>(t.locale??D())===`en-US`?t_(e):n_(e)),i_=()=>`Chains & Tokens`,a_=()=>`链与代币`,o_=((e={},t={})=>(t.locale??D())===`en-US`?i_(e):a_(e)),s_=e=>`${e?.count} chains`,c_=e=>`${e?.count} 条链`,l_=((e,t={})=>(t.locale??D())===`en-US`?s_(e):c_(e)),u_=()=>`Search chain names...`,d_=()=>`搜索链名称...`,f_=((e={},t={})=>(t.locale??D())===`en-US`?u_(e):d_(e)),p_=()=>`Overview`,m_=()=>`总览`,h_=((e={},t={})=>(t.locale??D())===`en-US`?p_(e):m_(e)),g_=e=>`Total chains: ${e?.chains} | Total tokens: ${e?.tokens}`,__=e=>`链总数: ${e?.chains} | 代币总数: ${e?.tokens}`,v_=((e,t={})=>(t.locale??D())===`en-US`?g_(e):__(e)),y_=()=>`Supported payment network`,b_=()=>`支持收款网络`,x_=((e={},t={})=>(t.locale??D())===`en-US`?y_(e):b_(e)),S_=()=>`No chain data`,C_=()=>`暂无链数据`,w_=((e={},t={})=>(t.locale??D())===`en-US`?S_(e):C_(e)),T_=()=>`Add Token`,E_=()=>`添加代币`,D_=((e={},t={})=>(t.locale??D())===`en-US`?T_(e):E_(e)),O_=()=>`Manage supported blockchain networks and tokens, including status and basic parameters.`,k_=()=>`管理支持的区块链网络和代币,维护启用状态与基础参数。`,A_=((e={},t={})=>(t.locale??D())===`en-US`?O_(e):k_(e)),j_=e=>`Chain ${e?.status}`,M_=e=>`链已${e?.status}`,N_=((e,t={})=>(t.locale??D())===`en-US`?j_(e):M_(e)),P_=()=>`enabled`,F_=()=>`启用`,I_=((e={},t={})=>(t.locale??D())===`en-US`?P_(e):F_(e)),L_=()=>`disabled`,R_=()=>`禁用`,z_=((e={},t={})=>(t.locale??D())===`en-US`?L_(e):R_(e)),B_=()=>`Token status updated`,V_=()=>`代币状态已更新`,H_=((e={},t={})=>(t.locale??D())===`en-US`?B_(e):V_(e)),U_=()=>`Token updated successfully`,W_=()=>`代币更新成功`,G_=((e={},t={})=>(t.locale??D())===`en-US`?U_(e):W_(e)),K_=()=>`Token created successfully`,q_=()=>`代币创建成功`,J_=((e={},t={})=>(t.locale??D())===`en-US`?K_(e):q_(e)),Y_=()=>`Search token symbols...`,X_=()=>`搜索代币符号...`,Z_=((e={},t={})=>(t.locale??D())===`en-US`?Y_(e):X_(e)),Q_=()=>`No chain token data`,$_=()=>`暂无链代币数据`,ev=((e={},t={})=>(t.locale??D())===`en-US`?Q_(e):$_(e)),tv=()=>`Token`,nv=()=>`代币`,rv=((e={},t={})=>(t.locale??D())===`en-US`?tv(e):nv(e)),iv=()=>`Edit`,av=()=>`编辑`,ov=((e={},t={})=>(t.locale??D())===`en-US`?iv(e):av(e)),sv=()=>`Delete`,cv=()=>`删除`,lv=((e={},t={})=>(t.locale??D())===`en-US`?sv(e):cv(e)),uv=()=>`Edit Chain Token`,dv=()=>`编辑链代币`,fv=((e={},t={})=>(t.locale??D())===`en-US`?uv(e):dv(e)),pv=()=>`Add Chain Token`,mv=()=>`新增链代币`,hv=((e={},t={})=>(t.locale??D())===`en-US`?pv(e):mv(e)),gv=()=>`Modify chain token configuration.`,_v=()=>`修改链代币配置。`,vv=((e={},t={})=>(t.locale??D())===`en-US`?gv(e):_v(e)),yv=()=>`Add a new chain token configuration.`,bv=()=>`添加新的链代币配置。`,xv=((e={},t={})=>(t.locale??D())===`en-US`?yv(e):bv(e)),Sv=()=>`Token Symbol`,Cv=()=>`代币符号`,wv=((e={},t={})=>(t.locale??D())===`en-US`?Sv(e):Cv(e)),Tv=()=>`Configure available tokens for this chain and maintain contract address, decimals, minimum amount, and enabled status.`,Ev=()=>`为当前链配置可用代币,并维护合约地址、精度、最小金额与启用状态。`,Dv=((e={},t={})=>(t.locale??D())===`en-US`?Tv(e):Ev(e)),Ov=()=>`Contract Address`,kv=()=>`合约地址`,Av=((e={},t={})=>(t.locale??D())===`en-US`?Ov(e):kv(e)),jv=()=>`Decimals`,Mv=()=>`精度`,Nv=((e={},t={})=>(t.locale??D())===`en-US`?jv(e):Mv(e)),Pv=()=>`Minimum Amount`,Fv=()=>`最小金额`,Iv=((e={},t={})=>(t.locale??D())===`en-US`?Pv(e):Fv(e)),Lv=()=>`Create`,Rv=()=>`创建`,zv=((e={},t={})=>(t.locale??D())===`en-US`?Lv(e):Rv(e)),Bv=()=>`Save Changes`,Vv=()=>`保存修改`,Hv=((e={},t={})=>(t.locale??D())===`en-US`?Bv(e):Vv(e)),Uv=()=>`Please select a chain`,Wv=()=>`请选择链`,Gv=((e={},t={})=>(t.locale??D())===`en-US`?Uv(e):Wv(e)),Kv=()=>`Please enter token symbol`,qv=()=>`请输入代币符号`,Jv=((e={},t={})=>(t.locale??D())===`en-US`?Kv(e):qv(e)),Yv=()=>`Please enter valid decimals`,Xv=()=>`请输入有效精度`,Zv=((e={},t={})=>(t.locale??D())===`en-US`?Yv(e):Xv(e)),Qv=()=>`Please enter a valid minimum amount`,$v=()=>`请输入有效最小金额`,ey=((e={},t={})=>(t.locale??D())===`en-US`?Qv(e):$v(e)),ty=()=>`RPC Nodes`,ny=()=>`RPC 节点`,ry=((e={},t={})=>(t.locale??D())===`en-US`?ty(e):ny(e)),iy=e=>`${e?.count} chains`,ay=e=>`${e?.count} 条链`,oy=((e,t={})=>(t.locale??D())===`en-US`?iy(e):ay(e)),sy=()=>`Search chain names or network...`,cy=()=>`搜索链名或 network...`,ly=((e={},t={})=>(t.locale??D())===`en-US`?sy(e):cy(e)),uy=()=>`Overview`,dy=()=>`总览`,fy=((e={},t={})=>(t.locale??D())===`en-US`?uy(e):dy(e)),py=e=>`Total chains: ${e?.chains} | Total nodes: ${e?.nodes}`,my=e=>`链总数: ${e?.chains} | 节点总数: ${e?.nodes}`,hy=((e,t={})=>(t.locale??D())===`en-US`?py(e):my(e)),gy=()=>`Unnamed chain`,_y=()=>`未命名链`,vy=((e={},t={})=>(t.locale??D())===`en-US`?gy(e):_y(e)),yy=e=>`Nodes: ${e?.count}`,by=e=>`节点数: ${e?.count}`,xy=((e,t={})=>(t.locale??D())===`en-US`?yy(e):by(e)),Sy=()=>`No chain data`,Cy=()=>`暂无链数据`,wy=((e={},t={})=>(t.locale??D())===`en-US`?Sy(e):Cy(e)),Ty=()=>`Add Node`,Ey=()=>`新增节点`,Dy=((e={},t={})=>(t.locale??D())===`en-US`?Ty(e):Ey(e)),Oy=()=>`Manage RPC nodes, weights, and health status for each chain.`,ky=()=>`管理各链 RPC 节点、权重与健康状态。`,Ay=((e={},t={})=>(t.locale??D())===`en-US`?Oy(e):ky(e)),jy=e=>`Health check completed, status: ${e?.status}${e?.latency}`,My=e=>`健康检查完成,状态: ${e?.status}${e?.latency}`,Ny=((e,t={})=>(t.locale??D())===`en-US`?jy(e):My(e)),Py=e=>`, latency ${e?.latency}ms`,Fy=e=>`,延迟 ${e?.latency}ms`,Iy=((e,t={})=>(t.locale??D())===`en-US`?Py(e):Fy(e)),Ly=()=>`Confirm`,Ry=()=>`确认`,zy=((e={},t={})=>(t.locale??D())===`en-US`?Ly(e):Ry(e)),By=e=>`Perform “${e?.action}” on RPC node ${e?.url}.`,Vy=e=>`将对 RPC 节点 ${e?.url} 执行“${e?.action}”操作。`,Hy=((e,t={})=>(t.locale??D())===`en-US`?By(e):Vy(e)),Uy=()=>`Confirm RPC Node Action`,Wy=()=>`RPC 节点操作确认`,Gy=((e={},t={})=>(t.locale??D())===`en-US`?Uy(e):Wy(e)),Ky=()=>`Health Status`,qy=()=>`健康状态`,Jy=((e={},t={})=>(t.locale??D())===`en-US`?Ky(e):qy(e)),Yy=()=>`OK`,Xy=()=>`正常`,Zy=((e={},t={})=>(t.locale??D())===`en-US`?Yy(e):Xy(e)),Qy=()=>`Down`,$y=()=>`异常`,eb=((e={},t={})=>(t.locale??D())===`en-US`?Qy(e):$y(e)),tb=()=>`Unknown`,nb=()=>`未知`,rb=((e={},t={})=>(t.locale??D())===`en-US`?tb(e):nb(e)),ib=()=>`Chain Network`,ab=()=>`链网络`,ob=((e={},t={})=>(t.locale??D())===`en-US`?ib(e):ab(e)),sb=()=>`Connection Type`,cb=()=>`连接类型`,lb=((e={},t={})=>(t.locale??D())===`en-US`?sb(e):cb(e)),ub=()=>`Node URL`,db=()=>`节点 URL`,fb=((e={},t={})=>(t.locale??D())===`en-US`?ub(e):db(e)),pb=()=>`Weight`,mb=()=>`权重`,hb=((e={},t={})=>(t.locale??D())===`en-US`?pb(e):mb(e)),gb=()=>`Latest Latency`,_b=()=>`最近延迟`,vb=((e={},t={})=>(t.locale??D())===`en-US`?gb(e):_b(e)),yb=()=>`Last Checked At`,bb=()=>`最近检查时间`,xb=((e={},t={})=>(t.locale??D())===`en-US`?yb(e):bb(e)),Sb=()=>`Health Check`,Cb=()=>`健康检查`,wb=((e={},t={})=>(t.locale??D())===`en-US`?Sb(e):Cb(e)),Tb=()=>`Search chain network or node URL...`,Eb=()=>`搜索链网络或节点 URL...`,Db=((e={},t={})=>(t.locale??D())===`en-US`?Tb(e):Eb(e)),Ob=()=>`No RPC node data`,kb=()=>`暂无 RPC 节点数据`,Ab=((e={},t={})=>(t.locale??D())===`en-US`?Ob(e):kb(e)),jb=()=>`Edit`,Mb=()=>`编辑`,Nb=((e={},t={})=>(t.locale??D())===`en-US`?jb(e):Mb(e)),Pb=()=>`Edit RPC Node`,Fb=()=>`编辑 RPC 节点`,Ib=((e={},t={})=>(t.locale??D())===`en-US`?Pb(e):Fb(e)),Lb=()=>`Add RPC Node`,Rb=()=>`新增 RPC 节点`,zb=((e={},t={})=>(t.locale??D())===`en-US`?Lb(e):Rb(e)),Bb=()=>`Modify RPC node configuration.`,Vb=()=>`修改 RPC 节点配置。`,Hb=((e={},t={})=>(t.locale??D())===`en-US`?Bb(e):Vb(e)),Ub=()=>`Configure a new RPC node.`,Wb=()=>`配置新的 RPC 节点信息。`,Gb=((e={},t={})=>(t.locale??D())===`en-US`?Ub(e):Wb(e)),Kb=()=>`Select type`,qb=()=>`选择类型`,Jb=((e={},t={})=>(t.locale??D())===`en-US`?Kb(e):qb(e)),Yb=()=>`Optional`,Xb=()=>`可选`,Zb=((e={},t={})=>(t.locale??D())===`en-US`?Yb(e):Xb(e)),Qb=()=>`Enable immediately after creation`,$b=()=>`创建后立即启用`,ex=((e={},t={})=>(t.locale??D())===`en-US`?Qb(e):$b(e)),tx=()=>`Disabled nodes will not participate in scheduling.`,nx=()=>`关闭后该节点不会参与调度。`,rx=((e={},t={})=>(t.locale??D())===`en-US`?tx(e):nx(e)),ix=()=>`RPC node updated successfully`,ax=()=>`RPC 节点更新成功`,ox=((e={},t={})=>(t.locale??D())===`en-US`?ix(e):ax(e)),sx=()=>`RPC node created successfully`,cx=()=>`RPC 节点创建成功`,lx=((e={},t={})=>(t.locale??D())===`en-US`?sx(e):cx(e)),ux=()=>`Please enter chain network`,dx=()=>`请输入链网络`,fx=((e={},t={})=>(t.locale??D())===`en-US`?ux(e):dx(e)),px=()=>`Please enter a valid URL`,mx=()=>`请输入合法 URL`,hx=((e={},t={})=>(t.locale??D())===`en-US`?px(e):mx(e)),gx=()=>`Weight must be at least 1`,_x=()=>`权重至少为 1`,vx=((e={},t={})=>(t.locale??D())===`en-US`?gx(e):_x(e)),yx=()=>`All`,bx=()=>`全部`,xx=((e={},t={})=>(t.locale??D())===`en-US`?yx(e):bx(e)),Sx=()=>`Enabled`,Cx=()=>`已启用`,wx=((e={},t={})=>(t.locale??D())===`en-US`?Sx(e):Cx(e)),Tx=()=>`Disabled`,Ex=()=>`已禁用`,Dx=((e={},t={})=>(t.locale??D())===`en-US`?Tx(e):Ex(e)),Ox=()=>`Deleted successfully`,kx=()=>`删除成功`,Ax=((e={},t={})=>(t.locale??D())===`en-US`?Ox(e):kx(e)),jx=()=>`Failed to fetch secret key`,Mx=()=>`获取密钥失败`,Nx=((e={},t={})=>(t.locale??D())===`en-US`?jx(e):Mx(e)),Px=()=>`Missing API Key ID`,Fx=()=>`缺少 API Key ID`,Ix=((e={},t={})=>(t.locale??D())===`en-US`?Px(e):Fx(e)),Lx=()=>`No secret key available to copy`,Rx=()=>`暂无密钥可复制`,zx=((e={},t={})=>(t.locale??D())===`en-US`?Lx(e):Rx(e)),Bx=()=>`Secret key copied`,Vx=()=>`密钥已复制`,Hx=((e={},t={})=>(t.locale??D())===`en-US`?Bx(e):Vx(e)),Ux=()=>`Secret key rotated`,Wx=()=>`密钥已轮换`,Gx=((e={},t={})=>(t.locale??D())===`en-US`?Ux(e):Wx(e)),Kx=()=>`Create Key`,qx=()=>`创建 Key`,Jx=((e={},t={})=>(t.locale??D())===`en-US`?Kx(e):qx(e)),Yx=()=>`Manage payment keys, access restrictions, and callback URL settings.`,Xx=()=>`管理支付 Key、访问限制与通知地址配置。`,Zx=((e={},t={})=>(t.locale??D())===`en-US`?Yx(e):Xx(e)),Qx=()=>`Payment Management`,$x=()=>`支付管理`,eS=((e={},t={})=>(t.locale??D())===`en-US`?Qx(e):$x(e)),tS=()=>`Search PID, name, or callback URL...`,nS=()=>`搜索 PID、名称或通知地址...`,rS=((e={},t={})=>(t.locale??D())===`en-US`?tS(e):nS(e)),iS=()=>`Ascending`,aS=()=>`Ascending`,oS=((e={},t={})=>(t.locale??D())===`en-US`?iS(e):aS(e)),sS=()=>`Descending`,cS=()=>`Descending`,lS=((e={},t={})=>(t.locale??D())===`en-US`?sS(e):cS(e)),uS=()=>`Delete`,dS=()=>`删除`,fS=((e={},t={})=>(t.locale??D())===`en-US`?uS(e):dS(e)),pS=()=>`Confirm`,mS=()=>`确认`,hS=((e={},t={})=>(t.locale??D())===`en-US`?pS(e):mS(e)),gS=e=>`Perform “${e?.action}” on ${e?.target}.`,_S=e=>`将对 ${e?.target} 执行“${e?.action}”操作。`,vS=((e,t={})=>(t.locale??D())===`en-US`?gS(e):_S(e)),yS=()=>`Delete API Key`,bS=()=>`删除 API Key`,xS=((e={},t={})=>(t.locale??D())===`en-US`?yS(e):bS(e)),SS=()=>`Confirm API Key Action`,CS=()=>`API Key 操作确认`,wS=((e={},t={})=>(t.locale??D())===`en-US`?SS(e):CS(e)),TS=()=>`API Key Stats`,ES=()=>`API Key 统计`,DS=((e={},t={})=>(t.locale??D())===`en-US`?TS(e):ES(e)),OS=()=>`Call Count`,kS=()=>`调用次数`,AS=((e={},t={})=>(t.locale??D())===`en-US`?OS(e):kS(e)),jS=()=>`Last Used`,MS=()=>`最近使用`,NS=((e={},t={})=>(t.locale??D())===`en-US`?jS(e):MS(e)),PS=()=>`No records`,FS=()=>`暂无记录`,IS=((e={},t={})=>(t.locale??D())===`en-US`?PS(e):FS(e)),LS=()=>`No API Keys`,RS=()=>`暂无 API Key`,zS=((e={},t={})=>(t.locale??D())===`en-US`?LS(e):RS(e)),BS=()=>`Loading...`,VS=()=>`加载中...`,HS=((e={},t={})=>(t.locale??D())===`en-US`?BS(e):VS(e)),US=()=>`Callback URL`,WS=()=>`回调地址`,GS=((e={},t={})=>(t.locale??D())===`en-US`?US(e):WS(e)),KS=()=>`IP Whitelist`,qS=()=>`IP 白名单`,JS=((e={},t={})=>(t.locale??D())===`en-US`?KS(e):qS(e)),YS=()=>`Secret`,XS=()=>`密钥`,ZS=((e={},t={})=>(t.locale??D())===`en-US`?YS(e):XS(e)),QS=()=>`Edit`,$S=()=>`编辑`,eC=((e={},t={})=>(t.locale??D())===`en-US`?QS(e):$S(e)),tC=()=>`Rotate Secret`,nC=()=>`轮换密钥`,rC=((e={},t={})=>(t.locale??D())===`en-US`?tC(e):nC(e)),iC=()=>`Name`,aC=()=>`名称`,oC=((e={},t={})=>(t.locale??D())===`en-US`?iC(e):aC(e)),sC=()=>`My App`,cC=()=>`我的应用`,lC=((e={},t={})=>(t.locale??D())===`en-US`?sC(e):cC(e)),uC=()=>`Edit API Key`,dC=()=>`编辑 API Key`,fC=((e={},t={})=>(t.locale??D())===`en-US`?uC(e):dC(e)),pC=()=>`Create API Key`,mC=()=>`创建 API Key`,hC=((e={},t={})=>(t.locale??D())===`en-US`?pC(e):mC(e)),gC=()=>`Modify API Key configuration.`,_C=()=>`修改 API Key 配置。`,vC=((e={},t={})=>(t.locale??D())===`en-US`?gC(e):_C(e)),yC=()=>`Create a new API secret key.`,bC=()=>`创建新的 API 密钥。`,xC=((e={},t={})=>(t.locale??D())===`en-US`?yC(e):bC(e)),SC=()=>`IP Whitelist (Optional)`,CC=()=>`IP 白名单(选填)`,wC=((e={},t={})=>(t.locale??D())===`en-US`?SC(e):CC(e)),TC=()=>`⚠️ Secret Key is shown only once, please save it immediately`,EC=()=>`⚠️ Secret Key,仅展示一次,请立即保存`,DC=((e={},t={})=>(t.locale??D())===`en-US`?TC(e):EC(e)),OC=()=>`Close`,kC=()=>`关闭`,AC=((e={},t={})=>(t.locale??D())===`en-US`?OC(e):kC(e)),jC=()=>`Save Changes`,MC=()=>`保存修改`,NC=((e={},t={})=>(t.locale??D())===`en-US`?jC(e):MC(e)),PC=()=>`Create Key`,FC=()=>`创建 Key`,IC=((e={},t={})=>(t.locale??D())===`en-US`?PC(e):FC(e)),LC=()=>`API Key updated successfully`,RC=()=>`API Key 更新成功`,zC=((e={},t={})=>(t.locale??D())===`en-US`?LC(e):RC(e)),BC=()=>`API Key created successfully`,VC=()=>`API Key 创建成功`,HC=((e={},t={})=>(t.locale??D())===`en-US`?BC(e):VC(e)),UC=()=>`Please enter a name`,WC=()=>`请输入名称`,GC=((e={},t={})=>(t.locale??D())===`en-US`?UC(e):WC(e)),KC=()=>`Please enter a valid callback URL`,qC=()=>`请输入正确回调地址`,JC=((e={},t={})=>(t.locale??D())===`en-US`?KC(e):qC(e)),YC=e=>`${e?.action} succeeded`,XC=e=>`${e?.action}成功`,ZC=((e,t={})=>(t.locale??D())===`en-US`?YC(e):XC(e)),QC=()=>`Please enter your current password`,$C=()=>`请输入当前密码`,ew=((e={},t={})=>(t.locale??D())===`en-US`?QC(e):$C(e)),tw=()=>`New password must be at least 8 characters`,nw=()=>`新密码至少 8 位`,rw=((e={},t={})=>(t.locale??D())===`en-US`?tw(e):nw(e)),iw=()=>`Please confirm your new password`,aw=()=>`请确认新密码`,ow=((e={},t={})=>(t.locale??D())===`en-US`?iw(e):aw(e)),sw=()=>`The two passwords do not match`,cw=()=>`两次输入的密码不一致`,lw=((e={},t={})=>(t.locale??D())===`en-US`?sw(e):cw(e)),uw=()=>`Password updated successfully`,dw=()=>`密码修改成功`,fw=((e={},t={})=>(t.locale??D())===`en-US`?uw(e):dw(e)),pw=()=>`Current password`,mw=()=>`当前密码`,hw=((e={},t={})=>(t.locale??D())===`en-US`?pw(e):mw(e)),gw=()=>`Enter current password`,_w=()=>`输入当前密码`,vw=((e={},t={})=>(t.locale??D())===`en-US`?gw(e):_w(e)),yw=()=>`New password`,bw=()=>`新密码`,xw=((e={},t={})=>(t.locale??D())===`en-US`?yw(e):bw(e)),Sw=()=>`At least 8 characters`,Cw=()=>`至少 8 位`,ww=((e={},t={})=>(t.locale??D())===`en-US`?Sw(e):Cw(e)),Tw=()=>`Confirm new password`,Ew=()=>`确认新密码`,Dw=((e={},t={})=>(t.locale??D())===`en-US`?Tw(e):Ew(e)),Ow=()=>`Enter new password again`,kw=()=>`再次输入新密码`,Aw=((e={},t={})=>(t.locale??D())===`en-US`?Ow(e):kw(e)),jw=()=>`Saving…`,Mw=()=>`保存中…`,Nw=((e={},t={})=>(t.locale??D())===`en-US`?jw(e):Mw(e)),Pw=()=>`Save changes`,Fw=()=>`保存修改`,Iw=((e={},t={})=>(t.locale??D())===`en-US`?Pw(e):Fw(e)),Lw=()=>`System Settings`,Rw=()=>`系统配置`,zw=((e={},t={})=>(t.locale??D())===`en-US`?Lw(e):Rw(e)),Bw=()=>`Manage checkout basics, Telegram notifications, exchange rate strategy, and payment parameters in one place.`,Vw=()=>`集中管理收银台基础配置、Telegram 通知、汇率策略与收款参数。`,Hw=((e={},t={})=>(t.locale??D())===`en-US`?Bw(e):Vw(e)),Uw=()=>`Configure checkout display information and success page copy.`,Ww=()=>`配置收银台展示信息与支付成功页文案。`,Gw=((e={},t={})=>(t.locale??D())===`en-US`?Uw(e):Ww(e)),Kw=()=>`Please enter the checkout name`,qw=()=>`请输入收银台名称`,Jw=((e={},t={})=>(t.locale??D())===`en-US`?Kw(e):qw(e)),Yw=()=>`Please enter a valid logo URL`,Xw=()=>`请输入合法 Logo 地址`,Zw=((e={},t={})=>(t.locale??D())===`en-US`?Yw(e):Xw(e)),Qw=()=>`Please enter the site title`,$w=()=>`请输入网站标题`,eT=((e={},t={})=>(t.locale??D())===`en-US`?Qw(e):$w(e)),tT=()=>`Please enter the success page copy`,nT=()=>`请输入成功页文案`,rT=((e={},t={})=>(t.locale??D())===`en-US`?tT(e):nT(e)),iT=()=>`Please enter a valid support URL`,aT=()=>`请输入合法客服链接`,oT=((e={},t={})=>(t.locale??D())===`en-US`?iT(e):aT(e)),sT=()=>`Base settings reset to defaults`,cT=()=>`基础配置已重置为默认值`,lT=((e={},t={})=>(t.locale??D())===`en-US`?sT(e):cT(e)),uT=()=>`Base settings saved`,dT=()=>`基础配置已保存`,fT=((e={},t={})=>(t.locale??D())===`en-US`?uT(e):dT(e)),pT=()=>`Checkout name`,mT=()=>`收银台名称`,hT=((e={},t={})=>(t.locale??D())===`en-US`?pT(e):mT(e)),gT=()=>`Logo URL`,_T=()=>`Logo URL`,vT=((e={},t={})=>(t.locale??D())===`en-US`?gT(e):_T(e)),yT=()=>`Site title`,bT=()=>`网站标题`,xT=((e={},t={})=>(t.locale??D())===`en-US`?yT(e):bT(e)),ST=()=>`Success page copy`,CT=()=>`支付成功页文案`,wT=((e={},t={})=>(t.locale??D())===`en-US`?ST(e):CT(e)),TT=()=>`Support URL`,ET=()=>`客服链接`,DT=((e={},t={})=>(t.locale??D())===`en-US`?TT(e):ET(e)),OT=()=>`Save base settings`,kT=()=>`保存基础配置`,AT=((e={},t={})=>(t.locale??D())===`en-US`?OT(e):kT(e)),jT=()=>`Reset to defaults`,MT=()=>`重置为默认值`,NT=((e={},t={})=>(t.locale??D())===`en-US`?jT(e):MT(e)),PT=()=>`Used for payment notifications and exception alerts.`,FT=()=>`用于收款通知与异常提醒推送。`,IT=((e={},t={})=>(t.locale??D())===`en-US`?PT(e):FT(e)),LT=()=>`Please enter the Bot Token`,RT=()=>`请输入 Bot Token`,zT=((e={},t={})=>(t.locale??D())===`en-US`?LT(e):RT(e)),BT=()=>`Please enter the Chat ID`,VT=()=>`请输入 Chat ID`,HT=((e={},t={})=>(t.locale??D())===`en-US`?BT(e):VT(e)),UT=()=>`Telegram settings saved`,WT=()=>`Telegram 配置已保存`,GT=((e={},t={})=>(t.locale??D())===`en-US`?UT(e):WT(e)),KT=()=>`Bot Token`,qT=()=>`Bot Token`,JT=((e={},t={})=>(t.locale??D())===`en-US`?KT(e):qT(e)),YT=()=>`Chat ID`,XT=()=>`Chat ID`,ZT=((e={},t={})=>(t.locale??D())===`en-US`?YT(e):XT(e)),QT=()=>`Payment notification switch`,$T=()=>`收款通知开关`,eE=((e={},t={})=>(t.locale??D())===`en-US`?QT(e):$T(e)),tE=()=>`Abnormal notification switch`,nE=()=>`异常通知开关`,rE=((e={},t={})=>(t.locale??D())===`en-US`?tE(e):nE(e)),iE=()=>`Save Telegram settings`,aE=()=>`保存 Telegram 配置`,oE=((e={},t={})=>(t.locale??D())===`en-US`?iE(e):aE(e)),sE=()=>`Reserve strategy parameters for future real exchange rate API integration.`,cE=()=>`为后续真实汇率接口接入预留策略参数。`,lE=((e={},t={})=>(t.locale??D())===`en-US`?sE(e):cE(e)),uE=()=>`Please enter a valid API URL`,dE=()=>`请输入合法 API 地址`,fE=((e={},t={})=>(t.locale??D())===`en-US`?uE(e):dE(e)),pE=()=>`Please enter a valid exchange rate`,mE=()=>`请输入有效汇率`,hE=((e={},t={})=>(t.locale??D())===`en-US`?pE(e):mE(e)),gE=()=>`Rate settings saved`,_E=()=>`汇率配置已保存`,vE=((e={},t={})=>(t.locale??D())===`en-US`?gE(e):_E(e)),yE=()=>`Exchange rate API URL`,bE=()=>`汇率 API 地址`,xE=((e={},t={})=>(t.locale??D())===`en-US`?yE(e):bE(e)),SE=()=>`Forced USDT rate`,CE=()=>`强制 USDT 汇率`,wE=((e={},t={})=>(t.locale??D())===`en-US`?SE(e):CE(e)),TE=()=>`Save rate settings`,EE=()=>`保存汇率配置`,DE=((e={},t={})=>(t.locale??D())===`en-US`?TE(e):EE(e)),OE=()=>`Configure the default payment token, fiat currency, and network.`,kE=()=>`配置默认收款代币、法币与网络。`,AE=((e={},t={})=>(t.locale??D())===`en-US`?OE(e):kE(e)),jE=()=>`Payment settings saved`,ME=()=>`收款配置已保存`,NE=((e={},t={})=>(t.locale??D())===`en-US`?jE(e):ME(e)),PE=()=>`Save payment settings`,FE=()=>`保存收款配置`,IE=((e={},t={})=>(t.locale??D())===`en-US`?PE(e):FE(e)),LE=()=>`Appearance`,RE=()=>`外观`,zE=((e={},t={})=>(t.locale??D())===`en-US`?LE(e):RE(e)),BE=()=>`Customize the app appearance and switch between light and dark themes.`,VE=()=>`自定义应用外观,可在浅色与深色主题之间切换。`,HE=((e={},t={})=>(t.locale??D())===`en-US`?BE(e):VE(e)),UE=()=>`Font`,WE=()=>`字体`,GE=((e={},t={})=>(t.locale??D())===`en-US`?UE(e):WE(e)),KE=()=>`Set the font you want to use in the dashboard.`,qE=()=>`设置你希望在控制台中使用的字体。`,JE=((e={},t={})=>(t.locale??D())===`en-US`?KE(e):qE(e)),YE=()=>`Theme`,XE=()=>`主题`,ZE=((e={},t={})=>(t.locale??D())===`en-US`?YE(e):XE(e)),QE=()=>`Select the theme for the dashboard.`,$E=()=>`选择控制台的主题。`,eD=((e={},t={})=>(t.locale??D())===`en-US`?QE(e):$E(e)),tD=()=>`Update preferences`,nD=()=>`更新偏好设置`,rD=((e={},t={})=>(t.locale??D())===`en-US`?tD(e):nD(e)),iD=()=>`Display`,aD=()=>`显示`,oD=((e={},t={})=>(t.locale??D())===`en-US`?iD(e):aD(e)),sD=()=>`Turn items on or off to control what is displayed in the app.`,cD=()=>`开关各项内容,控制应用中展示的信息。`,lD=((e={},t={})=>(t.locale??D())===`en-US`?sD(e):cD(e)),uD=()=>`Recents`,dD=()=>`最近项目`,fD=((e={},t={})=>(t.locale??D())===`en-US`?uD(e):dD(e)),pD=()=>`Home`,mD=()=>`主页`,hD=((e={},t={})=>(t.locale??D())===`en-US`?pD(e):mD(e)),gD=()=>`Applications`,_D=()=>`应用`,vD=((e={},t={})=>(t.locale??D())===`en-US`?gD(e):_D(e)),yD=()=>`Desktop`,bD=()=>`桌面`,xD=((e={},t={})=>(t.locale??D())===`en-US`?yD(e):bD(e)),SD=()=>`Downloads`,CD=()=>`下载`,wD=((e={},t={})=>(t.locale??D())===`en-US`?SD(e):CD(e)),TD=()=>`Documents`,ED=()=>`文档`,DD=((e={},t={})=>(t.locale??D())===`en-US`?TD(e):ED(e)),OD=()=>`You have to select at least one item.`,kD=()=>`至少选择一个项目。`,AD=((e={},t={})=>(t.locale??D())===`en-US`?OD(e):kD(e)),jD=()=>`Sidebar`,MD=()=>`侧边栏`,ND=((e={},t={})=>(t.locale??D())===`en-US`?jD(e):MD(e)),PD=()=>`Select the items you want to display in the sidebar.`,FD=()=>`选择你希望在侧边栏中显示的项目。`,ID=((e={},t={})=>(t.locale??D())===`en-US`?PD(e):FD(e)),LD=()=>`Update display`,RD=()=>`更新显示设置`,zD=((e={},t={})=>(t.locale??D())===`en-US`?LD(e):RD(e)),BD=()=>`Notifications`,VD=()=>`通知`,HD=((e={},t={})=>(t.locale??D())===`en-US`?BD(e):VD(e)),UD=()=>`Configure how you receive notifications.`,WD=()=>`配置你接收通知的方式。`,GD=((e={},t={})=>(t.locale??D())===`en-US`?UD(e):WD(e)),KD=()=>`Please select a notification type.`,qD=()=>`请选择通知类型。`,JD=((e={},t={})=>(t.locale??D())===`en-US`?KD(e):qD(e)),YD=()=>`Notify me about...`,XD=()=>`通知我关于……`,ZD=((e={},t={})=>(t.locale??D())===`en-US`?YD(e):XD(e)),QD=()=>`All new messages`,$D=()=>`所有新消息`,eO=((e={},t={})=>(t.locale??D())===`en-US`?QD(e):$D(e)),tO=()=>`Direct messages and mentions`,nO=()=>`私信和提及`,rO=((e={},t={})=>(t.locale??D())===`en-US`?tO(e):nO(e)),iO=()=>`Nothing`,aO=()=>`不接收通知`,oO=((e={},t={})=>(t.locale??D())===`en-US`?iO(e):aO(e)),sO=()=>`Email Notifications`,cO=()=>`邮件通知`,lO=((e={},t={})=>(t.locale??D())===`en-US`?sO(e):cO(e)),uO=()=>`Communication emails`,dO=()=>`通信邮件`,fO=((e={},t={})=>(t.locale??D())===`en-US`?uO(e):dO(e)),pO=()=>`Receive emails about your account activity.`,mO=()=>`接收与你账户活动相关的邮件。`,hO=((e={},t={})=>(t.locale??D())===`en-US`?pO(e):mO(e)),gO=()=>`Marketing emails`,_O=()=>`营销邮件`,vO=((e={},t={})=>(t.locale??D())===`en-US`?gO(e):_O(e)),yO=()=>`Receive emails about new products, features, and more.`,bO=()=>`接收有关新产品、新功能等内容的邮件。`,xO=((e={},t={})=>(t.locale??D())===`en-US`?yO(e):bO(e)),SO=()=>`Social emails`,CO=()=>`社交邮件`,wO=((e={},t={})=>(t.locale??D())===`en-US`?SO(e):CO(e)),TO=()=>`Receive emails for friend requests, follows, and more.`,EO=()=>`接收好友请求、关注等社交邮件。`,DO=((e={},t={})=>(t.locale??D())===`en-US`?TO(e):EO(e)),OO=()=>`Security emails`,kO=()=>`安全邮件`,AO=((e={},t={})=>(t.locale??D())===`en-US`?OO(e):kO(e)),jO=()=>`Receive emails about your account activity and security.`,MO=()=>`接收与你账户活动和安全相关的邮件。`,NO=((e={},t={})=>(t.locale??D())===`en-US`?jO(e):MO(e)),PO=()=>`Use different settings for my mobile devices`,FO=()=>`我的移动设备使用不同的通知设置`,IO=((e={},t={})=>(t.locale??D())===`en-US`?PO(e):FO(e)),LO=()=>`You can manage your mobile notifications in the`,RO=()=>`你可以在`,zO=((e={},t={})=>(t.locale??D())===`en-US`?LO(e):RO(e)),BO=()=>`mobile settings`,VO=()=>`移动端设置`,HO=((e={},t={})=>(t.locale??D())===`en-US`?BO(e):VO(e)),UO=()=>`page.`,WO=()=>`页面中管理移动通知。`,GO=((e={},t={})=>(t.locale??D())===`en-US`?UO(e):WO(e)),KO=()=>`Update notifications`,qO=()=>`更新通知设置`,JO=((e={},t={})=>(t.locale??D())===`en-US`?KO(e):qO(e)),YO=()=>`Select a settings page`,XO=()=>`选择配置项`,ZO=((e={},t={})=>(t.locale??D())===`en-US`?YO(e):XO(e)),QO=()=>`Saved successfully`,$O=()=>`保存成功`,ek=((e={},t={})=>(t.locale??D())===`en-US`?QO(e):$O(e)),tk=()=>`Access Forbidden`,nk=()=>`禁止访问`,rk=((e={},t={})=>(t.locale??D())===`en-US`?tk(e):nk(e)),ik=()=>`You do not have permission to access this resource.`,ak=()=>`你没有访问此资源所需的权限。`,ok=((e={},t={})=>(t.locale??D())===`en-US`?ik(e):ak(e)),sk=()=>`Please contact your administrator for access.`,ck=()=>`请联系管理员获取访问权限。`,lk=((e={},t={})=>(t.locale??D())===`en-US`?sk(e):ck(e)),uk=()=>`Website is under maintenance!`,dk=()=>`网站维护中!`,fk=((e={},t={})=>(t.locale??D())===`en-US`?uk(e):dk(e)),pk=()=>`The site is not available at the moment.`,mk=()=>`站点当前暂不可用。`,hk=((e={},t={})=>(t.locale??D())===`en-US`?pk(e):mk(e)),gk=()=>`We will be back online shortly.`,_k=()=>`我们会尽快恢复服务。`,vk=((e={},t={})=>(t.locale??D())===`en-US`?gk(e):_k(e)),yk=()=>`Unauthorized Access`,bk=()=>`未授权访问`,xk=((e={},t={})=>(t.locale??D())===`en-US`?yk(e):bk(e)),Sk=()=>`Please log in with the appropriate credentials.`,Ck=()=>`请使用正确的凭证登录。`,wk=((e={},t={})=>(t.locale??D())===`en-US`?Sk(e):Ck(e)),Tk=()=>`Once signed in, you can access this resource.`,Ek=()=>`登录后即可访问此资源。`,Dk=((e={},t={})=>(t.locale??D())===`en-US`?Tk(e):Ek(e)),Ok=()=>`User`,kk=()=>`用户`,Ak=((e={},t={})=>(t.locale??D())===`en-US`?Ok(e):kk(e)),jk=()=>`Font`,Mk=()=>`字体`,Nk=((e={},t={})=>(t.locale??D())===`en-US`?jk(e):Mk(e));export{zE as $,zd as $a,Rn as $c,Bm as $i,D as $l,zb as $n,zc as $o,z_ as $r,Ra as $s,zC as $t,eO as A,tp as Aa,$r as Ac,tg as Ai,Qe as Al,eS as An,eu as Ao,ey as Ar,es as As,eT as At,wD as B,Tf as Ba,Cr as Bc,Th as Bi,Se as Bl,wx as Bn,wl as Bo,wv as Br,wo as Bs,ww as Bt,xO as C,Sp as Ca,bi as Cc,$ as Ci,yt as Cl,xS as Cn,xu as Co,xy as Cr,xs as Cs,xT as Ct,lO as D,up as Da,ci as Dc,ug as Di,st as Dl,lS as Dn,lu as Do,ly as Dr,ls as Ds,lT as Dt,fO as E,pp as Ea,di as Ec,pg as Ei,ut as El,fS as En,fu as Eo,fy as Er,fs as Es,fT as Et,zD as F,Bf as Fa,Rr as Fc,Bh as Fi,Le as Fl,zx as Fn,zl as Fo,zv as Fr,zo as Fs,zw as Ft,lD as G,uf as Ga,cr as Gc,uh as Gi,se as Gl,lx as Gn,ll as Go,lv as Gr,co as Gs,lw as Gt,vD as H,yf as Ha,_r as Hc,yh as Hi,ge as Hl,vx as Hn,vl as Ho,vv as Hr,vo as Hs,vw as Ht,ID as I,Lf as Ia,Fr as Ic,Lh as Ii,Pe as Il,Ix as In,Il as Io,Iv as Ir,Io as Is,Iw as It,eD as J,ef as Ja,$n as Jc,th as Ji,Y as Jl,ex as Jn,el as Jo,ev as Jr,$a as Js,ew as Jt,oD as K,sf as Ka,ar as Kc,sh as Ki,ie as Kl,ox as Kn,ol as Ko,ov as Kr,ao as Ks,ow as Kt,ND as L,Pf as La,Mr as Lc,Ph as Li,je as Ll,Nx as Ln,Nl as Lo,Nv as Lr,No as Ls,Nw as Lt,JD as M,Yf as Ma,qr as Mc,Yh as Mi,Ke as Ml,Jx as Mn,Jl as Mo,Jv as Mr,Jo as Ms,Jw as Mt,GD as N,Kf as Na,Wr as Nc,Kh as Ni,Ue as Nl,Gx as Nn,Gl as No,Gv as Nr,Go as Ns,Gw as Nt,oO as O,sp as Oa,ai as Oc,sg as Oi,it as Ol,oS as On,ou as Oo,oy as Or,os as Os,oT as Ot,HD as P,Uf as Pa,Vr as Pc,Uh as Pi,Be as Pl,Hx as Pn,Hl as Po,Hv as Pr,Ho as Ps,Hw as Pt,HE as Q,Hd as Qa,Vn as Qc,Um as Qi,te as Ql,Hb as Qn,Hc as Qo,H_ as Qr,Va as Qs,HC as Qt,AD as R,jf as Ra,kr as Rc,jh as Ri,Oe as Rl,Ax as Rn,Al as Ro,Av as Rr,Ao as Rs,Aw as Rt,wO as S,Tp as Sa,Ci as Sc,wg as Si,St as Sl,wS as Sn,wu as So,wy as Sr,ws as Ss,wT as St,hO as T,gp as Ta,mi as Tc,gg as Ti,pt as Tl,hS as Tn,hu as To,hy as Tr,hs as Ts,hT as Tt,hD as U,gf as Ua,mr as Uc,gh as Ui,pe as Ul,hx as Un,hl as Uo,hv as Ur,ho as Us,hw as Ut,xD as V,Sf as Va,br as Vc,Sh as Vi,ye as Vl,xx as Vn,xl as Vo,xv as Vr,xo as Vs,xw as Vt,fD as W,pf as Wa,dr as Wc,ph as Wi,ue as Wl,fx as Wn,fl as Wo,fv as Wr,fo as Ws,fw as Wt,JE as X,Jd as Xa,qn as Xc,Ym as Xi,U as Xl,Jb as Xn,Jc as Xo,J_ as Xr,qa as Xs,JC as Xt,ZE as Y,Zd as Ya,Xn as Yc,Qm as Yi,K as Yl,Zb as Yn,Zc as Yo,Z_ as Yr,Xa as Ys,ZC as Yt,GE as Z,Gd as Za,Wn as Zc,Km as Zi,B as Zl,Gb as Zn,Gc as Zo,G_ as Zr,Wa as Zs,GC as Zt,zO as _,Bp as _a,Ri as _c,zg as _i,Lt as _l,zS as _n,zu as _o,zy as _r,zs as _s,zT as _t,xk as a,Sm as aa,ba as ac,x_ as ai,bn as al,xC as an,xd as ao,xb as ar,xc as as,xE as at,s as au,AO as b,jp as ba,ki as bc,Ag as bi,Ot as bl,AS as bn,Au as bo,Ay as br,As as bs,AT as bt,fk as c,pm as ca,da as cc,f_ as ci,dn as cl,fC as cn,fd as co,fb as cr,fc as cs,fE as ct,rk as d,im as da,na as dc,r_ as di,tn as dl,rC as dn,rd as do,rb as dr,rc as ds,rE as dt,Lm as ea,Fa as ec,I_ as ei,Fn as el,IC as en,Id as eo,Ib as er,Ic as es,IE as et,g as eu,ek as f,tm as fa,$i as fc,e_ as fi,Qt as fl,eC as fn,ed as fo,eb as fr,ec as fs,eE as ft,HO as g,Up as ga,Vi as gc,Hg as gi,Bt as gl,HS as gn,Hu as go,Hy as gr,Hs as gs,HT as gt,GO as h,Kp as ha,Wi as hc,Gg as hi,Ut as hl,GS as hn,Gu as ho,Gy as hr,Gs as hs,GT as ht,wk as i,Tm as ia,Ca as ic,w_ as ii,Cn as il,wC as in,wd as io,wb as ir,wc as is,wE as it,o as iu,ZD as j,Qf as ja,Xr as jc,Qh as ji,Ye as jl,Zx as jn,Zl as jo,Zv as jr,Zo as js,Zw as jt,rO as k,ip as ka,ni as kc,ig as ki,tt as kl,rS as kn,ru as ko,ry as kr,rs as ks,rT as kt,lk as l,um as la,ca as lc,l_ as li,cn as ll,lC as ln,ld as lo,lb as lr,lc as ls,lE as lt,JO as m,Yp as ma,qi as mc,Jg as mi,Kt as ml,JS as mn,Ju as mo,Jy as mr,Js as ms,JT as mt,Ak as n,jm as na,ka as nc,A_ as ni,kn as nl,AC as nn,Ad as no,Ab as nr,Ac as ns,AE as nt,p as nu,vk as o,ym as oa,_a as oc,v_ as oi,_n as ol,vC as on,vd as oo,vb as or,vc as os,vE as ot,l as ou,ZO as p,Qp as pa,Xi as pc,Zg as pi,Yt as pl,ZS as pn,Zu as po,Zy as pr,Zs as ps,ZT as pt,rD as q,rf as qa,nr as qc,ih as qi,Q as ql,rx as qn,rl as qo,rv as qr,no as qs,rw as qt,Dk as r,Om as ra,Ea as rc,D_ as ri,En as rl,DC as rn,Dd as ro,Db as rr,Dc as rs,DE as rt,d as ru,hk as s,gm as sa,ma as sc,h_ as si,mn as sl,hC as sn,hd as so,hb as sr,hc as ss,hE as st,Nk as t,Pm as ta,Ma as tc,N_ as ti,Mn as tl,NC as tn,Nd as to,Nb as tr,Nc as ts,NE as tt,A as tu,ok as u,sm as ua,aa as uc,o_ as ui,an as ul,oC as un,od as uo,ob as ur,oc as us,oE as ut,IO as v,Lp as va,Fi as vc,Ig as vi,Pt as vl,IS as vn,Iu as vo,Iy as vr,Is as vs,IT as vt,vO as w,yp as wa,_i as wc,yg as wi,gt as wl,vS as wn,vu as wo,vy as wr,vs as ws,vT as wt,DO as x,Op as xa,Ei as xc,Dg as xi,Tt as xl,DS as xn,Du as xo,Dy as xr,Ds as xs,DT as xt,NO as y,Pp as ya,Mi as yc,Ng as yi,jt as yl,NS as yn,Nu as yo,Ny as yr,Ns as ys,NT as yt,DD as z,Of as za,Er as zc,Oh as zi,Te as zl,Dx as zn,Dl as zo,Dv as zr,Do as zs,Dw as zt}; \ No newline at end of file diff --git a/src/www/assets/not-found-error-toRsO1Fi.js b/src/www/assets/not-found-error-toRsO1Fi.js new file mode 100644 index 0000000..d66e54e --- /dev/null +++ b/src/www/assets/not-found-error-toRsO1Fi.js @@ -0,0 +1 @@ +import{cc as e,lc as t,nu as n,oc as r,sc as i}from"./messages-BovT1T-w.js";import{t as a}from"./useRouter-D03zSgJO.js";import{t as o}from"./useNavigate-Dg8CkCoa.js";import{t as s}from"./button-DJA4fnJ8.js";var c=n();function l(){let n=o(),{history:l}=a();return(0,c.jsx)(`div`,{className:`h-svh`,children:(0,c.jsxs)(`div`,{className:`m-auto flex h-full w-full flex-col items-center justify-center gap-2`,children:[(0,c.jsx)(`h1`,{className:`font-bold text-[7rem] leading-tight`,children:`404`}),(0,c.jsx)(`span`,{className:`font-medium`,children:i()}),(0,c.jsx)(`p`,{className:`text-center text-muted-foreground`,children:r()}),(0,c.jsxs)(`div`,{className:`mt-6 flex gap-4`,children:[(0,c.jsx)(s,{onClick:()=>l.go(-1),variant:`outline`,children:t()}),(0,c.jsx)(s,{onClick:()=>n({to:`/dashboard`}),children:e()})]})]})})}export{l as t}; \ No newline at end of file diff --git a/src/www/assets/notifications-DfNeewuy.js b/src/www/assets/notifications-DfNeewuy.js new file mode 100644 index 0000000..1cba7cf --- /dev/null +++ b/src/www/assets/notifications-DfNeewuy.js @@ -0,0 +1 @@ +import{A as e,C as t,D as n,E as r,M as i,N as a,O as o,P as s,S as c,T as l,_ as u,b as d,g as f,h as p,j as m,k as h,m as g,nu as _,v,w as y,x as b,y as x}from"./messages-BovT1T-w.js";import{t as S}from"./link-CA4H4hTz.js";import{t as C}from"./button-DJA4fnJ8.js";import{t as w}from"./checkbox-B_Isethe.js";import{t as T}from"./switch-R6BNZUH1.js";import{n as E,t as D}from"./radio-group-DXVwPYJH.js";import{a as O,r as k,s as A}from"./zod-Cymc5bS-.js";import{a as j,c as M,i as N,l as P,n as F,o as I,r as L,s as R,t as z}from"./form-DdHiBYMe.js";import{t as B}from"./page-header-BBJ9dE3-.js";import{t as V}from"./show-submitted-data-l0RlCwTX.js";var H=_(),U=A({type:k([`all`,`mentions`,`none`],{error:e=>e.input===void 0?i():void 0}),mobile:O().default(!1).optional(),communication_emails:O().default(!1).optional(),social_emails:O().default(!1).optional(),marketing_emails:O().default(!1).optional(),security_emails:O()}),W={communication_emails:!1,marketing_emails:!1,social_emails:!0,security_emails:!0};function G(){let i=P({resolver:M(U),defaultValues:W});return(0,H.jsx)(z,{...i,children:(0,H.jsxs)(`form`,{className:`space-y-8`,onSubmit:i.handleSubmit(e=>V(e)),children:[(0,H.jsx)(N,{control:i.control,name:`type`,render:({field:t})=>(0,H.jsxs)(j,{className:`relative space-y-3`,children:[(0,H.jsx)(I,{children:m()}),(0,H.jsx)(F,{children:(0,H.jsxs)(D,{className:`flex flex-col gap-2`,defaultValue:t.value,onValueChange:t.onChange,children:[(0,H.jsxs)(j,{className:`flex items-center`,children:[(0,H.jsx)(F,{children:(0,H.jsx)(E,{value:`all`})}),(0,H.jsx)(I,{className:`font-normal`,children:e()})]}),(0,H.jsxs)(j,{className:`flex items-center`,children:[(0,H.jsx)(F,{children:(0,H.jsx)(E,{value:`mentions`})}),(0,H.jsx)(I,{className:`font-normal`,children:h()})]}),(0,H.jsxs)(j,{className:`flex items-center`,children:[(0,H.jsx)(F,{children:(0,H.jsx)(E,{value:`none`})}),(0,H.jsx)(I,{className:`font-normal`,children:o()})]})]})}),(0,H.jsx)(R,{})]})}),(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(`h3`,{className:`mb-4 font-medium text-lg`,children:n()}),(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsx)(N,{control:i.control,name:`communication_emails`,render:({field:e})=>(0,H.jsxs)(j,{className:`flex flex-row items-center justify-between rounded-lg border p-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsx)(I,{className:`text-base`,children:r()}),(0,H.jsx)(L,{children:l()})]}),(0,H.jsx)(F,{children:(0,H.jsx)(T,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,H.jsx)(N,{control:i.control,name:`marketing_emails`,render:({field:e})=>(0,H.jsxs)(j,{className:`flex flex-row items-center justify-between rounded-lg border p-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsx)(I,{className:`text-base`,children:y()}),(0,H.jsx)(L,{children:t()})]}),(0,H.jsx)(F,{children:(0,H.jsx)(T,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,H.jsx)(N,{control:i.control,name:`social_emails`,render:({field:e})=>(0,H.jsxs)(j,{className:`flex flex-row items-center justify-between rounded-lg border p-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsx)(I,{className:`text-base`,children:c()}),(0,H.jsx)(L,{children:b()})]}),(0,H.jsx)(F,{children:(0,H.jsx)(T,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,H.jsx)(N,{control:i.control,name:`security_emails`,render:({field:e})=>(0,H.jsxs)(j,{className:`flex flex-row items-center justify-between rounded-lg border p-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,H.jsx)(I,{className:`text-base`,children:d()}),(0,H.jsx)(L,{children:x()})]}),(0,H.jsx)(F,{children:(0,H.jsx)(T,{"aria-readonly":!0,checked:e.value,disabled:!0,onCheckedChange:e.onChange})})]})})]})]}),(0,H.jsx)(N,{control:i.control,name:`mobile`,render:({field:e})=>(0,H.jsxs)(j,{className:`relative flex flex-row items-start`,children:[(0,H.jsx)(F,{children:(0,H.jsx)(w,{checked:e.value,onCheckedChange:e.onChange})}),(0,H.jsxs)(`div`,{className:`space-y-1 leading-none`,children:[(0,H.jsx)(I,{children:v()}),(0,H.jsxs)(L,{children:[u(),` `,(0,H.jsx)(S,{className:`underline decoration-dashed underline-offset-4 hover:decoration-solid`,to:`/settings`,children:f()}),` `,p()]})]})]})}),(0,H.jsx)(C,{type:`submit`,children:g()})]})})}function K(){return(0,H.jsx)(B,{description:a(),title:s(),variant:`section`,children:(0,H.jsx)(G,{})})}var q=K;export{q as component}; \ No newline at end of file diff --git a/src/www/assets/noto-sans-cyrillic-ext-wght-normal-DSNfmdVt.woff2 b/src/www/assets/noto-sans-cyrillic-ext-wght-normal-DSNfmdVt.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..01c4086c32119c44b7bb8b1ac7fdf54e8458fdf9 GIT binary patch literal 70680 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 hScSrP0UkmncHh@cM(TSdKBRNi} z3%3VaCxd2lLuSkajtwWltsAJT$;d-do5)rAF`q5OHYZ!tgvz!lFpDki1f}BDfk~C8 z*DH;_-SmQKsj|KZSGCzoa7F9^nQC1uI3RP|%H=f$sRdz-z-8KRc^ZQDnj`2$M4ZBr zA_sTtWCXUSb9w^d_qzR(gpHyKJhCcnw83Qo!eN^dxF|kxy1_a>iA_Jyly2e6h7ggq zA6UrTe7^ygAvS1>vKt(W;8N^ZZY7F-N(e!ET#BjLDCX=8yWN({ku1*@1+54omc@P9 zGRGZ3{s3y)mVpIlHKa^GtSTFZNwD&y;qQmolg=ODBHR^Qrkn6qYXR4G7xGwl8-kno zzwB+-hppLz>iF)g^pIYG2GosouUKH;M`LpuL#o_19E!8!7xKGCyBJncS z39MRw(HW4`rQ&aOBXijzo?kbAEu1lok@tQ=1^V>ZFUjFyL#;2xmDV6_4Xx%78|%@2X+`>n)*Pcbv3O&=AdRp&3IElIq}$GWo^L zj_g4NDn_M^KebOey3b@MD>G?e8sW1GnUY@ja-wgSBdEEN^|zF|JyV60pa$q&$6Myk zpk6tNJXB+6D{)vgUMh~^;c|>Qdw9hu8;=(nrEDQMPI3hi?lu)vZ8Vohctyxg#`Mjt zx-~iObP@r`n2~gn&k~!L12RvIjFigG(V8++yDK7ZKv2XXm|m6dSk$!o^SZW5@1~i zPh8mq6Wt)@zpDu3l>*3OBTpdNVy3sqn-bK!7_OI9B4`2>5Ms8lnHYC|MB)4J7 z>K?Lu{yDQBM7M1LBL?0xo6?i3M7RK{Bx{F0g=7}TzahQHLcs`F&IOSfb}hTe`J2kj z|4FO$I`DS))a_`pjy%`q3(1w8CvW)b-Q(ULw;%lHi-5eD@w1oqV`Br%j*Qz1x0$|m zhqknjf9M(^c%&16UfQiD<2d}|+OH;hKdN2Omqh2<Y)fu17Hg?@q zgg}E_QbcLpUp!{W7qX=gPkD8t#!K#JrPOomMRZt4q4F9=TZ3DU!a4Oy@C_@MQ7A4G zfGhJkk9C(M6OtCu4Im!zoA)027olJ}GrT!>fAgoO@3pKDY} z=BFTH`cNnK6dc>UDQm&YrqUV`islIkT(iAnk`sG>ew~)>JB@?tSN5=Fnnaw1*$Met zVk3x((9L^Q@XT}QlpO@3sA(K223jc+WKG-7vU+$ic|ZVZ6uYY{8qelN|LPIVG1hw} zZ|t$q8oUOsmzjb=2SVkoA7^`8o__EWZJMnnt0Z~zXZ23f^4e|N7AyD+3(1Ua7v`e# z1cZSavyJ+o41S7XeFkhZMliLRmG#r9iem#NV8SGX?-X_qbYnTloSHme-5r|?;ANVf zGCjngn{s2ckMi_$$>J>|5jR3nk=tr8Y^^i40iIcx)X1Dg0-5mJjmo`Zjkjvhw!zLv zpiXP_2NTWH*}D`npR9=X6d!$CUhZfl8CF#L(^MRz&uaA+c~_y)Do$tr;@txCx;_DR zRXoJ#?iphKN?AxDliF`4O*tWiRVjEtNEa38Kqjm8{F9kpJUJU@vgwN2#+u9q1RkB> zj6=zA*bM3#i$G#%SLSs3G(l^yYAy{%DNzpxheT;7DuD>CFk3N9lSrh-;Yss2d7=4K z;1)53fFMW=tIC*o0fMWKOmO6EJb4CYwo%CyJmd62@vA@7gG+LLVWH+tmfX5>k8Hwu z{aM4ZNrI;P?PWBygn^F4wRH`LQUMw=X29`tmbEoJ;moXD7$!)RnK`j&4EptYk1D8y z_A_~8!T(@it2loidGG@Y0t!&fsBxuHsCEC%S9N5qfFL!DBzevCd)1`E{Zn;qOz>TU zp$zQpZ$t{5fOFikB6iH%R!}X_K+J@J!i`bJFe(}ajnsyB+quCUbnWRn| zV5#07bc^1ywcGDD!_MxeLz(@Ktom+{+J1St68V{*Q@$gnVCKutKt!vw)?cVeQ+!Is zH=@%NksT~%o*ueMP*3)}C6mjHfNq2~h6U|lWBouBsux_2R8-}QLlU|X5ecMre@@l) z_G0xyO9BVCXPPJ$qZ^@cl-M4G6L{_u7VWaSmU2*Q725PeAIVP<2eg~?qVZN|`2|!y zzk}654)Ssgw^oa%S>WAMouD}+_27WcN@VcUApNu%WPK29%|5V}#%2vf1C9AgrJUaF zpcP#Qd7U}3mgRWoWZtt}`zAz{I>r5mR|qB^xG<6B!&GIH2tOWEOESM9^xQs2frBWq?)K1x4WtbVim)J;)owQ7gA`%I}VP9Y3wKh zrWU4d*lO*lX5qh;jTj;Lu1eWKAl#NsK~r#$ne+j>I>SLCN`ocJ!9emCO6c;BPkle0 z%oPd=#-BP6`Nn!o)Iy=_UWHaX*~=&)n}p;_bF1!1L^x8~B}cEpjAC0aRXlYEsC$Vu zr1wEj4fI$st@lCAHR^WX;3Y-kdByhJ#PnH8B_?|*Q56a33}}?+*hPKWV4Zg8Dx&ol z9OfRY)>v1w6Zbx!oP4g=@~!ky|6XuOGi~K-R81?+C8HI_CL9ML_$qK#s}hsvFxv2Y za}}U@Dm#>p*i)q!FI(O$~NeqzicF@cM4g-n-{>TXGnf~aG)8MA!D;^1)G+KNZ)*;Zr5z;aMY0xlXUCVPC{`a$+E!xBzME(9m^s4a~!76*3Do zkJidAz;w67DVjCk%EPj*%OX-0i`b_}eJ8MVasdpjccv$Nm?c~r5xtH08XOM*88WT+y&KW)`J&XFk0206X2pw+P1NMs6KWH4}ws#1ahCO zPulzxES3H#Yf6|i@SBYW(yE?hCQO$Lvzb*MmdW`ggI5Q8y)#u-)mJSC2^n*8KCao} z5#F$34={d4psGiel%+k=%L|XEnk=@_Qu>sJa%gxFOrq~$Ssw7#=(rr&^DAPA+2h!a zZy2IORHb|ZWGrpsLl79|%rMP83b zZ;`z{6gQlVDh4TprGd4)3!XpCg?gO6my)-yJ63wVw|1P`>iD;^X-i@nXK^|XZJ~Hk z-`+n-ExFBqL+Tt}?dKr+QT6(Y`Uw|=>$sUc%11wH7M;gGp&3Dfo4;|b_U>N!9iNnR z`bzvjh(l0g?EYBqVIs@2Yendp8pXZ<#gSUZaz(5^;$LfJo)bn-1-}?f|PS) zS9O_`=lXdW>DlPsbnwwN6f!U!lK;0A8c%OFOKCi;xE3ZZwr)S0k{@V0YSVV-y-W7Z z)KPB>N7qYdZv}l6`*Ad4H>aiP$O@}aY3v`R7rX23nR?arPooHe6PEk4{EOrAi{DZZ zIMMr9Pt`VxkAb-4Y&`P^DVf>nN4b6HXrEN@kger>Wx%6 zZ60^vU#kIE^^;ERCgX3n8=VZ#;+gW@GD^4i)7k^e$s1i3#^dt5XO68=G>hHv|F3WN z{b0b52U6)(pNpYHL%zGe3wzWWB#?vvT-9W7ng(-BaQtL&|26?!d|Do?gZQC%D({tiwrFQ9A6T0yu&z$rT+G-b4ve^a=@miv+6K{_x7!+|xkcEQCiO&W@lDwOK``(*%=8`b| z&??kP+Y~&ubeM)Kn}@D^^!Urz$OvE$!*jc`IEz5OCvsc&J)P>f)6qb;FF8$D>f2W) z@CVS-wk?2x8)RU~e?TZg$C@;*QF0@>j5p;1W6l5}(xz{LLKLNO5P(rCw(GG5rm~Yj zqMu=P1lrpdBNKW2*4D*VfM~^(6j9}PS#}w)b;J9d?e1BB{=NS?Af<|(UJ^bfC<`z! z1s}KB%9KdRkuQilt&aFJs@J)xNuxOknH6qkwWvNiO^W{&vPw{~XV>jpy&_p40Hgn| zMo-{-hh*OH#=qIB2R&`Nrpp8PZy%}W!Ex1#DMECyi~v?k;L9~h+Q?DxBSOFDUBz%Z z3p)v!d$f#7pzU6n8T9D7vt6|h>t-z{370X8C)9#XSF}V(E$tX2Ma{NxpcC}=cD3OE zqb!8v@gS1mam8ir*-m{RFX#B-#mfljXP>GHFA3vxwYK9;QG~p-zK&JQ)jkh23GK}@ zEJmo^r3~WVt;!aNabj<-p2EdnmNuuvc_sYvN_Y2l<6RQlxr^p&7Z_f&wnf3*uMyaw zd(pUPG~oWHSnooV^po+rPKbr|Xk#(GgZWlF2kvjTK)A4s^0%Zcx{tqB`-kIc7r^B9 z9B>!kpG%@RZ4Gq1RftVpt1$VmmJ3W*$5vzYaKm5z82nlm+dBC4TLnNd790WHka4GO z;!-TIzM;?C$TSPAUpohWf{#Z2;8SclmhVA#prAReZdbC+5_A zhxiM`d$Ml^c3z!Z?A+B}FrI~_^UmkG-uk-{u++HldyTD!K85;-xS4IA1-ZK-p!&1Z zngFV)4xPNkc3ySj+`nZrh$ZV9MrhNAnEyptdm)+Q>CzvUHW&oxTLR18v}|sUz}WBE z;Q+NDoV8sYLK1BF&xA)0rtofyDglzr#KjT z-l1+-5G6U77eVpYmWbnWZPVg~aRLSc)qtsEwfahhW!r|Xq8y3A1IXU;xIA!6D-f%j z(~#gj=5u$!eR{j~It5Y4;W-z<@P}$Uj=lKiOoM-U=6;l*s4!BzdG z7(sqp{g$WrA7rw8t!_HPHjA3;nk?Kbmh!oU^4IA6E-%>10E5z+eY%_5DM(|1MZK|C zm?npiV+5ht(Zg&&>e{|-{LM<1k0c|04qSz=Y(NS-$!BjFHwz4=siJd3UDlX{V-{+& zP(B+;c^;&$fIu2OX)U#fFEvq4s}Y%!q{@O6;5+9#4_CbbdiQ+4>yS8|(&U|8xX9>phc2cp%ctcdIf(d}EoNIuD*Ma>vn+Vc4q|1sE* z%fbnXJ51qeB*gzeb6^8PKQ>{Uj?;J?Q}(bo^WILcr{Vp)HUxglnlUgYkMS0I00YG2 zG%^mbG^07Pj|2`{`tm;Lv+ zsKBX~yU>CAjDOwQ#!$yJ-($=G`?hATp)B)AlJ@8>*(AcGh@@zz7@bwWd+mDKhcIrG50N1j88V-A2fXsK`EFHmz4< z#`NBFK0wWv{0MUH@R=eW6M-o-5H@X%B#-TF?0X10{A59qBG`@`4x>VrH9^X3g3DM= zgcQawM)Qg$&QGQXETYXtR4jm-!}+jW7$2lfp2dj!yfb9gS7lw8s=CR4*}Xq^s(VyI zP?|r=-WNfIymxpC^))A`J)gPRdFUnD4N*|t7@0T=PLKDz6-84nfxMOH(4q}nfnx?~UFQ4VOGSzWxR}K6epCwQ?*GXkwIv+j_ z)-||NX4{mEyv+P@YCGuWkp&$DVE3KVl~pWpfQ}(&Eo2o|DF;uy486IP+`VJ!sv-+4 zJ5}9nbj#J%G>i{pl39D4dXt|>1fKsTzE~(uk_t>Hlt~%O7U>Npq=L$fTcDF0r0Yiw zWE4#g9uz0Xp$+hu^KT10%rm`tLU!HrX5Oa0Y!qKg<_@J zL$sHxU>xWsgJkKd{aMOdyn9nLS$ZEzVHX;7o_;%P35wo}WnwK~HICy)o`ge@w}dX? z9WC534h$Ya96!1McD|8#3oRq?LsK=kDssS*49!Uqu9fYiC~qbe=&gvtJ_orq6xiN1 ztb_kvoxwU`oN7J5F~t>Xfo+2|_Y|$vL=jTbl+I*s&=sARVg?7|wr#sWlxmGA7$u+$ z5heyssMQR9f>1rFiYA7^?N(%s%c>Vp3}jHW%VEo0+Y#CM>W^eQZ;cVV>J1Rsk6OcpLJT1xGEqD0idOSD6Vw1-s3IPA=Fg==@H~6i z_iu&6u^!MN0e610w!CbMA#&<)F#vz(gtL63P3 z{!6A~Q7#Z4U@9!NYS*!o9z@bq`$+|3Mmc3Z99sKr_8 zDP$h<8t#d7nXkdpI&0%TSqlTs*r(_mU7FLtj}cWy+ma=uW(TflWIhUz4Dg|#LN<4KZK#+-3Dph)sb-UV@y zhTy2>S6$kew1yklr=gViB%zj7oPA=xCY_G3@;Vdt?8R>rLgwbx-S+I)Ugj)HD6g#q~4B*%iV2OJzgq`#Wp zq7S^OIA(V`Gnp!pYHrLCw;eYCFVS+soP|9=j0roRpOCV5i4nwhBAdv<#^Ef632b`a zyalHKF-IawNOiLNIcxOr5g=FHr~wCQx&Y2XDHmuY{Cs|5(xp)70BLtF4rAVVR?SG& z-3TqkB8KdF1|z{fE(ReXp(GnXE5i?&TYwBzWu<+@jNb4{C!eBAGL3LJ;P8r8m*`=J zvBgx?w>BlbatnglXf&HmJu_z5Y|7duYE5a6qfkv&kP7JPf{Xl_)EXhGX&ZXhD;>3NbDF&mE zA4m12v(mdR!ygnr{u5H-8Pc463fmzp732alAUtUO^3$(~T-}CTcd2BN!bPomS(ya2 zC}p27QJ!mFa+qz5$G8LuY)A4k@zF4=RxjXNA~jZc%C{>^%wa1za%?>CM zJX@YCuFt!oL69#XQh^>BGnQVmKr3DX5bh<0Q)4`4YF>S+7Djz1HY4snxQs2jcH~i( zTiPibi&OOEur26Cf1`-F$nl;!9n4=7ZBxK%xWT<)qaZ#=?P_#)Pc6q1QJBp%8{C0x znN;hb#f+L7Ae4osd=$YXwC#yKh+TGd46DJlt0G$!p>|x8#^*-QWij7eO_L*!mu?nQ zDGKbdcx?wSd`?R|!Z-_U{nhObgvf<))H)STvs~B0^f#2JM-u(ob(gg%$s3V80ms^+ zgpujWJq6V8BGsq2zy)jy%p15##*A`Sim$BWyv60}dLMJqNr#yBbC*R$K|y=N4HIfR z)^#)_d^-Un_Q{Ordmw=92Pm&{)hx4JtgV7G{yjx=sSASlxh#AJ=KcItk*YC{OM)ks zs!*+B9qg{eRNPTKEk4+L8F-QPrW{tlS%!oiafmn!|GtXwc9-{-_Dy5^mOcPGwbMk= z=hzyIG-5}7!p97A6rgJbzMw<{?MM5FM!D|k7&$V@E>`_`VkV)51$jM}u|mZr#u`j) z&Mpw+e#EFLl*GupiL9iWJ6_Dn=TFEjP9NTz>Ju9`_4}=|_Y|>DcqGY;+^gDQoh#;#ZJL~Q3Futx ziFg&o7)VTdRUY>n8g-;HM|f<#NMFA*J^Ie4%nH0)+q(ksQJuEuhrAVMEauM>u)x%Q zjg-34IkbWV-aFGzok5=F=;zS-l~!z2!=*IKLR_gQM~lV12Zvq7REJPYu9F^O5erZ$ z0pYbBfixtNgY3GGY;jClruhY)_W-B*L6U0}TY5fTA?-mE9@F0{32(v0=TVFZZU;O& zQEOp-V!`X3`D3+?0~>z=RK_s)#T*sgseJ>&EfBe}%n~B$ZEN9P+>yVlcpSS-UZlb=T;+>8Ax}(@m z?m?Dj=x6lkG^LAJ0W@3X@N%t2wB$aKQ0o{ilV!lY8CORXLox@j=?v)OEu3N;pPfyD zQ>2g^x=CJ^R3`)y*2GT2Eoi&PuE*!=+JP4Y=~0r=)YZLsm7&B zbftkCEgQNH7;fM(*RXlG<$A_Up7V@y-ZU&_1Sz=SS0oMZx>1LiE)29gy`yoVm?dc+ zViyfAu$`xRjL3@x92$|N9Ik%e zz#ox1j8t_hRE*$pQdJT*R;@3%k&md~4(-Z$F0%7K@MrXI=wHZ2bPN}Q*ks=V9Lb%H zA-q_vTF?*c?h3CGw^RkqGonkj?Q_VJ?~0wY@e&1vLFqB)G`8R~dJm7F2xH_yZa5)! ztgoxa5cVYlXn*X_@vLqO+UR$*745AT8;nf^2G3RvBn_#je^z^rh>qFX2>O6lkNn0R zyS(qY|L>DV`vLD^8CTHxfmbHNY#|tefZBtvp>Pa-=#s2pK^hZg0fQZ?ycGMM>mDf# zB=kW_aA##YPP8BtEvU(r5G-jXb$z9ny*oZ1Ak@B~%wQz@w(`3^o^yNZIg=xR5affy zkNxS(c|-Ew_C{mrFsJnfSDF;E$BL2=)z&nMAD6DIQTqIQ7>zNUAUq~GukKEch9f~{g^-=ATnYE~WbV5uti<^8w}Cc7 z(5)Cwv)g%UF?P|D-uP;VVSdz|d>}Y2>?ZapZ#*f)Hvwl4I-XQRdAoDC>}RdWGpW#y z=wv_KVI3a`7$Hm8r@-+}s?QcKURRy|+Ez}tI5($utu;ScsJd|zbg_Hi5~N}xF#<;r z(05YzrcuAwPIY|^jiDp?hhw4WPH4urk>!5nLJB>&{82Si)%MFTxWQeJXW4imGR)w= zd{j68E!|;n=hqY7QGWi%3Igf`HftcbQo2Zvm<2w6^x^@eUcq{vzFUH&VEZ4|%3q$~ zqt2&N{<$xRrk<)Q{Ol=5s~;jH87a3cf;;boZkGOf=uX81WFh+l6S3^eaxqh+wCG$} zdAC?zyXrY`075{$zj!q(4#4gPY~W3R5iZ@oDG*k?j~wh7)G1s@ZQ+$9R5~M!!)+%u zYPSZzyBK&O;oX!CO&}2qDZKxKb^Wc=sM;GGQVhg;&e4=0FYYbt#x2QVKv8nbbCJK% zHdaZ|=hE$zNsOWF!21seQCba6e`Fn@cE;+ur#`h9hn8QBPG{M>JI>H02YIc2{+NEY zPnO8rX|)bqz@3u9I>wpNm))?=iN7jCsDhq|DeW~O{LGmKcklKf(ZMFJj^T&NjkYhm zc=Vk!PPSK?76|wj=S3T9{ls{6^O3rj8sE{bqH7c+TKs>msqQfH(*=vLh(EhuGDG`a zYCe7y6$Cd;@ZKw@6EV+ViUQ-X0=AwG*E+W?Tsy?gXnO>NOO*A?<`RjZ*p= z!{LLQ_Vq(~tm50WI#drFQ{XPtRH+pL;S6`>NHnpWwu6WyR=8=LSaLB!HwMS|zv40u z+p@55gg;EMM+Y!K&vNZ>ul>xtapnA3Ha{G`^2|P#mA`qGn>O$N<}>*l9Qkhp0MvA< zGs*o{E+G2=F1~%L{JvP@obq|g0wEHC$rPCnAu4I|i}zk~v!>*~Gzwx{cj2DrdFJ9YOa z@S7py8UjA~z5Ox_aE)H27n_ghFrjG@idi@7=WVAtx`$ft`QUX{l-u(igR6$Epthg~ zlQ6EJwNoHTc!oO)ybB4B*1qpM2T1NFO9~w3fWzc#hRB4o$c$^Ag({jYb2J!C#$m;< zOes3#RfGinf__Y@W*GGyN%)aR^bq`twg@A+{n|i_K7QuSBr1{>YciJ4Kljl@ES)xR zWJaa&+7vNf4>8GH?qO+Ff3%1bgxjRCnyRX@Twa;BuBe*2py#Vg*<^Wzx`HaUfo`=_ zvj4Y-aq+V_c>3^xMO9Ry^!s3c8^LR4eBK%~ANHZtMx~Ig{sadFbWa=hAdD!zP)pZ5 zw00&6UL(#KC3tRv=g;u3)3Vb^b&PQlW5vyY$T>})^OQ_jZ-oiLD@5SLuyXe5V@2dH zAX8!H15k^XW>8$M3M5Go70f4hAX;=J5;?@_x?vd-K3i5?hLXjS$T>~LJg(QwBk~m> zMGZm2uqL#3$YD<6H63fPKDv&GP>lGX@sQ}mi`~pPCJpU@ZkcUcY1}I6T9Up1bL~!ftADEH$k9~ z-tM&mJ}`iyeqp&CG&Ol#F`J1&Bav4WGKUr?bSoCIt9sQvUH{K}zW05PHaWbx!@z+O zQsO&#MY^Q2MlLoq>aTqc6pEVklc*~R+bqkFgqAJlFq?uu>VxNl;VW{G7j4j0xC*R? zGzqv>9A{7^Gck-=jvzsF;%L=4XRM(R)nQ3T=^tjd8hpq>US_ZvkK@63?h^&43D2AK zns_hSqlz2aTD!;y0x=;GRh`2gJeR1itn^7-$U$DPa~Q;vM`{PlFD}(X*A4h{q4L0$ z-jE7GY@3kUpoH1K1@i+rEC!^p3SIX6{M~B%O?V9P*y?OM_zq(deC@{0+0#P%BIuWN zJzFe&^P~T>p9~R)53z7{0V#ku9-g87dcpsT`OAO(ekdRx{^|u>>5X+S|Gj$~5HPfo zpa=DHI}PzE!@Ds{&`iDGbUnx?e$NF=ajkr?`smagzV1O@s4X9fJkGv=vlcm6SuUPT z6-ZF1>r`^pKSeGk_lTk+yg?;AnEig(GvW93yg+|XnLr=Q7IDAq&1JJ7B#8Yid&#M{ zddp|(OYz0THe+9@ibW2vQr=`+A_UGlVL8ENN zi-aJ=h&7Ea+Ek$)FCPlWYv#H4M{Q2OqPz%L1nsG8a13JM0s*lM*ZmQLj2kaXbVM4y zfZ3jFu_*9h#*(jgSJr;%FZ5OZpXnF^Ry|vr!;m*&Yv7fVX(Vrb)xX(_%HeOoajUU# zLM-`pJ21o>J$E`BmaSFhPuZ)wW}L#n=@=K-83GHZ=FRL-*D!H9###LK4mM7cck_z= z7Dk{z3-k+SU7`|>BaBXPdA0<&90#;yT&a%KrtNW+S!=@@xdYSa= z{q%8|vBo?k!UeIhm26D%Wh`ZylP;rDszLck( z*hEV?@){vA3SHCtz|p0ev7NBFHZEF=>`0Y_cNh#wR!d01QVgnCP7ow|_JYgYbup*q zikKueno2y+vAi=C8;i1TZDhAFm?2GOOTY>igJfBZ{MUUg@CM!>u=Pkn09f!N_};6^ z#Co7{tx=Z^oA?YF4Xo8g{%=baS&E{Os#fEa#Y89Y%Z*OOe>;_pJZ^RzMOQ)tG6zY2 zB(tjvTZosN%4M_C>NrQ{cEAm9R7HtBvl7KB!#XauoZ1ov&uobl{VUpuY2z06Il}sL zu~Dz}8S-ccowv<;6d_eG@>DWk`5U4>4X+82KD2hlH`kq4lLj4B%w9eFa-(q+M}Kc3 z+Tl`KfK@|#`&!#Qcs2?jptZ{4<}S=qQmP(;;YLZVlnq&hJ0yd-I@?)OJo)25$a0zoA$Y!mw50n7c%N}J_iR7b|D#SwJH#CDT=ZRqAH+M zzN0*YR<{TJfl{5mOj82}fc{12Uy7+PA>x=qnL!gA=di-)g<}e34o!GW!U`h|jwzHm zG~vkui(%CL+d9u$b}%zOU^+r)>xQGUb#^)xdU8-2T8WI7Z|i^tMNLzpRI1NqrqtDL zS`D1w7yVRK8n7OZ{kL#`LUG2WGPQFcbWaw0UpAELJC(;Pqaau#R(`@K0ZZi_T zFOhC%7~b2Xnibd-uK-s_telyLG#mEhxUD_kp&P&nR5YDhIp#7obEZ24* z{mvj#LPjTi|8_3TA0<^RNiKr+vo;VJFahbDu9W=E8y-0K^gfj=LcwR4Hr6%rf8Qe8 z8eGB|C^dJo4q|tq>p5Tkb3qX3q1NixTCHDs_2kJm*6_~96*=0*a#}4=D-*6(_(&nD zmP!n)cHJ=o>w$ef9^8hEuP}{aBvgHpa_>tvva5JzHSVN%&yMejuter`%4 z>cncvuaV2vD1?DB`y7JT7;b5Z4t=>k0s}OQBS22;7~Jnpb8j-ue#Z}ITseRqshhR+ z3Gy_SPAyRfb?_mR85^|1IYW|g=Cs7m7}0yFpqCuIQL?u?`M4yQPACE$A0V$bu+O@H zam|_dzmJ3Cv-`&jv?LABUw`;9>_bHm%7{8Lj48R)6na_6#lXV!9ihbr+nzo>>Z58T z2v8s02t^ztMDypLXn*is;aAqBrQbRC4j{YT>2|w3e!mYA)l!S@*p8A1l!?~@@Sgu_ zD@y|3PdeS^w8s-M%L4ZBkc@;ji2guKyASudSe1&9q0eF2Z`5FeX6e%)w z`0MNKG0nW%{4x_vqiMeBAiJc?`{}F=9^Pka0!^*;KHdmz1ISQEd=Yuz3%1ObhiL87 z=x=c~;d%bx1OCrv#5ekX=mHEh+_2tge(CEof~;FWgf<{oVI!HyKFK#wk)^M2@9?s! zd38ZG`pHXVE&p_HuzKjxzob-l(B3mYI#BAVPp6*#@8;G&`X2IVZ)n5W21tCItgtq% zaYQ+8)VT=@?f6`<)Xu*-l_caq>nItl)1m9RUP(Q%)Fq{sj`*TpMikWD>%$q&MDBm? zgdMjB^F*yQff~9m&qLORYhfg%OD0`FX3eNfI*U4vW*=BdvkJiK;kQ~_)YXd{`#{)$ zGb`$~fkHAEPpokcm^!=6jdzD9z&d5$!um8*Pg`%htU2F2arI!>7SG z8a(`imy)vz3vp}PZ_3Cmi8baK;g2=y2{qR$FL`(8#w%HxW}VJM!h}?Am#L|CRruhf z7IanrUU&`S;ni3!mWr(kUI?g=2R*O5ta=^OCV#K5uVTRbzMb5R?xZ!)%u9*bJI7wm zF*D+Q&@oU9fA`&I`}&-E2w1h8i9h+nN4_{Z=ROPXJ^^k@%CSW_uR3`y4<>~_!#3bq zI@ninkj{W2yPn&I@Sl3aWzkK}RL8<{U+ zRq(|gTn(jb2(JAf4#L<(z1>&c1tPfO9i^0HuZkYNYjpSdAn6g{_u_VsnRlS_9tBt> zp#Pyis)sGB@*hf$@SkcErxj`4KF5JG)*0qw%L)L6Q*su)Er)QdZ8J~^7{RM?(ewiN(BP2Z!6R4oR~yHrVLHz|U>kZN zH{2!i{Wm$A|3#MLcwRtlKx4YssT`s`1Y@#JjT01dDyE0F=`n*6q3ocXN@!;VVcsK7 z>_1K5b*mX&7kO`7FCQ+WGI6Z63F%EcpEztwpg7b4Wi~a|uY1z;Vgp6pyEWo^VQIkS z+sg1mg4W1c6kMl&X)C@3?cJzrUIW-R|^q9$fbmukXLR-W}#4p%v3tEB$We_+DXV z4<_IR-vjLD2sQ3c_=`RleEr4p?=H3$JkJph26U+KIUs!F?M+L|i)oM#&`X=?w@>Wu zg}+}34%;0ZHd$%d@mhwwJxnI7Z?@pnEFAiXxOhwY7tMCE9eMf!!OIGWA#qhnyNU%~BHfk}Be6z2Q8cm|ZyHUT}kI31whV3Ic zxVZ>+qxRy!_?4o_f!b5JKUD?~{26`#*!kRg~29F-zXLs}7@L@#HCTGJ_(r2BIbQT|7uYmn1!(j!`?Pkpg zFs619^s#AM&6GJD0ZE2>p9!zllUj4Tpz=B^YffjLr-5DS&8YqbQt>-uyieNGh+{Ym z@hpPu$$G;rC}@7!xPEtmn@+j6sQaig-f?srRT*t~-9n=_qHPkN!9lRmRJkV$B7+n$ z2s%@}nWfJ)V~G}az#Gd({eg3C5;5}xR#OYoh(!oor4TDg4i}Xbm(m7*PGluEO-Hwa z2-TyJnYCC-kUJk!xkNA=I_F|MIEs2R7oRf(74wRv`LV3p17Kn4CXtT*|67Yz9vX#v z3XSF=4FaJ?gTJFM(ZBYZnr#00YvV~3`FC3!t{1lutHjE&D*11FpWoW2K(gucyIjZL zu@(|H2#?L^QZG3{^61l5UZXyX-=MDN1>Y!D7EdUjOtx=}d>_C!kh!Dyjpa+GNXb3J zBkHHqH}4JO#?~V0TLv2yjuO?P#kbn@y*8uqjbx<)TxR!Oy=J~P&Qyn3M2=p82xKbL z6NuTiD1s=Dc^LAE68ekLjs7lR+XdNyyxd$HpbZlIh8BisR3cnSIh@^^R1JtP+fbO| zMwk}^dxk9CXhk5eWAxnGh;Q3hWa-%CLpTKP_d0k8wQ#`;C&pWlujh>ykBff;tECp+=|wu*bUldIIHIVD z37?g3LoWn-By{K?_-Fdh^xw~$nU#yqiq`fF4R>3o4Z}knzo0{l42+JAkN>fB;YfGH zp(TqJEgk8~?He3k^Vj%a%Z~oyZIb$GHncgVmkRjBuNn z9^EwlSTPs8BlB+0@_e^j#|hB6f_(Xnph|*;1J7A=Pd~ZL^sb|hqhQA?!*|XvItG5x zIu1@J(|;ha5l$l@j6Q^RUl&~^=t%a z7@iAxKvH^mtd)Mu`!IbJ*tdR zVR5;l^{KtSLiQ|Cw7ps9a3Tf^L<=6cQ7@Y;F0$SD+UoY>2T9WDoRD{-MP;BpjLnX9 z1ViPxU>|L#I!OW*$~!?JL?Z^`=5g5?MLWhZ5k$>FOq89^N>?0OTgwg4qWBnU&X-Uz zN!;B;yQx-?K@c@wOi6>tt9BH(Km&G4bN)_zAvc8I$k7@ZTM+Dl4J;XXS{(=Ql{gS< zt0Op0peWu1=W&GA2YCY7;@=X|Zlpd#P+sYlp3I7`1>4dwhR~d_0^a$Fb3f6t9rl>`>0jBCmV>EBR-lz8 zx6C_HppaEJmxBEO6ROM}dibbj?AZy47b^=!okU!ukTASRto4}r>YhC_Sw5fl!>%*TRNYC&T3Q`HiY>Tly1E%k^TsXSqc_U7Ih1|#@Nfs3+NeN?GKO1lF*R$OQl04fmng(q zWtI%uCXJT0^R{Z-77Va!vZ5Tx?1`^1m^bJs^TF2$Jdm2V%+Mw}RzKQYkY=WqFA^&C zes0Gxy&0uvoz0b&e5Pk+aNCX&$i`eYN@E`Xe~<@n{%{Z8GtUaCX1qmHe(>Ejr?Em< zOw4tGU@3lq=}+OQ;GX=%tNClzyV)zwUhkmV43Wr})m%uZ$8`$(U3dl9SNCA=NY(pj z>;VG-NvPF;D&*CiV_F2!BpZeB`#U>pSu(4Zw`z~awgvDu+{G6%kA=t67Cmlo!}NuI z%K65=g=3!UF1ldv{n;W#kt$&Z*P@yhA-B}}UV9C51H2%4{YHZ5f#|>Q4YRgO953S7 zginx_5wuxGAWEb3qskxPbwr`Ltlrz*SJqfqjw?81%f==7ZgE9_fTUsTAHIGF&Yvj$ z$@0{@?kJvJ4mGNC%w7NWw3D)a`#w@ps7s4ClvUegZ%7)6-}FGNfr%2cpwyJ+OEuf9 zk`{UPHclu3NWQa4VH2#{+f_agIvAoxRnQUr;dO6Y+aW*@~M--fKS^Zpyz4t zKr3j3{%8ia@@IbCv!_qCj~RX0RULTubQ(sfi^@F@pWd@i4*1^Q&s&B-&!nF{=E0s7LUi_fI=1C zg&u{mdj`cK`kx;MsWXhN>bw=Ay$(W4Qi9fr+9UMvyu8X{3zn&_Osu||P{D}7T zDR?=Tg?b{|;9u7-UD{87KA-Hs_Mp)}B|61<@@BHh|w|aQTW$=e~ zBOs(U=}nu46!&;MpT+(EKeqwD_*HRoMysB-*$aK^q$Yjlw77D6)4;;1`+>XuF-)A6 zNuHjkv2n_NdKSmK`dRLf>Aagj+FzFN+!08#@~hPbX~O+#x_ zZdJkj)e%yf$3a_(By`pUEfP~crZgOFNJOEU8&HpfAg@}MDb&!#;a1qZiH#O(L;G-I zhOxDxPjF!EnVBHkg_~+?fX~~Y%b7wh$<4Ll+%VO z*Nswxc0~2*74fO$QqN(}UMX3IynX$_)<};h8f{|8^69Va??BwMe3`@)mSItJdR8G$ zWpOZ&p1#t1I@Q)gLcYB^j84N$;i?5XBvO(0alP5nk%}T@q(U^zT;gs3T#XDW>FC2WuO#8s5-o&Ns@p} za@BGdco-VXz|cXqCh+Wlawc5&)Jhzpq)sduh7*9k3!rwcRLz+N{%JhWPCGWoAW%rT z*vABJpbiF0wP7&xm)wChXv%FsJKB*JWMLF=Z$GcOFWNML6@Vu$643cmEW<=tZC@1# zT!xokgmYdky$a8ARcQ&X8XcSPzA+p9FFGdS(ml_%tm{@$P4BRragFTbIBT<-(bT%- zx|Pi}GPhvC8xqHsL62qcYwkqh*j>kkorqExk(UCqEFx7sv}&7>$Y!>Lb08QR{lv^+ zoQQ=SsbVmRiB+?3nw}<#X$fO@MR1%6vgpXA04@0vT9J!hn{)j|IZ@8_<)I zzJ5d-H*!Xo#t=eJx<)upsRgnUo9ph@(iBbPl)QZCGElUoaj|pZ}7Lc%ltC ziGokf$_L5G@@)@q8vo=ZJcCNj{ARcremg(@aE8=qCNCjK>CI=NBz;(`9ORSA%3-xk zU7Cgpp+@GokuEhdN2}X{9(2(bY-W6r`OQVpWh!SzDjVIlzCDf3h8cpv?>6lN9(Yc* zTGrvL0(7EEdq5U4h<5&`;{AoCiGl?FP`qgiZ$pZmljQs;j=6m$ErZ3~=@Qs@oA(~H z?|5*7=?o$OrlwGmpgaycvTZ$-@(+{EAom*zgIvqQ%#HR(T~5H!3PDzaVwcE!-J@j^ zOleDk0P=RScv0~~1WWs?5D)ZQ6LE89DK3^ynd&=^ia`Uvb7StjWhksdo@?>^KQW8IN%3t^3 zx9`OzkQjsBoc_wN7zi;3yjao=SIQj43dABlBTQV6_JGbxVwcbD6qout22?`G#uS54 zD3(gvOr|oEQ`O+zyHG=PI%@?q%VnqY3esGT4i~x)oG_$n%3)0(ELG3ktKw3!ZH{>{8UOK1S^4M7;cSIu>R3V z^s!P0{-dSrSi3z~p(sYwbl@`ltmJ`9mi?Z$egsY(nHO;02c0s)ISBLCFn3*2Hjy_= zV{XEM?W)T~Afo5`$^Fmo-+zC~w(%e5><1XKRr4$6t&EkJTGi+WNI&ccm+kP z-~o?p3!N78Cz(g|&Unr{0}nfsOS~tOaG8JqM((Tmh*R{droT@;uKnWVh{z`bNr^bB zY?|_^BS+mS5+x}if~%tW&YzK^(L^rqIPp(B z?WxzVn~=bhrV~&hxTZAs9_@|B zp5YAjF*SEbp~f>sgs6}lJCnZ%5Sn@I%hD1>xYc@1jbG?c1kTkH&E&#t7B0%X@twV^ zG{dlh+8@RQMmSNRNs#2U7L}Z$6n_JLNQ1V$E4%;NdnF~YIj{`F7kvF-MP3>Qa&w~b zFie}n02x>?n5f_fbNZvLm&iBC+2oTX<==z#Ki&9l@cMOj3?3Ss&>fVgN9;voE`oY} zQ~{o+JOFsn31ThyKYOX!@I%?LSuKFoQc=3BXyQCDa7vU_!|9IYCAwqs7_U1rJX?1p zJeX7u{hqpKfQ~yK`Q$zl#gE#{^`?!k7F10$eDJhX6jhf+$Z4>pYS|6KEpE*2wlA8i zejrP-;Y>!;!IX9*J0`x@cxSC6(;P)KeJA<5$>`Von~1339d&exF4# z*;dDFg}7#Z9KWeDU5GaZ8b*|*8|R{L!XESIn?b*ck#jy_T$tO*TR9uN6hcfjHL$+d zbr(ElA3@-65#I58D;>7R{(uk zPGJ|`hc1!DRi!jmsnob5=s{fC=+K%mKHNSo4GR@Y)08XJswE@Kx|OpY5Q5AUX$6)H zPu}(*1mXK3jao=3Y>@~uF@9ZcX+gY>4uPIJJNPwmD9zD-eLHObuf3$)obe|nAJuBr z42-ktCegj1m0oBrGJ4Hw*J^9}-R_?GoJHFF1UFbN6zyX5IB9CYiPqiaJ^)pEz+YtK z8TnN7<4QmGj`u&^#-)GT+!Gf`9^18q;ba64Ivd+WehFG>1z!w#)K3XAPXTfI*%QNy z=kYJ6XW`PjNxZ%Yo3~DL(0P9eeb3iFE`&ot{+Sr%8NGPNN?sb0Dk|d@^8iZVG`*bz<`xFu-X&SeywQ9)@g1u;4+Orhi z?0pG9cpK}%s0Ko}H;+V9u8}hq14WEB2Yo(hYQzESXvtcx9f)QjM3_tc`0|jJ93%J! zIZGGUm+ynfeslFpD>1vV_bHY2lF;ESJxhPAcPTur^(KwF)5SA##I!CG2xsKp|4o$$ zQPsja#{%xobs|-%5S;A9m6p+D$yb2iU517d*_WJ9_))7O0+2RCz^0OC_eo;lO_)Aa zMLj$2YQAm>Z+c-D2|bf9>kcb8vIs0u{tW`@a#gnMr7T%rbp}T#eaBE`p4NO`QB@xh zYAzDS97?24Fh6P;boS!30IAY4g4WdThJswB^^&=Ry}yb4W|{GLDpRZ(AET1K=8aAu zHY7gi90)Q@U}Rf#zC;}-Lcuk19T>8k{9-_ln9}sno1Ta8{c>IWNje7ZL9YcY!k#72 z+j3Joil9GyN5Rdh^k&VE^%kE@uYxV;1;7F_G)+Hk4Zl%zuRpOVsgWBFqzLE&l}ez* zxp+EH3d>Fq<+cQxh^*-n19lm?OR>zqP+ zffKQptYn25e&frCCY<8Je6#LPn6p^~FNyzGDBqg0G3C)`)d#DxN|hv1lF^;=SN{Qv9p-};p9Y(qVO-H$7B0EyBR;nip~_P7 zdQ`}vH32m!tSwP)JTGNhU5HnQC_j`JFrR5>4XH}J>DBl$iAH}~k^!iRE_!2*&4f?zJcV8>9Sjq}aIY|k!j>=S!6Hl?UjI82v zOT{VR=2KjH28ZHG^v!J0)}Wr)U(sjVwKr%+a{PXwP_hv9x*LZd31)FHke)y8{^{i} zzg<}N@;Bd(=IHenOL6hP|Kk4^^Li62zgVhBPOcd2=Tup_+`1Ud+r9{_K*tE3(FzC( zMw*&?EVe~kS{hsX>wBlQ)>cDRQ~8kvdXkJWTl&Wz-zEi*Ou7rxpY|)~@ck=Xna|=V z47r>F&~lQ$0!NrcWI`$!P7-K>;ohovdN-@&iH$C1@Pz!t5K6V}-wdv*`PLEPYv81T zi!9!4on~_TWhm@;lMp53ko23UQb~YXYUHWnE$E32`#nF9!+}n!DZ{+UT0m8DT|&2F;g%i{p)KqM-Nu+Kq5Mdq+aZ2~-Pj&2E@J!uM`k9Bo zAGfTEDQaraKzZf_Kh(CW&ic`So-yj{4fl0jjsX>`B8X}Sz2yg%2|)i)%G}f-K`(6V? zjeJGok`m5=ZYQ37gTN7+1bNk#H@^>;&TD`8XccAs#8Kqkc2V}x@?I_n@FnuPN`N^R zSy7P1cfDv9BgI?OepYxPtT%Z>0r>ZgNRj&b=} zn#If$a;SI(ksAz4$+=6wk2(FO_TkoXj^Sb`VGJjg0m7V|91d~P&(s{Qv=$hkoM4}d zaN>wAh7vbjCUzzQIbB9XwxbKSu{;Sh@J8U4bD4> zg+ZZQ?&!e3CKBP0X-m@#j402sMuDZjg~wcYSE498Xub*FI-ysGv9p7R5##fOt9iga$;7erPiRWdjms(0h|@Uztn!;s5)m(Ur$5|c6+FRJPGQ_c z7wOfQ6yM)F@BQs}mDcqiUcUvrWwt%=H=|8lZdFAJ1qF|?1lFP56s-;CG3QABYyWL&padA0<($IqP;qa`6 z?ChZ-HJAlPmyZxWQ0D+mT3qt~$r(aFOwhIK`kPoK)#G}9HF{xg3xc~_&w<4@2o;6P zz5{^CTNv~w|MVPP`8KqCme0NQQ* zY9m+_*T}`i+1}R@%SzMNQVE@#kMuRCFSsK#ljNy~V`tN z+EDR}q<8AGx6)5hs^j7MG<}3ND0}c7xf}FnH#EmV`}`)^lEiCf#a%KCuaY+d z$gl5_UyT{=X2bC`_p7pfbqWI4j|9QT)#@yPQTgW;SXL-bZeFm-Z9p*f5w9~I^N$4e zw_mR({sbzhb}v+%E_r17Ss@z4%UuU*Q7IkhaFm>4$_8MeB+x@> z^2C$8G8%YBi&3=Tbi^--vhz2W@KPrsQ7`2V`P7yEm*wDaMti%2_LFIXTJff4<9@`4B}nire7W} z^UGq}o!ot@@zOt^r?}=nhzV zEa1XmUvNG(C8!Un61Xqd$l7#H8;3WIp0l0IXDD_?2Tc1rGV6`^QINc(CoxnmMm}1~ zQ^yw1(>O$>4PK?a4gKdM0nmdfX0XV07-MCV7vz=}*`sO&~QT1t>D-i)0|1vnY~&5sUp+%;vs zBY|aE-xh-v5Y+zXH)} z^*xNMPa_9HgK=ibj%kweUWlqA=Jc(X3lRYh&)#UV>2#X4-(X7nim})U1|ofII#f}c z3YNc)8D<$SjNE%lmRt##0xMnJb=FQrwK(SCpW$P}b7L}8bQ|R*MA2bDi)$pZQ!4DB z%=e7qb%{3`g~w7G8#zGaJ>BN|DJ^g?0pAMyhqraV$SkoQdTCwem#oRp)nfrHkv^ zwTfosLmPwKvzhDeTadWPLHB(MBqCud+mIF>IfYu)fh!|Qs25aT&!|*K3a`c!Fg~ih zU_2gpo~7iv0M^Ep76e_9HPg1^A%r1OlmK@F@kOUMG_-l!y*6A!z6kn4NJJ5lat^qQ zwLsz%XEsnufWf|KR4yP0J#fa_N!-AsO%*wJ=0rs1iLcsJ)Rl%5*SHhVzoaM{+To$1 z1c#a;xuj_rY?wR?qKrT`!=BvE!iIm_7ju;QF6y*ply5 zbWYc;;6jcO={9jdo5r0bsomrtIKgFhTXv6jWr5ehsvPQS)L=2KSxsCIYvsAKV z2_(jE$Gbz#G(d@z>HuX~h zyrlzSONp~E39dF6=j0`GAQ;SnSQ-;>$Yg*yM)49OA`LZ!Rm(dVi_RTZx&=Y!)nogC zX;QF&WyE1nYZnL5KAKxa_1?Ilis49oB1TF|#b#l50#FSzZlf5EFg9sfSiba3KybPxw%A+PITGE9t=2acZ=i zYg_NcmxS}&(dF!FR%SL9ITyVvIp+^VIKOJgTHjn5QOnr?K)}G%{iqpl&Ns(dBOFj# zadP#~^~>i)9!J1bi~(106fvvC;Rs4F5dzt&abuv`u_~x)VC)i{MHo5b#DteEOMDc) zvy^)QB-p16E*b|$5m*b7?IQMPKDfvtn3<4ryWuM9dYC?tiG1Ze{!HP;c7NsX<2K*l{@}6j2pKw zgYgz(3x`|W9blrM+a>XL4qBR*tPas>+OsyBTdxXj8qQw1i#ay7L!B|&sxstUh^F5% zqm;zynu?Qpk(+P^=ZeNst&dZ2p40<*qdSdIB!S<5QR;LPA1N3hXZWqjG|oEoa>Z zIB`u1b3P!zyd3SA(0(e&aJD|}=Lpy~<94pPvGl|8j<^PV6xpaB>lVxpO=$EZTP+A8 z<>t(^5~A*E&0@}#0Ids`G~C?Gf|8B0ZM@^W_c6dC8+ z^Nrc?@6%mxuV=e|uAS_RM$*0ZLm-44;X(4SHUIocel`Q%EMK%r;^%;iU0>K(f}MO? z2L|Y6d*+v-y)mp8j}7Rq+Oea!tlgtJ%#q8on9k%ce#p6R4`cGwZUsTaLiKADdFu;{ zBwUFAr^{_EuG_R}_W?{DOh`*w=N<{x(HdS+kT=wAcO zWH#jkD_RT&{a~I|*EQ0zN2X=ljun^?Do?)M+qmY`c<+oB zP5ThSJUe3B#$@Zp#p$U)jz^gqtH$XGK~``PjtGOFIEVh^hG80@3PkWcc|HTr4oYfQ zVQd=+YMe+8F@*^MQAH@dkcxv1ZfiMdT0yH|tyPwLDJT~vT{j)0Ff_06lGOw=G0h7u z45`e|6#lxT8(64At(vYA>lqFP zbBe=g8GL1SjOJ1*<5VHcC+n59t;Tbw8K*jDm*nqJc%I_YIc>p5O9sH%b%D)3?_ z$h`HIBm`kF?Q{d`n4;P<7{_2!#Eyf*umBBf*k)2oF`gwUG2A{k0-6B98UOuO>cDt_ zZxu?&-^Dh3zb|QuZl6F3uR%@PUcD8CjYFPK-Am8co*iLIq824g1(0DCsVHS5!Z|X` zN4Cu%ac)*!GZHrf zcHXjPM1Y+ggIBC)hGz3|t_?&WtO0^4r`iVE$~0!g2g(Qqisb}Mp^d1tc~&Z{pd-|) zptX@uqM0misnCQZvm5Oyp7QqBk_yEb%NQl44dvX%I#yu`mfxjHaA5R+@NganVtPcS z7R;CyZxCIYbQmES8*)50?9gO^G8;#*rlzb_Kgv-J1OeS_1{~zIy-c~>!VS@D5YGrg zOhE!9`1+x8^s9<&JFEcs~o3mvi9i&LLQh+ zG4466kjpcyl}h8r3DJ+msP`>9@FCK|s@c($kJuY$IAlXtK4qp;EE5Kw~VhHlS38 z9Z#+}V?uV~(9v-kcY-N}jpV!xFy0tabJJ-;V?>PO)O9|9C=wfMF>)CNv$Z$4IUK1U z*=04y+)zu|0Nr!4a*4I|p_^McS*uc)3^em<^f0pw7*h(b8@S`nQkG(rx~=JKIE>et zhYC8jy_BF~J#mX4T7*1xQx{-uK4X%8nq7e_5h0tOn_Uz!?gyj6Pv#W#fz~nl1t?N<;-DGI7aTtG zcNGzK1xlOCT?B?5623(sn$tA{hFxcDZQnvj>)c^YTG|4oq)DYri4EM80+B}Vo`lV? zs_JVMO%QBZRre=;VJ0q;D@N#v=dsJviV*@`j8d|un3kl+R4EYh5g~=FO|FOGCNT`P z*%y8b^@BNSdmU2`)F4n!hZW;4_9;$D#Rw@$tt?C_Fh$4}Q(Pd}L!at6S`XT>Eo*KD zim0X!7Wlfg-FcxBd#TQ7{w6z}Fj0L}u_motrc#Q8aVTxPaeD98D61ZXs#KDnctPwf zdcDtO%-GgMG@2VNn#OnItyLD^KjeESnbEowhgiyeO$K={EgToB)zWsLlU$C+JwIJ# zEJcxX&l0U}HA_~nr5S$z63{@gOhS}VaQE$upZ)wyw|QfgHNd$@8D_(501 zi1g%W7?N96+nde22BwR9BO(uEs9al+96oZ=8I>ymPZO~0HStqbnp{Y1+i@0~>0$-< z&S#jkJe|uhCftBLcu>h8VaZn^4kFZdW9y^`%zet(8cksla=<>JTz3xVfpfYzU|b4{ zYAFZ8O*M?8)YX%5?k!hk*H>3Lp2Uxbgz^Qpegd78!lPp+X8qJX7%3as!9-1CUNp#a zFTY|3tt1R=tGCoM*Cr2vPQ~CvGOAuvUMn3hq*OjtLxMO1c;40Vnk2Cn&7pHd4ibnb zyhBV0Msn}Wb4{amUnEf$OX(8bau2RpBTa(i&=ukkkOb~7kRqXf5cCO^qf#-wIt~(r zQ{a_5hV95rrqeS)`XaA92iJt%3PR@@xZcO%f|i}OVAGx@^N8+tm8s%{ z>gq;OwBj}ukseVpmsT3J6PIYZzh$^dXBGjBIvmT6Cb+VhIjj|jaw2QIjX64DrZX%z zwk@^CQ8Z6ZoFLr`x>xD(fOP%tyn^@Oi*MUU>vdd=ZBWL#kU#F!)hFnchP6W=-!IDW z?)&h(+*}U&6H3lRipx%Lr;@>Bpkc=63U=zRIu#sW`9Qm*D+2gzNXcg}9)1NGV*F^h zb&eJ#+5Ss9Uo)2RHs=l}Bd$&_eBZjzS?0ILuh}M_&-8BKWTWH+L6`H_Nl&PwvADgjbgCS2EF>sSc8o1lh%Jkm$+g-ValQE&rb~1rwyne2CIg+87Bu<~;fAl90H*i_c zwkAG!a96}$=w_U7qqS9%A*S(f%A74@%l-gAD@H@(%3M#+HuW< z%Zb1^wVbcm#I;bcmCI!SMLk;}w~E*u4k;3K9L$!t3?oX6D93ox>Xc9_@x8y4;Wi;y z#Cd1vWc-;1KEA3cs<{QR_ugoPDZ6X~W6`XKF{3=iCGMcqXOb~H^gP!x6M`}pS*etl zP*gz%(gt+ucyS!`q7VBd4%_t61o9zkDy6RRV;S#xd%1$XTaXmL8X&NP_|X7fW6HHC z`bstwA+KY{_FB*xMwc;FHX+T7H7$6=ne-Oi@fJ8jiVlvp`~f^%S7tOS`8jJ$Rg%_J zq&qA%L)!-Z0!Mg&Jd^=xikF0eq9w8&M5y(2OjkV9Q<)1Du2>x+=msCObVIguA|iQK zd!924qJ@H17ba29>3ZAYm=bBrI^H~FL0u775XId^v}aJmH4RlYEbn{JcsF z^z<-i$Y4_j;Bk1u)TAGoOTx&sjjbvfDU3%TLc$pBkU>8jGEJt8@aF754l#-L~z zuy9+i0tRQM$Gw$C>asmSOXD*UJ3vs<$`^QiXTcDeX{&(e8kdZfHO|A3jaKNy4+PH!jaCeg~@D0+qUwn>t|v0aN$oKv}TXoVhU?>s($}S>|-iD7Zcv z?`SceNe8JOO7L4xCEE!&$ZSjgZd8a1W{UYKBb+4PcglmS8ng`Arm zHgKl*fKyc1y}-%p;cis8NnmR^mRHIMCFg8Yo^Jep-s55W#y9UxSLKkYvo61QCVXMv zTQtJFKzh>VP(sTyp*0y7ao0z0+_&AvX&D~E!q4h3^hryIoD~-r`-j*heb9=Lr_W}A zRgyQ}H+xOu2Jjh2|QpQf_uM?wZahxMm18w`OQ z^p=zyREt^H`ju(rm>G$jwt`^K_+InRGFmz!Nua}YUwckAovNry*5V$)yW5IBb?)ND zardb3ScM}-y>7Km=eGx7MUJ*YNb6P-`Gt6L*~kCfA4p2jl?G+jiE1f*7cUUU22tm7 zn2{JSp;lJQ#fr#*r4pM7xr#_HN_&4awL+epS>|!jYAu}ev z(bhH_V=V?hffSr)_zi;RB9Q(sX3;f!c{|n1Apn6)q|Q1xd3Dr*7xb>oA~zspia47E zZcGTlqf+m11`X^Jx{ZI0pOzZ7??ZU0G|8IGa005lUmLnr@EG)dp=SK)JnCr@lLtdT zT<97&6i%?i0YwNIST~rvK6oOy05hhfvwqR|TD|jR0|w^xy?nS|4;Ii4ZHSS7`};@# z{PhP^2aPZ$Jn{ebeX-+r)H-AEo6xN`C^`0@bXNJ1hWB5a`@L+GD0{ygspYsjK9yTE z;4OLKwdmZd?5r=Iiy;QwZ;rwjP&f9#vz-Al`$QCN+Ft~3?LzrYBL{%_S!qyIB^Ob( z?vl!oadPMS`?nCqw44iKx$F+rj^@uT>N1!C{&8nDeBVy8WJ$?MI2*I(F~0q?uT~YHvF&| zolc@NHSm}`;2Ii9C(A6RR8h?vs2Q*$2th^WW08?85g4^elW{6KaWS&6I$Ar)`_kuc zxVNZJ>bi^0Tsd#L}Nt=d#Wr;h>Zwd)}!zQEU)0i z5WM*kMUI$nI8KjWD_^}k@k=99n>#9hmL*`v9io*$3kRKJ6o=!qnVJO`4W_w{^NfL@ zLuhstiA^9LqYAX8i`oZko@_MJB>Y-gk}9hm(}WLfuOHi~0A>JyS^UlI2VTq{9(aCp zfblIbspxsTf6V|*FZI6v@hAWDzdiQUOooo>lm^4~2>f4AMAVZPrDmnaI3mtMXCz?e zYfqQD@CnP!OI`778V3U2t-caFUH~t|DcR)lh%8THW^}Kd*Z5d90db$4RSmU{;dPtM zscP8NW;V@JTE$T1rKxQmoIuw3K%E@atPtJe#`-%s1#;_^y~HMB0M8AG;xdxJ|W;#f_ID!REDCt}QOL{G5?-<$MRn=|BI)Ja@wvyjGu zfV7aOI=bpky#r=lC!CE1{S5FCD6zqBGu@R7b9akPp{Q(A`^->1w-;)0jIw|j-mLw( z^nAw1mgX)Ja~euCdaln<=*=q_mM=pxyV?+W@9{=6*BkwL_xwE{`Cb{j&(EFiyZa1` z;_wI-^$s^5use=4&YWIKxXq#C10tAcZ=q_8-UY8nel<@SZ0&Fr zTE+uO(^?iBtCK@+No!09@M?h!4pZ$dM2n{GL;~6g%}Y1Hf5bcIuENO!WZUg*4N8|_ zPoKx_>b=*06&VZeT|ev2MRZf4u^1wGTcc+_Kylp7$fmZA8m% zl)AzKUpj7ctTd_=i>-^Kt%Yw^AX++hbCuX+dWJa~!h}JZDwl=eO+YmV8L&xB#2=P`M7#uF!{IZ$+yJP^<>51KHxq064pQu%!aKH z2H()a+Ry?WHhq}EPCOGzP)Eq4QCb~?XGCdghHE=@UsAaK+TeXLDuYNG8Yeg^xQxtd zw}*f_<`d0L89E{SbFn7ghEcr#UUk?zB-QQ?`m9c9%+$ z=~kIsfu@Ap(Z^l5^7JL2K96LSw%bp*sqL19^Xrx^@;aDcQ?jNOra_T%Np=~@cw}ZD zpHkCiT zbZuV2!27nacX~fg`&-=nn}^N-D2M=pB^wUhc<|*fM7RjiR1&0_{-1MaNRq;w2^T9$ zvZ89VI=ulwF`OVNnqfI!5G7erHQg{R+i^WV2&1^3G@5DFYInN5{$My7qZm$*6wR<4 zFNl(?sG4qs%y1+cizkw)bS9h27mB5FrCOu(YZJFe#kA;N?*E~L`NIv;=_ zO0uGAx?x(j<3gY?I0A`6W3V_pfk+}#s5Cl*$zpT3Jib6E601uzG^H{vZ5>@beFH-y zV<-%cK%&qXEDlc~lE@S)jm{8a3X6z}iAzXINz2H}$tx%-DXXZescUFznYUoklI1A< zm>7&ddiYVC+=GG-maquU0v~-ya!f)dqdv*1wxIcc2Og2cT*nso!I%*8P4MLo)(hytDm;$e=b;DN z5pDxSh=f$ySSM~KVL}-fQfXtIxLE)ZCX{g@l{VIin@yNd#)VYcSSM}{K!gcpTu7yj zb>ij%M3_*Ucq#)n&V}A?)yU04+Qz`5-%pR1ouK};%^8+>#{X12 zzG@2&m~^K6uSF2A$H-5J#8eEHOaTUes-?+cNU*8)1Qr^G!KIRp^B38s2SOZ_w ze;yE1UMXrDHxn^^_YZJq;BZY+*9yA)CFYBCpQV8h)`Lcv4x1?D13nMKuAy-nxT;DFstr;Ow5(b(xcGmsgq|KE9cH6rB0 zELY`q^Kr9Gq_;(v`-&t(&#<&bf+}*kJ+29Hv-+5$vf8vY$R9TjIw2;Ml|M1J;7^DM qWn4(5O>E}r-{tky!P#7%_9q~L2ouWq?|8Kr{@eNU%MZDs`CR~g!GVVW literal 0 HcmV?d00001 diff --git a/src/www/assets/noto-sans-cyrillic-wght-normal-B2hlT84T.woff2 b/src/www/assets/noto-sans-cyrillic-wght-normal-B2hlT84T.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a15d87284e5e1573ac09e2838cb781ec963f5459 GIT binary patch literal 20080 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 XX1d(-Mm_&S66MX(xA|86Po4t+8{pI8 literal 0 HcmV?d00001 diff --git a/src/www/assets/noto-sans-devanagari-wght-normal-Cv-Vwajv.woff2 b/src/www/assets/noto-sans-devanagari-wght-normal-Cv-Vwajv.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6f0a5c4560cb42002d5b967e057459ad7b0ec30f GIT binary patch literal 99236 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ʨ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 literal 0 HcmV?d00001 diff --git a/src/www/assets/noto-sans-greek-ext-wght-normal-12T8GTDR.woff2 b/src/www/assets/noto-sans-greek-ext-wght-normal-12T8GTDR.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b8eab72be89e9ab8d1cdada8c209918c1201b9c4 GIT binary patch literal 10760 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/noto-sans-greek-wght-normal-Ymb6dZNd.woff2 b/src/www/assets/noto-sans-greek-wght-normal-Ymb6dZNd.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0bba4dc4f97e51155dc4bc9ccef3d6babec45495 GIT binary patch literal 21776 zcmV(_K-9l?Pew8T0RR91096nG6#xJL0FdYa092a*0RR9100000000000000000000 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 D^~}=Q literal 0 HcmV?d00001 diff --git a/src/www/assets/noto-sans-latin-ext-wght-normal-W1qJv59z.woff2 b/src/www/assets/noto-sans-latin-ext-wght-normal-W1qJv59z.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2a7078511b0b6d30d91f6a87db77e7a583b58cf1 GIT binary patch literal 167960 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%0DQC?#A>!Wyt}q+S9R4HH;jJlmtM@7 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 z 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

rv;R+1j>` V+t(miZ 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/noto-sans-latin-wght-normal-BYSzYMf3.woff2 b/src/www/assets/noto-sans-latin-wght-normal-BYSzYMf3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7be97064bc45ae23f52887b3c1d2bad90f000d30 GIT binary patch literal 35820 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 Msp|Zx>-Sv%0Ie(2PXGV_ literal 0 HcmV?d00001 diff --git a/src/www/assets/noto-sans-vietnamese-wght-normal-DLTJy58D.woff2 b/src/www/assets/noto-sans-vietnamese-wght-normal-DLTJy58D.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..28bf926bda8668a4c7ebcf6c56a850aa4eecadc6 GIT binary patch literal 14456 zcmY+rL$EMf&u+VH+qP}nwr$(Cjd$6$ZQHhO>+HX7=ey}-WHwUiC3z~-U0#d{01)6m zCO0%s!5w!~t^ zfAJi(NHTK~TngE?f^c(0UeljCps~v^=6eo9)Sa$(Sxjq%p~evtT1X1jeCOi?hA78y zKJ4mk7;N!1C$^!p%XjC%vg;TO{VAjW&}DA0HNNKdIQYcFUv}2}<{y)XKrj%k37itJ zR&EQ2ihMq;DI`mF=#mtL!CZ#CP}>C3YtZ+XlezIjgqNhr#$%E!cV!~gDmH-tHS8W< zX8X%6u*|(}ktk6GelCN8Fd|ekJ1F7snX~kZtV2n+s2WPQ)nS&(zbJdQbm8qd2}6Bf z?;6ABescvQL6%9(1S#*pg}9N;(fXVkOst)c`Tk|zlgk*T|C~53sB=GrClb+Zo|=n47j8FiI~li zcIrR-EneiLscso zV`)?R7NfD?#;gKvgfgnS5hBvafg)aHH{St>76FT9J#hOTkhBTJ7!Jv#RwtnDmSNQx z_wGjp{y6das_U|XM}|?cLgsi1$3KVOIc~~&vaJyK60yeqw;3V2P3I-GPYobF{0L;j zL%_l*U1XjFtIyXw@QM;gW0?5e6v=5v0s?X&Bos0yZK=9B%B*DtWB?#afb2eyC@4uW z)%>=3+9@bDK~9>cWS5IW22eO49eX}N$lnF=X_NTdJ?vwt;MaY77AF3S9&>fJ;rk7m zZF*@&=}*%*R~NuH5a>9yOK*95cj`^g`F-%nJg5Eh_=23C-}iQdc`n!a_7j?1m*ZqG zHQhOOOo#7pGV%|GZY6?<(JQvD3hMWVQ9iaI3Qlx|Y79<=(BU+cR8+ZL+%j zk6elc?^_6FDjn$400;2Y{KxiiYq{d$hdS?vE(4hW1DpdOUz3@F&qB|QUD)G*E)2Q> z*0x6(&Gq+HSnq2J#mOd`t0_^=xsZ zRL(v5t*PAi%_UaNN%L>z->m#7*<;cQjg1E+9g9(y0Szppz7d{Hw=+w5!pKk`(2Gi6 zFth^U{KD0J#-Lsc?Pb|xPWe!%ACTHfr-l{3<^*|EF9DK{7_v$ST!xh!T#iZ#*U}kk zW=5@I18%q1`Hf(OKZTkN`NtrOJvi2g^wHMG0QJaIGC%kM+GofDIIS$ zcMDtD1)%Gtm1>2q2^1d2*8G5_r4!HDJnkL|ShPoxv2fx8&VZZuUN5M@f1q8BLPj zdF^iQuPF8)&)_pC9?4>|BjIppxyKDSE$5V0Yx{`%GK>1rvb^+>g#N{?UC{EEq(y`?h}*YR&ZQGGWJba0OJAN*H}; zfhXSlV1j60^(`z1kfCP|Qizpr-|fzJFg-hZ@~vANfaVor=PTMLl4K|7;kgK1X2jNmAN@bTVLSHMeJSpOwb;u3S>>*~tq!O95@) zArd#nDaB8Y8wX;J@fys8DQo$gWojjquSnVHN`R`iW|AFx7^#A8{i`b=fvUDU)#l<5 zyxRss+3Jhd!l~VE#F`VUP9u`T)Upv;nGq>XScm{Sqc2}+D+vQYOJ1VHYfW;CGv_q^ zQh~sXbft|g=23`dj}}ZM3%HaWbcahUnt!CNv=$m;4s6I6s|d>wy}u`rS20xr6d9d?fhzG zMPR_|>{s!MyC-cdQ|H-dRT$bQa{uUp5WfbCmt|JD*c9pc5%nd3Ev~ZpfXxsRtx&Gv zJ;SD%P38(s({-u~W&=g-2+6J<_^y>?lTIqrGGI}=g*|Aj2ImURMwT*AX&D2)2C;?3 z6=93sGsC8R(f$HXyV!!TL1-LbasIBagRd(&TuSQ!m#o0I>hAzRYAw_@2WFNL|9CR5 z)%AEKjhh!EL-_{X>!c6f7>$8;M7&5}kW8W05kV6GycyufuxUN0$Gs1xA0^5KQ^v8C zp?Qj^Rg3l7ArYKzMg6?( zD;%6njC!;2AqiYM`q~IByTM_$lJBkDAr5wS7j)G`+{LW_WjS7_Qse~UqO19t8CI*g z3G7)$lpu@|La>GkPIp1VC(aCeTI*vKcX~ zni;F8`c#w$NZxZWYn2!t(Hx%khwD6+bZEMQM3*)X%??VvF;pHaJDR`X(bFz4SI zZCpWbm?=8Qr;g-Fm(H*hFB}fA9czl&RiFIn6U5-VsG+&M;CJNFW6{(sR<~JVB7TR4 zBYthK2F(|-6fTqhZfaOV3y3LEano~6R7I*8OZIL=2I&W^O(BJ8*wb3HgfuSKip;7BKBo>Er4Fz+3pE0}Dxo3N(uvB1Bt@vRV0yU3=gW z0rvO0b&6qig+tZI)96%s5Zs&o`G3`W;FJC`Q5AslKQy@mYSu1IvoCG!%vprLdBOC& z-?6nmoU(U-fU|>BcPK>Ls;EKn$m;Nv2vGJ?^t}4SB?9nt%J%yrvH~Y1ND`{$N()53 zDkZ-F{N+{|wiQ?_ZUvf`D)PKK)UZ~~c?qSa?lhTW!L094$$`T4Zb5HI&k_lL3dck4 z>Q13RQb>{tV`7t}G7CyfN_^9IB}#hDA(RtDaM|svn1e+{gnf+V@M(c4S>|1mPLbr> zKoyx^sc(2oVoL+-8FOdIp0(#*J$)Y&FV96A5YCox01DMoa?uHp001La++tVZ@R<6{ z0BY54!-(oYxqjC!(+Ji*&deG-*VCv%PFq5M7IS&&FfH|<6>M)cTB7=mMxd(E?T8uh z5COevgu%&pjTVlbU{^g7^*?}s8+d#oUUz$S4O)3uvT%*O9E%f;MFXP zUkID+Z+rl=qLd5!5_1j)mzBZIcCFy-G92p@^IfPKeO|k>Y~!sv=0b{Qo;u98g|YZ* z-91dmL3BG^i@=({3F+a-cN>eFa0>;Z*onJGU7BFYw%kgV#Rb!uXu0E@JcbsY{`}An zSsSn{F`CahMU5~+l)_cv* z*S7os{GLPpQ>^+Jo4b2+jQ~L!YT1@`1R`m6yz85A_U4&sce}pb8RAP(&$rEl)*z>h zdu%p)gAs%O>OJ4QAPRa)9rliM(seb3o7z1U@mwCFyxWGQ-S@{2mV8!onb(Fhq`R9w zhRocO6SC&K`&Y-d+I~#pbNFV2(sFq&z@N9Wt_TdE&!F3G6OE$9M7!uqHeo;aYgRAY zb{@jzHZQ=bqGhpgahvT-b&=z-yy}3j^mA=A+C87lLuE6u%jXYgYMRd7r_U`0l6b`p zz6y-9Ub7@UT>WpJ2a2$fb;uJ?eWA#%b)74~)$w#`x+j@wI30(P!{R)Y(G>njAi7@8 zJZ0Y}jLR|*1gyvvEO`5w84Yd^l*4Z!I>)5A<8W|h{5PFxSCNhQs`-6%=G`qwL5D@J z4k7W3ZL0@$L1Q6W-(3Y9U`Y%bE?tXlY6Iv3ZUF^`#}*x&c_rFPF}Je3a*9CRghshh zi%I)eoQ0S{zi+~RF>?dO;;oC7ImczAKzO{Qwta3l95h{MO~ieKa2R{GIXHo83q{i7 zft;h~L14-pY2~Ka@VC?Rx`~~qqMgioW7xYg06I{AEg6Bh3CRGY75(=9dHNe1q@L`g z9waeABE)zOF7izj=}#5v9_{-sUECgtwj;UmGJDI2w_z4y?>k-rV)1qzWa743YLnGTV#!HoEt;z_w^*xmm zgESxRHAkYM35Z^y-*G*^;zj&MHsQYQL?|kgYVVl`0)==Sb4C`` z?b#Lo7iHCjOA428jt67SYn?CVSMTv`9sF%pgJE~2Z2hBTwLPkR+~encHKK* z9;Kl1s|n+|8gJe?UlSQltU}nlU&Veh1}^J<*elEWC*Q`6($#@1uTZk5w#kJya}5;_ z8T+(a#q=bddf28@nY_kknr?-p{f%t_Bd%+si)sx`FK`ZP(dfZTp|u4A;fI1lM`x1Qw0$>DbDliLC&0eN`^C;T#q-y2(H2kNyTMeZDRbM z5_%R?QWKEqMpE|hk)IbEFQJW`Kvi;0`ae1uhGmq(QGEPL3ff}qqQ6h;aCbn1xIr!A zuTP>HLl7CM&8+V}BP9k9d*|at#iCUFUWRQ=6(h4>T+kt76`HkgOONFYNoi1h5+u9W z>#STGSZ7Keg6VMBB3(M6sl<~#%@Vg_P_y&&8O@`#degJ@g{xpmBDrZI`@Wb!bCX3l ztm(PODX0;85{YI--wZ0LXrqnP0nBj8x4G|7^k~W#yzK70F2q$;Tmpy9deTLhf}0IgCT^ z?zomM&%m9Ej!rMjxO>j77-eNOcj0H2!Q6Re<4AK_*W*aq#CF~QRcn(>ke7(vw z=4Oj~mf|rk*Em!Byr-#nA@i zxmfRLkp(E|C;MN&y~jf;rTZi8u@kwFk?#76FMmN*y?a>66pwaL zxIDz%z;a9Q!8veGq%)Slt3H+NcR@NUm*xjfFTb#V*oL* z3W)@}2V=E`wn2Xs)?F#gV|doFqUzwKc#)>}7{f0vXI6j=5QR97)YTnI>>x#s-FPLW zW}x9*8=Hv^v&>X+H+Z1&vo)KE+zAV$Hu9n=0+ig1lih{&01AP2wtfLbY!`s-l4)j;&yPX>!-n@;) zSk^G_1E|~B%xzTE?DHF(ALL?6v8`bdwj3hyypoB(q3r?@bdK-8zGVkvD6n4`fJ*pU z%*G;{H+LvPN7o1FuqT5aQyI(UAIcp?5P(WzUzM0u=sq&&OF(yc|A6V~?gOae1$<`5 z=9-Ss)rHazV*u532qf(UiWmZ;A?}T}iVRCV4FlW0tSAwsOkO2o>m!w!@vgoh)Jt_V zB~NeC45B-NfBAU%87x5|6!l3D@79`AaIG)OpU%6qd+EhK+2X2Z@FKXlbx&oyJHMSw zEvIM!@f*#{=F2EnXiSa@HMgZJtQq3YRw^ry^2cE?9w6(q9&|F~UofSxXy?hDSr%Cs zicQ*sJos3f)0?j`k2e*>5X4?@K9Bdh%k;iH%Lv;Gf5#m*{K)@B~%XJ4uFVSoN&rL1GlOz=;YN|ohS)>=Di;a7T1okixa zJwNbsxL5dZ81#5`xcE%DtbR6yrbd6q^Al6bvP+ej-ILz+m8y~ z+2&-7bB#zE@$0hLRCbtck=(Ie0bOZbS>8$Bsb3LaabM{0Q^XHGo=Ur#z4-d0bI0oU z*q}ZGTmy;&qyx?a>I3kEMAK-w=)0)BC^HB-NINL7k-HJS(P6v~xh!)Mb0YGvKW1+0ikZUK&6vbi6v%dTH*yk$B%ALl=P(?}>< z5~%SAdo}{hhx|YrTmLOsV-C+=9P)9p@iV?=(>(s8_yGF1Ga|`$ly7nT-l46Af3~f* zW*v7Dzro}%1BN(?jX=lcd1}VS{q)-LYW`-n+EW0{vUb2M$1k zk@a|5zXgIlHaq3^?R}qP%$=P5>dc7LpyJ3C4-O`{=xwZbf=yUK=JGj zBNm|RB>zo>L$Qp;BdI0(%#j3OK)@J5^HBlxrA8&rSgGUguq}>Hr4zExnd5}C2s;|8| zc`TfMZTt)@mdh+idMfezuT!X(O#LLw`*x&gz2jSB>2*#(t?0L8Wb=X(ZF_hQa9>P< z=QQ6=Nax~8;?kH`m?$M?NC(+65omI_B zT1fJ^R>q0_E}N2h!e>47p&Y}riUe`32A%;5LYnhvz4H*|DP9F-nWZ-+yX{r=6;N|k$C*@H0(YKBQxzF^ZMn({$(vFQ z)S_BtPd9Q$#9uC%O^H`_$Iw8#bh{jONu`;hgIW|cv$!n2RXkZUrv#J-kc?1u>DkC; zUfNIMX_D8o5tjo7-k~+9HYFq;!RXz#^Ch3Z*ZwldP+JRdD*&}ed(%=BEk(PX7OkoC zJc8!4X6ER1lAJ3EY1=v^btn?6^N!1I=CXSxJnJ25f~bm!2wDpfs>0_;2Gt>0YE;#k zc4s0jOfS|EP!98!>h&D3W0I9EqQY6AT~n6Lgb8}+Sr{S$`&Kq>C9wqkZ@{AvyOa$T zw>4F$p~vRXlkNa{^HKnDO9Tj$kPMcc^_R)KwVbC~6TDt>`~-m^rxaG&T7Wy34j}~D z>ZWVCaa#*JxCq7KU2MI#WF$>!c+Mdf&=$F673Y7AQOPV%anc^*J&gHeMYs`18D*~B z%QhJk2w8lD9eEv;^_vnR-{FNecO6SNZy$JjCu4v7@8i(q1<9-z^$<3)Lzo}r+gJMD z%^EfiI6r%V9X++C5ULk=V?F?Q_$t#l9|C9gOC*pQAgM2M7ldbBv-g2Iy2oo2$oNJr zd?(T;ji?nN8NzF?Tx{^ZomAECkV+CY+Yc(F!Dk52*U$YAsmr{mEnqb`7_&-#Yy~MU z&L}ZfsjWtv`53k`VFCgxN<0B?(B$;dolv1%g~*h(Jv5Xu)V5-@`xzAdq36iuJz-Im zR3WmjFN4PWpuq$Y2@>iA2fo421}plpMH6*c-+-S;&mnf0B*}{`05KH9XeJ|!p&G6v z_Sl58mpy~O%2KykI{ZNwUB?x2V&-wgIZpxaoz}N57xWa|XK-_DjoCj4sVhpif3E?o zmymOi&Kz&w$7dm2EQBmj)-t5DWPC|(z*RoBv5DL^0N-=|s|voM-_8P@yI<%;RITBon*&a+ zIu1J~=zwm@*un7jd<=A{OM>knS0rKc0O@BZ@o}*>5msNzx``{NT!bTjiu*>)rJ5ip zpH&bJ-(0+}kxkdmYkTYJ&4Ya`^a1&*WfWWy+AKzkY)+iTwtVz6e2-+*0O2rgG@Pm5Vfg z=p7P$z|y@ITmX@spODYIII74$+(0M3(Eru$?UGR>XymDQV$o?t0BH#--;P~ zNH8!O-dP%T-ID(g4Z`JZyjyUUqQkHdD@}C?3Bz-XHpf{u2DA@9;w5l;z7~^>N|^8Y zEr!8uP&|Mz)!<}PB4;+QTp0H3%{6Ptjejh@X7MFv^67A3pUZ+uG!u!>=PMg%!Apk% zZoMg+RHAUEMWw&7Wmr%-ly5@!09ieX{c;@N^;H=>&SwC$0UmJ;4O=G^7mFPB0oPFg zkNyxcZn*^jrJOfl9=pM5b4F@v@nQ0j{4x(#+YSFp(!HBWuC0*8H(CmuXx9C-q8TM+ zziyBcwc+YaA-fVB2a5$%=TK6ip>6cAGd7Aq3$S2|Ms7(z`gTiQ^WH9V%Eex%f zHQxt4gK~s$cFf@ z+Z{I<=+ng*1OH2{C{VL`6xmQ0PRkTdPE{{y;K(2myv8?gsz@@-Q}6hqOTrO<=k%P> zv1OH}4?{?~d2%n7TK#SXTchd3 zSM&|1f{dOd&i2Nd_v^(vm0dz~7IT`{`p(1UOv@O)a>J}it?Tp(Mbmi0mj*ry6V6+L z=SpA^Znnj3!RTc2-puTA;Cecrx~ifRiZPld?vS%3=!^n>@oeH>T0frEDlVIEnhM!5 z$@pEuP#c+B)RBXLGHzc6&ZDh^+$T)%QToZ*e%LpjV;m&9wk-!8uf-rx3Uuin zmO@RLQXDFS*^ z&V(Qux9HifEsM{m(SjpHy@Q9r(naG9rH6dWAW;1vPcIw5po)K`KXdY+&-3>zoei>P zZYUe0BkAlhJlj9nQrMDsJio(^Gd)TjEjX6#qL<3*3mG&G9m>&%r!Yl1>ZsDlz}tgb zDtm8IG`={xjtD=RkT_Vr7?QqeoV^~2Rg16=KiX{qxa||cf7qgHpk{nrsm!c&?S_GY z)4ZV?fFrrIbpmN~Uy+8JpS@X@aZP30T?1<+pf2y-1QUR=@rB6>TpvOE2}0{#6fc&&E8C zU%jRyDICJ}x*_FbCN5z)in5hkSEi~dasSQzwkr!>&kM&6-U#&H!_Y9gRpMOT;pZr6PyNLrX9R0gT)~=wIghZcj;w;yjuUOzv|Qh$>emIg5g|%-&#MeEHsF7hf`G@M zSq3Dc$9ry@%9w*9GomNxMob$X%_mnIi%&+5l2lS!OsLGhAAKWR8HAOer@c7n!bJ-X zJ_QwCY`NujW10pFZsK2u-If+z*tACY`kmZA%mu97xcHk!QAE&)!dXEahX59fguR+f zcVol=a*T*64d<7RgAz)b`Z|m(tn^H|K9=vpTWQSvL3^r}R-;#~ME9O`{X=l%96ePm z!YP*A-_!_GR2_Oy^Fk$meT9J}OjIl&B$OUBij`=#BMGHLQ<`xwLokfRJhBIY^j^P( z zMM+D)xMGq8Z;)4PCXn1h`~2m(8i7Od)=t~Sh& zYwc?naWQ2k$-gc+V6N3Q`G=z{!~zG&N%jMFs`7eWT`o4}!E187BD2oKr7t%@?O0dutDN*hDOY zZKMeFeu%h_?mC*=EyqUm!v<-z0Np@iDfy_wc&PEfAw<355aIMrKJMhEptX(Eq)c)9 zMnHEj%GPo#XH+`P6pfjAP;l=@RrhPNW}(5)|CvF$YelWY=g)yVXO7zp@>VgtI7b8H z@1V9~H9|q}s+9QoejeiRoq;=_v(_1}K>c~BCZ7;Tg4?dgXl%sivs6tbC7I}^%yR4q zLLL%%At7jHW@E{RR#p>}BHL6bvO1U`6U?WOI6`80J@>?Hop8HV*bd)SsoN=Dkqf

?ap#8UWuyj=}7kO@(Djz-}Ka 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2 b/src/www/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7df6fa147f674732ae09a3721522937ff60937df GIT binary patch literal 28928 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 |DMi2-p~<2bhLbVoW2tqh?lkDlZo*(abCMqGm) z`z0H=)wW$a4D|82!NirAg>@u1#I`h*6Q4wp$>S5c~DbC`mQ3#H?;ZQY0)!*{W-tdp3nIAfN&jS<*lV0c+$V z@hVwBqy}uCFEKAOHYK!YAz~Tx&;YRl_<0Brx~Gut`IR@(H3E=)evbL?O{v2gKMMz1 zY$Azi(1ZS+xLP(D2;#&hS=}|kxm+(p8!1?HKn-#*5n;3oF1dKJkXvSvNi=_{hT~3Y z2F#p^ac7n$r@z$Z-a9g~WB!pL)8hwDCz=Q!fZJIG4G<&^0ybbny%JOty{3$&DD~k# z%b}E~g^CLT!vD^ONSo)I3Xl)~2nmz677i-5j}QWO+)pbBXC$qpd9)O%;S9raqOzh% zlF$KFPF+)oj(q++v@A-Dco~8Wr5S3f3ket#$_}83%Eb{y!tw1beNGlvlMus`P-P9i zxtY#a5SRu*rG8@5%rc%q!al!wIV4IbXPcH2;t*O@uLU4X)r|w_VhbS$VA@y%2Q6sH z%10u?L_%xI}gjnmcN@ronFne zFnj16mN0C>=3l3-PMAb#l}B7l%hH&io~b>RmO@-78H0gnV*rPo{^y)#8y0geJzqFZ zt`l~t#3H?@-8FbnM59E$M4159XB`gJEXsRUvFIHeO8^lgc(9-=wai4PzLFI~>Z9gr zz@tZNGs~|Z_=@pB{B5^f%u0}(UrfYZ$8RHutaY;ru6K|e-fY|RY_AozJLwEgDfKP) zu;qrt(@F-@E|E!sLXu=daGa$`*guQi7i^Z`q;Wb98nx#UNMV`aed&kRzFsY_*EGsm zxdH})bgoLbEUn~Nq@!(@q)x<%#_IXQ{Yd9sF$j)mt5V}j=9T-4g5Wl^aCuP_=YE1l zDVMZpw6fHsFR}a(CJh9dLe%FwB}x+pM1Q4u`d6kVht4dYKcnHY`h4WCZW9)VHcg*D zpbY>_0RS`Kk?PBnZ~f>7Z=*ee-$?HOyfc2;YXHFet1laWF(QQM@74zJC;$P$FEd6oKUG-{3XW4lNw4N*7WAsrT%G{|m`ga~i@UHQW zLmjpaRD&~i`yd15Ow8BnCwQMB;A|~qTY`45U-6ElNco5;lK=ziK_p$Sc9evH(}swA z%E8jr3;vx2Je$=u{g;yM$S?HB^aimLT^umxoO_e}$S%I-lZ;#`?;b{i#h$9{;r|jA#d`8AO0`ZsBujB~G_d0OoA2?z_>W#97?xcW5s+}RAb~Ry z0o(0~gw8aLHw$o0R-lrhy1Xem#lbE3fhE-dPHJ32K`AyV85?&rN=-4#F?t?^geg>h$n4d z``u|bQLhja@T_bIJFu9WY4cMflwd|$Lg3=OyCwR>uT(ldWlW0c-BLL9=owx=N_yIa z;4A{k7=cZq52YB^3{lv!eG@p6{^XJMj!)o20eLrtL>{f2oCJBCOe^4~OA!}UN_fyI zgC$l02d|0~=vO@;u(D!nWGND*QjtOxiUkr|ElZA7WuY)!^+}a!N?e~~wcL6&#g`_Y z-Wr8hOwCVLVWTw_D=x}cDWy@_NvKk&se+26CWxbC5)ki6Ocm{wrBI=wwpMS*kw{-= z1$??|iESR8_)GIZ9Y)HL2p0%GaMDnv6vk#`OP+rU$Fvb{T z%(eqC70TP^YILxgv}eGiHwX0m`swla`}(}a@$&qLIj-;Zn?$ZD9C)sGN(xK4ynGsH zb%63G0m8ThZ4qHig0_Tl30&I(OkJV8HGl}?60}8xaS7TY!X#*m2fAT6^kX)D`8 zTR9GkO^JZ{|9s`z!dX{qLJsu%m2dnnihO2HjqMiy(8vOY!;n0{{R3KzyVB literal 0 HcmV?d00001 diff --git a/src/www/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2 b/src/www/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a4cfb25d313ccf4a931aaafdb458be790d3d2e52 GIT binary patch literal 20776 zcmV(_K-9l?Pew8T0RR9108uCa6aWAK0IfU#08q970RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2 b/src/www/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..14a9f78eebbc496b02e855a086aea70cd0e512ec GIT binary patch literal 35588 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𝔅q)L>qMtV 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/nunito-latin-wght-normal-BzFMHfZw.woff2 b/src/www/assets/nunito-latin-wght-normal-BzFMHfZw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3e909a160091c0488e98f6668efc541114892859 GIT binary patch literal 39128 zcmV)GK)%0sPew8T0RR910GQYS6aWAK0aC000GMU~0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/src/www/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2 b/src/www/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6054ccbbb80d0177b8c9a3c7a93165c0a2e0960c GIT binary patch literal 13096 zcmV+@GuO;_Pew8T0RR9105d266aWAK0E~1105Y}!0RR9100000000000000000000 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 CJT&J3 literal 0 HcmV?d00001 diff --git a/src/www/assets/orders-Bv-Izk6_.js b/src/www/assets/orders-Bv-Izk6_.js new file mode 100644 index 0000000..7a0845c --- /dev/null +++ b/src/www/assets/orders-Bv-Izk6_.js @@ -0,0 +1 @@ +import{$a as e,Aa as t,Ba as n,Ca as r,Da as i,Do as a,Ea as o,Fa as s,Fs as c,Ga as l,Ha as u,Ia as d,Ja as f,Ka as p,La as m,Ma as h,Na as g,Oa as _,Oo as v,Pa as y,Qa as b,Ra as x,Sa as S,So as C,Ta as ee,Ua as w,Va as T,Wa as E,Xa as D,Ya as O,Yt as te,Za as k,Zl as ne,_a as re,_o as ie,ao as ae,ba as oe,bo as se,co as ce,do as A,eo as le,fo as j,ga as ue,go as de,ha as fe,ho as pe,io as me,ja as he,ka as ge,ko as _e,lo as ve,ma as ye,mo as be,no as xe,nu as M,oo as Se,ou as Ce,po as we,qa as N,ro as Te,ru as Ee,so as De,to as Oe,uo as ke,va as Ae,vo as je,wa as Me,xa as Ne,xo as P,ya as Pe,yo as Fe,za as F}from"./messages-BovT1T-w.js";import{a as I,s as Ie}from"./auth-store-BpIS8RMn.js";import{i as Le,t as Re}from"./router-Dohuf5K5.js";import{r as ze}from"./route-BxpeArPd.js";import{G as Be,m as Ve,o as L,s as R}from"./search-provider-Cx1K1ilz.js";import{i as He,t as z}from"./button-DJA4fnJ8.js";import{a as B,l as Ue,r as We,t as Ge}from"./dropdown-menu-CUea1X0A.js";import{d as V,f as Ke,l as H,m as U,p as W,u as G}from"./command-BwVY_kli.js";import{t as qe}from"./label-CsevXZTG.js";import{o as Je,s as Ye}from"./select-DcStuzoT.js";import{t as Xe}from"./cookies-BNZcTwGc.js";import{t as K}from"./createLucideIcon-D28ivbfF.js";import{_ as Ze,d as q,f as Qe,g as $e,h as et,m as tt,n as nt,p as rt,r as it,t as at,v as ot,y as st}from"./data-table-CmcvKcj8.js";import{t as ct}from"./chevron-down-CdmvZsfI.js";import{t as lt}from"./download-CN4vU01G.js";import{t as ut}from"./ellipsis-Y4gZr59G.js";import{t as dt}from"./eye-CDavQcLN.js";import{r as ft}from"./empty-state-Cam-sX8U.js";import{n as J}from"./dist-DvAgZMq72.js";import{t as pt}from"./input-DiRPHDd8.js";import{t as mt}from"./page-header-BBJ9dE3-.js";import{t as ht}from"./badge-BAmRBT3U.js";import{t as gt}from"./use-table-url-state-C7-IMA3_.js";import{t as Y}from"./long-text-BXQXVuRh.js";import{t as _t}from"./coming-soon-dialog-DMmjLgiX.js";var X=K(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),vt=K(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),Z=Ce(Ee(),1),Q=M();function yt({open:e,onOpenChange:t,order:n,isLoading:a}){let s=[[`Trade ID`,n?.trade_id??`-`],[_(),n?.order_id??`-`],[i(),n?.name??`-`],[o(),`${R(n?.amount)} ${n?.currency??``}`.trim()||`-`],[ee(),`${R(n?.actual_amount,6)} ${n?.token??``}`.trim()||`-`],[Me(),n?.network??`-`],[r(),n?.receive_address??`-`],[S(),n?.notify_url??`-`],[Ne(),n?.redirect_url??`-`],[oe(),n?.block_transaction_id??`-`],[Pe(),n?.parent_trade_id??`-`],[Ae(),L(n?.created_at)||`-`],[re(),L(n?.updated_at)||`-`]];return(0,Q.jsx)(H,{onOpenChange:t,open:e,children:(0,Q.jsxs)(G,{className:`sm:max-w-3xl`,children:[(0,Q.jsxs)(W,{children:[(0,Q.jsx)(U,{children:ue()}),(0,Q.jsx)(V,{children:fe()})]}),a?(0,Q.jsx)(`div`,{className:`py-8 text-center text-muted-foreground text-sm`,children:ye()}):(0,Q.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:s.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`rounded-lg border p-3`,children:[(0,Q.jsx)(`div`,{className:`mb-1 text-muted-foreground text-xs`,children:e}),(0,Q.jsx)(`div`,{className:`break-all text-sm`,children:t})]},e))})]})})}var bt={1:`bg-amber-500/10 text-amber-600`,2:`bg-emerald-500/10 text-emerald-600`,3:`bg-rose-500/10 text-rose-600`},xt={1:_e(),2:v(),3:a()};function St(e){return[{id:`expander`,enableHiding:!1,meta:{label:``,skeleton:`action`,sticky:`left`},header:()=>null,cell:({row:e})=>{let t=(e.original.sub_orders?.length??0)>0,n=e.depth*1.5;return(0,Q.jsx)(`div`,{style:{paddingLeft:n?`${n}rem`:void 0},children:t?(0,Q.jsx)(z,{className:`h-6 w-6 p-0`,onClick:()=>e.toggleExpanded(),variant:`ghost`,children:e.getIsExpanded()?(0,Q.jsx)(ct,{className:`h-4 w-4`}):(0,Q.jsx)(Be,{className:`h-4 w-4`})}):null})}},{accessorKey:`status`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:b()}),cell:({row:e})=>{let t=e.original.status??1;return(0,Q.jsx)(ht,{className:bt[t],children:xt[t]??t})},filterFn:(e,t,n)=>n.includes(e.getValue(t)),meta:{label:b(),skeleton:`badge`}},{accessorKey:`trade_id`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:`Trade ID`}),cell:({row:e})=>(0,Q.jsx)(Y,{className:`font-medium`,children:e.original.trade_id}),enableHiding:!1,meta:{label:`Trade ID`,skeleton:`id`}},{accessorKey:`order_id`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:k()}),cell:({row:e})=>(0,Q.jsx)(Y,{className:`min-w-40`,children:e.original.order_id}),meta:{label:k(),skeleton:`id`}},{accessorKey:`name`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:D()}),cell:({row:e})=>e.original.name??`-`,meta:{label:D(),skeleton:`short`}},{accessorKey:`amount`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:O()}),cell:({row:e})=>`${R(e.original.amount)} ${e.original.currency||``}`,meta:{label:O(),skeleton:`amount`}},{accessorKey:`actual_amount`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:f()}),cell:({row:e})=>`${R(e.original.actual_amount,6)} ${e.original.token||``}`,meta:{label:f(),skeleton:`amount`}},{accessorKey:`network`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:N()}),id:`chain`,meta:{label:N(),skeleton:`short`}},{accessorKey:`receive_address`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:p()}),cell:({row:e})=>(0,Q.jsx)(Y,{className:`min-w-36`,children:e.original.receive_address}),meta:{label:p(),skeleton:`long`}},{accessorKey:`created_at`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:l()}),cell:({row:e})=>(0,Q.jsx)(`div`,{className:`min-w-32`,children:L(e.original.created_at)}),meta:{label:l(),skeleton:`date`}},{accessorKey:`updated_at`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:E()}),cell:({row:e})=>L(e.original.updated_at),meta:{label:E(),skeleton:`date`}},{accessorKey:`block_transaction_id`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:w()}),cell:({row:e})=>(0,Q.jsx)(Y,{className:`min-w-40`,children:e.original.block_transaction_id??`-`}),meta:{label:w(),skeleton:`id`}},{accessorKey:`pay_by_sub_id`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:c()}),cell:({row:e})=>{let t=e.original.pay_by_sub_id;return t===0||t==null?`-`:t},meta:{label:c(),skeleton:`id`}},{accessorKey:`payment_type`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:u()}),meta:{label:u(),skeleton:`short`}},{accessorKey:`is_selected`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:T()}),cell:({row:e})=>e.original.is_selected?s():y(),meta:{label:T(),skeleton:`badge`}},{accessorKey:`callback_confirm`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:n()}),cell:({row:e})=>e.original.callback_confirm===1?g():h(),meta:{label:n(),skeleton:`badge`}},{accessorKey:`callback_num`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:F()}),cell:({row:e})=>e.original.callback_num??0,meta:{label:F(),skeleton:`id`}},{accessorKey:`notify_url`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:x()}),cell:({row:e})=>(0,Q.jsx)(Y,{className:`min-w-48`,children:e.original.notify_url??`-`}),meta:{label:x(),skeleton:`long`}},{accessorKey:`redirect_url`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:m()}),cell:({row:e})=>(0,Q.jsx)(Y,{className:`min-w-48`,children:e.original.redirect_url??`-`}),meta:{label:m(),skeleton:`long`}},{accessorKey:`api_key_id`,header:({column:e})=>(0,Q.jsx)(q,{column:e,title:`API Key ID`}),cell:({row:e})=>e.original.api_key_id??`-`,meta:{label:`API Key ID`,skeleton:`id`}},{id:`actions`,enableHiding:!1,meta:{label:d(),skeleton:`action`,sticky:`right`,className:He(`w-12`)},cell:({row:n})=>(0,Q.jsxs)(Ge,{modal:!1,children:[(0,Q.jsx)(Ue,{asChild:!0,children:(0,Q.jsxs)(z,{className:`flex h-8 w-8 p-0 data-[state=open]:bg-muted`,variant:`ghost`,children:[(0,Q.jsx)(ut,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:ge()})]})}),(0,Q.jsxs)(We,{align:`end`,className:`w-44`,children:[(0,Q.jsxs)(B,{onClick:()=>e(j(),n.original),children:[he(),(0,Q.jsx)(dt,{className:`ml-auto h-4 w-4`})]}),(0,Q.jsxs)(B,{onClick:()=>e(A(),n.original),children:[t(),(0,Q.jsx)(vt,{className:`ml-auto h-4 w-4`})]}),(0,Q.jsxs)(B,{onClick:()=>e(C(),n.original),children:[C(),(0,Q.jsx)(X,{className:`ml-auto h-4 w-4`})]}),(0,Q.jsxs)(B,{onClick:()=>e(P(),n.original),children:[P(),(0,Q.jsx)(ft,{className:`ml-auto h-4 w-4`})]})]})]})}]}var $=ze(`/_authenticated/orders/`);function Ct({data:t,isLoading:n,onAction:r,onRefresh:i}){let[a,o]=(0,Z.useState)([]),[s,c]=(0,Z.useState)({}),{globalFilter:l,onGlobalFilterChange:u,columnFilters:d,onColumnFiltersChange:f,pagination:p,onPaginationChange:m,ensurePageInRange:h}=gt({search:$.useSearch(),navigate:$.useNavigate(),pagination:{defaultPage:1,defaultPageSize:10},globalFilter:{enabled:!0,key:`orderNo`},columnFilters:[{columnId:`status`,searchKey:`status`,type:`array`},{columnId:`chain`,searchKey:`chain`,type:`array`}]}),g=Qe({data:t,columns:(0,Z.useMemo)(()=>St(r),[r]),state:{sorting:a,columnVisibility:s,columnFilters:d,globalFilter:l,pagination:p},onSortingChange:o,onColumnVisibilityChange:c,onColumnFiltersChange:f,onGlobalFilterChange:u,onPaginationChange:m,getSubRows:e=>e.sub_orders,paginateExpandedRows:!1,globalFilterFn:(e,t,n)=>{let r=String(n).toLowerCase();return String(e.original.id??``).toLowerCase().includes(r)||String(e.original.order_id??``).toLowerCase().includes(r)},getCoreRowModel:rt(),getExpandedRowModel:tt(),getFilteredRowModel:Ze(),getPaginationRowModel:ot(),getSortedRowModel:st(),getFacetedRowModel:et(),getFacetedUniqueValues:$e()});(0,Z.useEffect)(()=>{h(g.getPageCount())},[g,h]);let _=[...new Set(t.map(e=>e.network).filter(Boolean))].map(e=>({label:e,value:e}));return(0,Q.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4`,children:[(0,Q.jsx)(at,{filters:[{columnId:`status`,title:xe(),options:[...Le]},{columnId:`chain`,title:Oe(),options:_}],onRefresh:i,searchPlaceholder:le(),table:g}),(0,Q.jsx)(it,{className:`min-w-[1200px]`,emptyText:e(),loading:n,table:g}),(0,Q.jsx)(nt,{className:`mt-auto`,table:g})]})}var wt={[C()]:C(),[P()]:P()};function Tt(){return`http://64.31.22.157:8000`}function Et(){let e=I.useQuery(`get`,`/admin/api/v1/orders/list-with-sub`),t=I.useMutation(`post`,`/admin/api/v1/orders/{trade_id}/close`),n=I.useMutation(`post`,`/admin/api/v1/orders/{trade_id}/mark-paid`),r=I.useMutation(`post`,`/admin/api/v1/orders/{trade_id}/resend-callback`),i=I.useMutation(`get`,`/admin/api/v1/orders/{trade_id}`),[a,o]=(0,Z.useState)(null),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(!1),[h,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(!1);async function y(){await Re.invalidateQueries({queryKey:[`get`,`/admin/api/v1/orders/list-with-sub`]})}async function b(){if(!a?.row.trade_id)return;let e={params:{path:{trade_id:a.row.trade_id}}};a.action===C()?await t.mutateAsync(e):a.action===P()&&await r.mutateAsync(e),J.success(te({action:wt[a.action]})),await y(),o(null)}async function x(){if(!(s?.trade_id&&h.trim())){J.error(se());return}await n.mutateAsync({params:{path:{trade_id:s.trade_id}},body:{block_transaction_id:h.trim()}}),J.success(Fe()),c(null),g(``),await y()}async function S(){v(!0);try{let e=Xe(Ie),t=e?JSON.parse(e):``,n=await fetch(`${Tt()}/admin/api/v1/orders/export`,{headers:t?{Authorization:`Bearer ${t}`}:{}});if(!n.ok)throw Error(`Export failed`);let r=await n.blob(),i=window.URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`orders-${Date.now()}.csv`,a.click(),window.URL.revokeObjectURL(i),J.success(ie())}catch{J.error(je())}finally{v(!1)}}return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Ye,{fixed:!0}),(0,Q.jsxs)(Je,{className:`flex flex-1 flex-col gap-4 sm:gap-6`,children:[(0,Q.jsx)(mt,{actions:(0,Q.jsxs)(z,{disabled:_,onClick:S,variant:`outline`,children:[(0,Q.jsx)(lt,{className:`mr-2 h-4 w-4`}),_?de():pe()]}),description:be(),title:we()}),(0,Q.jsx)(Ct,{data:e.data?.data?.list??[],isLoading:e.isLoading,onAction:async(e,t)=>{if(e===j()){m(!0),f((await i.mutateAsync({params:{path:{trade_id:t.trade_id}}})).data??t);return}if(e===A()||e===C()||e===P()){u(!0);return}o({action:e,row:t})},onRefresh:()=>e.refetch()})]}),a&&(0,Q.jsx)(Ve,{confirmText:ke(),desc:(0,Q.jsx)(`span`,{children:ve({action:a.action,id:String(a.row.trade_id??a.row.id??``)})}),handleConfirm:b,onOpenChange:()=>o(null),open:!0,title:ce({action:a.action})}),(0,Q.jsx)(yt,{isLoading:i.isPending,onOpenChange:e=>{m(e),e||f(null)},open:p,order:d}),(0,Q.jsx)(H,{onOpenChange:e=>{e||(c(null),g(``))},open:!!s,children:(0,Q.jsxs)(G,{children:[(0,Q.jsxs)(W,{children:[(0,Q.jsx)(U,{children:De()}),(0,Q.jsx)(V,{children:Se({id:String(s?.trade_id??s?.id??``)})})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(qe,{htmlFor:`blockTransactionId`,children:ae()}),(0,Q.jsx)(pt,{id:`blockTransactionId`,onChange:e=>g(e.target.value),placeholder:`0x... / transaction hash`,value:h})]}),(0,Q.jsxs)(Ke,{children:[(0,Q.jsx)(z,{onClick:()=>c(null),variant:`outline`,children:ne()}),(0,Q.jsx)(z,{disabled:n.isPending,onClick:x,children:n.isPending?me():Te()})]})]})}),(0,Q.jsx)(_t,{onOpenChange:u,open:l})]})}var Dt=Et;export{Dt as component}; \ No newline at end of file diff --git a/src/www/assets/page-header-BBJ9dE3-.js b/src/www/assets/page-header-BBJ9dE3-.js new file mode 100644 index 0000000..11b532b --- /dev/null +++ b/src/www/assets/page-header-BBJ9dE3-.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{t}from"./separator-CRLYw2cW.js";var n=e();function r({title:e,description:r,actions:i,children:a,variant:o=`page`}){return o===`section`?(0,n.jsxs)(`div`,{className:`flex flex-1 flex-col`,children:[(0,n.jsxs)(`div`,{className:`flex-none`,children:[(0,n.jsx)(`h3`,{className:`font-medium text-lg`,children:e}),r&&(0,n.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:r})]}),(0,n.jsx)(t,{className:`my-4 flex-none`}),(0,n.jsx)(`div`,{className:`faded-bottom h-full w-full overflow-y-auto scroll-smooth pe-4 pb-12`,children:(0,n.jsx)(`div`,{className:`-mx-1 px-1.5 lg:max-w-xl`,children:a})})]}):(0,n.jsxs)(`div`,{className:`flex flex-wrap items-end justify-between gap-2`,children:[(0,n.jsxs)(`div`,{children:[(0,n.jsx)(`h2`,{className:`font-bold text-2xl tracking-tight`,children:e}),r&&(0,n.jsx)(`p`,{className:`text-muted-foreground`,children:r})]}),i&&(0,n.jsx)(`div`,{className:`flex gap-2`,children:i})]})}export{r as t}; \ No newline at end of file diff --git a/src/www/assets/password-BmNp63ZQ.js b/src/www/assets/password-BmNp63ZQ.js new file mode 100644 index 0000000..41f8736 --- /dev/null +++ b/src/www/assets/password-BmNp63ZQ.js @@ -0,0 +1 @@ +import{Bt as e,Gt as t,Ht as n,It as r,Jt as i,Kt as a,Lt as o,Rc as s,Rt as c,Ut as l,Vt as u,Wt as d,nu as f,qt as p,zc as m,zt as h}from"./messages-BovT1T-w.js";import{a as g}from"./auth-store-BpIS8RMn.js";import{t as _}from"./button-DJA4fnJ8.js";import{n as v}from"./dist-DvAgZMq72.js";import{c as y,s as b}from"./zod-Cymc5bS-.js";import{a as x,c as S,i as C,l as w,n as T,o as E,s as D,t as O}from"./form-DdHiBYMe.js";import{t as k}from"./password-input-B463LDkD.js";import{t as A}from"./page-header-BBJ9dE3-.js";var j=f(),M=b({old_password:y().min(1,i()),new_password:y().min(8,p()),confirm_password:y().min(1,a())}).refine(e=>e.new_password===e.confirm_password,{message:t(),path:[`confirm_password`]});function N(){let t=w({resolver:S(M),defaultValues:{old_password:``,new_password:``,confirm_password:``}}),i=g.useMutation(`post`,`/admin/api/v1/auth/password`);async function a(e){await i.mutateAsync({body:{old_password:e.old_password,new_password:e.new_password}}),v.success(d()),t.reset()}return(0,j.jsx)(O,{...t,children:(0,j.jsxs)(`form`,{className:`max-w-md space-y-4`,onSubmit:t.handleSubmit(a),children:[(0,j.jsx)(C,{control:t.control,name:`old_password`,render:({field:e})=>(0,j.jsxs)(x,{children:[(0,j.jsx)(E,{children:l()}),(0,j.jsx)(T,{children:(0,j.jsx)(k,{placeholder:n(),...e})}),(0,j.jsx)(D,{})]})}),(0,j.jsx)(C,{control:t.control,name:`new_password`,render:({field:t})=>(0,j.jsxs)(x,{children:[(0,j.jsx)(E,{children:u()}),(0,j.jsx)(T,{children:(0,j.jsx)(k,{placeholder:e(),...t})}),(0,j.jsx)(D,{})]})}),(0,j.jsx)(C,{control:t.control,name:`confirm_password`,render:({field:e})=>(0,j.jsxs)(x,{children:[(0,j.jsx)(E,{children:h()}),(0,j.jsx)(T,{children:(0,j.jsx)(k,{placeholder:c(),...e})}),(0,j.jsx)(D,{})]})}),(0,j.jsx)(_,{disabled:i.isPending,type:`submit`,children:i.isPending?o():r()})]})})}function P(){return(0,j.jsx)(A,{description:s(),title:m(),variant:`section`,children:(0,j.jsx)(N,{})})}var F=P;export{F as component}; \ No newline at end of file diff --git a/src/www/assets/password-input-B463LDkD.js b/src/www/assets/password-input-B463LDkD.js new file mode 100644 index 0000000..4d13f0f --- /dev/null +++ b/src/www/assets/password-input-B463LDkD.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{i as r,t as i}from"./button-DJA4fnJ8.js";import{t as a}from"./eye-off-C-BF3gv3.js";import{t as o}from"./eye-CDavQcLN.js";import{t as s}from"./input-DiRPHDd8.js";var c=t(n(),1),l=e();function u({className:e,disabled:t,onVisibilityChange:n,ref:u,...d}){let[f,p]=c.useState(!1);return(0,l.jsxs)(`div`,{className:r(`relative`,e),children:[(0,l.jsx)(s,{className:`pr-9`,disabled:t,ref:u,type:f?`text`:`password`,...d}),(0,l.jsx)(i,{className:`absolute inset-e-1 top-1/2 h-6 w-6 -translate-y-1/2 rounded-md text-muted-foreground`,disabled:t,onClick:()=>{p(e=>{let t=!e;return n?.(t),t})},size:`icon`,type:`button`,variant:`ghost`,children:f?(0,l.jsx)(o,{size:18}):(0,l.jsx)(a,{size:18})})]})}export{u as t}; \ No newline at end of file diff --git a/src/www/assets/payment-assets-DSsuCTEQ.js b/src/www/assets/payment-assets-DSsuCTEQ.js new file mode 100644 index 0000000..923bd82 --- /dev/null +++ b/src/www/assets/payment-assets-DSsuCTEQ.js @@ -0,0 +1 @@ +import{ca as e,da as t,fa as n,la as r,nu as i,ou as a,pa as o,ru as s,sa as c,ua as l}from"./messages-BovT1T-w.js";import{a as u}from"./auth-store-BpIS8RMn.js";import{r as d}from"./route-BxpeArPd.js";import{i as f}from"./button-DJA4fnJ8.js";import{o as p,s as m}from"./select-DcStuzoT.js";import{_ as h,d as g,f as _,g as v,h as y,n as b,p as x,r as S,t as C,v as w,y as T}from"./data-table-CmcvKcj8.js";import{t as E}from"./page-header-BBJ9dE3-.js";import{t as D}from"./badge-BAmRBT3U.js";import{t as O}from"./use-table-url-state-C7-IMA3_.js";var k=a(s(),1),A=i();function j(){return[{accessorKey:`network`,header:({column:t})=>(0,A.jsx)(g,{column:t,title:e()}),cell:({row:e})=>e.original.network??`-`,meta:{label:e(),skeleton:`short`}},{id:`tokens`,accessorFn:e=>e.tokens?.join(`, `)??``,header:({column:e})=>(0,A.jsx)(g,{column:e,title:c()}),cell:({row:e})=>{let t=e.original.tokens??[];return t.length===0?`-`:(0,A.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.map(e=>(0,A.jsx)(D,{className:`bg-emerald-500/10 text-emerald-600`,children:e},e))})},meta:{className:f(`text-center`),label:c(),skeleton:`short`}}]}var M=d(`/_authenticated/payment-assets/`);function N({data:e,isLoading:n,onRefresh:i}){let[a,o]=(0,k.useState)([]),{globalFilter:s,onGlobalFilterChange:c,columnFilters:u,onColumnFiltersChange:d,pagination:f,onPaginationChange:p,ensurePageInRange:m}=O({search:M.useSearch(),navigate:M.useNavigate(),pagination:{defaultPage:1,defaultPageSize:10},globalFilter:{enabled:!0,key:`keyword`},columnFilters:[{columnId:`network`,searchKey:`chain`,type:`array`}]}),g=_({data:e,columns:(0,k.useMemo)(()=>j(),[]),state:{sorting:a,columnFilters:u,globalFilter:s,pagination:f},onSortingChange:o,onColumnFiltersChange:d,onGlobalFilterChange:c,onPaginationChange:p,globalFilterFn:(e,t,n)=>{let r=String(n).toLowerCase();return(e.original.network??``).toLowerCase().includes(r)||(e.original.tokens??[]).some(e=>e.toLowerCase().includes(r))},getCoreRowModel:x(),getFilteredRowModel:h(),getPaginationRowModel:w(),getSortedRowModel:T(),getFacetedRowModel:y(),getFacetedUniqueValues:v()});(0,k.useEffect)(()=>{m(g.getPageCount())},[g,m]);let E=[...new Set(e.map(e=>e.network).filter(Boolean))].map(e=>({label:e,value:e}));return(0,A.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4`,children:[(0,A.jsx)(C,{filters:[{columnId:`network`,title:t(),options:E}],onRefresh:i,searchPlaceholder:l(),table:g}),(0,A.jsx)(S,{className:`min-w-[700px]`,emptyText:r(),loading:n,table:g}),(0,A.jsx)(b,{className:`mt-auto`,table:g})]})}function P(){let e=u.useQuery(`get`,`/admin/api/v1/supported-assets`);return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(m,{fixed:!0}),(0,A.jsxs)(p,{className:`flex flex-1 flex-col gap-4 sm:gap-6`,children:[(0,A.jsx)(E,{description:o(),title:n()}),(0,A.jsx)(N,{data:e.data?.data?.supports??[],isLoading:e.isLoading,onRefresh:()=>e.refetch()})]})]})}var F=P;export{F as component}; \ No newline at end of file diff --git a/src/www/assets/payments-DTD79Ztb.js b/src/www/assets/payments-DTD79Ztb.js new file mode 100644 index 0000000..d1ec6d0 --- /dev/null +++ b/src/www/assets/payments-DTD79Ztb.js @@ -0,0 +1,2 @@ +import{$t as e,An as t,Bn as n,Cn as r,Di as i,Dn as a,En as o,Fn as s,Gr as c,In as l,Ln as u,Lt as d,Mn as f,Nn as p,On as ee,Pn as te,Qt as m,Rl as ne,Rn as re,Sn as ie,Tn as ae,Vn as h,Xt as g,Zl as oe,Zt as se,_n as _,aa as ce,an as le,bn as ue,cn as v,dn as de,en as y,fn as b,gn as x,hn as S,in as C,iu as w,jn as fe,kn as pe,ln as T,mn as E,nn as me,nu as D,on as he,ou as O,pn as ge,rn as k,ru as _e,sl as ve,sn as A,tn as j,un as M,vn as N,wn as ye,xn as be,yn as P,zl as F,zn as xe}from"./messages-BovT1T-w.js";import{a as I}from"./auth-store-BpIS8RMn.js";import{t as Se}from"./router-Dohuf5K5.js";import{r as Ce}from"./route-BxpeArPd.js";import{H as we,P as L,m as Te,o as R,s as Ee,z as De}from"./search-provider-Cx1K1ilz.js";import{t as z}from"./button-DJA4fnJ8.js";import{d as Oe,l as ke,m as Ae,p as je,u as Me}from"./command-BwVY_kli.js";import{a as Ne,i as Pe,n as B,o as Fe,r as V,s as Ie,t as Le}from"./select-DcStuzoT.js";import{t as Re}from"./separator-CRLYw2cW.js";import{t as ze}from"./switch-R6BNZUH1.js";import{t as H}from"./createLucideIcon-D28ivbfF.js";import{t as Be}from"./eye-off-C-BF3gv3.js";import{t as Ve}from"./eye-CDavQcLN.js";import{n as He,r as Ue,t as We}from"./empty-state-Cam-sX8U.js";import{n as Ge,t as Ke}from"./trash-2-Du706Ujr.js";import{n as U}from"./dist-DvAgZMq72.js";import{c as W,s as qe}from"./zod-Cymc5bS-.js";import{a as G,c as Je,i as K,l as Ye,n as q,o as J,r as Xe,s as Y,t as Ze}from"./form-DdHiBYMe.js";import{t as X}from"./input-DiRPHDd8.js";import{t as Qe}from"./page-header-BBJ9dE3-.js";import{t as $e}from"./textarea-D_TrrVtD.js";import{t as et}from"./badge-BAmRBT3U.js";var tt=H(`arrow-down-a-z`,[[`path`,{d:`m3 16 4 4 4-4`,key:`1co6wj`}],[`path`,{d:`M7 20V4`,key:`1yoxec`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),nt=H(`arrow-up-a-z`,[[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}],[`path`,{d:`M20 8h-5`,key:`1vsyxs`}],[`path`,{d:`M15 10V6.5a2.5 2.5 0 0 1 5 0V10`,key:`ag13bf`}],[`path`,{d:`M15 14h5l-5 6h5`,key:`ur5jdg`}]]),rt=H(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),it=H(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),at=w(((e,t)=>{t.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r{var n=at(),r={"text/plain":`Text`,"text/html":`Url`,default:`Text`},i=`Copy to clipboard: #{key}, Enter`;function a(e){var t=(/mac os x/i.test(navigator.userAgent)?`⌘`:`Ctrl`)+`+C`;return e.replace(/#{\s*key\s*}/g,t)}function o(e,t){var o,s,c,l,u,d,f=!1;t||={},o=t.debug||!1;try{if(c=n(),l=document.createRange(),u=document.getSelection(),d=document.createElement(`span`),d.textContent=e,d.ariaHidden=`true`,d.style.all=`unset`,d.style.position=`fixed`,d.style.top=0,d.style.clip=`rect(0, 0, 0, 0)`,d.style.whiteSpace=`pre`,d.style.webkitUserSelect=`text`,d.style.MozUserSelect=`text`,d.style.msUserSelect=`text`,d.style.userSelect=`text`,d.addEventListener(`copy`,function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),n.clipboardData===void 0){o&&console.warn(`unable to use e.clipboardData`),o&&console.warn(`trying IE specific stuff`),window.clipboardData.clearData();var i=r[t.format]||r.default;window.clipboardData.setData(i,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(d),l.selectNodeContents(d),u.addRange(l),!document.execCommand(`copy`))throw Error(`copy command was unsuccessful`);f=!0}catch(n){o&&console.error(`unable to copy using execCommand: `,n),o&&console.warn(`trying IE specific stuff`);try{window.clipboardData.setData(t.format||`text`,e),t.onCopy&&t.onCopy(window.clipboardData),f=!0}catch(n){o&&console.error(`unable to copy using clipboardData: `,n),o&&console.error(`falling back to prompt`),s=a(`message`in t?t.message:i),window.prompt(s,e)}}finally{u&&(typeof u.removeRange==`function`?u.removeRange(l):u.removeAllRanges()),d&&document.body.removeChild(d),c()}return f}t.exports=o}))(),1),Z=O(_e(),1),Q=D(),st=qe({name:W().min(1,se()),notify_url:W().url(g()),ip_whitelist:W().optional()});function ct({open:t,onOpenChange:n,currentRow:r,onSuccess:i}){let a=Ye({resolver:Je(st),defaultValues:{name:``,notify_url:``,ip_whitelist:``}}),o=I.useMutation(`post`,`/admin/api/v1/api-keys`),s=I.useMutation(`patch`,`/admin/api/v1/api-keys/{id}`),c=o.data?.data?.secret_key;(0,Z.useEffect)(()=>{t&&a.reset({name:r?.name??``,notify_url:r?.notify_url??``,ip_whitelist:r?.ip_whitelist??``})},[t,r,a]);function l(e){e||(a.reset({name:``,notify_url:``,ip_whitelist:``}),o.reset(),s.reset()),n(e)}function u(t){if(r?.id){s.mutate({params:{path:{id:r.id}},body:{name:t.name,notify_url:t.notify_url,ip_whitelist:t.ip_whitelist||void 0}},{onSuccess:()=>{U.success(e()),n(!1),i?.()}});return}o.mutate({body:{name:t.name,notify_url:t.notify_url,ip_whitelist:t.ip_whitelist||void 0}},{onSuccess:()=>{U.success(m()),i?.()}})}function f(){l(!1)}let p=o.isPending||s.isPending;return(0,Q.jsx)(ke,{onOpenChange:l,open:t,children:(0,Q.jsxs)(Me,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsx)(Ae,{children:r?v():A()}),(0,Q.jsx)(Oe,{children:r?he():le()})]}),(0,Q.jsx)(Ze,{...a,children:(0,Q.jsxs)(`form`,{className:`space-y-4`,onSubmit:a.handleSubmit(u),children:[(0,Q.jsx)(K,{control:a.control,name:`name`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:M()}),(0,Q.jsx)(q,{children:(0,Q.jsx)(X,{placeholder:T(),...e})}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsx)(K,{control:a.control,name:`notify_url`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsx)(J,{children:S()}),(0,Q.jsx)(q,{children:(0,Q.jsx)(X,{placeholder:`https://example.com/callback`,...e})}),(0,Q.jsx)(Y,{})]})}),(0,Q.jsx)(K,{control:a.control,name:`ip_whitelist`,render:({field:e})=>(0,Q.jsxs)(G,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsx)(J,{children:C()}),(0,Q.jsx)(et,{variant:`secondary`,children:F()})]}),(0,Q.jsx)(q,{children:(0,Q.jsx)($e,{disabled:!0,placeholder:`127.0.0.1 +10.0.0.2`,...e})}),(0,Q.jsx)(Xe,{children:ne()}),(0,Q.jsx)(Y,{})]})}),!r&&c?(0,Q.jsxs)(`div`,{className:`rounded-lg border bg-muted/40 p-3 text-sm`,children:[(0,Q.jsx)(`div`,{className:`mb-1 font-medium text-amber-600`,children:k()}),(0,Q.jsx)(`div`,{className:`break-all font-mono text-muted-foreground`,children:c})]}):null,(0,Q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Q.jsx)(z,{onClick:f,type:`button`,variant:`outline`,children:!r&&c?me():oe()}),(!c||r)&&(0,Q.jsxs)(z,{disabled:p,type:`submit`,children:[p&&d(),!p&&r&&j(),!(p||r)&&y()]})]})]})})]})})}function lt({data:e,isLoading:t,onAction:n,onCopySecret:r,onToggleSecret:a,secretStates:o}){return t?(0,Q.jsx)(`ul`,{className:`faded-bottom no-scrollbar grid gap-4 overflow-auto pt-4 pb-16 md:grid-cols-2 lg:grid-cols-3`,children:[`api-key-skeleton-1`,`api-key-skeleton-2`,`api-key-skeleton-3`,`api-key-skeleton-4`,`api-key-skeleton-5`,`api-key-skeleton-6`].map(e=>(0,Q.jsx)(`li`,{"aria-hidden":`true`,className:`rounded-lg border`,children:(0,Q.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden p-4`,children:[(0,Q.jsxs)(`div`,{className:`mb-6 flex items-center justify-between gap-3`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,Q.jsx)(L,{className:`h-5 w-32 max-w-full`}),(0,Q.jsx)(L,{className:`h-3 w-20`})]}),(0,Q.jsx)(L,{className:`h-6 w-11 rounded-full`})]}),(0,Q.jsxs)(`div`,{className:`mb-6 flex-1 space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(L,{className:`mt-1 h-3 w-12 shrink-0`}),(0,Q.jsx)(L,{className:`h-4 w-28 min-w-0 flex-1`})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(L,{className:`mt-1 h-3 w-12 shrink-0`}),(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,Q.jsx)(L,{className:`h-4 w-full`}),(0,Q.jsx)(L,{className:`h-4 w-9/12`})]}),(0,Q.jsx)(L,{className:`size-8 shrink-0 rounded-md`}),(0,Q.jsx)(L,{className:`size-8 shrink-0 rounded-md`})]})]}),[`w-28`,`w-full`,`w-11/12`,`w-24`,`w-32`].map(e=>(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(L,{className:`mt-1 h-3 w-12 shrink-0`}),(0,Q.jsx)(L,{className:`h-4 min-w-0 flex-1 ${e}`})]},e))]}),(0,Q.jsx)(`div`,{className:`-mx-4 mt-auto -mb-4 border-t`,children:(0,Q.jsx)(`div`,{className:`grid grid-cols-3`,children:[`api-key-action-skeleton-1`,`api-key-action-skeleton-2`,`api-key-action-skeleton-3`].map((e,t)=>(0,Q.jsx)(`div`,{className:`flex h-11 items-center justify-center px-4 ${t<2?`border-r`:``}`,children:(0,Q.jsx)(L,{className:`h-4 w-16`})},e))})})]})},e))}):e.length?(0,Q.jsx)(`ul`,{className:`faded-bottom no-scrollbar grid gap-4 overflow-auto pt-4 pb-16 md:grid-cols-2 lg:grid-cols-3`,children:e.map(e=>{let t=e.status===1,s=o[String(e.id??e.pid??``)],l=`••••••••••••••••`;s?.visible&&(l=s.loading?x():s.value||`-`);let u=[{label:`PID`,value:e.pid??`-`},{label:S(),value:e.notify_url||`-`},{label:E(),value:e.ip_whitelist||`-`},{label:ue(),value:Ee(e.call_count??0,0)},{label:P(),value:R(e.last_used_at)||N()},{label:i(),value:R(e.updated_at)||`-`}];return(0,Q.jsx)(`li`,{className:`rounded-lg border hover:shadow-md`,children:(0,Q.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden p-4`,children:[(0,Q.jsxs)(`div`,{className:`mb-6 flex items-center justify-between`,children:[(0,Q.jsx)(`div`,{className:`min-w-0`,children:(0,Q.jsx)(`h2`,{className:`truncate font-semibold`,children:e.name||e.pid||`#${e.id}`})}),(0,Q.jsx)(ze,{checked:t,onCheckedChange:()=>n(t?`disable`:`enable`,e)})]}),(0,Q.jsxs)(`div`,{className:`mb-6 flex-1 space-y-2 text-muted-foreground text-sm`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`span`,{className:`w-16 shrink-0 text-foreground/80`,children:`PID`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 break-all`,children:e.pid??`-`})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`span`,{className:`w-16 shrink-0 text-foreground/80`,children:ge()}),(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-2`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 break-all font-mono`,children:l}),(0,Q.jsx)(z,{className:`size-8 shrink-0`,onClick:()=>r(e),size:`icon-sm`,variant:`ghost`,children:(0,Q.jsx)(rt,{className:`h-4.5 w-4.5`})}),(0,Q.jsx)(z,{className:`size-8 shrink-0`,onClick:()=>a(e),size:`icon-sm`,variant:`ghost`,children:s?.visible?(0,Q.jsx)(Be,{className:`h-4.5 w-4.5`}):(0,Q.jsx)(Ve,{className:`h-4.5 w-4.5`})})]})]}),u.filter(e=>e.label!==`PID`).map(e=>(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`span`,{className:`w-16 shrink-0 text-foreground/80`,children:e.label}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 break-all`,children:e.value})]},e.label))]}),(0,Q.jsx)(`div`,{className:`-mx-4 mt-auto -mb-4 border-t`,children:(0,Q.jsxs)(`div`,{className:`grid grid-cols-3`,children:[(0,Q.jsxs)(z,{className:`h-11 w-full rounded-none border-r px-0 text-muted-foreground hover:bg-muted/60 hover:text-foreground`,onClick:()=>n(`edit`,e),size:`sm`,variant:`ghost`,children:[(0,Q.jsx)(it,{className:`h-4 w-4`}),b()]}),(0,Q.jsxs)(z,{className:`h-11 w-full rounded-none border-r px-0 text-muted-foreground hover:bg-muted/60 hover:text-foreground`,onClick:()=>n(`rotate-secret`,e),size:`sm`,variant:`ghost`,children:[(0,Q.jsx)(we,{className:`h-4 w-4`}),de()]}),(0,Q.jsxs)(z,{className:`h-11 w-full rounded-none px-0 text-destructive hover:bg-destructive/8 hover:text-destructive`,onClick:()=>n(`delete`,e),size:`sm`,variant:`ghost`,children:[(0,Q.jsx)(Ke,{className:`h-4 w-4 text-destructive`}),c()]})]})})]})},e.id??e.pid)})}):(0,Q.jsx)(`div`,{className:`pt-4`,children:(0,Q.jsx)(We,{description:_()})})}var $=Ce(`/_authenticated/payments/`),ut=new Map([[`all`,h()],[`enabled`,n()],[`disabled`,xe()]]);function dt(){let{filter:e=``,type:i=`all`,sort:c=`asc`}=$.useSearch(),d=$.useNavigate(),m=I.useQuery(`get`,`/admin/api/v1/api-keys`),ne=I.useMutation(`delete`,`/admin/api/v1/api-keys/{id}`),g=I.useMutation(`post`,`/admin/api/v1/api-keys/{id}/status`),oe=I.useMutation(`get`,`/admin/api/v1/api-keys/{id}/secret`),se=I.useMutation(`post`,`/admin/api/v1/api-keys/{id}/rotate-secret`),_=I.useMutation(`get`,`/admin/api/v1/api-keys/{id}/stats`),[le,v]=(0,Z.useState)(!1),[de,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),[S,C]=(0,Z.useState)(null),[w,T]=(0,Z.useState)({}),[E,me]=(0,Z.useState)(c),[D,he]=(0,Z.useState)(i),[O,ge]=(0,Z.useState)(e);async function k(){await Se.invalidateQueries({queryKey:[`get`,`/admin/api/v1/api-keys`]})}async function _e(){if(!b?.row.id)return;let e=b.row.id;b.action===`delete`?(await ne.mutateAsync({params:{path:{id:e}}}),U.success(re())):(b.action===`enable`||b.action===`disable`)&&(await g.mutateAsync({params:{path:{id:e}},body:{status:b.action===`enable`?1:2}}),U.success(ce())),await k(),x(null)}function A(e){return String(e.id??e.pid??``)}async function j(e,t){let n=A(e),r=t?.visible??w[n]?.visible??!1;T(e=>({...e,[n]:{loading:!0,value:e[n]?.value??``,visible:r}}));try{let t=await oe.mutateAsync({params:{path:{id:e.id}}}),i=typeof t.data==`object`&&t.data&&`secret_key`in t.data?String(t.data.secret_key??``):``;return T(e=>({...e,[n]:{loading:!1,value:i||`-`,visible:r}})),i||`-`}catch{return T(e=>({...e,[n]:{loading:!1,value:e[n]?.value??``,visible:r}})),U.error(u()),null}}async function M(e){if(!e.id){U.error(l());return}let t=A(e),n=w[t];if(n?.visible){T(e=>({...e,[t]:{...n,visible:!1}}));return}if(n?.value){T(e=>({...e,[t]:{...n,visible:!0}}));return}await j(e,{visible:!0})}async function F(e){if(!e.id){U.error(l());return}let t=A(e),n=w[t]?.value??``;if(n||=await j(e,{visible:w[t]?.visible??!1})??``,!n||n===`-`){U.error(s());return}(0,ot.default)(n),U.success(te())}async function Ce(e){let t=await se.mutateAsync({params:{path:{id:e.id}}}),n=A(e);T(e=>({...e,[n]:{loading:!1,value:t.data?.secret_key??`-`,visible:!0}})),U.success(p()),await k()}async function we(e){let t=await _.mutateAsync({params:{path:{id:e.id}}});C({apiKey:e.pid??`#${e.id}`,stats:t.data??{}})}async function L(e,t){if(!t.id){U.error(l());return}if(e===`edit`){y(t),v(!0);return}if(e===`delete`){x({action:e,row:t});return}switch(e){case`enable`:case`disable`:await g.mutateAsync({params:{path:{id:t.id}},body:{status:e===`enable`?1:2}}),U.success(ce()),await k();break;case`rotate-secret`:await Ce(t);break;case`view-stats`:await we(t);break;default:break}}let R=[...m.data?.data??[]].sort((e,t)=>{let n=(e.name??e.pid??`#${e.id??``}`).toLowerCase(),r=(t.name??t.pid??`#${t.id??``}`).toLowerCase();return E===`asc`?n.localeCompare(r):r.localeCompare(n)}).filter(e=>D===`enabled`?e.status===1:D===`disabled`?e.status!==1:!0).filter(e=>{let t=O.trim().toLowerCase();return t?(e.pid??``).toLowerCase().includes(t)||(e.name??``).toLowerCase().includes(t)||(e.notify_url??``).toLowerCase().includes(t):!0});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Ie,{}),(0,Q.jsxs)(Fe,{fixed:!0,children:[(0,Q.jsx)(Qe,{actions:(0,Q.jsxs)(z,{onClick:()=>{y(null),v(!0)},children:[(0,Q.jsx)(Ge,{className:`mr-2 h-4 w-4`}),f()]}),description:fe(),title:t()}),(0,Q.jsxs)(`div`,{className:`my-4 flex items-end justify-between sm:my-0 sm:items-center`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4 sm:my-4 sm:flex-row`,children:[(0,Q.jsx)(X,{className:`h-9 w-40 lg:w-62.5`,onChange:e=>{ge(e.target.value),d({search:t=>({...t,filter:e.target.value||void 0})})},placeholder:pe(),value:O}),(0,Q.jsxs)(Le,{onValueChange:e=>{he(e),d({search:t=>({...t,type:e===`all`?void 0:e})})},value:D,children:[(0,Q.jsx)(Pe,{className:`w-36`,children:(0,Q.jsx)(Ne,{children:ut.get(D)})}),(0,Q.jsxs)(B,{children:[(0,Q.jsx)(V,{value:`all`,children:h()}),(0,Q.jsx)(V,{value:`enabled`,children:n()}),(0,Q.jsx)(V,{value:`disabled`,children:xe()})]})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(z,{onClick:k,variant:`outline`,children:[(0,Q.jsx)(Ue,{className:`mr-2 h-4 w-4`}),ve()]}),(0,Q.jsxs)(Le,{onValueChange:e=>{me(e),d({search:t=>({...t,sort:e})})},value:E,children:[(0,Q.jsx)(Pe,{className:`w-16`,children:(0,Q.jsx)(Ne,{children:(0,Q.jsx)(He,{size:18})})}),(0,Q.jsxs)(B,{align:`end`,children:[(0,Q.jsx)(V,{value:`asc`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,Q.jsx)(nt,{size:16}),(0,Q.jsx)(`span`,{children:ee()})]})}),(0,Q.jsx)(V,{value:`desc`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,Q.jsx)(tt,{size:16}),(0,Q.jsx)(`span`,{children:a()})]})})]})]})]})]}),(0,Q.jsx)(Re,{className:`shadow-sm`}),(0,Q.jsx)(lt,{data:R,isLoading:m.isLoading,onAction:L,onCopySecret:F,onToggleSecret:M,secretStates:w})]}),(0,Q.jsx)(ct,{currentRow:de,onOpenChange:e=>{v(e),e||y(null)},onSuccess:()=>m.refetch(),open:le}),b&&(0,Q.jsx)(Te,{confirmText:b.action===`delete`?o():ae(),desc:(0,Q.jsx)(`span`,{children:ye({target:String(b.row.pid??b.row.id??``),action:b.action})}),destructive:b.action===`delete`,handleConfirm:_e,onOpenChange:()=>x(null),open:!0,title:b.action===`delete`?r():ie()}),(0,Q.jsx)(ke,{onOpenChange:()=>C(null),open:!!S,children:(0,Q.jsxs)(Me,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsxs)(Ae,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(De,{className:`h-4 w-4`}),be()]}),(0,Q.jsx)(Oe,{children:S?.apiKey})]}),(0,Q.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,Q.jsxs)(`div`,{className:`rounded-lg border p-4`,children:[(0,Q.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-muted-foreground text-sm`,children:[(0,Q.jsx)(Ve,{className:`h-4 w-4`}),` `,ue()]}),(0,Q.jsx)(`div`,{className:`font-semibold text-2xl`,children:Ee(S?.stats.call_count??0,0)})]}),(0,Q.jsxs)(`div`,{className:`rounded-lg border p-4`,children:[(0,Q.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-muted-foreground text-sm`,children:[(0,Q.jsx)(Ue,{className:`h-4 w-4`}),` `,P()]}),(0,Q.jsx)(`div`,{className:`font-medium text-sm`,children:S?.stats.last_used_at??N()})]})]})]})})]})}var ft=dt;export{ft as component}; \ No newline at end of file diff --git a/src/www/assets/popover-D5q6Hufu.js b/src/www/assets/popover-D5q6Hufu.js new file mode 100644 index 0000000..8d83f69 --- /dev/null +++ b/src/www/assets/popover-D5q6Hufu.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{c as i,d as a,i as o}from"./button-DJA4fnJ8.js";import{i as s,n as c,o as l}from"./dist-DG5UMlBd.js";import{t as u}from"./dist-Cp1lAGZy.js";import{i as d}from"./dist-BEDXr2LC.js";import{a as f,i as p,n as m,o as h,r as g,s as _,t as v}from"./dist-BKfJQFVD.js";import{_ as y,g as b,h as x,m as S}from"./dropdown-menu-CUea1X0A.js";var C=t(n(),1),w=e(),T=`Popover`,[E,ee]=l(T,[f]),D=f(),[O,k]=E(T),A=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,s=D(t),l=C.useRef(null),[u,f]=C.useState(!1),[m,h]=c({prop:r,defaultProp:i??!1,onChange:a,caller:T});return(0,w.jsx)(p,{...s,children:(0,w.jsx)(O,{scope:t,contentId:d(),triggerRef:l,open:m,onOpenChange:h,onOpenToggle:C.useCallback(()=>h(e=>!e),[h]),hasCustomAnchor:u,onCustomAnchorAdd:C.useCallback(()=>f(!0),[]),onCustomAnchorRemove:C.useCallback(()=>f(!1),[]),modal:o,children:n})})};A.displayName=T;var j=`PopoverAnchor`,M=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=k(j,n),a=D(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return C.useEffect(()=>(o(),()=>s()),[o,s]),(0,w.jsx)(v,{...a,...r,ref:t})});M.displayName=j;var N=`PopoverTrigger`,P=C.forwardRef((e,t)=>{let{__scopePopover:n,...i}=e,o=k(N,n),c=D(n),l=a(t,o.triggerRef),u=(0,w.jsx)(r.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Y(o.open),...i,ref:l,onClick:s(e.onClick,o.onOpenToggle)});return o.hasCustomAnchor?u:(0,w.jsx)(v,{asChild:!0,...c,children:u})});P.displayName=N;var F=`PopoverPortal`,[I,L]=E(F,{forceMount:void 0}),R=e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=k(F,t);return(0,w.jsx)(I,{scope:t,forceMount:n,children:(0,w.jsx)(u,{present:n||a.open,children:(0,w.jsx)(h,{asChild:!0,container:i,children:r})})})};R.displayName=F;var z=`PopoverContent`,B=C.forwardRef((e,t)=>{let n=L(z,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=k(z,e.__scopePopover);return(0,w.jsx)(u,{present:r||a.open,children:a.modal?(0,w.jsx)(H,{...i,ref:t}):(0,w.jsx)(U,{...i,ref:t})})});B.displayName=z;var V=i(`PopoverContent.RemoveScroll`),H=C.forwardRef((e,t)=>{let n=k(z,e.__scopePopover),r=C.useRef(null),i=a(t,r),o=C.useRef(!1);return C.useEffect(()=>{let e=r.current;if(e)return S(e)},[]),(0,w.jsx)(x,{as:V,allowPinchZoom:!0,children:(0,w.jsx)(W,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:s(e.onCloseAutoFocus,e=>{e.preventDefault(),o.current||n.triggerRef.current?.focus()}),onPointerDownOutside:s(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;o.current=t.button===2||n},{checkForDefaultPrevented:!1}),onFocusOutside:s(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),U=C.forwardRef((e,t)=>{let n=k(z,e.__scopePopover),r=C.useRef(!1),i=C.useRef(!1);return(0,w.jsx)(W,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),W=C.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=k(z,n),p=D(n);return b(),(0,w.jsx)(y,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,w.jsx)(_,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),children:(0,w.jsx)(g,{"data-state":Y(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),G=`PopoverClose`,K=C.forwardRef((e,t)=>{let{__scopePopover:n,...i}=e,a=k(G,n);return(0,w.jsx)(r.button,{type:`button`,...i,ref:t,onClick:s(e.onClick,()=>a.onOpenChange(!1))})});K.displayName=G;var q=`PopoverArrow`,J=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=D(n);return(0,w.jsx)(m,{...i,...r,ref:t})});J.displayName=q;function Y(e){return e?`open`:`closed`}var X=A,Z=P,Q=R,$=B;function te({...e}){return(0,w.jsx)(X,{"data-slot":`popover`,...e})}function ne({...e}){return(0,w.jsx)(Z,{"data-slot":`popover-trigger`,...e})}function re({className:e,align:t=`center`,sideOffset:n=4,...r}){return(0,w.jsx)(Q,{children:(0,w.jsx)($,{align:t,className:o(`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[state=closed]:animate-out data-[state=open]:animate-in`,e),"data-slot":`popover-content`,sideOffset:n,...r})})}export{re as n,ne as r,te as t}; \ No newline at end of file diff --git a/src/www/assets/radio-group-DXVwPYJH.js b/src/www/assets/radio-group-DXVwPYJH.js new file mode 100644 index 0000000..92895fd --- /dev/null +++ b/src/www/assets/radio-group-DXVwPYJH.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{i as t}from"./button-DJA4fnJ8.js";import{n,r,t as i}from"./dist-DlZiaY1y.js";import{t as a}from"./createLucideIcon-D28ivbfF.js";var o=a(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),s=e();function c({className:e,...n}){return(0,s.jsx)(r,{className:t(`grid gap-3`,e),"data-slot":`radio-group`,...n})}function l({className:e,...r}){return(0,s.jsx)(n,{className:t(`aspect-square size-4 shrink-0 rounded-full border border-input text-primary shadow-xs outline-none transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:ring-destructive/40`,e),"data-slot":`radio-group-item`,...r,children:(0,s.jsx)(i,{className:`relative flex items-center justify-center`,"data-slot":`radio-group-indicator`,children:(0,s.jsx)(o,{className:`absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-primary`})})})}export{l as n,c as t}; \ No newline at end of file diff --git a/src/www/assets/rate-B9ZGMIwY.js b/src/www/assets/rate-B9ZGMIwY.js new file mode 100644 index 0000000..b6e97cf --- /dev/null +++ b/src/www/assets/rate-B9ZGMIwY.js @@ -0,0 +1 @@ +import{Fc as e,Rl as t,at as n,ct as r,it as i,lt as a,nu as o,ot as s,ou as c,rt as l,ru as u,st as d}from"./messages-BovT1T-w.js";import{t as f}from"./button-DJA4fnJ8.js";import{c as p,s as m}from"./zod-Cymc5bS-.js";import{a as h,c as g,i as _,l as v,n as y,o as b,r as x,s as S,t as C}from"./form-DdHiBYMe.js";import{t as w}from"./input-DiRPHDd8.js";import{t as T}from"./page-header-BBJ9dE3-.js";import{a as E,i as D,n as O,t as k}from"./lib-CTYwzR3w.js";var A=c(u(),1),j=o(),M=m({apiUrl:p().url(r()),forcedUsdtRate:p().min(1,d()).refine(e=>!Number.isNaN(Number(e))&&Number(e)>=0,{message:d()})});function N(){let e=D(`rate`),r=E(),a=v({resolver:g(M),defaultValues:{apiUrl:``,forcedUsdtRate:`0`}});(0,A.useEffect)(()=>{let t=e.data?.data;t&&a.reset({apiUrl:k(t,`rate.api_url`),forcedUsdtRate:k(t,`rate.forced_usdt_rate`,`0`)})},[e.data,a]);async function o(t){await O(r.mutateAsync,[{group:`rate`,key:`rate.api_url`,type:`string`,value:t.apiUrl},{group:`rate`,key:`rate.forced_usdt_rate`,type:`string`,value:t.forcedUsdtRate}],s()),await e.refetch()}return(0,j.jsx)(C,{...a,children:(0,j.jsxs)(`form`,{className:`space-y-6`,onSubmit:a.handleSubmit(o),children:[(0,j.jsx)(_,{control:a.control,name:`apiUrl`,render:({field:e})=>(0,j.jsxs)(h,{children:[(0,j.jsx)(b,{children:n()}),(0,j.jsx)(y,{children:(0,j.jsx)(w,{...e})}),(0,j.jsx)(S,{})]})}),(0,j.jsx)(_,{control:a.control,name:`forcedUsdtRate`,render:({field:e})=>(0,j.jsxs)(h,{children:[(0,j.jsx)(b,{children:i()}),(0,j.jsx)(y,{children:(0,j.jsx)(w,{disabled:!0,step:`0.0001`,type:`number`,...e})}),(0,j.jsx)(x,{children:t()}),(0,j.jsx)(S,{})]})}),(0,j.jsx)(`div`,{className:`flex gap-2`,children:(0,j.jsx)(f,{disabled:r.isPending||e.isLoading,type:`submit`,children:l()})})]})})}function P(){return(0,j.jsx)(T,{description:a(),title:e(),variant:`section`,children:(0,j.jsx)(N,{})})}var F=P;export{F as component}; \ No newline at end of file diff --git a/src/www/assets/redirect-dE0wk0WH.js b/src/www/assets/redirect-dE0wk0WH.js new file mode 100644 index 0000000..111782f --- /dev/null +++ b/src/www/assets/redirect-dE0wk0WH.js @@ -0,0 +1 @@ +function e(e={}){if(e.isNotFound=!0,e.throw)throw e;return e}function t(e){return e?.isNotFound===!0}var n=`__root__`;function r(e){if(e.statusCode=e.statusCode||e.code||307,!e._builtLocation&&!e.reloadDocument&&typeof e.href==`string`)try{new URL(e.href),e.reloadDocument=!0}catch{}let t=new Headers(e.headers);e.href&&t.get(`Location`)===null&&t.set(`Location`,e.href);let n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}function i(e){return e instanceof Response&&!!e.options}export{e as a,t as i,r as n,n as r,i as t}; \ No newline at end of file diff --git a/src/www/assets/route-BxpeArPd.js b/src/www/assets/route-BxpeArPd.js new file mode 100644 index 0000000..17e41c6 --- /dev/null +++ b/src/www/assets/route-BxpeArPd.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./useRouter-D03zSgJO.js";import{n as i}from"./useStore-1-QVtiLb.js";import{d as a,f as o,s}from"./ClientOnly-CtYi2y5F.js";import{a as c,n as l,r as u}from"./redirect-dE0wk0WH.js";import{t as d}from"./link-CA4H4hTz.js";import{n as f,t as p}from"./useSearch-B5ZWp8fU.js";import{t as m}from"./useNavigate-Dg8CkCoa.js";var h=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{this.originalIndex=e.originalIndex;let t=this.options,n=!t?.path&&!t?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=u:this.parentRoute||i();let r=n?u:t?.path;r&&r!==`/`&&(r=a(r));let c=t?.id||r,l=n?u:s([this.parentRoute.id===`__root__`?``:this.parentRoute.id,c]);r===`__root__`&&(r=`/`),l!==`__root__`&&(l=s([`/`,l]));let d=l===`__root__`?`/`:s([this.parentRoute.fullPath,r]);this._path=r,this._id=l,this._fullPath=d,this._to=o(d)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e==`object`&&e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>l({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!e?.getParentRoute,e?.id&&e?.path)throw Error(`Route cannot have both an 'id' and a 'path' option.`)}},g=class{constructor({id:e}){this.notFound=e=>c({routeId:this.id,...e}),this.redirect=e=>l({from:this.id,...e}),this.id=e}},_=class extends h{constructor(e){super(e)}};function v(e){return f({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.loaderData):t.loaderData})}function y(e){let{select:t,...n}=e;return f({...n,select:e=>t?t(e.loaderDeps):e.loaderDeps})}function b(e){return f({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:t=>{let n=e.strict===!1?t.params:t._strictParams;return e.select?e.select(n):n}})}function x(e){return f({...e,select:t=>e.select?e.select(t.context):t.context})}var S=t(n(),1),C=e();function w(e){return new T({id:e})}var T=class extends g{constructor({id:e}){super({id:e}),this.useMatch=e=>f({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>x({...e,from:this.id}),this.useSearch=e=>p({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>b({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>y({...e,from:this.id,strict:!1}),this.useLoaderData=e=>v({...e,from:this.id,strict:!1}),this.useNavigate=()=>m({from:r().routesById[this.id].fullPath}),this.notFound=e=>c({routeId:this.id,...e}),this.Link=S.forwardRef((e,t)=>{let n=r().routesById[this.id].fullPath;return(0,C.jsx)(d,{ref:t,from:n,...e})})}},E=class extends h{constructor(e){super(e),this.useMatch=e=>f({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>x({...e,from:this.id}),this.useSearch=e=>p({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>b({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>y({...e,from:this.id}),this.useLoaderData=e=>v({...e,from:this.id}),this.useNavigate=()=>m({from:this.fullPath}),this.Link=S.forwardRef((e,t)=>(0,C.jsx)(d,{ref:t,from:this.fullPath,...e}))}};function D(e){return new E(e)}function O(){return e=>A(e)}var k=class extends _{constructor(e){super(e),this.useMatch=e=>f({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>x({...e,from:this.id}),this.useSearch=e=>p({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>b({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>y({...e,from:this.id}),this.useLoaderData=e=>v({...e,from:this.id}),this.useNavigate=()=>m({from:this.fullPath}),this.Link=S.forwardRef((e,t)=>(0,C.jsx)(d,{ref:t,from:this.fullPath,...e}))}};function A(e){return new k(e)}export{D as n,w as r,O as t}; \ No newline at end of file diff --git a/src/www/assets/route-C7cw4pTD.js b/src/www/assets/route-C7cw4pTD.js new file mode 100644 index 0000000..9b00b85 --- /dev/null +++ b/src/www/assets/route-C7cw4pTD.js @@ -0,0 +1 @@ +import{Ds as e,Hl as t,Jl as n,Os as r,Ps as i,Yl as a,n as o,nu as s,ou as c,ru as l}from"./messages-BovT1T-w.js";import{i as u,l as d}from"./auth-store-BpIS8RMn.js";import{n as f}from"./Match-B8-zI9ZJ.js";import{t as p}from"./link-CA4H4hTz.js";import{n as m}from"./Matches-LuvVcyUg.js";import{t as h}from"./dist-15n4mVGL.js";import{A as g,B as _,C as v,D as ee,E as y,F as te,G as b,H as ne,I as re,L as ie,N as x,O as S,S as ae,T as C,V as oe,_ as se,b as ce,d as w,f as T,g as le,i as ue,j as de,k as fe,l as pe,o as me,p as he,t as ge,u as E,v as _e,w as D,x as ve,y as O}from"./search-provider-Cx1K1ilz.js";import{d as k,i as A}from"./button-DJA4fnJ8.js";import{i as j,n as M,o as N,r as P}from"./dist-DG5UMlBd.js";import{t as F}from"./dist-Cp1lAGZy.js";import{i as ye}from"./dist-BEDXr2LC.js";import{a as I,i as be,l as L,o as R,r as z,s as B,t as V}from"./dropdown-menu-CUea1X0A.js";import{t as xe}from"./cookies-BNZcTwGc.js";import{t as Se}from"./chevrons-up-down-iOmAu5Fh.js";import{t as Ce}from"./badge-BAmRBT3U.js";var H=c(l(),1),U=s(),W=`Collapsible`,[we,Te]=N(W),[Ee,G]=we(W),K=H.forwardRef((e,t)=>{let{__scopeCollapsible:n,open:r,defaultOpen:i,disabled:a,onOpenChange:o,...s}=e,[c,l]=M({prop:r,defaultProp:i??!1,onChange:o,caller:W});return(0,U.jsx)(Ee,{scope:n,disabled:a,contentId:ye(),open:c,onOpenToggle:H.useCallback(()=>l(e=>!e),[l]),children:(0,U.jsx)(h.div,{"data-state":Z(c),"data-disabled":a?``:void 0,...s,ref:t})})});K.displayName=W;var q=`CollapsibleTrigger`,J=H.forwardRef((e,t)=>{let{__scopeCollapsible:n,...r}=e,i=G(q,n);return(0,U.jsx)(h.button,{type:`button`,"aria-controls":i.contentId,"aria-expanded":i.open||!1,"data-state":Z(i.open),"data-disabled":i.disabled?``:void 0,disabled:i.disabled,...r,ref:t,onClick:j(e.onClick,i.onOpenToggle)})});J.displayName=q;var Y=`CollapsibleContent`,X=H.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=G(Y,e.__scopeCollapsible);return(0,U.jsx)(F,{present:n||i.open,children:({present:e})=>(0,U.jsx)(De,{...r,ref:t,present:e})})});X.displayName=Y;var De=H.forwardRef((e,t)=>{let{__scopeCollapsible:n,present:r,children:i,...a}=e,o=G(Y,n),[s,c]=H.useState(r),l=H.useRef(null),u=k(t,l),d=H.useRef(0),f=d.current,p=H.useRef(0),m=p.current,g=o.open||s,_=H.useRef(g),v=H.useRef(void 0);return H.useEffect(()=>{let e=requestAnimationFrame(()=>_.current=!1);return()=>cancelAnimationFrame(e)},[]),P(()=>{let e=l.current;if(e){v.current=v.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration=`0s`,e.style.animationName=`none`;let t=e.getBoundingClientRect();d.current=t.height,p.current=t.width,_.current||(e.style.transitionDuration=v.current.transitionDuration,e.style.animationName=v.current.animationName),c(r)}},[o.open,r]),(0,U.jsx)(h.div,{"data-state":Z(o.open),"data-disabled":o.disabled?``:void 0,id:o.contentId,hidden:!g,...a,ref:u,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":m?`${m}px`:void 0,...e.style},children:g&&i})});function Z(e){return e?`open`:`closed`}var Oe=K;function ke(){return(0,U.jsx)(`a`,{className:A(`fixed inset-s-44 z-999 whitespace-nowrap`,`bg-primary px-4 py-2 font-medium text-primary-foreground text-sm`,`opacity-95 shadow-sm transition`,`-translate-y-52 hover:bg-primary/90`,`focus:translate-y-3 focus:transform`,`focus-visible:ring-1 focus-visible:ring-ring`),href:`#content`,children:t()})}function Ae({...e}){return(0,U.jsx)(Oe,{"data-slot":`collapsible`,...e})}function je({...e}){return(0,U.jsx)(J,{"data-slot":`collapsible-trigger`,...e})}function Me({...e}){return(0,U.jsx)(X,{"data-slot":`collapsible-content`,...e})}function Ne({title:e,items:t}){let{state:n,isMobile:r}=x();return(0,U.jsxs)(ce,{children:[(0,U.jsx)(ve,{children:e}),(0,U.jsx)(D,{children:t.map(e=>{let t=`${e.title}-${e.url}`;return e.items?n===`collapsed`&&!r?(0,U.jsx)(Ie,{item:e},t):(0,U.jsx)($,{item:e},t):(0,U.jsx)(Pe,{item:e},t)})})]})}function Q({children:e}){return(0,U.jsx)(Ce,{className:`rounded-full px-1 py-0 text-xs`,children:e})}function Pe({item:e}){let{setOpenMobile:t}=x();return(0,U.jsx)(y,{children:(0,U.jsx)(C,{asChild:!0,isActive:!!m()({to:e.url}),tooltip:e.title,children:(0,U.jsxs)(p,{onClick:()=>t(!1),to:e.url,children:[e.icon&&(0,U.jsx)(e.icon,{}),(0,U.jsx)(`span`,{children:e.title}),e.badge&&(0,U.jsx)(Q,{children:e.badge})]})})})}function $({item:e}){let{setOpenMobile:t}=x(),n=m();return(0,U.jsx)(Ae,{asChild:!0,className:`group/collapsible`,defaultOpen:e.items.some(e=>!!n({to:e.url})),children:(0,U.jsxs)(y,{children:[(0,U.jsx)(je,{asChild:!0,children:(0,U.jsxs)(C,{tooltip:e.title,children:[e.icon&&(0,U.jsx)(e.icon,{}),(0,U.jsx)(`span`,{children:e.title}),e.badge&&(0,U.jsx)(Q,{children:e.badge}),(0,U.jsx)(b,{className:`ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180`})]})}),(0,U.jsx)(Me,{className:`CollapsibleContent`,children:(0,U.jsx)(ee,{children:e.items.map(e=>(0,U.jsx)(Fe,{item:e,onClose:()=>t(!1)},e.title))})})]})})}function Fe({item:e,onClose:t}){return(0,U.jsx)(fe,{children:(0,U.jsx)(S,{asChild:!0,isActive:!!m()({to:e.url}),children:(0,U.jsxs)(p,{onClick:t,to:e.url,children:[e.icon&&(0,U.jsx)(e.icon,{}),(0,U.jsx)(`span`,{children:e.title}),e.badge&&(0,U.jsx)(Q,{children:e.badge})]})})})}function Ie({item:e}){let t=m();return(0,U.jsx)(y,{children:(0,U.jsxs)(V,{children:[(0,U.jsx)(L,{asChild:!0,children:(0,U.jsxs)(C,{isActive:e.items.some(e=>!!t({to:e.url})),tooltip:e.title,children:[e.icon&&(0,U.jsx)(e.icon,{}),(0,U.jsx)(`span`,{children:e.title}),e.badge&&(0,U.jsx)(Q,{children:e.badge}),(0,U.jsx)(b,{className:`ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90`})]})}),(0,U.jsxs)(z,{align:`start`,side:`right`,sideOffset:4,children:[(0,U.jsxs)(R,{children:[e.title,` `,e.badge?`(${e.badge})`:``]}),(0,U.jsx)(B,{}),e.items.map(e=>(0,U.jsx)(Le,{item:e},`${e.title}-${e.url}`))]})]})})}function Le({item:e}){return(0,U.jsx)(I,{asChild:!0,children:(0,U.jsxs)(p,{className:m()({to:e.url})?`bg-secondary`:``,to:e.url,children:[e.icon&&(0,U.jsx)(e.icon,{}),(0,U.jsx)(`span`,{className:`max-w-52 text-wrap`,children:e.title}),e.badge&&(0,U.jsx)(`span`,{className:`ms-auto text-xs`,children:e.badge})]})})}function Re(){let{isMobile:t}=x(),[s,c]=pe(),[l,d]=(0,H.useState)(!1),{user:f}=u(),m=f?.username?.trim()||o(),h=m.charAt(0).toUpperCase()||`U`,g=f?.last_login_at?r({time:me(f.last_login_at)}):e();return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(ie,{onOpenChange:d,open:l,children:(0,U.jsx)(le,{})}),(0,U.jsx)(D,{children:(0,U.jsx)(y,{children:(0,U.jsxs)(V,{children:[(0,U.jsx)(L,{asChild:!0,children:(0,U.jsxs)(C,{className:`data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground`,size:`lg`,children:[(0,U.jsxs)(E,{className:`h-8 w-8 rounded-lg`,children:[(0,U.jsx)(T,{alt:m,src:`/avatars/01.png`}),(0,U.jsx)(w,{className:`rounded-lg`,children:h})]}),(0,U.jsxs)(`div`,{className:`grid flex-1 text-start text-sm leading-tight`,children:[(0,U.jsx)(`span`,{className:`truncate font-semibold`,children:m}),(0,U.jsx)(`span`,{className:`truncate text-xs`,children:g})]}),(0,U.jsx)(Se,{className:`ms-auto size-4`})]})}),(0,U.jsxs)(z,{align:`end`,className:`w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg`,side:t?`bottom`:`right`,sideOffset:4,children:[(0,U.jsx)(R,{className:`p-0 font-normal`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2 px-1 py-1.5 text-start text-sm`,children:[(0,U.jsxs)(E,{className:`h-8 w-8 rounded-lg`,children:[(0,U.jsx)(T,{alt:m,src:`/avatars/01.png`}),(0,U.jsx)(w,{className:`rounded-lg`,children:h})]}),(0,U.jsxs)(`div`,{className:`grid flex-1 text-start text-sm leading-tight`,children:[(0,U.jsx)(`span`,{className:`truncate font-semibold`,children:m}),(0,U.jsx)(`span`,{className:`truncate text-xs`,children:g})]})]})}),(0,U.jsx)(B,{}),(0,U.jsxs)(be,{children:[(0,U.jsx)(I,{asChild:!0,children:(0,U.jsxs)(p,{to:`/account/password`,children:[(0,U.jsx)(ne,{}),a()]})}),(0,U.jsxs)(I,{onClick:()=>d(!0),onSelect:e=>e.preventDefault(),children:[(0,U.jsx)(_,{}),i()]})]}),(0,U.jsx)(B,{}),(0,U.jsxs)(I,{onClick:()=>c(!0),variant:`destructive`,children:[(0,U.jsx)(oe,{}),n()]})]})]})})}),(0,U.jsx)(he,{onOpenChange:c,open:!!s})]})}function ze({teams:e}){let t=e[0];return(0,U.jsx)(D,{children:(0,U.jsx)(y,{children:(0,U.jsxs)(C,{className:`cursor-default`,size:`lg`,children:[(0,U.jsx)(`div`,{className:`flex aspect-square size-8 items-center justify-center rounded-lg`,children:(0,U.jsx)(t.logo,{className:`size-8`})}),(0,U.jsxs)(`div`,{className:`grid flex-1 text-start text-sm leading-tight`,children:[(0,U.jsx)(`span`,{className:`truncate font-semibold`,children:t.name}),(0,U.jsx)(`span`,{className:`truncate text-xs`,children:t.plan})]})]})})})}function Be(){let{collapsible:e,variant:t}=re(),n=ue();return(0,U.jsxs)(se,{collapsible:e,variant:t,children:[(0,U.jsx)(ae,{children:(0,U.jsx)(ze,{teams:n.teams})}),(0,U.jsx)(_e,{children:n.navGroups.map(e=>(0,U.jsx)(Ne,{...e},e.title))}),(0,U.jsx)(O,{children:(0,U.jsx)(Re,{})}),(0,U.jsx)(de,{})]})}function Ve({children:e}){return(0,U.jsx)(ge,{children:(0,U.jsx)(te,{children:(0,U.jsxs)(g,{defaultOpen:xe(d)!==`false`,children:[(0,U.jsx)(ke,{}),(0,U.jsx)(Be,{}),(0,U.jsx)(v,{className:A(`@container/content`,`has-data-[layout=fixed]:h-svh`,`peer-data-[variant=inset]:has-data-[layout=fixed]:h-[calc(100svh-(var(--spacing)*4))]`),id:`content`,tabIndex:-1,children:e??(0,U.jsx)(f,{})})]})})})}var He=Ve;export{He as component}; \ No newline at end of file diff --git a/src/www/assets/route-ClLiRb_H.js b/src/www/assets/route-ClLiRb_H.js new file mode 100644 index 0000000..d1fc7a2 --- /dev/null +++ b/src/www/assets/route-ClLiRb_H.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{n as r}from"./Match-B8-zI9ZJ.js";import{i}from"./button-DJA4fnJ8.js";import{u as a}from"./dropdown-menu-CUea1X0A.js";import{n as o,t as s}from"./theme-switch-BjXQNOij.js";import{n as c,t as l}from"./auth-animation-context-zwGs7ZAM.js";var u=t(n());function d(e){if(e===void 0)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return e}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var p={autoSleep:120,force3D:`auto`,nullTargetWarn:1,units:{lineHeight:``}},m={duration:.5,overwrite:!1,delay:0},h,g,_,v=1e8,y=1/v,b=Math.PI*2,x=b/4,S=0,C=Math.sqrt,w=Math.cos,T=Math.sin,E=function(e){return typeof e==`string`},D=function(e){return typeof e==`function`},O=function(e){return typeof e==`number`},k=function(e){return e===void 0},A=function(e){return typeof e==`object`},j=function(e){return e!==!1},M=function(){return typeof window<`u`},N=function(e){return D(e)||E(e)},P=typeof ArrayBuffer==`function`&&ArrayBuffer.isView||function(){},F=Array.isArray,I=/random\([^)]+\)/g,ee=/,\s*/g,L=/(?:-?\.?\d|\.)+/gi,te=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,R=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,ne=/[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,re=/[+-]=-?[.\d]+/,ie=/[^,'"\[\]\s]+/gi,ae=/^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,z,oe,se,ce,le={},ue={},de,fe=function(e){return(ue=Ve(e,le))&&Y},pe=function(e,t){return console.warn(`Invalid property`,e,`set to`,t,`Missing plugin? gsap.registerPlugin()`)},me=function(e,t){return!t&&console.warn(e)},he=function(e,t){return e&&(le[e]=t)&&ue&&(ue[e]=t)||le},ge=function(){return 0},_e={suppressEvents:!0,isStart:!0,kill:!1},ve={suppressEvents:!0,kill:!1},ye={suppressEvents:!0},be={},xe=[],Se={},Ce,we={},Te={},Ee=30,De=[],Oe=``,ke=function(e){var t=e[0],n,r;if(A(t)||D(t)||(e=[e]),!(n=(t._gsap||{}).harness)){for(r=De.length;r--&&!De[r].targetTest(t););n=De[r]}for(r=e.length;r--;)e[r]&&(e[r]._gsap||(e[r]._gsap=new mn(e[r],n)))||e.splice(r,1);return e},Ae=function(e){return e._gsap||ke(Ct(e))[0]._gsap},je=function(e,t,n){return(n=e[t])&&D(n)?e[t]():k(n)&&e.getAttribute&&e.getAttribute(t)||n},B=function(e,t){return(e=e.split(`,`)).forEach(t)||e},V=function(e){return Math.round(e*1e5)/1e5||0},H=function(e){return Math.round(e*1e7)/1e7||0},Me=function(e,t){var n=t.charAt(0),r=parseFloat(t.substr(2));return e=parseFloat(e),n===`+`?e+r:n===`-`?e-r:n===`*`?e*r:e/r},Ne=function(e,t){for(var n=t.length,r=0;e.indexOf(t[r])<0&&++ro;)a=a._prev;return a?(t._next=a._next,a._next=t):(t._next=e[n],e[n]=t),t._next?t._next._prev=t:e[r]=t,t._prev=a,t.parent=t._dp=e,t},qe=function(e,t,n,r){n===void 0&&(n=`_first`),r===void 0&&(r=`_last`);var i=t._prev,a=t._next;i?i._next=a:e[n]===t&&(e[n]=a),a?a._prev=i:e[r]===t&&(e[r]=i),t._next=t._prev=t.parent=null},Je=function(e,t){e.parent&&(!t||e.parent.autoRemoveChildren)&&e.parent.remove&&e.parent.remove(e),e._act=0},Ye=function(e,t){if(e&&(!t||t._end>e._dur||t._start<0))for(var n=e;n;)n._dirty=1,n=n.parent;return e},Xe=function(e){for(var t=e.parent;t&&t.parent;)t._dirty=1,t.totalDuration(),t=t.parent;return e},Ze=function(e,t,n,r){return e._startAt&&(g?e._startAt.revert(ve):e.vars.immediateRender&&!e.vars.autoRevert||e._startAt.render(t,!0,r))},Qe=function e(t){return!t||t._ts&&e(t.parent)},$e=function(e){return e._repeat?et(e._tTime,e=e.duration()+e._rDelay)*e:0},et=function(e,t){var n=Math.floor(e=H(e/t));return e&&n===e?n-1:n},tt=function(e,t){return(e-t._start)*t._ts+(t._ts>=0?0:t._dirty?t.totalDuration():t._tDur)},nt=function(e){return e._end=H(e._start+(e._tDur/Math.abs(e._ts||e._rts||y)||0))},rt=function(e,t){var n=e._dp;return n&&n.smoothChildTiming&&e._ts&&(e._start=H(n._time-(e._ts>0?t/e._ts:((e._dirty?e.totalDuration():e._tDur)-t)/-e._ts)),nt(e),n._dirty||Ye(n,e)),e},it=function(e,t){var n;if((t._time||!t._dur&&t._initted||t._starty)&&t.render(n,!0)),Ye(e,t)._dp&&e._initted&&e._time>=e._dur&&e._ts){if(e._dur=0&&n.totalTime(n._tTime),n=n._dp;e._zTime=-y}},at=function(e,t,n,r){return t.parent&&Je(t),t._start=H((O(n)?n:n||e!==z?ht(e,n,t):e._time)+t._delay),t._end=H(t._start+(t.totalDuration()/Math.abs(t.timeScale())||0)),Ke(e,t,`_first`,`_last`,e._sort?`_start`:0),lt(t)||(e._recent=t),r||it(e,t),e._ts<0&&rt(e,e._tTime),e},ot=function(e,t){return(le.ScrollTrigger||pe(`scrollTrigger`,t))&&le.ScrollTrigger.create(t,e)},st=function(e,t,n,r,i){if(Sn(e,t,i),!e._initted)return 1;if(!n&&e._pt&&!g&&(e._dur&&e.vars.lazy!==!1||!e._dur&&e.vars.lazy)&&Ce!==en.frame)return xe.push(e),e._lazy=[i,r],1},ct=function e(t){var n=t.parent;return n&&n._ts&&n._initted&&!n._lock&&(n.rawTime()<0||e(n))},lt=function(e){var t=e.data;return t===`isFromStart`||t===`isStart`},ut=function(e,t,n,r){var i=e.ratio,a=t<0||!t&&(!e._start&&ct(e)&&!(!e._initted&<(e))||(e._ts<0||e._dp._ts<0)&&!lt(e))?0:1,o=e._rDelay,s=0,c,l,u;if(o&&e._repeat&&(s=vt(0,e._tDur,t),l=et(s,o),e._yoyo&&l&1&&(a=1-a),l!==et(e._tTime,o)&&(i=1-a,e.vars.repeatRefresh&&e._initted&&e.invalidate())),a!==i||g||r||e._zTime===y||!t&&e._zTime){if(!e._initted&&st(e,t,r,n,s))return;for(u=e._zTime,e._zTime=t||(n?y:0),n||=t&&!u,e.ratio=a,e._from&&(a=1-a),e._time=0,e._tTime=s,c=e._pt;c;)c.r(a,c.d),c=c._next;t<0&&Ze(e,t,n,!0),e._onUpdate&&!n&&Bt(e,`onUpdate`),s&&e._repeat&&!n&&e.parent&&Bt(e,`onRepeat`),(t>=e._tDur||t<0)&&e.ratio===a&&(a&&Je(e,1),!n&&!g&&(Bt(e,a?`onComplete`:`onReverseComplete`,!0),e._prom&&e._prom()))}else e._zTime||=t},dt=function(e,t,n){var r;if(n>t)for(r=e._first;r&&r._start<=n;){if(r.data===`isPause`&&r._start>t)return r;r=r._next}else for(r=e._last;r&&r._start>=n;){if(r.data===`isPause`&&r._start0&&!r&&rt(e,e._tTime=e._tDur*o),e.parent&&nt(e),n||Ye(e.parent,e),e},pt=function(e){return e instanceof K?Ye(e):ft(e,e._dur)},mt={_start:0,endTime:ge,totalDuration:ge},ht=function e(t,n,r){var i=t.labels,a=t._recent||mt,o=t.duration()>=v?a.endTime(!1):t._dur,s,c,l;return E(n)&&(isNaN(n)||n in i)?(c=n.charAt(0),l=n.substr(-1)===`%`,s=n.indexOf(`=`),c===`<`||c===`>`?(s>=0&&(n=n.replace(/=/,``)),(c===`<`?a._start:a.endTime(a._repeat>=0))+(parseFloat(n.substr(1))||0)*(l?(s<0?a:r).totalDuration()/100:1)):s<0?(n in i||(i[n]=o),i[n]):(c=parseFloat(n.charAt(s-1)+n.substr(s+1)),l&&r&&(c=c/100*(F(r)?r[0]:r).totalDuration()),s>1?e(t,n.substr(0,s-1),r)+c:o+c)):n==null?o:+n},gt=function(e,t,n){var r=O(t[1]),i=(r?2:1)+(e<2?0:1),a=t[i],o,s;if(r&&(a.duration=t[1]),a.parent=n,e){for(o=a,s=n;s&&!(`immediateRender`in o);)o=s.vars.defaults||{},s=j(s.vars.inherit)&&s.parent;a.immediateRender=j(o.immediateRender),e<2?a.runBackwards=1:a.startAt=t[i-1]}return new q(t[0],a,t[i+1])},_t=function(e,t){return e||e===0?t(e):t},vt=function(e,t,n){return nt?t:n},U=function(e,t){return!E(e)||!(t=ae.exec(e))?``:t[1]},yt=function(e,t,n){return _t(n,function(n){return vt(e,t,n)})},bt=[].slice,xt=function(e,t){return e&&A(e)&&`length`in e&&(!t&&!e.length||e.length-1 in e&&A(e[0]))&&!e.nodeType&&e!==oe},St=function(e,t,n){return n===void 0&&(n=[]),e.forEach(function(e){var r;return E(e)&&!t||xt(e,1)?(r=n).push.apply(r,Ct(e)):n.push(e)})||n},Ct=function(e,t,n){return _&&!t&&_.selector?_.selector(e):E(e)&&!n&&(se||!tn())?bt.call((t||ce).querySelectorAll(e),0):F(e)?St(e,n):xt(e)?bt.call(e,0):e?[e]:[]},wt=function(e){return e=Ct(e)[0]||me(`Invalid scope`)||{},function(t){var n=e.current||e.nativeElement||e;return Ct(t,n.querySelectorAll?n:n===e?me(`Invalid scope`)||ce.createElement(`div`):e)}},Tt=function(e){return e.sort(function(){return .5-Math.random()})},Et=function(e){if(D(e))return e;var t=A(e)?e:{each:e},n=ln(t.ease),r=t.from||0,i=parseFloat(t.base)||0,a={},o=r>0&&r<1,s=isNaN(r)||o,c=t.axis,l=r,u=r;return E(r)?l=u={center:.5,edges:.5,end:1}[r]||0:!o&&s&&(l=r[0],u=r[1]),function(e,o,d){var f=(d||t).length,p=a[f],m,h,g,_,y,b,x,S,w;if(!p){if(w=t.grid===`auto`?0:(t.grid||[1,v])[1],!w){for(x=-v;x<(x=d[w++].getBoundingClientRect().left)&&wx&&(x=y),yf?f-1:c?c===`y`?f/w:w:Math.max(w,f/w))||0)*(r===`edges`?-1:1),p.b=f<0?i-f:i,p.u=U(t.amount||t.each)||0,n=n&&f<0?cn(n):n}return f=(p[e]-p.min)/p.max||0,H(p.b+(n?n(f):f)*p.v)+p.u}},Dt=function(e){var t=10**((e+``).split(`.`)[1]||``).length;return function(n){var r=H(Math.round(parseFloat(n)/e)*e*t);return(r-r%1)/t+(O(n)?0:U(n))}},Ot=function(e,t){var n=F(e),r,i;return!n&&A(e)&&(r=n=e.radius||v,e.values?(e=Ct(e.values),(i=!O(e[0]))&&(r*=r)):e=Dt(e.increment)),_t(t,n?D(e)?function(t){return i=e(t),Math.abs(i-t)<=r?i:t}:function(t){for(var n=parseFloat(i?t.x:t),a=parseFloat(i?t.y:0),o=v,s=0,c=e.length,l,u;c--;)i?(l=e[c].x-n,u=e[c].y-a,l=l*l+u*u):l=Math.abs(e[c]-n),li?a-e:e)})},It=function(e){return e.replace(I,function(e){var t=e.indexOf(`[`)+1,n=e.substring(t||7,t?e.indexOf(`]`):e.length-1).split(ee);return kt(t?n:+n[0],t?0:+n[1],+n[2]||1e-5)})},Lt=function(e,t,n,r,i){var a=t-e,o=r-n;return _t(i,function(t){return n+((t-e)/a*o||0)})},Rt=function e(t,n,r,i){var a=isNaN(t+n)?0:function(e){return(1-e)*t+e*n};if(!a){var o=E(t),s={},c,l,u,d,f;if(r===!0&&(i=1)&&(r=null),o)t={p:t},n={p:n};else if(F(t)&&!F(n)){for(u=[],d=t.length,f=d-2,l=1;l(o=Math.abs(o))&&(s=a,i=o);return s},Bt=function(e,t,n){var r=e.vars,i=r[t],a=_,o=e._ctx,s,c,l;if(i)return s=r[t+`Params`],c=r.callbackScope||e,n&&xe.length&&Pe(),o&&(_=o),l=s?i.apply(c,s):i.call(c),_=a,l},Vt=function(e){return Je(e),e.scrollTrigger&&e.scrollTrigger.kill(!!g),e.progress()<1&&Bt(e,`onInterrupt`),e},Ht,Ut=[],Wt=function(e){if(e)if(e=!e.name&&e.default||e,M()||e.headless){var t=e.name,n=D(e),r=t&&!n&&e.init?function(){this._props=[]}:e,i={init:ge,render:Ln,add:_n,kill:zn,modifier:Rn,rawVars:0},a={targetTest:0,get:0,getSetter:Nn,aliases:{},register:0};if(tn(),e!==r){if(we[t])return;ze(r,ze(Ue(e,i),a)),Ve(r.prototype,Ve(i,Ue(e,a))),we[r.prop=t]=r,e.targetTest&&(De.push(r),be[t]=1),t=(t===`css`?`CSS`:t.charAt(0).toUpperCase()+t.substr(1))+`Plugin`}he(t,r),e.register&&e.register(Y,r,J)}else Ut.push(e)},W=255,Gt={aqua:[0,W,W],lime:[0,W,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,W],navy:[0,0,128],white:[W,W,W],olive:[128,128,0],yellow:[W,W,0],orange:[W,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[W,0,0],pink:[W,192,203],cyan:[0,W,W],transparent:[W,W,W,0]},Kt=function(e,t,n){return e+=e<0?1:e>1?-1:0,(e*6<1?t+(n-t)*e*6:e<.5?n:e*3<2?t+(n-t)*(2/3-e)*6:t)*W+.5|0},qt=function(e,t,n){var r=e?O(e)?[e>>16,e>>8&W,e&W]:0:Gt.black,i,a,o,s,c,l,u,d,f,p;if(!r){if(e.substr(-1)===`,`&&(e=e.substr(0,e.length-1)),Gt[e])r=Gt[e];else if(e.charAt(0)===`#`){if(e.length<6&&(i=e.charAt(1),a=e.charAt(2),o=e.charAt(3),e=`#`+i+i+a+a+o+o+(e.length===5?e.charAt(4)+e.charAt(4):``)),e.length===9)return r=parseInt(e.substr(1,6),16),[r>>16,r>>8&W,r&W,parseInt(e.substr(7),16)/255];e=parseInt(e.substr(1),16),r=[e>>16,e>>8&W,e&W]}else if(e.substr(0,3)===`hsl`){if(r=p=e.match(L),!t)s=r[0]%360/360,c=r[1]/100,l=r[2]/100,a=l<=.5?l*(c+1):l+c-l*c,i=l*2-a,r.length>3&&(r[3]*=1),r[0]=Kt(s+1/3,i,a),r[1]=Kt(s,i,a),r[2]=Kt(s-1/3,i,a);else if(~e.indexOf(`=`))return r=e.match(te),n&&r.length<4&&(r[3]=1),r}else r=e.match(L)||Gt.transparent;r=r.map(Number)}return t&&!p&&(i=r[0]/W,a=r[1]/W,o=r[2]/W,u=Math.max(i,a,o),d=Math.min(i,a,o),l=(u+d)/2,u===d?s=c=0:(f=u-d,c=l>.5?f/(2-u-d):f/(u+d),s=u===i?(a-o)/f+(at||h<0)&&(r+=h-n),i+=h,y=i-r,_=y-o,(_>0||g)&&(b=++d.frame,f=y-d.time*1e3,d.time=y/=1e3,o+=_+(_>=a?4:a-_),v=1),g||(c=l(u)),v)for(p=0;p=t&&p--},_listeners:s},d}(),tn=function(){return!$t&&en.wake()},G={},nn=/^[\d.\-M][\d.\-,\s]/,rn=/["']/g,an=function(e){for(var t={},n=e.substr(1,e.length-3).split(`:`),r=n[0],i=1,a=n.length,o,s,c;i1&&n.config?n.config.apply(null,~e.indexOf(`{`)?[an(t[1])]:on(e).split(`,`).map(Le)):G._CE&&nn.test(e)?G._CE(``,e):n},cn=function(e){return function(t){return 1-e(1-t)}},ln=function(e,t){return e&&(D(e)?e:G[e]||sn(e))||t},un=function(e,t,n,r){n===void 0&&(n=function(e){return 1-t(1-e)}),r===void 0&&(r=function(e){return e<.5?t(e*2)/2:1-t((1-e)*2)/2});var i={easeIn:t,easeOut:n,easeInOut:r},a;return B(e,function(e){for(var t in G[e]=le[e]=i,G[a=e.toLowerCase()]=n,i)G[a+(t===`easeIn`?`.in`:t===`easeOut`?`.out`:`.inOut`)]=G[e+`.`+t]=i[t]}),i},dn=function(e){return function(t){return t<.5?(1-e(1-t*2))/2:.5+e((t-.5)*2)/2}},fn=function e(t,n,r){var i=n>=1?n:1,a=(r||(t?.3:.45))/(n<1?n:1),o=a/b*(Math.asin(1/i)||0),s=function(e){return e===1?1:i*2**(-10*e)*T((e-o)*a)+1},c=t===`out`?s:t===`in`?function(e){return 1-s(1-e)}:dn(s);return a=b/a,c.config=function(n,r){return e(t,n,r)},c},pn=function e(t,n){n===void 0&&(n=1.70158);var r=function(e){return e?--e*e*((n+1)*e+n)+1:0},i=t===`out`?r:t===`in`?function(e){return 1-r(1-e)}:dn(r);return i.config=function(n){return e(t,n)},i};B(`Linear,Quad,Cubic,Quart,Quint,Strong`,function(e,t){var n=t<5?t+1:t;un(e+`,Power`+(n-1),t?function(e){return e**+n}:function(e){return e},function(e){return 1-(1-e)**n},function(e){return e<.5?(e*2)**n/2:1-((1-e)*2)**n/2})}),G.Linear.easeNone=G.none=G.Linear.easeIn,un(`Elastic`,fn(`in`),fn(`out`),fn()),(function(e,t){var n=1/t,r=2*n,i=2.5*n,a=function(a){return a0?e+(e+this._rDelay)*this._repeat:e):this.totalDuration()&&this._dur},t.totalDuration=function(e){return arguments.length?(this._dirty=0,ft(this,this._repeat<0?e:(e-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},t.totalTime=function(e,t){if(tn(),!arguments.length)return this._tTime;var n=this._dp;if(n&&n.smoothChildTiming&&this._ts){for(rt(this,e),!n._dp||n.parent||it(n,this);n&&n.parent;)n.parent._time!==n._start+(n._ts>=0?n._tTime/n._ts:(n.totalDuration()-n._tTime)/-n._ts)&&n.totalTime(n._tTime,!0),n=n.parent;!this.parent&&this._dp.autoRemoveChildren&&(this._ts>0&&e0||!this._tDur&&!e)&&at(this._dp,this,this._start-this._delay)}return(this._tTime!==e||!this._dur&&!t||this._initted&&Math.abs(this._zTime)===y||!this._initted&&this._dur&&e||!e&&!this._initted&&(this.add||this._ptLookup))&&(this._ts||(this._pTime=e),Ie(this,e,t)),this},t.time=function(e,t){return arguments.length?this.totalTime(Math.min(this.totalDuration(),e+$e(this))%(this._dur+this._rDelay)||(e?this._dur:0),t):this._time},t.totalProgress=function(e,t){return arguments.length?this.totalTime(this.totalDuration()*e,t):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.rawTime()>=0&&this._initted?1:0},t.progress=function(e,t){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&!(this.iteration()&1)?1-e:e)+$e(this),t):this.duration()?Math.min(1,this._time/this._dur):+(this.rawTime()>0)},t.iteration=function(e,t){var n=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(e-1)*n,t):this._repeat?et(this._tTime,n)+1:1},t.timeScale=function(e,t){if(!arguments.length)return this._rts===-y?0:this._rts;if(this._rts===e)return this;var n=this.parent&&this._ts?tt(this.parent._time,this):this._tTime;return this._rts=+e||0,this._ts=this._ps||e===-y?0:this._rts,this.totalTime(vt(-Math.abs(this._delay),this.totalDuration(),n),t!==!1),nt(this),Xe(this)},t.paused=function(e){return arguments.length?(this._ps!==e&&(this._ps=e,e?(this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(tn(),this._ts=this._rts,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,this.progress()===1&&Math.abs(this._zTime)!==y&&(this._tTime-=y)))),this):this._ps},t.startTime=function(e){if(arguments.length){this._start=H(e);var t=this.parent||this._dp;return t&&(t._sort||!this.parent)&&at(t,this,this._start-this._delay),this}return this._start},t.endTime=function(e){return this._start+(j(e)?this.totalDuration():this.duration())/Math.abs(this._ts||1)},t.rawTime=function(e){var t=this.parent||this._dp;return t?e&&(!this._ts||this._repeat&&this._time&&this.totalProgress()<1)?this._tTime%(this._dur+this._rDelay):this._ts?tt(t.rawTime(e),this):this._tTime:this._tTime},t.revert=function(e){e===void 0&&(e=ye);var t=g;return g=e,Fe(this)&&(this.timeline&&this.timeline.revert(e),this.totalTime(-.01,e.suppressEvents)),this.data!==`nested`&&e.kill!==!1&&this.kill(),g=t,this},t.globalTime=function(e){for(var t=this,n=arguments.length?e:t.rawTime();t;)n=t._start+n/(Math.abs(t._ts)||1),t=t._dp;return!this.parent&&this._sat?this._sat.globalTime(e):n},t.repeat=function(e){return arguments.length?(this._repeat=e===1/0?-2:e,pt(this)):this._repeat===-2?1/0:this._repeat},t.repeatDelay=function(e){if(arguments.length){var t=this._time;return this._rDelay=e,pt(this),t?this.time(t):this}return this._rDelay},t.yoyo=function(e){return arguments.length?(this._yoyo=e,this):this._yoyo},t.seek=function(e,t){return this.totalTime(ht(this,e),j(t))},t.restart=function(e,t){return this.play().totalTime(e?-this._delay:0,j(t)),this._dur||(this._zTime=-y),this},t.play=function(e,t){return e!=null&&this.seek(e,t),this.reversed(!1).paused(!1)},t.reverse=function(e,t){return e!=null&&this.seek(e||this.totalDuration(),t),this.reversed(!0).paused(!1)},t.pause=function(e,t){return e!=null&&this.seek(e,t),this.paused(!0)},t.resume=function(){return this.paused(!1)},t.reversed=function(e){return arguments.length?(!!e!==this.reversed()&&this.timeScale(-this._rts||(e?-y:0)),this):this._rts<0},t.invalidate=function(){return this._initted=this._act=0,this._zTime=-y,this},t.isActive=function(){var e=this.parent||this._dp,t=this._start,n;return!!(!e||this._ts&&this._initted&&e.isActive()&&(n=e.rawTime(!0))>=t&&n1?(t?(r[e]=t,n&&(r[e+`Params`]=n),e===`onUpdate`&&(this._onUpdate=t)):delete r[e],this):r[e]},t.then=function(e){var t=this,n=t._prom;return new Promise(function(r){var i=D(e)?e:Re,a=function(){var e=t.then;t.then=null,n&&n(),D(i)&&(i=i(t))&&(i.then||i===t)&&(t.then=e),r(i),t.then=e};t._initted&&t.totalProgress()===1&&t._ts>=0||!t._tTime&&t._ts<0?a():t._prom=a})},t.kill=function(){Vt(this)},e}();ze(hn.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-y,_prom:0,_ps:!1,_rts:1});var K=function(e){f(t,e);function t(t,n){var r;return t===void 0&&(t={}),r=e.call(this,t)||this,r.labels={},r.smoothChildTiming=!!t.smoothChildTiming,r.autoRemoveChildren=!!t.autoRemoveChildren,r._sort=j(t.sortChildren),z&&at(t.parent||z,d(r),n),t.reversed&&r.reverse(),t.paused&&r.paused(!0),t.scrollTrigger&&ot(d(r),t.scrollTrigger),r}var n=t.prototype;return n.to=function(e,t,n){return gt(0,arguments,this),this},n.from=function(e,t,n){return gt(1,arguments,this),this},n.fromTo=function(e,t,n,r){return gt(2,arguments,this),this},n.set=function(e,t,n){return t.duration=0,t.parent=this,We(t).repeatDelay||(t.repeat=0),t.immediateRender=!!t.immediateRender,new q(e,t,ht(this,n),1),this},n.call=function(e,t,n){return at(this,q.delayedCall(0,e,t),n)},n.staggerTo=function(e,t,n,r,i,a,o){return n.duration=t,n.stagger=n.stagger||r,n.onComplete=a,n.onCompleteParams=o,n.parent=this,new q(e,n,ht(this,i)),this},n.staggerFrom=function(e,t,n,r,i,a,o){return n.runBackwards=1,We(n).immediateRender=j(n.immediateRender),this.staggerTo(e,t,n,r,i,a,o)},n.staggerFromTo=function(e,t,n,r,i,a,o,s){return r.startAt=n,We(r).immediateRender=j(r.immediateRender),this.staggerTo(e,t,r,i,a,o,s)},n.render=function(e,t,n){var r=this._time,i=this._dirty?this.totalDuration():this._tDur,a=this._dur,o=e<=0?0:H(e),s=this._zTime<0!=e<0&&(this._initted||!a),c,l,u,d,f,p,m,h,_,v,b,x;if(this!==z&&o>i&&e>=0&&(o=i),o!==this._tTime||n||s){if(r!==this._time&&a&&(o+=this._time-r,e+=this._time-r),c=o,_=this._start,h=this._ts,p=!h,s&&(a||(r=this._zTime),(e||!t)&&(this._zTime=e)),this._repeat){if(b=this._yoyo,f=a+this._rDelay,this._repeat<-1&&e<0)return this.totalTime(f*100+e,t,n);if(c=H(o%f),o===i?(d=this._repeat,c=a):(v=H(o/f),d=~~v,d&&d===v&&(c=a,d--),c>a&&(c=a)),v=et(this._tTime,f),!r&&this._tTime&&v!==d&&this._tTime-v*f-this._dur<=0&&(v=d),b&&d&1&&(c=a-c,x=1),d!==v&&!this._lock){var S=b&&v&1,C=S===(b&&d&1);if(d=r&&e>=0)for(l=this._first;l;){if(u=l._next,(l._act||c>=l._start)&&l._ts&&m!==l){if(l.parent!==this)return this.render(e,t,n);if(l.render(l._ts>0?(c-l._start)*l._ts:(l._dirty?l.totalDuration():l._tDur)+(c-l._start)*l._ts,t,n),c!==this._time||!this._ts&&!p){m=0,u&&(o+=this._zTime=-y);break}}l=u}else{l=this._last;for(var w=e<0?e:c;l;){if(u=l._prev,(l._act||w<=l._end)&&l._ts&&m!==l){if(l.parent!==this)return this.render(e,t,n);if(l.render(l._ts>0?(w-l._start)*l._ts:(l._dirty?l.totalDuration():l._tDur)+(w-l._start)*l._ts,t,n||g&&Fe(l)),c!==this._time||!this._ts&&!p){m=0,u&&(o+=this._zTime=w?-y:y);break}}l=u}}if(m&&!t&&(this.pause(),m.render(c>=r?0:-y)._zTime=c>=r?1:-1,this._ts))return this._start=_,nt(this),this.render(e,t,n);this._onUpdate&&!t&&Bt(this,`onUpdate`,!0),(o===i&&this._tTime>=this.totalDuration()||!o&&r)&&(_===this._start||Math.abs(h)!==Math.abs(this._ts))&&(this._lock||((e||!a)&&(o===i&&this._ts>0||!o&&this._ts<0)&&Je(this,1),!t&&!(e<0&&!r)&&(o||r||!i)&&(Bt(this,o===i&&e>=0?`onComplete`:`onReverseComplete`,!0),this._prom&&!(o0)&&this._prom())))}return this},n.add=function(e,t){var n=this;if(O(t)||(t=ht(this,t,e)),!(e instanceof hn)){if(F(e))return e.forEach(function(e){return n.add(e,t)}),this;if(E(e))return this.addLabel(e,t);if(D(e))e=q.delayedCall(0,e);else return this}return this===e?this:at(this,e,t)},n.getChildren=function(e,t,n,r){e===void 0&&(e=!0),t===void 0&&(t=!0),n===void 0&&(n=!0),r===void 0&&(r=-v);for(var i=[],a=this._first;a;)a._start>=r&&(a instanceof q?t&&i.push(a):(n&&i.push(a),e&&i.push.apply(i,a.getChildren(!0,t,n)))),a=a._next;return i},n.getById=function(e){for(var t=this.getChildren(1,1,1),n=t.length;n--;)if(t[n].vars.id===e)return t[n]},n.remove=function(e){return E(e)?this.removeLabel(e):D(e)?this.killTweensOf(e):(e.parent===this&&qe(this,e),e===this._recent&&(this._recent=this._last),Ye(this))},n.totalTime=function(t,n){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=H(en.time-(this._ts>0?t/this._ts:(this.totalDuration()-t)/-this._ts))),e.prototype.totalTime.call(this,t,n),this._forcing=0,this):this._tTime},n.addLabel=function(e,t){return this.labels[e]=ht(this,t),this},n.removeLabel=function(e){return delete this.labels[e],this},n.addPause=function(e,t,n){var r=q.delayedCall(0,t||ge,n);return r.data=`isPause`,this._hasPause=1,at(this,r,ht(this,e))},n.removePause=function(e){var t=this._first;for(e=ht(this,e);t;)t._start===e&&t.data===`isPause`&&Je(t),t=t._next},n.killTweensOf=function(e,t,n){for(var r=this.getTweensOf(e,n),i=r.length;i--;)bn!==r[i]&&r[i].kill(e,t);return this},n.getTweensOf=function(e,t){for(var n=[],r=Ct(e),i=this._first,a=O(t),o;i;)i instanceof q?Ne(i._targets,r)&&(a?(!bn||i._initted&&i._ts)&&i.globalTime(0)<=t&&i.globalTime(i.totalDuration())>t:!t||i.isActive())&&n.push(i):(o=i.getTweensOf(r,t)).length&&n.push.apply(n,o),i=i._next;return n},n.tweenTo=function(e,t){t||={};var n=this,r=ht(n,e),i=t,a=i.startAt,o=i.onStart,s=i.onStartParams,c=i.immediateRender,l,u=q.to(n,ze({ease:t.ease||`none`,lazy:!1,immediateRender:!1,time:r,overwrite:`auto`,duration:t.duration||Math.abs((r-(a&&`time`in a?a.time:n._time))/n.timeScale())||y,onStart:function(){if(n.pause(),!l){var e=t.duration||Math.abs((r-(a&&`time`in a?a.time:n._time))/n.timeScale());u._dur!==e&&ft(u,e,0,1).render(u._time,!0,!0),l=1}o&&o.apply(u,s||[])}},t));return c?u.render(0):u},n.tweenFromTo=function(e,t,n){return this.tweenTo(t,ze({startAt:{time:ht(this,e)}},n))},n.recent=function(){return this._recent},n.nextLabel=function(e){return e===void 0&&(e=this._time),zt(this,ht(this,e))},n.previousLabel=function(e){return e===void 0&&(e=this._time),zt(this,ht(this,e),1)},n.currentLabel=function(e){return arguments.length?this.seek(e,!0):this.previousLabel(this._time+y)},n.shiftChildren=function(e,t,n){n===void 0&&(n=0);var r=this._first,i=this.labels,a;for(e=H(e);r;)r._start>=n&&(r._start+=e,r._end+=e),r=r._next;if(t)for(a in i)i[a]>=n&&(i[a]+=e);return Ye(this)},n.invalidate=function(t){var n=this._first;for(this._lock=0;n;)n.invalidate(t),n=n._next;return e.prototype.invalidate.call(this,t)},n.clear=function(e){e===void 0&&(e=!0);for(var t=this._first,n;t;)n=t._next,this.remove(t),t=n;return this._dp&&(this._time=this._tTime=this._pTime=0),e&&(this.labels={}),Ye(this)},n.totalDuration=function(e){var t=0,n=this,r=n._last,i=v,a,o,s;if(arguments.length)return n.timeScale((n._repeat<0?n.duration():n.totalDuration())/(n.reversed()?-e:e));if(n._dirty){for(s=n.parent;r;)a=r._prev,r._dirty&&r.totalDuration(),o=r._start,o>i&&n._sort&&r._ts&&!n._lock?(n._lock=1,at(n,r,o-r._delay,1)._lock=0):i=o,o<0&&r._ts&&(t-=o,(!s&&!n._dp||s&&s.smoothChildTiming)&&(n._start+=H(o/n._ts),n._time-=o,n._tTime-=o),n.shiftChildren(-o,!1,-1/0),i=0),r._end>t&&r._ts&&(t=r._end),r=a;ft(n,n===z&&n._time>t?n._time:t,1,1),n._dirty=0}return n._tDur},t.updateRoot=function(e){if(z._ts&&(Ie(z,tt(e,z)),Ce=en.frame),en.frame>=Ee){Ee+=p.autoSleep||120;var t=z._first;if((!t||!t._ts)&&p.autoSleep&&en._listeners.length<2){for(;t&&!t._ts;)t=t._next;t||en.sleep()}}},t}(hn);ze(K.prototype,{_lock:0,_hasPause:0,_forcing:0});var gn=function(e,t,n,r,i,a,o){var s=new J(this._pt,e,t,0,1,In,null,i),c=0,l=0,u,d,f,p,m,h,g,_;for(s.b=n,s.e=r,n+=``,r+=``,(g=~r.indexOf(`random(`))&&(r=It(r)),a&&(_=[n,r],a(_,e,t),n=_[0],r=_[1]),d=n.match(ne)||[];u=ne.exec(r);)p=u[0],m=r.substring(c,u.index),f?f=(f+1)%5:m.substr(-5)===`rgba(`&&(f=1),p!==d[l++]&&(h=parseFloat(d[l-1])||0,s._pt={_next:s._pt,p:m||l===1?m:`,`,s:h,c:p.charAt(1)===`=`?Me(h,p)-h:parseFloat(p)-h,m:f&&f<4?Math.round:0},c=ne.lastIndex);return s.c=c`)}),x.duration();else{for(T in C={},m)T===`ease`||T===`easeEach`||Tn(T,m[T],C,m.easeEach);for(T in C)for(ee=C[T].sort(function(e,t){return e.t-t.t}),I=0,S=0;Si-y&&!o?i:ea&&(c=a)),p=this._yoyo&&u&1,p&&(c=a-c),f=et(this._tTime,d),c===r&&!n&&this._initted&&u===f)return this._tTime=s,this;u!==f&&this.vars.repeatRefresh&&!p&&!this._lock&&c!==d&&this._initted&&(this._lock=n=1,this.render(H(d*u),!0).invalidate()._lock=0)}if(!this._initted){if(st(this,o?e:c,n,t,s))return this._tTime=0,this;if(r!==this._time&&!(n&&this.vars.repeatRefresh&&u!==f))return this;if(a!==this._dur)return this.render(e,t,n)}if(this._rEase){var g=c0||!s&&this._ts<0)&&Je(this,1),!t&&!(o&&!r)&&(s||r||p)&&(Bt(this,s===i?`onComplete`:`onReverseComplete`,!0),this._prom&&!(s0)&&this._prom()))}return this},n.targets=function(){return this._targets},n.invalidate=function(t){return(!t||!this.vars.runBackwards)&&(this._startAt=0),this._pt=this._op=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(t),e.prototype.invalidate.call(this,t)},n.resetTo=function(e,t,n,r,i){$t||en.wake(),this._ts||this.play();var a=Math.min(this._dur,(this._dp._time-this._start)*this._ts),o;return this._initted||Sn(this,a),o=this._ease(a/this._dur),Cn(this,e,t,n,r,o,a,i)?this.resetTo(e,t,n,r,1):(rt(this,0),this.parent||Ke(this._dp,this,`_first`,`_last`,this._dp._sort?`_start`:0),this.render(0))},n.kill=function(e,t){if(t===void 0&&(t=`all`),!e&&(!t||t===`all`))return this._lazy=this._pt=0,this.parent?Vt(this):this.scrollTrigger&&this.scrollTrigger.kill(!!g),this;if(this.timeline){var n=this.timeline.totalDuration();return this.timeline.killTweensOf(e,t,bn&&bn.vars.overwrite!==!0)._first||Vt(this),this.parent&&n!==this.timeline.totalDuration()&&ft(this,this._dur*this.timeline._tDur/n,0,1),this}var r=this._targets,i=e?Ct(e):r,a=this._ptLookup,o=this._pt,s,c,l,u,d,f,p;if((!t||t===`all`)&&Ge(r,i))return t===`all`&&(this._pt=0),Vt(this);for(s=this._op=this._op||[],t!==`all`&&(E(t)&&(d={},B(t,function(e){return d[e]=1}),t=d),t=wn(r,t)),p=r.length;p--;)if(~i.indexOf(r[p]))for(d in c=a[p],t===`all`?(s[p]=t,u=c,l={}):(l=s[p]=s[p]||{},u=t),u)f=c&&c[d],f&&((!(`kill`in f.d)||f.d.kill(d)===!0)&&qe(this,f,`_pt`),delete c[d]),l!==`all`&&(l[d]=1);return this._initted&&!this._pt&&o&&Vt(this),this},t.to=function(e,n){return new t(e,n,arguments[2])},t.from=function(e,t){return gt(1,arguments)},t.delayedCall=function(e,n,r,i){return new t(n,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:e,onComplete:n,onReverseComplete:n,onCompleteParams:r,onReverseCompleteParams:r,callbackScope:i})},t.fromTo=function(e,t,n){return gt(2,arguments)},t.set=function(e,n){return n.duration=0,n.repeatDelay||(n.repeat=0),new t(e,n)},t.killTweensOf=function(e,t,n){return z.killTweensOf(e,t,n)},t}(hn);ze(q.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),B(`staggerTo,staggerFrom,staggerFromTo`,function(e){q[e]=function(){var t=new K,n=bt.call(arguments,0);return n.splice(e===`staggerFromTo`?5:4,0,0),t[e].apply(t,n)}});var kn=function(e,t,n){return e[t]=n},An=function(e,t,n){return e[t](n)},jn=function(e,t,n,r){return e[t](r.fp,n)},Mn=function(e,t,n){return e.setAttribute(t,n)},Nn=function(e,t){return D(e[t])?An:k(e[t])&&e.setAttribute?Mn:kn},Pn=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e6)/1e6,t)},Fn=function(e,t){return t.set(t.t,t.p,!!(t.s+t.c*e),t)},In=function(e,t){var n=t._pt,r=``;if(!e&&t.b)r=t.b;else if(e===1&&t.e)r=t.e;else{for(;n;)r=n.p+(n.m?n.m(n.s+n.c*e):Math.round((n.s+n.c*e)*1e4)/1e4)+r,n=n._next;r+=t.c}t.set(t.t,t.p,r,t)},Ln=function(e,t){for(var n=t._pt;n;)n.r(e,n.d),n=n._next},Rn=function(e,t,n,r){for(var i=this._pt,a;i;)a=i._next,i.p===r&&i.modifier(e,t,n),i=a},zn=function(e){for(var t=this._pt,n,r;t;)r=t._next,t.p===e&&!t.op||t.op===e?qe(this,t,`_pt`):t.dep||(n=1),t=r;return!n},Bn=function(e,t,n,r){r.mSet(e,t,r.m.call(r.tween,n,r.mt),r)},Vn=function(e){for(var t=e._pt,n,r,i,a;t;){for(n=t._next,r=i;r&&r.pr>t.pr;)r=r._next;(t._prev=r?r._prev:a)?t._prev._next=t:i=t,(t._next=r)?r._prev=t:a=t,t=n}e._pt=i},J=function(){function e(e,t,n,r,i,a,o,s,c){this.t=t,this.s=r,this.c=i,this.p=n,this.r=a||Pn,this.d=o||this,this.set=s||kn,this.pr=c||0,this._next=e,e&&(e._prev=this)}var t=e.prototype;return t.modifier=function(e,t,n){this.mSet=this.mSet||this.set,this.set=Bn,this.m=e,this.mt=n,this.tween=t},e}();B(Oe+`parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger,easeReverse`,function(e){return be[e]=1}),le.TweenMax=le.TweenLite=q,le.TimelineLite=le.TimelineMax=K,z=new K({sortChildren:!1,defaults:m,autoRemoveChildren:!0,id:`root`,smoothChildTiming:!0}),p.stringFilter=Qt;var Hn=[],Un={},Wn=[],Gn=0,Kn=0,qn=function(e){return(Un[e]||Wn).map(function(e){return e()})},Jn=function(){var e=Date.now(),t=[];e-Gn>2&&(qn(`matchMediaInit`),Hn.forEach(function(e){var n=e.queries,r=e.conditions,i,a,o,s;for(a in n)i=oe.matchMedia(n[a]).matches,i&&(o=1),i!==r[a]&&(r[a]=i,s=1);s&&(e.revert(),o&&t.push(e))}),qn(`matchMediaRevert`),t.forEach(function(e){return e.onMatch(e,function(t){return e.add(null,t)})}),Gn=e,qn(`matchMedia`))},Yn=function(){function e(e,t){this.selector=t&&wt(t),this.data=[],this._r=[],this.isReverted=!1,this.id=Kn++,e&&this.add(e)}var t=e.prototype;return t.add=function(e,t,n){D(e)&&(n=t,t=e,e=D);var r=this,i=function(){var e=_,i=r.selector,a;return e&&e!==r&&e.data.push(r),n&&(r.selector=wt(n)),_=r,a=t.apply(r,arguments),D(a)&&r._r.push(a),_=e,r.selector=i,r.isReverted=!1,a};return r.last=i,e===D?i(r,function(e){return r.add(null,e)}):e?r[e]=i:i},t.ignore=function(e){var t=_;_=null,e(this),_=t},t.getTweens=function(){var t=[];return this.data.forEach(function(n){return n instanceof e?t.push.apply(t,n.getTweens()):n instanceof q&&!(n.parent&&n.parent.data===`nested`)&&t.push(n)}),t},t.clear=function(){this._r.length=this.data.length=0},t.kill=function(e,t){var n=this;if(e?(function(){for(var t=n.getTweens(),r=n.data.length,i;r--;)i=n.data[r],i.data===`isFlip`&&(i.revert(),i.getChildren(!0,!0,!1).forEach(function(e){return t.splice(t.indexOf(e),1)}));for(t.map(function(e){return{g:e._dur||e._delay||e._sat&&!e._sat.vars.immediateRender?e.globalTime(0):-1/0,t:e}}).sort(function(e,t){return t.g-e.g||-1/0}).forEach(function(t){return t.t.revert(e)}),r=n.data.length;r--;)i=n.data[r],i instanceof K?i.data!==`nested`&&(i.scrollTrigger&&i.scrollTrigger.revert(),i.kill()):!(i instanceof q)&&i.revert&&i.revert(e);n._r.forEach(function(t){return t(e,n)}),n.isReverted=!0})():this.data.forEach(function(e){return e.kill&&e.kill()}),this.clear(),t)for(var r=Hn.length;r--;)Hn[r].id===this.id&&Hn.splice(r,1)},t.revert=function(e){this.kill(e||{})},e}(),Xn=function(){function e(e){this.contexts=[],this.scope=e,_&&_.data.push(this)}var t=e.prototype;return t.add=function(e,t,n){A(e)||(e={matches:e});var r=new Yn(0,n||this.scope),i=r.conditions={},a,o,s;for(o in _&&!r.selector&&(r.selector=_.selector),this.contexts.push(r),t=r.add(`onMatch`,t),r.queries=e,e)o===`all`?s=1:(a=oe.matchMedia(e[o]),a&&(Hn.indexOf(r)<0&&Hn.push(r),(i[o]=a.matches)&&(s=1),a.addListener?a.addListener(Jn):a.addEventListener(`change`,Jn)));return s&&t(r,function(e){return r.add(null,e)}),this},t.revert=function(e){this.kill(e||{})},t.kill=function(e){this.contexts.forEach(function(t){return t.kill(e,!0)})},e}(),Zn={registerPlugin:function(){[...arguments].forEach(function(e){return Wt(e)})},timeline:function(e){return new K(e)},getTweensOf:function(e,t){return z.getTweensOf(e,t)},getProperty:function(e,t,n,r){E(e)&&(e=Ct(e)[0]);var i=Ae(e||{}).get,a=n?Re:Le;return n===`native`&&(n=``),e&&(t?a((we[t]&&we[t].get||i)(e,t,n,r)):function(t,n,r){return a((we[t]&&we[t].get||i)(e,t,n,r))})},quickSetter:function(e,t,n){if(e=Ct(e),e.length>1){var r=e.map(function(e){return Y.quickSetter(e,t,n)}),i=r.length;return function(e){for(var t=i;t--;)r[t](e)}}e=e[0]||{};var a=we[t],o=Ae(e),s=o.harness&&(o.harness.aliases||{})[t]||t,c=a?function(t){var r=new a;Ht._pt=0,r.init(e,n?t+n:t,Ht,0,[e]),r.render(1,r),Ht._pt&&Ln(1,Ht)}:o.set(e,s);return a?c:function(t){return c(e,s,n?t+n:t,o,1)}},quickTo:function(e,t,n){var r,i=Y.to(e,ze((r={},r[t]=`+=0.1`,r.paused=!0,r.stagger=0,r),n||{})),a=function(e,n,r){return i.resetTo(t,e,n,r)};return a.tween=i,a},isTweening:function(e){return z.getTweensOf(e,!0).length>0},defaults:function(e){return e&&e.ease&&(e.ease=ln(e.ease,m.ease)),He(m,e||{})},config:function(e){return He(p,e||{})},registerEffect:function(e){var t=e.name,n=e.effect,r=e.plugins,i=e.defaults,a=e.extendTimeline;(r||``).split(`,`).forEach(function(e){return e&&!we[e]&&!le[e]&&me(t+` effect requires `+e+` plugin.`)}),Te[t]=function(e,t,r){return n(Ct(e),ze(t||{},i),r)},a&&(K.prototype[t]=function(e,n,r){return this.add(Te[t](e,A(n)?n:(r=n)&&{},this),r)})},registerEase:function(e,t){G[e]=ln(t)},parseEase:function(e,t){return arguments.length?ln(e,t):G},getById:function(e){return z.getById(e)},exportRoot:function(e,t){e===void 0&&(e={});var n=new K(e),r,i;for(n.smoothChildTiming=j(e.smoothChildTiming),z.remove(n),n._dp=0,n._time=n._tTime=z._time,r=z._first;r;)i=r._next,(t||!(!r._dur&&r instanceof q&&r.vars.onComplete===r._targets[0]))&&at(n,r,r._start-r._delay),r=i;return at(z,n,0),n},context:function(e,t){return e?new Yn(e,t):_},matchMedia:function(e){return new Xn(e)},matchMediaRefresh:function(){return Hn.forEach(function(e){var t=e.conditions,n,r;for(r in t)t[r]&&(t[r]=!1,n=1);n&&e.revert()})||Jn()},addEventListener:function(e,t){var n=Un[e]||(Un[e]=[]);~n.indexOf(t)||n.push(t)},removeEventListener:function(e,t){var n=Un[e],r=n&&n.indexOf(t);r>=0&&n.splice(r,1)},utils:{wrap:Pt,wrapYoyo:Ft,distribute:Et,random:kt,snap:Ot,normalize:Mt,getUnit:U,clamp:yt,splitColor:qt,toArray:Ct,selector:wt,mapRange:Lt,pipe:At,unitize:jt,interpolate:Rt,shuffle:Tt},install:fe,effects:Te,ticker:en,updateRoot:K.updateRoot,plugins:we,globalTimeline:z,core:{PropTween:J,globals:he,Tween:q,Timeline:K,Animation:hn,getCache:Ae,_removeLinkedListItem:qe,reverting:function(){return g},context:function(e){return e&&_&&(_.data.push(e),e._ctx=_),_},suppressOverwrites:function(e){return h=e}}};B(`to,from,fromTo,delayedCall,set,killTweensOf`,function(e){return Zn[e]=q[e]}),en.add(K.updateRoot),Ht=Zn.to({},{duration:0});var Qn=function(e,t){for(var n=e._pt;n&&n.p!==t&&n.op!==t&&n.fp!==t;)n=n._next;return n},$n=function(e,t){var n=e._targets,r,i,a;for(r in t)for(i=n.length;i--;)a=e._ptLookup[i][r],(a&&=a.d)&&(a._pt&&(a=Qn(a,r)),a&&a.modifier&&a.modifier(t[r],e,n[i],r))},er=function(e,t){return{name:e,headless:1,rawVars:1,init:function(e,n,r){r._onInit=function(e){var r,i;if(E(n)&&(r={},B(n,function(e){return r[e]=1}),n=r),t){for(i in r={},n)r[i]=t(n[i]);n=r}$n(e,n)}}}},Y=Zn.registerPlugin({name:`attr`,init:function(e,t,n,r,i){var a,o,s;for(a in this.tween=n,t)s=e.getAttribute(a)||``,o=this.add(e,`setAttribute`,(s||0)+``,t[a],r,i,0,0,a),o.op=a,o.b=s,this._props.push(a)},render:function(e,t){for(var n=t._pt;n;)g?n.set(n.t,n.p,n.b,n):n.r(e,n.d),n=n._next}},{name:`endArray`,headless:1,init:function(e,t){for(var n=t.length;n--;)this.add(e,n,e[n]||0,t[n],0,0,0,0,0,1)}},er(`roundProps`,Dt),er(`modifiers`),er(`snap`,Ot))||Zn;q.version=K.version=Y.version=`3.15.0`,de=1,M()&&tn(),G.Power0,G.Power1,G.Power2,G.Power3,G.Power4,G.Linear,G.Quad,G.Cubic,G.Quart,G.Quint,G.Strong,G.Elastic,G.Back,G.SteppedEase,G.Bounce,G.Sine,G.Expo,G.Circ;var tr,nr,rr,ir,ar,or,sr,cr=function(){return typeof window<`u`},lr={},ur=180/Math.PI,dr=Math.PI/180,fr=Math.atan2,pr=1e8,mr=/([A-Z])/g,hr=/(left|right|width|margin|padding|x)/i,gr=/[\s,\(]\S/,_r={autoAlpha:`opacity,visibility`,scale:`scaleX,scaleY`,alpha:`opacity`},vr=function(e,t){return t.set(t.t,t.p,Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},yr=function(e,t){return t.set(t.t,t.p,e===1?t.e:Math.round((t.s+t.c*e)*1e4)/1e4+t.u,t)},br=function(e,t){return t.set(t.t,t.p,e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},xr=function(e,t){return t.set(t.t,t.p,e===1?t.e:e?Math.round((t.s+t.c*e)*1e4)/1e4+t.u:t.b,t)},Sr=function(e,t){var n=t.s+t.c*e;t.set(t.t,t.p,~~(n+(n<0?-.5:.5))+t.u,t)},Cr=function(e,t){return t.set(t.t,t.p,e?t.e:t.b,t)},wr=function(e,t){return t.set(t.t,t.p,e===1?t.e:t.b,t)},Tr=function(e,t,n){return e.style[t]=n},Er=function(e,t,n){return e.style.setProperty(t,n)},Dr=function(e,t,n){return e._gsap[t]=n},Or=function(e,t,n){return e._gsap.scaleX=e._gsap.scaleY=n},kr=function(e,t,n,r,i){var a=e._gsap;a.scaleX=a.scaleY=n,a.renderTransform(i,a)},Ar=function(e,t,n,r,i){var a=e._gsap;a[t]=n,a.renderTransform(i,a)},X=`transform`,Z=X+`Origin`,jr=function e(t,n){var r=this,i=this.target,a=i.style,o=i._gsap;if(t in lr&&a){if(this.tfm=this.tfm||{},t!==`transform`)t=_r[t]||t,~t.indexOf(`,`)?t.split(`,`).forEach(function(e){return r.tfm[e]=Xr(i,e)}):this.tfm[t]=o.x?o[t]:Xr(i,t),t===Z&&(this.tfm.zOrigin=o.zOrigin);else return _r.transform.split(`,`).forEach(function(t){return e.call(r,t,n)});if(this.props.indexOf(X)>=0)return;o.svg&&(this.svgo=i.getAttribute(`data-svg-origin`),this.props.push(Z,n,``)),t=X}(a||n)&&this.props.push(t,n,a[t])},Mr=function(e){e.translate&&(e.removeProperty(`translate`),e.removeProperty(`scale`),e.removeProperty(`rotate`))},Nr=function(){var e=this.props,t=this.target,n=t.style,r=t._gsap,i,a;for(i=0;i=0?Rr[i]:``)+e},Br=function(){cr()&&window.document&&(tr=window,nr=tr.document,rr=nr.documentElement,ar=Ir(`div`)||{style:{}},Ir(`div`),X=zr(X),Z=X+`Origin`,ar.style.cssText=`border-width:0;line-height:0;position:absolute;padding:0`,Fr=!!zr(`perspective`),sr=Y.core.reverting,ir=1)},Vr=function(e){var t=e.ownerSVGElement,n=Ir(`svg`,t&&t.getAttribute(`xmlns`)||`http://www.w3.org/2000/svg`),r=e.cloneNode(!0),i;r.style.display=`block`,n.appendChild(r),rr.appendChild(n);try{i=r.getBBox()}catch{}return n.removeChild(r),rr.removeChild(n),i},Hr=function(e,t){for(var n=t.length;n--;)if(e.hasAttribute(t[n]))return e.getAttribute(t[n])},Ur=function(e){var t,n;try{t=e.getBBox()}catch{t=Vr(e),n=1}return t&&(t.width||t.height)||n||(t=Vr(e)),t&&!t.width&&!t.x&&!t.y?{x:+Hr(e,[`x`,`cx`,`x1`])||0,y:+Hr(e,[`y`,`cy`,`y1`])||0,width:0,height:0}:t},Wr=function(e){return!!(e.getCTM&&(!e.parentNode||e.ownerSVGElement)&&Ur(e))},Gr=function(e,t){if(t){var n=e.style,r;t in lr&&t!==Z&&(t=X),n.removeProperty?(r=t.substr(0,2),(r===`ms`||t.substr(0,6)===`webkit`)&&(t=`-`+t),n.removeProperty(r===`--`?t:t.replace(mr,`-$1`).toLowerCase())):n.removeAttribute(t)}},Kr=function(e,t,n,r,i,a){var o=new J(e._pt,t,n,0,1,a?wr:Cr);return e._pt=o,o.b=r,o.e=i,e._props.push(n),o},qr={deg:1,rad:1,turn:1},Jr={grid:1,flex:1},Yr=function e(t,n,r,i){var a=parseFloat(r)||0,o=(r+``).trim().substr((a+``).length)||`px`,s=ar.style,c=hr.test(n),l=t.tagName.toLowerCase()===`svg`,u=(l?`client`:`offset`)+(c?`Width`:`Height`),d=100,f=i===`px`,p=i===`%`,m,h,g,_;if(i===o||!a||qr[i]||qr[o])return a;if(o!==`px`&&!f&&(a=e(t,n,r,`px`)),_=t.getCTM&&Wr(t),(p||o===`%`)&&(lr[n]||~n.indexOf(`adius`)))return m=_?t.getBBox()[c?`width`:`height`]:t[u],V(p?a/m*d:a/100*m);if(s[c?`width`:`height`]=d+(f?o:i),h=i!==`rem`&&~n.indexOf(`adius`)||i===`em`&&t.appendChild&&!l?t:t.parentNode,_&&(h=(t.ownerSVGElement||{}).parentNode),(!h||h===nr||!h.appendChild)&&(h=nr.body),g=h._gsap,g&&p&&g.width&&c&&g.time===en.time&&!g.uncache)return V(a/g.width*d);if(p&&(n===`height`||n===`width`)){var v=t.style[n];t.style[n]=d+i,m=t[u],v?t.style[n]=v:Gr(t,n)}else (p||o===`%`)&&!Jr[Lr(h,`display`)]&&(s.position=Lr(t,`position`)),h===t&&(s.position=`static`),h.appendChild(ar),m=ar[u],h.removeChild(ar),s.position=`absolute`;return c&&p&&(g=Ae(h),g.time=en.time,g.width=h[u]),V(f?m*a/d:m&&a?d/m*a:0)},Xr=function(e,t,n,r){var i;return ir||Br(),t in _r&&t!==`transform`&&(t=_r[t],~t.indexOf(`,`)&&(t=t.split(`,`)[0])),lr[t]&&t!==`transform`?(i=ci(e,r),i=t===`transformOrigin`?i.svg?i.origin:li(Lr(e,Z))+` `+i.zOrigin+`px`:i[t]):(i=e.style[t],(!i||i===`auto`||r||~(i+``).indexOf(`calc(`))&&(i=ti[t]&&ti[t](e,t,n)||Lr(e,t)||je(e,t)||+(t===`opacity`))),n&&!~(i+``).trim().indexOf(` `)?Yr(e,t,i,n)+n:i},Zr=function(e,t,n,r){if(!n||n===`none`){var i=zr(t,e,1),a=i&&Lr(e,i,1);a&&a!==n?(t=i,n=a):t===`borderColor`&&(n=Lr(e,`borderTopColor`))}var o=new J(this._pt,e.style,t,0,1,In),s=0,c=0,l,u,d,f,m,h,g,_,v,y,b,x;if(o.b=n,o.e=r,n+=``,r+=``,r.substring(0,6)===`var(--`&&(r=Lr(e,r.substring(4,r.indexOf(`)`)))),r===`auto`&&(h=e.style[t],e.style[t]=r,r=Lr(e,t)||r,h?e.style[t]=h:Gr(e,t)),l=[n,r],Qt(l),n=l[0],r=l[1],d=n.match(R)||[],x=r.match(R)||[],x.length){for(;u=R.exec(r);)g=u[0],v=r.substring(s,u.index),m?m=(m+1)%5:(v.substr(-5)===`rgba(`||v.substr(-5)===`hsla(`)&&(m=1),g!==(h=d[c++]||``)&&(f=parseFloat(h)||0,b=h.substr((f+``).length),g.charAt(1)===`=`&&(g=Me(f,g)+b),_=parseFloat(g),y=g.substr((_+``).length),s=R.lastIndex-y.length,y||(y=y||p.units[t]||b,s===r.length&&(r+=y,o.e+=y)),b!==y&&(f=Yr(e,t,h,y)||0),o._pt={_next:o._pt,p:v||c===1?v:`,`,s:f,c:_-f,m:m&&m<4||t===`zIndex`?Math.round:0});o.c=s-1;)o=i[c],lr[o]&&(s=1,o=o===`transformOrigin`?Z:X),Gr(n,o);s&&(Gr(n,X),a&&(a.svg&&n.removeAttribute(`transform`),r.scale=r.rotate=r.translate=`none`,ci(n,1),a.uncache=1,Mr(r)))}},ti={clearProps:function(e,t,n,r,i){if(i.data!==`isFromStart`){var a=e._pt=new J(e._pt,t,n,0,0,ei);return a.u=r,a.pr=-10,a.tween=i,e._props.push(n),1}}},ni=[1,0,0,1,0,0],ri={},ii=function(e){return e===`matrix(1, 0, 0, 1, 0, 0)`||e===`none`||!e},ai=function(e){var t=Lr(e,X);return ii(t)?ni:t.substr(7).match(te).map(V)},oi=function(e,t){var n=e._gsap||Ae(e),r=e.style,i=ai(e),a,o,s,c;return n.svg&&e.getAttribute(`transform`)?(s=e.transform.baseVal.consolidate().matrix,i=[s.a,s.b,s.c,s.d,s.e,s.f],i.join(`,`)===`1,0,0,1,0,0`?ni:i):(i===ni&&!e.offsetParent&&e!==rr&&!n.svg&&(s=r.display,r.display=`block`,a=e.parentNode,(!a||!e.offsetParent&&!e.getBoundingClientRect().width)&&(c=1,o=e.nextElementSibling,rr.appendChild(e)),i=ai(e),s?r.display=s:Gr(e,`display`),c&&(o?a.insertBefore(e,o):a?a.appendChild(e):rr.removeChild(e))),t&&i.length>6?[i[0],i[1],i[4],i[5],i[12],i[13]]:i)},si=function(e,t,n,r,i,a){var o=e._gsap,s=i||oi(e,!0),c=o.xOrigin||0,l=o.yOrigin||0,u=o.xOffset||0,d=o.yOffset||0,f=s[0],p=s[1],m=s[2],h=s[3],g=s[4],_=s[5],v=t.split(` `),y=parseFloat(v[0])||0,b=parseFloat(v[1])||0,x,S,C,w;n?s!==ni&&(S=f*h-p*m)&&(C=h/S*y+b*(-m/S)+(m*_-h*g)/S,w=y*(-p/S)+f/S*b-(f*_-p*g)/S,y=C,b=w):(x=Ur(e),y=x.x+(~v[0].indexOf(`%`)?y/100*x.width:y),b=x.y+(~(v[1]||v[0]).indexOf(`%`)?b/100*x.height:b)),r||r!==!1&&o.smooth?(g=y-c,_=b-l,o.xOffset=u+(g*f+_*m)-g,o.yOffset=d+(g*p+_*h)-_):o.xOffset=o.yOffset=0,o.xOrigin=y,o.yOrigin=b,o.smooth=!!r,o.origin=t,o.originIsAbsolute=!!n,e.style[Z]=`0px 0px`,a&&(Kr(a,o,`xOrigin`,c,y),Kr(a,o,`yOrigin`,l,b),Kr(a,o,`xOffset`,u,o.xOffset),Kr(a,o,`yOffset`,d,o.yOffset)),e.setAttribute(`data-svg-origin`,y+` `+b)},ci=function(e,t){var n=e._gsap||new mn(e);if(`x`in n&&!t&&!n.uncache)return n;var r=e.style,i=n.scaleX<0,a=`px`,o=`deg`,s=getComputedStyle(e),c=Lr(e,Z)||`0`,l=u=d=h=g=_=v=y=b=0,u,d,f=m=1,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k,A,j,M,N,P,F,I,ee,L,te,R,ne;return n.svg=!!(e.getCTM&&Wr(e)),s.translate&&((s.translate!==`none`||s.scale!==`none`||s.rotate!==`none`)&&(r[X]=(s.translate===`none`?``:`translate3d(`+(s.translate+` 0 0`).split(` `).slice(0,3).join(`, `)+`) `)+(s.rotate===`none`?``:`rotate(`+s.rotate+`) `)+(s.scale===`none`?``:`scale(`+s.scale.split(` `).join(`,`)+`) `)+(s[X]===`none`?``:s[X])),r.scale=r.rotate=r.translate=`none`),C=oi(e,n.svg),n.svg&&(n.uncache?(P=e.getBBox(),c=n.xOrigin-P.x+`px `+(n.yOrigin-P.y)+`px`,N=``):N=!t&&e.getAttribute(`data-svg-origin`),si(e,N||c,!!N||n.originIsAbsolute,n.smooth!==!1,C)),x=n.xOrigin||0,S=n.yOrigin||0,C!==ni&&(D=C[0],O=C[1],k=C[2],A=C[3],l=j=C[4],u=M=C[5],C.length===6?(f=Math.sqrt(D*D+O*O),m=Math.sqrt(A*A+k*k),h=D||O?fr(O,D)*ur:0,v=k||A?fr(k,A)*ur+h:0,v&&(m*=Math.abs(Math.cos(v*dr))),n.svg&&(l-=x-(x*D+S*k),u-=S-(x*O+S*A))):(ne=C[6],te=C[7],I=C[8],ee=C[9],L=C[10],R=C[11],l=C[12],u=C[13],d=C[14],w=fr(ne,L),g=w*ur,w&&(T=Math.cos(-w),E=Math.sin(-w),N=j*T+I*E,P=M*T+ee*E,F=ne*T+L*E,I=j*-E+I*T,ee=M*-E+ee*T,L=ne*-E+L*T,R=te*-E+R*T,j=N,M=P,ne=F),w=fr(-k,L),_=w*ur,w&&(T=Math.cos(-w),E=Math.sin(-w),N=D*T-I*E,P=O*T-ee*E,F=k*T-L*E,R=A*E+R*T,D=N,O=P,k=F),w=fr(O,D),h=w*ur,w&&(T=Math.cos(w),E=Math.sin(w),N=D*T+O*E,P=j*T+M*E,O=O*T-D*E,M=M*T-j*E,D=N,j=P),g&&Math.abs(g)+Math.abs(h)>359.9&&(g=h=0,_=180-_),f=V(Math.sqrt(D*D+O*O+k*k)),m=V(Math.sqrt(M*M+ne*ne)),w=fr(j,M),v=Math.abs(w)>2e-4?w*ur:0,b=R?1/(R<0?-R:R):0),n.svg&&(N=e.getAttribute(`transform`),n.forceCSS=e.setAttribute(`transform`,``)||!ii(Lr(e,X)),N&&e.setAttribute(`transform`,N))),Math.abs(v)>90&&Math.abs(v)<270&&(i?(f*=-1,v+=h<=0?180:-180,h+=h<=0?180:-180):(m*=-1,v+=v<=0?180:-180)),t||=n.uncache,n.x=l-((n.xPercent=l&&(!t&&n.xPercent||(Math.round(e.offsetWidth/2)===Math.round(-l)?-50:0)))?e.offsetWidth*n.xPercent/100:0)+a,n.y=u-((n.yPercent=u&&(!t&&n.yPercent||(Math.round(e.offsetHeight/2)===Math.round(-u)?-50:0)))?e.offsetHeight*n.yPercent/100:0)+a,n.z=d+a,n.scaleX=V(f),n.scaleY=V(m),n.rotation=V(h)+o,n.rotationX=V(g)+o,n.rotationY=V(_)+o,n.skewX=v+o,n.skewY=y+o,n.transformPerspective=b+a,(n.zOrigin=parseFloat(c.split(` `)[2])||!t&&n.zOrigin||0)&&(r[Z]=li(c)),n.xOffset=n.yOffset=0,n.force3D=p.force3D,n.renderTransform=n.svg?gi:Fr?hi:di,n.uncache=0,n},li=function(e){return(e=e.split(` `))[0]+` `+e[1]},ui=function(e,t,n){var r=U(t);return V(parseFloat(t)+parseFloat(Yr(e,`x`,n+`px`,r)))+r},di=function(e,t){t.z=`0px`,t.rotationY=t.rotationX=`0deg`,t.force3D=0,hi(e,t)},fi=`0deg`,pi=`0px`,mi=`) `,hi=function(e,t){var n=t||this,r=n.xPercent,i=n.yPercent,a=n.x,o=n.y,s=n.z,c=n.rotation,l=n.rotationY,u=n.rotationX,d=n.skewX,f=n.skewY,p=n.scaleX,m=n.scaleY,h=n.transformPerspective,g=n.force3D,_=n.target,v=n.zOrigin,y=``,b=g===`auto`&&e&&e!==1||g===!0;if(v&&(u!==fi||l!==fi)){var x=parseFloat(l)*dr,S=Math.sin(x),C=Math.cos(x),w;x=parseFloat(u)*dr,w=Math.cos(x),a=ui(_,a,S*w*-v),o=ui(_,o,-Math.sin(x)*-v),s=ui(_,s,C*w*-v+v)}h!==pi&&(y+=`perspective(`+h+mi),(r||i)&&(y+=`translate(`+r+`%, `+i+`%) `),(b||a!==pi||o!==pi||s!==pi)&&(y+=s!==pi||b?`translate3d(`+a+`, `+o+`, `+s+`) `:`translate(`+a+`, `+o+mi),c!==fi&&(y+=`rotate(`+c+mi),l!==fi&&(y+=`rotateY(`+l+mi),u!==fi&&(y+=`rotateX(`+u+mi),(d!==fi||f!==fi)&&(y+=`skew(`+d+`, `+f+mi),(p!==1||m!==1)&&(y+=`scale(`+p+`, `+m+mi),_.style[X]=y||`translate(0, 0)`},gi=function(e,t){var n=t||this,r=n.xPercent,i=n.yPercent,a=n.x,o=n.y,s=n.rotation,c=n.skewX,l=n.skewY,u=n.scaleX,d=n.scaleY,f=n.target,p=n.xOrigin,m=n.yOrigin,h=n.xOffset,g=n.yOffset,_=n.forceCSS,v=parseFloat(a),y=parseFloat(o),b,x,S,C,w;s=parseFloat(s),c=parseFloat(c),l=parseFloat(l),l&&(l=parseFloat(l),c+=l,s+=l),s||c?(s*=dr,c*=dr,b=Math.cos(s)*u,x=Math.sin(s)*u,S=Math.sin(s-c)*-d,C=Math.cos(s-c)*d,c&&(l*=dr,w=Math.tan(c-l),w=Math.sqrt(1+w*w),S*=w,C*=w,l&&(w=Math.tan(l),w=Math.sqrt(1+w*w),b*=w,x*=w)),b=V(b),x=V(x),S=V(S),C=V(C)):(b=u,C=d,x=S=0),(v&&!~(a+``).indexOf(`px`)||y&&!~(o+``).indexOf(`px`))&&(v=Yr(f,`x`,a,`px`),y=Yr(f,`y`,o,`px`)),(p||m||h||g)&&(v=V(v+p-(p*b+m*S)+h),y=V(y+m-(p*x+m*C)+g)),(r||i)&&(w=f.getBBox(),v=V(v+r/100*w.width),y=V(y+i/100*w.height)),w=`matrix(`+b+`,`+x+`,`+S+`,`+C+`,`+v+`,`+y+`)`,f.setAttribute(`transform`,w),_&&(f.style[X]=w)},_i=function(e,t,n,r,i){var a=360,o=E(i),s=parseFloat(i)*(o&&~i.indexOf(`rad`)?ur:1)-r,c=r+s+`deg`,l,u;return o&&(l=i.split(`_`)[1],l===`short`&&(s%=a,s!==s%(a/2)&&(s+=s<0?a:-a)),l===`cw`&&s<0?s=(s+a*pr)%a-~~(s/a)*a:l===`ccw`&&s>0&&(s=(s-a*pr)%a-~~(s/a)*a)),e._pt=u=new J(e._pt,t,n,r,s,yr),u.e=c,u.u=`deg`,e._props.push(n),u},vi=function(e,t){for(var n in t)e[n]=t[n];return e},yi=function(e,t,n){var r=vi({},n._gsap),i=`perspective,force3D,transformOrigin,svgOrigin`,a=n.style,o,s,c,l,u,d,f,p;for(s in r.svg?(c=n.getAttribute(`transform`),n.setAttribute(`transform`,``),a[X]=t,o=ci(n,1),Gr(n,X),n.setAttribute(`transform`,c)):(c=getComputedStyle(n)[X],a[X]=t,o=ci(n,1),a[X]=c),lr)c=r[s],l=o[s],c!==l&&i.indexOf(s)<0&&(f=U(c),p=U(l),u=f===p?parseFloat(c):Yr(n,s,c,p),d=parseFloat(l),e._pt=new J(e._pt,o,s,u,d-u,vr),e._pt.u=p||0,e._props.push(s));vi(o,r)};B(`padding,margin,Width,Radius`,function(e,t){var n=`Top`,r=`Right`,i=`Bottom`,a=`Left`,o=(t<3?[n,r,i,a]:[n+a,n+r,i+r,i+a]).map(function(n){return t<2?e+n:`border`+n+e});ti[t>1?`border`+e:e]=function(e,t,n,r,i){var a,s;if(arguments.length<4)return a=o.map(function(t){return Xr(e,t,n)}),s=a.join(` `),s.split(a[0]).length===5?a[0]:s;a=(r+``).split(` `),s={},o.forEach(function(e,t){return s[e]=a[t]=a[t]||a[(t-1)/2|0]}),e.init(t,s,i)}});var bi={name:`css`,register:Br,targetTest:function(e){return e.style&&e.nodeType},init:function(e,t,n,r,i){var a=this._props,o=e.style,s=n.vars.startAt,c,l,u,d,f,m,h,g,_,v,y,b,x,S,C,w,T;for(h in ir||Br(),this.styles=this.styles||Pr(e),w=this.styles.props,this.tween=n,t)if(h!==`autoRound`&&(l=t[h],!(we[h]&&yn(h,t,n,r,e,i)))){if(f=typeof l,m=ti[h],f===`function`&&(l=l.call(n,r,e,i),f=typeof l),f===`string`&&~l.indexOf(`random(`)&&(l=It(l)),m)m(this,e,h,l,n)&&(C=1);else if(h.substr(0,2)===`--`)c=(getComputedStyle(e).getPropertyValue(h)+``).trim(),l+=``,Xt.lastIndex=0,Xt.test(c)||(g=U(c),_=U(l),_?g!==_&&(c=Yr(e,h,c,_)+_):g&&(l+=g)),this.add(o,`setProperty`,c,l,r,i,0,0,h),a.push(h),w.push(h,0,o[h]);else if(f!==`undefined`){if(s&&h in s?(c=typeof s[h]==`function`?s[h].call(n,r,e,i):s[h],E(c)&&~c.indexOf(`random(`)&&(c=It(c)),U(c+``)||c===`auto`||(c+=p.units[h]||U(Xr(e,h))||``),(c+``).charAt(1)===`=`&&(c=Xr(e,h))):c=Xr(e,h),d=parseFloat(c),v=f===`string`&&l.charAt(1)===`=`&&l.substr(0,2),v&&(l=l.substr(2)),u=parseFloat(l),h in _r&&(h===`autoAlpha`&&(d===1&&Xr(e,`visibility`)===`hidden`&&u&&(d=0),w.push(`visibility`,0,o.visibility),Kr(this,o,`visibility`,d?`inherit`:`hidden`,u?`inherit`:`hidden`,!u)),h!==`scale`&&h!==`transform`&&(h=_r[h],~h.indexOf(`,`)&&(h=h.split(`,`)[0]))),y=h in lr,y){if(this.styles.save(h),T=l,f===`string`&&l.substring(0,6)===`var(--`){if(l=Lr(e,l.substring(4,l.indexOf(`)`))),l.substring(0,5)===`calc(`){var D=e.style.perspective;e.style.perspective=l,l=Lr(e,`perspective`),D?e.style.perspective=D:Gr(e,`perspective`)}u=parseFloat(l)}if(b||(x=e._gsap,x.renderTransform&&!t.parseTransform||ci(e,t.parseTransform),S=t.smoothOrigin!==!1&&x.smooth,b=this._pt=new J(this._pt,o,X,0,1,x.renderTransform,x,0,-1),b.dep=1),h===`scale`)this._pt=new J(this._pt,x,`scaleY`,x.scaleY,(v?Me(x.scaleY,v+u):u)-x.scaleY||0,vr),this._pt.u=0,a.push(`scaleY`,h),h+=`X`;else if(h===`transformOrigin`){w.push(Z,0,o[Z]),l=$r(l),x.svg?si(e,l,0,S,0,this):(_=parseFloat(l.split(` `)[2])||0,_!==x.zOrigin&&Kr(this,x,`zOrigin`,x.zOrigin,_),Kr(this,o,h,li(c),li(l)));continue}else if(h===`svgOrigin`){si(e,l,1,S,0,this);continue}else if(h in ri){_i(this,x,h,d,v?Me(d,v+l):l);continue}else if(h===`smoothOrigin`){Kr(this,x,`smooth`,x.smooth,l);continue}else if(h===`force3D`){x[h]=l;continue}else if(h===`transform`){yi(this,l,e);continue}}else h in o||(h=zr(h)||h);if(y||(u||u===0)&&(d||d===0)&&!gr.test(l)&&h in o)g=(c+``).substr((d+``).length),u||=0,_=U(l)||(h in p.units?p.units[h]:g),g!==_&&(d=Yr(e,h,c,_)),this._pt=new J(this._pt,y?x:o,h,d,(v?Me(d,v+u):u)-d,!y&&(_===`px`||h===`zIndex`)&&t.autoRound!==!1?Sr:vr),this._pt.u=_||0,y&&T!==l?(this._pt.b=c,this._pt.e=T,this._pt.r=xr):g!==_&&_!==`%`&&(this._pt.b=c,this._pt.r=br);else if(h in o)Zr.call(this,e,h,c,v?v+l:l);else if(h in e)this.add(e,h,c||e[h],v?v+l:l,r,i);else if(h!==`parseTransform`){pe(h,l);continue}y||(h in o?w.push(h,0,o[h]):typeof e[h]==`function`?w.push(h,2,e[h]()):w.push(h,1,c||e[h])),a.push(h)}}C&&Vn(this)},render:function(e,t){if(t.tween._time||!sr())for(var n=t._pt;n;)n.r(e,n.d),n=n._next;else t.styles.revert()},get:Xr,aliases:_r,getSetter:function(e,t,n){var r=_r[t];return r&&r.indexOf(`,`)<0&&(t=r),t in lr&&t!==Z&&(e._gsap.x||Xr(e,`x`))?n&&or===n?t===`scale`?Or:Dr:(or=n||{})&&(t===`scale`?kr:Ar):e.style&&!k(e.style[t])?Tr:~t.indexOf(`-`)?Er:Nn(e,t)},core:{_removeProperty:Gr,_getMatrix:oi}};Y.utils.checkPrefix=zr,Y.core.getStyleSaver=Pr,(function(e,t,n,r){var i=B(e+`,`+t+`,`+n,function(e){lr[e]=1});B(t,function(e){p.units[e]=`deg`,ri[e]=1}),_r[i[13]]=e+`,`+t,B(r,function(e){var t=e.split(`:`);_r[t[1]]=i[t[0]]})})(`x,y,z,scale,scaleX,scaleY,xPercent,yPercent`,`rotation,rotationX,rotationY,skewX,skewY`,`transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective`,`0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY`),B(`x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective`,function(e){p.units[e]=`px`}),Y.registerPlugin(bi);var Q=Y.registerPlugin(bi)||Y;Q.core.Tween;var xi=typeof document<`u`?u.useLayoutEffect:u.useEffect,Si=e=>e&&!Array.isArray(e)&&typeof e==`object`,Ci=[],wi={},Ti=Q,Ei=(e,t=Ci)=>{let n=wi;Si(e)?(n=e,e=null,t=`dependencies`in n?n.dependencies:Ci):Si(t)&&(n=t,t=`dependencies`in n?n.dependencies:Ci),e&&typeof e!=`function`&&console.warn(`First parameter must be a function or config object`);let{scope:r,revertOnUpdate:i}=n,a=(0,u.useRef)(!1),o=(0,u.useRef)(Ti.context(()=>{},r)),s=(0,u.useRef)(e=>o.current.add(null,e)),c=t&&t.length&&!i;return c&&xi(()=>(a.current=!0,()=>o.current.revert()),Ci),xi(()=>{if(e&&o.current.add(e,r),!c||!a.current)return()=>o.current.revert()},t),{context:o.current,contextSafe:s.current}};Ei.register=e=>{Ti=e},Ei.headless=!0;var $=e();Q.registerPlugin(Ei);function Di({size:e=12,maxDistance:t=5,pupilColor:n=`#2D2D2D`}){return(0,$.jsx)(`div`,{className:`pupil rounded-full`,"data-max-distance":t,style:{backgroundColor:n,height:e,width:e,willChange:`transform`}})}function Oi({size:e=48,pupilSize:t=16,maxDistance:n=10,eyeColor:r=`white`,pupilColor:i=`#2D2D2D`}){return(0,$.jsx)(`div`,{className:`eyeball flex items-center justify-center overflow-hidden rounded-full`,"data-max-distance":n,style:{backgroundColor:r,height:e,width:e,willChange:`height`},children:(0,$.jsx)(`div`,{className:`eyeball-pupil rounded-full`,style:{backgroundColor:i,height:t,width:t,willChange:`transform`}})})}function ki({isTyping:e=!1,showPassword:t=!1,passwordLength:n=0}){let r=(0,u.useRef)(null),i=(0,u.useRef)({x:0,y:0}),a=(0,u.useRef)(0),o=(0,u.useRef)(null),s=(0,u.useRef)(null),c=(0,u.useRef)(null),l=(0,u.useRef)(null),d=(0,u.useRef)(null),f=(0,u.useRef)(null),p=(0,u.useRef)(null),m=(0,u.useRef)(null),h=(0,u.useRef)(null),g=(0,u.useRef)(void 0),_=(0,u.useRef)(void 0),v=(0,u.useRef)(void 0),y=(0,u.useRef)(void 0),b=(0,u.useRef)(!1),x=n>0&&!t,S=n>0&&t,C=(0,u.useRef)({isHidingPassword:x,isLooking:!1,isShowingPassword:S,isTyping:e});C.current={isHidingPassword:x,isLooking:b.current,isShowingPassword:S,isTyping:e};let{contextSafe:w}=Ei(()=>{Q.set(`.pupil`,{x:0,y:0}),Q.set(`.eyeball-pupil`,{x:0,y:0})},{scope:r}),T=(0,u.useRef)(null);(0,u.useEffect)(()=>{if(!(o.current&&s.current&&l.current&&c.current&&d.current&&f.current&&m.current&&p.current&&h.current))return;let e={blackFaceLeft:Q.quickTo(f.current,`left`,{duration:.3,ease:`power2.out`}),blackFaceTop:Q.quickTo(f.current,`top`,{duration:.3,ease:`power2.out`}),blackSkew:Q.quickTo(s.current,`skewX`,{duration:.3,ease:`power2.out`}),blackX:Q.quickTo(s.current,`x`,{duration:.3,ease:`power2.out`}),mouthX:Q.quickTo(h.current,`x`,{duration:.2,ease:`power2.out`}),mouthY:Q.quickTo(h.current,`y`,{duration:.2,ease:`power2.out`}),orangeFaceX:Q.quickTo(m.current,`x`,{duration:.2,ease:`power2.out`}),orangeFaceY:Q.quickTo(m.current,`y`,{duration:.2,ease:`power2.out`}),orangeSkew:Q.quickTo(l.current,`skewX`,{duration:.3,ease:`power2.out`}),purpleFaceLeft:Q.quickTo(d.current,`left`,{duration:.3,ease:`power2.out`}),purpleFaceTop:Q.quickTo(d.current,`top`,{duration:.3,ease:`power2.out`}),purpleHeight:Q.quickTo(o.current,`height`,{duration:.3,ease:`power2.out`}),purpleSkew:Q.quickTo(o.current,`skewX`,{duration:.3,ease:`power2.out`}),purpleX:Q.quickTo(o.current,`x`,{duration:.3,ease:`power2.out`}),yellowFaceX:Q.quickTo(p.current,`x`,{duration:.2,ease:`power2.out`}),yellowFaceY:Q.quickTo(p.current,`y`,{duration:.2,ease:`power2.out`}),yellowSkew:Q.quickTo(c.current,`skewX`,{duration:.3,ease:`power2.out`})};T.current=e;let t=e=>{let t=e.getBoundingClientRect(),n=t.left+t.width/2,r=t.top+t.height/3,a=i.current.x-n,o=i.current.y-r;return{bodySkew:Math.max(-6,Math.min(6,-a/120)),faceX:Math.max(-15,Math.min(15,a/20)),faceY:Math.max(-10,Math.min(10,o/30))}},n=(e,t)=>{let n=e.getBoundingClientRect(),r=n.left+n.width/2,a=n.top+n.height/2,o=i.current.x-r,s=i.current.y-a,c=Math.min(Math.sqrt(o**2+s**2),t),l=Math.atan2(s,o);return{x:Math.cos(l)*c,y:Math.sin(l)*c}},u=()=>{let i=r.current;if(!i)return;let{isHidingPassword:d,isLooking:f,isShowingPassword:p,isTyping:m}=C.current;if(o.current&&!p){let n=t(o.current);m||d?(e.purpleSkew(n.bodySkew-12),e.purpleX(40),e.purpleHeight(440)):(e.purpleSkew(n.bodySkew),e.purpleX(0),e.purpleHeight(400))}if(s.current&&!p){let n=t(s.current);f?(e.blackSkew(n.bodySkew*1.5+10),e.blackX(20)):m||d?(e.blackSkew(n.bodySkew*1.5),e.blackX(0)):(e.blackSkew(n.bodySkew),e.blackX(0))}if(l.current&&!p){let n=t(l.current);e.orangeSkew(n.bodySkew)}if(c.current&&!p){let n=t(c.current);e.yellowSkew(n.bodySkew)}if(o.current&&!p&&!f){let n=t(o.current),r=n.faceX>=0?Math.min(25,n.faceX*1.5):n.faceX;e.purpleFaceLeft(45+r),e.purpleFaceTop(40+n.faceY)}if(s.current&&!p&&!f){let n=t(s.current);e.blackFaceLeft(26+n.faceX),e.blackFaceTop(32+n.faceY)}if(l.current&&!p){let n=t(l.current);e.orangeFaceX(n.faceX),e.orangeFaceY(n.faceY)}if(c.current&&!p){let n=t(c.current);e.yellowFaceX(n.faceX),e.yellowFaceY(n.faceY),e.mouthX(n.faceX),e.mouthY(n.faceY)}if(!p){let e=i.querySelectorAll(`.pupil`);for(let t of e){let e=t,r=n(e,Number(e.dataset.maxDistance)||5);Q.set(e,{x:r.x,y:r.y})}if(!f){let e=i.querySelectorAll(`.eyeball`);for(let t of e){let e=t,r=Number(e.dataset.maxDistance)||10,i=e.querySelector(`.eyeball-pupil`);if(!i)continue;let a=n(e,r);Q.set(i,{x:a.x,y:a.y})}}}a.current=requestAnimationFrame(u)},g=e=>{i.current={x:e.clientX,y:e.clientY}};return window.addEventListener(`mousemove`,g,{passive:!0}),a.current=requestAnimationFrame(u),()=>{window.removeEventListener(`mousemove`,g),cancelAnimationFrame(a.current)}},[]),(0,u.useEffect)(()=>{let e=o.current?.querySelectorAll(`.eyeball`);if(!e?.length)return;let t=()=>{g.current=setTimeout(()=>{for(let t of e)Q.to(t,{duration:.08,ease:`power2.in`,height:2});setTimeout(()=>{for(let t of e){let e=Number(t.style.width.replace(`px`,``))||18;Q.to(t,{duration:.08,ease:`power2.out`,height:e})}t()},150)},Math.random()*4e3+3e3)};return t(),()=>clearTimeout(g.current)},[]),(0,u.useEffect)(()=>{let e=s.current?.querySelectorAll(`.eyeball`);if(!e?.length)return;let t=()=>{_.current=setTimeout(()=>{for(let t of e)Q.to(t,{duration:.08,ease:`power2.in`,height:2});setTimeout(()=>{for(let t of e){let e=Number(t.style.width.replace(`px`,``))||16;Q.to(t,{duration:.08,ease:`power2.out`,height:e})}t()},150)},Math.random()*4e3+3e3)};return t(),()=>clearTimeout(_.current)},[]);let E=w(()=>{let e=T.current;e&&(e.purpleFaceLeft(55),e.purpleFaceTop(65),e.blackFaceLeft(32),e.blackFaceTop(12)),o.current?.querySelectorAll(`.eyeball-pupil`).forEach(e=>{Q.to(e,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:3,y:4})}),s.current?.querySelectorAll(`.eyeball-pupil`).forEach(e=>{Q.to(e,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:0,y:-4})})}),D=w(()=>{let e=T.current;e&&(e.purpleFaceLeft(55),e.purpleFaceTop(65))}),O=w(()=>{let e=T.current;e&&(e.purpleSkew(0),e.blackSkew(0),e.orangeSkew(0),e.yellowSkew(0),e.purpleX(0),e.blackX(0),e.purpleHeight(400),e.purpleFaceLeft(20),e.purpleFaceTop(35),e.blackFaceLeft(10),e.blackFaceTop(28),e.orangeFaceX(-32),e.orangeFaceY(-5),e.yellowFaceX(-32),e.yellowFaceY(-5),e.mouthX(-30),e.mouthY(0)),o.current?.querySelectorAll(`.eyeball-pupil`).forEach(e=>{Q.to(e,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:-4,y:-4})}),s.current?.querySelectorAll(`.eyeball-pupil`).forEach(e=>{Q.to(e,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:-4,y:-4})}),l.current?.querySelectorAll(`.pupil`).forEach(e=>{Q.to(e,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:-5,y:-4})}),c.current?.querySelectorAll(`.pupil`).forEach(e=>{Q.to(e,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:-5,y:-4})})});return(0,u.useEffect)(()=>{if(!S||n<=0){clearTimeout(v.current);return}let e=o.current?.querySelectorAll(`.eyeball-pupil`);if(!e?.length)return;let t=()=>{v.current=setTimeout(()=>{for(let t of e)Q.to(t,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:4,y:5});let n=T.current;n&&(n.purpleFaceLeft(20),n.purpleFaceTop(35)),setTimeout(()=>{for(let t of e)Q.to(t,{duration:.3,ease:`power2.out`,overwrite:`auto`,x:-4,y:-4});t()},800)},Math.random()*3e3+2e3)};return t(),()=>clearTimeout(v.current)},[S,n]),(0,u.useEffect)(()=>(e&&!S?(b.current=!0,C.current.isLooking=!0,E(),clearTimeout(y.current),y.current=setTimeout(()=>{b.current=!1,C.current.isLooking=!1,o.current?.querySelectorAll(`.eyeball-pupil`).forEach(e=>{Q.killTweensOf(e)})},800)):(clearTimeout(y.current),b.current=!1,C.current.isLooking=!1),()=>clearTimeout(y.current)),[E,S,e]),(0,u.useEffect)(()=>{S?O():x&&D()},[D,O,x,S]),(0,$.jsxs)(`div`,{className:`relative mx-auto h-[320px] w-[440px] max-w-full lg:h-[400px] lg:w-[550px]`,ref:r,children:[(0,$.jsx)(`div`,{className:`absolute bottom-0 left-[70px] z-[1] rounded-t-[10px]`,ref:o,style:{backgroundColor:`#6C3FF5`,borderRadius:`10px 10px 0 0`,height:400,transformOrigin:`bottom center`,width:180,willChange:`transform`},children:(0,$.jsxs)(`div`,{className:`absolute flex gap-8`,ref:d,style:{left:45,top:40},children:[(0,$.jsx)(Oi,{maxDistance:5,pupilColor:`#2D2D2D`,pupilSize:7,size:18}),(0,$.jsx)(Oi,{maxDistance:5,pupilColor:`#2D2D2D`,pupilSize:7,size:18})]})}),(0,$.jsx)(`div`,{className:`absolute bottom-0 left-[240px] z-[2] rounded-t-[8px]`,ref:s,style:{backgroundColor:`#2D2D2D`,borderRadius:`8px 8px 0 0`,height:310,transformOrigin:`bottom center`,width:120,willChange:`transform`},children:(0,$.jsxs)(`div`,{className:`absolute flex gap-6`,ref:f,style:{left:26,top:32},children:[(0,$.jsx)(Oi,{maxDistance:4,pupilColor:`#2D2D2D`,pupilSize:6,size:16}),(0,$.jsx)(Oi,{maxDistance:4,pupilColor:`#2D2D2D`,pupilSize:6,size:16})]})}),(0,$.jsx)(`div`,{className:`absolute bottom-0 left-0 z-[3]`,ref:l,style:{backgroundColor:`#FF9B6B`,borderRadius:`120px 120px 0 0`,height:200,transformOrigin:`bottom center`,width:240,willChange:`transform`},children:(0,$.jsxs)(`div`,{className:`absolute flex gap-8`,ref:m,style:{left:82,top:90},children:[(0,$.jsx)(Di,{maxDistance:5,pupilColor:`#2D2D2D`,size:12}),(0,$.jsx)(Di,{maxDistance:5,pupilColor:`#2D2D2D`,size:12})]})}),(0,$.jsxs)(`div`,{className:`absolute bottom-0 left-[310px] z-[4]`,ref:c,style:{backgroundColor:`#E8D754`,borderRadius:`70px 70px 0 0`,height:230,transformOrigin:`bottom center`,width:140,willChange:`transform`},children:[(0,$.jsxs)(`div`,{className:`absolute flex gap-6`,ref:p,style:{left:52,top:40},children:[(0,$.jsx)(Di,{maxDistance:5,pupilColor:`#2D2D2D`,size:12}),(0,$.jsx)(Di,{maxDistance:5,pupilColor:`#2D2D2D`,size:12})]}),(0,$.jsx)(`div`,{className:`absolute rounded-full`,ref:h,style:{backgroundColor:`#2D2D2D`,height:4,left:40,top:88,width:80}})]})]})}function Ai({className:e}){let{isTyping:t,passwordLength:n,showPassword:r}=c();return(0,$.jsxs)(`div`,{className:i(`relative overflow-hidden bg-muted text-foreground`,e),children:[(0,$.jsx)(`div`,{className:`absolute inset-0 bg-[linear-gradient(rgba(0,0,0,0.03)_1px,transparent_1px),linear-gradient(90deg,rgba(0,0,0,0.03)_1px,transparent_1px)] bg-[size:48px_48px] opacity-60 dark:bg-[linear-gradient(rgba(255,255,255,0.03)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.03)_1px,transparent_1px)]`}),(0,$.jsx)(`div`,{className:`absolute top-[-10%] right-[-5%] size-80 rounded-full bg-primary/5 blur-3xl`}),(0,$.jsx)(`div`,{className:`absolute bottom-[-10%] left-[-5%] size-72 rounded-full bg-primary/5 blur-3xl`}),(0,$.jsxs)(`div`,{className:`relative z-20 flex h-full flex-col items-center justify-center gap-10 p-12`,children:[(0,$.jsxs)(`div`,{className:`w-full space-y-4 text-center`,children:[(0,$.jsx)(`p`,{className:`text-muted-foreground text-xs uppercase tracking-[0.3em]`,children:`USDT Payment Gateway`}),(0,$.jsx)(`h2`,{className:`font-semibold text-3xl tracking-tight xl:text-4xl`,children:`安全收付,尽在掌握`}),(0,$.jsx)(`p`,{className:`mx-auto max-w-md text-muted-foreground text-sm leading-relaxed`,children:`多链 USDT 自动收款、实时回调、智能结算,为您的业务提供稳定可靠的支付基础设施。`})]}),(0,$.jsx)(`div`,{className:`w-full rounded-[36px] border bg-background/50 px-6 py-8 shadow-2xl backdrop-blur-sm`,children:(0,$.jsx)(ki,{isTyping:t,passwordLength:n,showPassword:r})})]})]})}function ji(){return(0,$.jsx)(l,{children:(0,$.jsxs)(`div`,{className:`container relative grid h-svh flex-col items-center justify-center lg:max-w-none lg:grid-cols-2 lg:px-0`,children:[(0,$.jsx)(Ai,{className:`relative h-full overflow-hidden bg-muted max-lg:hidden`}),(0,$.jsxs)(`div`,{className:`flex h-full min-w-xs flex-col justify-center lg:p-8`,children:[(0,$.jsx)(`div`,{className:`mx-auto flex w-full flex-col justify-center space-y-2 py-8 sm:p-8 md:p-0`,children:(0,$.jsxs)(`div`,{className:`flex w-full items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(a,{className:`size-10 shrink-0`}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h1`,{className:`font-medium text-xl leading-tight`,children:`GMPay`}),(0,$.jsx)(`p`,{className:`mt-1 whitespace-nowrap text-muted-foreground text-xs`,children:`安全、高效的 USDT 支付中间件`})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(o,{}),(0,$.jsx)(s,{})]})]})}),(0,$.jsx)(`div`,{className:`mx-auto flex w-full max-w-sm flex-1 flex-col justify-center`,children:(0,$.jsx)(r,{})})]})]})})}export{ji as component}; \ No newline at end of file diff --git a/src/www/assets/route-Cut38oeV.js b/src/www/assets/route-Cut38oeV.js new file mode 100644 index 0000000..da957ec --- /dev/null +++ b/src/www/assets/route-Cut38oeV.js @@ -0,0 +1 @@ +import{Fc as e,Ft as t,Ic as n,Lc as r,Pc as i,Pt as a,nu as o}from"./messages-BovT1T-w.js";import{n as s}from"./Match-B8-zI9ZJ.js";import{B as c,W as l}from"./search-provider-Cx1K1ilz.js";import{o as u,s as d}from"./select-DcStuzoT.js";import{t as f}from"./separator-CRLYw2cW.js";import{t as p}from"./createLucideIcon-D28ivbfF.js";import{t as m}from"./page-header-BBJ9dE3-.js";import{t as h}from"./sidebar-nav-DgezD6QJ.js";var g=p(`bell-ring`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]),_=p(`globe-lock`,[[`path`,{d:`M15.686 15A14.5 14.5 0 0 1 12 22a14.5 14.5 0 0 1 0-20 10 10 0 1 0 9.542 13`,key:`qkt0x6`}],[`path`,{d:`M2 12h8.5`,key:`ovaggd`}],[`path`,{d:`M20 6V4a2 2 0 1 0-4 0v2`,key:`1of5e8`}],[`rect`,{width:`8`,height:`5`,x:`14`,y:`6`,rx:`1`,key:`1fmf51`}]]),v=o(),y=[{title:r(),href:`/settings`,icon:(0,v.jsx)(c,{size:18})},{title:n(),href:`/settings/telegram`,icon:(0,v.jsx)(g,{size:18})},{title:e(),href:`/settings/rate`,icon:(0,v.jsx)(_,{size:18})},{title:i(),href:`/settings/epay`,icon:(0,v.jsx)(l,{size:18})}];function b(){return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(d,{}),(0,v.jsxs)(u,{fixed:!0,children:[(0,v.jsx)(m,{description:a(),title:t()}),(0,v.jsx)(f,{className:`my-4 lg:my-6`}),(0,v.jsxs)(`div`,{className:`flex flex-1 flex-col space-y-2 overflow-hidden lg:flex-row lg:space-x-12 lg:space-y-0`,children:[(0,v.jsx)(`aside`,{className:`top-0 lg:sticky lg:w-1/5`,children:(0,v.jsx)(h,{items:y})}),(0,v.jsx)(`div`,{className:`flex w-full overflow-y-hidden p-1`,children:(0,v.jsx)(s,{})})]})]})]})}var x=b;export{x as component}; \ No newline at end of file diff --git a/src/www/assets/route-jvq7ILAD.js b/src/www/assets/route-jvq7ILAD.js new file mode 100644 index 0000000..2bc8b86 --- /dev/null +++ b/src/www/assets/route-jvq7ILAD.js @@ -0,0 +1 @@ +import{Bc as e,Hc as t,Vc as n,nu as r}from"./messages-BovT1T-w.js";import{n as i}from"./Match-B8-zI9ZJ.js";import{H as a}from"./search-provider-Cx1K1ilz.js";import{o,s}from"./select-DcStuzoT.js";import{t as c}from"./separator-CRLYw2cW.js";import{t as l}from"./page-header-BBJ9dE3-.js";import{t as u}from"./sidebar-nav-DgezD6QJ.js";var d=r();function f(){let r=[{title:e(),href:`/account/password`,icon:(0,d.jsx)(a,{size:18})}];return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(s,{}),(0,d.jsxs)(o,{fixed:!0,children:[(0,d.jsx)(l,{description:n(),title:t()}),(0,d.jsx)(c,{className:`my-4 lg:my-6`}),(0,d.jsxs)(`div`,{className:`flex flex-1 flex-col space-y-2 overflow-hidden lg:flex-row lg:space-x-12 lg:space-y-0`,children:[(0,d.jsx)(`aside`,{className:`top-0 lg:sticky lg:w-1/5`,children:(0,d.jsx)(u,{items:r})}),(0,d.jsx)(`div`,{className:`flex w-full overflow-y-hidden p-1`,children:(0,d.jsx)(i,{})})]})]})]})}var p=f;export{p as component}; \ No newline at end of file diff --git a/src/www/assets/router-Dohuf5K5.js b/src/www/assets/router-Dohuf5K5.js new file mode 100644 index 0000000..7a32aef --- /dev/null +++ b/src/www/assets/router-Dohuf5K5.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/install-BDL3tVBh.js","assets/messages-BovT1T-w.js","assets/form-DdHiBYMe.js","assets/button-DJA4fnJ8.js","assets/label-CsevXZTG.js","assets/dist-15n4mVGL.js","assets/zod-Cymc5bS-.js","assets/command-BwVY_kli.js","assets/dist-BKfJQFVD.js","assets/dist-DG5UMlBd.js","assets/dist-BEDXr2LC.js","assets/dropdown-menu-CUea1X0A.js","assets/dist-D21KDGR3.js","assets/dist-Cp1lAGZy.js","assets/createLucideIcon-D28ivbfF.js","assets/check-gDgbfVXu.js","assets/popover-D5q6Hufu.js","assets/auth-store-BpIS8RMn.js","assets/dist-DvAgZMq72.js","assets/with-selector-D_dmjfol.js","assets/cookies-BNZcTwGc.js","assets/useNavigate-Dg8CkCoa.js","assets/useRouter-D03zSgJO.js","assets/chevron-down-CdmvZsfI.js","assets/circle-check-Dh8WOZF0.js","assets/theme-switch-BjXQNOij.js","assets/theme-provider-CRKya7Cx.js","assets/loader-circle-fg8-aSyl.js","assets/card-DuQAN29P.js","assets/input-DiRPHDd8.js","assets/route-C7cw4pTD.js","assets/search-provider-Cx1K1ilz.js","assets/dist-DlZiaY1y.js","assets/dist-CGm-FpWw.js","assets/separator-CRLYw2cW.js","assets/wallet--XSRr4dT.js","assets/useStore-1-QVtiLb.js","assets/font-provider-DvtNHF7l.js","assets/Match-B8-zI9ZJ.js","assets/ClientOnly-CtYi2y5F.js","assets/matchContext-BcwcZvp2.js","assets/redirect-dE0wk0WH.js","assets/Matches-LuvVcyUg.js","assets/atom-DI1Bn-1s.js","assets/link-CA4H4hTz.js","assets/chevrons-up-down-iOmAu5Fh.js","assets/badge-BAmRBT3U.js","assets/route-ClLiRb_H.js","assets/auth-animation-context-zwGs7ZAM.js","assets/dashboard-Clgehcjb.js","assets/select-DcStuzoT.js","assets/header-DbmR8lIc.js","assets/data-table-CmcvKcj8.js","assets/eye-off-C-BF3gv3.js","assets/empty-state-Cam-sX8U.js","assets/clock-3-BoF5rDzX.js","assets/page-header-BBJ9dE3-.js","assets/503-BTAQ6Iri.js","assets/maintenance-error-PO6kK4Oj.js","assets/500-DSCRAyCF.js","assets/general-error-DKtbS-qh.js","assets/404-VQj_aY6A.js","assets/not-found-error-toRsO1Fi.js","assets/403-BfPOIf6t.js","assets/forbidden-BEz-zjy_.js","assets/401-IieFK_aS.js","assets/unauthorized-error-CxmfHb-a.js","assets/sign-in-DGULZo5h.js","assets/useSearch-B5ZWp8fU.js","assets/password-input-B463LDkD.js","assets/eye-CDavQcLN.js","assets/route-Cut38oeV.js","assets/sidebar-nav-DgezD6QJ.js","assets/useRouterState-DV1cSG1v.js","assets/route-jvq7ILAD.js","assets/settings-6L98-bwl.js","assets/textarea-D_TrrVtD.js","assets/lib-CTYwzR3w.js","assets/rpc-BVbqsnlT.js","assets/checkbox-B_Isethe.js","assets/switch-R6BNZUH1.js","assets/route-BxpeArPd.js","assets/arrow-left-BrKcUadm.js","assets/ellipsis-Y4gZr59G.js","assets/chains-store-Dzu_Y00B.js","assets/trash-2-Du706Ujr.js","assets/coming-soon-dialog-DMmjLgiX.js","assets/telescope-67IWjQye.js","assets/long-text-BXQXVuRh.js","assets/use-table-url-state-C7-IMA3_.js","assets/payments-DTD79Ztb.js","assets/payment-assets-DSsuCTEQ.js","assets/orders-Bv-Izk6_.js","assets/download-CN4vU01G.js","assets/help-F2O9kOnX.js","assets/chains-QKtNypSO.js","assets/addresses-DQVKa3vf.js","assets/telegram-HLdihqdM.js","assets/rate-B9ZGMIwY.js","assets/notifications-DfNeewuy.js","assets/radio-group-DXVwPYJH.js","assets/show-submitted-data-l0RlCwTX.js","assets/epay-Db0RVMXe.js","assets/display-CkSSrdk4.js","assets/appearance-DJZ27An3.js","assets/password-BmNp63ZQ.js"])))=>i.map(i=>d[i]); +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{C as r,D as i,E as a,O as o,S as s,T as c,_ as l,b as u,g as d,h as f,m as p,p as m,t as h,v as g,w as _,x as v,y}from"./auth-store-BpIS8RMn.js";import{n as b}from"./redirect-dE0wk0WH.js";import{n as x,o as S}from"./Match-B8-zI9ZJ.js";import{t as C}from"./route-BxpeArPd.js";import{n as w,t as T}from"./atom-DI1Bn-1s.js";import{i as E,n as D,r as O,t as ee}from"./_error-DGJYkCxd.js";import{t as k}from"./useRouterState-DV1cSG1v.js";import{t as te}from"./wallet--XSRr4dT.js";import{t as A}from"./createLucideIcon-D28ivbfF.js";import{t as j}from"./circle-check-Dh8WOZF0.js";import{t as M}from"./clock-3-BoF5rDzX.js";import{t as N}from"./loader-circle-fg8-aSyl.js";import{t as ne}from"./dist-DvAgZMq72.js";import{t as re}from"./general-error-DKtbS-qh.js";import{t as ie}from"./not-found-error-toRsO1Fi.js";import{c as ae,s as oe,t as P}from"./zod-Cymc5bS-.js";var se=class extends o{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new m({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=F(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=F(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=F(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=F(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){l.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>v(t,e))}findAll(e={}){return this.getAll().filter(t=>v(e,t))}notify(e){l.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return l.batch(()=>Promise.all(e.map(e=>e.continue().catch(r))))}};function F(e){return e.options.scope?.id}var ce=class extends o{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){let r=t.queryKey,i=t.queryHash??u(r,t),a=this.get(i);return a||(a=new f({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){l.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>s(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>s(e,t)):t}notify(e){l.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){l.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){l.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},le=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new ce,this.#t=e.mutationCache||new se,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=i.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=d.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(c(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=g(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return l.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;l.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return l.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},i=l.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(i).then(r).catch(r)}invalidateQueries(e,t={}){return l.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},i=l.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(r)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(i).then(r)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(c(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(r).catch(r)}fetchInfiniteQuery(e){return e.behavior=p(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(r).catch(r)}ensureInfiniteQueryData(e){return e.behavior=p(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return d.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(y(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{_(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(y(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{_(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=u(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===a&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},ue=e=>({createMutableStore:w,createReadonlyStore:w,batch:T}),de=e=>new fe(e),fe=class extends S{constructor(e){super(e,ue)}},I=t(n(),1),L=()=>{};function R(e,t,n){let r=(0,I.useRef)(L);(0,I.useEffect)(()=>{r.current=e}),(0,I.useEffect)(()=>{},[n]),(0,I.useEffect)(()=>{if(t===null||t===!1)return;let e=setInterval(()=>r.current(),t);return()=>clearInterval(e)},[t])}function z(e,t){return Math.random()*(t-e+1)+e}function B(e,t){return Math.floor(z(e,t))}var V=(0,I.forwardRef)(({progress:e,height:t=2,className:n=``,color:r=`red`,background:i=`transparent`,onLoaderFinished:a,transitionTime:o=300,loaderSpeed:s=500,waitingTime:c=1e3,shadow:l=!0,containerStyle:u={},style:d={},shadowStyle:f={},containerClassName:p=``},m)=>{let h=(0,I.useRef)(!1),[g,_]=(0,I.useState)(0),v=(0,I.useRef)({active:!1,refreshRate:1e3}),[y,b]=(0,I.useState)({active:!1,value:60}),x={height:`100%`,background:r,transition:`all ${s}ms ease`,width:`0%`},S={position:`fixed`,top:0,left:0,height:t,background:i,zIndex:99999999999,width:`100%`},C={boxShadow:`0 0 10px ${r}, 0 0 10px ${r}`,width:`5%`,opacity:1,position:`absolute`,height:`100%`,transition:`all ${s}ms ease`,transform:`rotate(2deg) translate(0px, -2px)`,left:`-10rem`},[w,T]=(0,I.useState)(x),[E,D]=(0,I.useState)(C);(0,I.useEffect)(()=>(h.current=!0,()=>{h.current=!1}),[]),(0,I.useImperativeHandle)(m,()=>({continuousStart(t,n=1e3){if(y.active)return;if(e!==void 0){console.warn(`react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!`);return}let r=t||B(10,20);v.current={active:!0,refreshRate:n},_(r),O(r)},staticStart(t){if(v.current.active)return;if(e!==void 0){console.warn(`react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!`);return}let n=t||B(30,60);b({active:!0,value:n}),_(n),O(n)},start(t=`continuous`,n,r){if(e!==void 0){console.warn(`react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!`);return}t===`continuous`?v.current={active:!0,refreshRate:r||1e3}:b({active:!0,value:n||20});let i=B(10,20),a=B(30,70),o=n||(t===`continuous`?i:a);_(o),O(o)},complete(){if(e!==void 0){console.warn(`react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!`);return}_(100),O(100)},increase(t){if(e!==void 0){console.warn(`react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!`);return}_(e=>{let n=e+t;return O(n),n})},decrease(t){if(e!==void 0){console.warn(`react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!`);return}_(e=>{let n=e-t;return O(n),n})},getProgress(){return g}})),(0,I.useEffect)(()=>{T({...w,background:r}),D({...E,boxShadow:`0 0 10px ${r}, 0 0 5px ${r}`})},[r]),(0,I.useEffect)(()=>{if(m){if(m&&e!==void 0){console.warn(`react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar! Please use only props or only ref methods! Ref methods will override props if "ref" property is available.`);return}O(g)}else e&&O(e)},[e]);let O=e=>{e>=100?(T({...w,width:`100%`}),l&&D({...E,left:e-10+`%`}),setTimeout(()=>{h.current&&(T({...w,opacity:0,width:`100%`,transition:`all ${o}ms ease-out`,color:r}),setTimeout(()=>{h.current&&(v.current.active&&(v.current={...v.current,active:!1},_(0),O(0)),y.active&&(b({...y,active:!1}),_(0),O(0)),a&&a(),_(0),O(0))},o))},c)):(T(t=>({...t,width:e+`%`,opacity:1,transition:e>0?`all ${s}ms ease`:``})),l&&D({...E,left:e-5.5+`%`,transition:e>0?`all ${s}ms ease`:``}))};return R(()=>{let e=z(Math.min(10,(100-g)/5),Math.min(20,(100-g)/3));g+e<95&&(_(g+e),O(g+e))},v.current.active?v.current.refreshRate:null),I.createElement(`div`,{className:p,style:{...S,...u}},I.createElement(`div`,{className:n,style:{...w,...d}},l?I.createElement(`div`,{style:{...E,...f}}):null))});I.createContext(void 0);var H=e();function pe(){let e=(0,I.useRef)(null),t=k();return(0,I.useEffect)(()=>{t.status===`pending`?e.current?.continuousStart():e.current?.complete()},[t.status]),(0,H.jsx)(V,{color:`var(--primary)`,height:2,ref:e,shadow:!0})}var U=A(`circle-pause`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`,key:`c1nkhi`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`,key:`h65svq`}]]),me=A(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),he=A(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),ge=A(`octagon-x`,[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),_e=A(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ve=(e,t,n,r,i,a,o,s)=>{let c=document.documentElement,l=[`light`,`dark`];function u(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n=e===`class`,r=n&&a?i.map(e=>a[e]||e):i;n?(c.classList.remove(...r),c.classList.add(a&&a[t]?a[t]:t)):c.setAttribute(e,t)}),d(t)}function d(e){s&&l.includes(e)&&(c.style.colorScheme=e)}function f(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}if(r)u(r);else try{let e=localStorage.getItem(t)||n;u(o&&e===`system`?f():e)}catch{}},ye=I.createContext(void 0),be={setTheme:e=>{},themes:[]},xe=()=>I.useContext(ye)??be;I.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:a,value:o,themes:s,nonce:c,scriptProps:l})=>{let u=JSON.stringify([n,t,a,e,s,o,r,i]).slice(1,-1);return I.createElement(`script`,{...l,suppressHydrationWarning:!0,nonce:typeof window>`u`?c:``,dangerouslySetInnerHTML:{__html:`(${ve.toString()})(${u})`}})});var Se=({...e})=>{let{theme:t=`system`}=xe();return(0,H.jsx)(ne,{richColors:!0,className:`toaster group`,icons:{success:(0,H.jsx)(j,{className:`size-4`}),info:(0,H.jsx)(me,{className:`size-4`}),warning:(0,H.jsx)(_e,{className:`size-4`}),error:(0,H.jsx)(ge,{className:`size-4`}),loading:(0,H.jsx)(N,{className:`size-4 animate-spin`})},style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`,"--border-radius":`var(--radius)`},theme:t,...e})};function Ce(){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(pe,{}),(0,H.jsx)(x,{}),(0,H.jsx)(Se,{duration:5e3,position:`top-right`})]})}var W=C()({component:Ce,notFoundComponent:ie,errorComponent:re}),we=E(`/install`)({component:O(()=>D(()=>import(`./install-BDL3tVBh.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29])),`component`)}),Te=E(`/_authenticated`)({beforeLoad:({location:e})=>{if(!h.state.accessToken)throw b({to:`/sign-in`,search:{redirect:e.href},replace:!0})},component:O(()=>D(()=>import(`./route-C7cw4pTD.js`),__vite__mapDeps([30,1,31,9,3,7,8,10,5,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,38,39,40,41,42,43,44,45,46])),`component`)}),Ee=E(`/(auth)`)({component:O(()=>D(()=>import(`./route-ClLiRb_H.js`),__vite__mapDeps([47,1,3,11,8,9,10,5,12,13,14,15,38,39,36,19,40,22,41,25,21,26,20,48])),`component`)}),De=E(`/`)({beforeLoad:()=>{throw b({to:h.state.accessToken?`/dashboard`:`/sign-in`,replace:!0})},component:O(()=>D(()=>import(`./routes-CJI6s37t.js`),[]),`component`)}),Oe=E(`/_authenticated/dashboard`)({component:O(()=>D(()=>import(`./dashboard-Clgehcjb.js`),__vite__mapDeps([49,1,31,9,3,7,8,10,5,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,16,50,44,39,23,25,51,52,45,53,54,46,55,56,28])),`component`)}),ke=E(`/(errors)/503`)({component:O(()=>D(()=>import(`./503-BTAQ6Iri.js`),__vite__mapDeps([57,58,1,3])),`component`)}),Ae=E(`/(errors)/500`)({component:O(()=>D(()=>import(`./500-DSCRAyCF.js`),__vite__mapDeps([59,60,1,3,22,21])),`component`)}),je=E(`/(errors)/404`)({component:O(()=>D(()=>import(`./404-VQj_aY6A.js`),__vite__mapDeps([61,62,1,3,22,21])),`component`)}),Me=E(`/(errors)/403`)({component:O(()=>D(()=>import(`./403-BfPOIf6t.js`),__vite__mapDeps([63,64,1,3,22,21])),`component`)}),Ne=E(`/(errors)/401`)({component:O(()=>D(()=>import(`./401-IieFK_aS.js`),__vite__mapDeps([65,66,1,3,22,21])),`component`)}),Pe=()=>D(()=>import(`./sign-in-DGULZo5h.js`),__vite__mapDeps([67,1,2,3,4,5,6,17,18,19,20,68,40,22,36,21,14,27,69,53,70,29,48])),Fe=oe({redirect:ae().optional()}),Ie=E(`/(auth)/sign-in`)({component:O(Pe,`component`),validateSearch:Fe}),Le=E(`/_authenticated/settings`)({component:O(()=>D(()=>import(`./route-Cut38oeV.js`),__vite__mapDeps([71,1,31,9,3,7,8,10,5,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,50,44,39,23,25,51,38,40,41,56,72,73])),`component`)}),Re=E(`/_authenticated/account`)({component:O(()=>D(()=>import(`./route-jvq7ILAD.js`),__vite__mapDeps([74,1,31,9,3,7,8,10,5,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,50,44,39,23,25,51,38,40,41,56,72,73])),`component`)}),ze=E(`/_authenticated/settings/`)({component:O(()=>D(()=>import(`./settings-6L98-bwl.js`),__vite__mapDeps([75,1,2,3,4,5,6,18,56,34,29,76,77,17,19,20])),`component`)}),G=[{label:`待支付`,value:`pending`,icon:M},{label:`已支付`,value:`paid`,icon:j},{label:`已过期`,value:`expired`,icon:he},{label:`已关闭`,value:`closed`,icon:U}],K=[{label:`启用中`,value:`enabled`,icon:te},{label:`已禁用`,value:`disabled`,icon:U},{label:`监控中`,value:`monitoring`,icon:j}],q=[{label:`启用中`,value:`true`},{label:`已禁用`,value:`false`}],Be=()=>D(()=>import(`./rpc-BVbqsnlT.js`),__vite__mapDeps([78,1,2,3,4,5,6,31,9,7,8,10,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,79,50,44,39,23,25,51,80,81,68,40,41,52,16,45,53,54,46,82,83,84,85,86,87,88,56,89])),Ve=P.object({page:P.number().optional().catch(1),pageSize:P.number().optional().catch(10),enabled:P.array(P.enum(q.map(e=>e.value))).optional().catch([]),type:P.array(P.string()).optional().catch([]),status:P.array(P.enum([`ok`,`down`,`unknown`])).optional().catch([]),keyword:P.string().optional().catch(``)}),He=E(`/_authenticated/rpc/`)({validateSearch:Ve,component:O(Be,`component`)}),Ue=()=>D(()=>import(`./payments-DTD79Ztb.js`),__vite__mapDeps([90,1,2,3,4,5,6,31,9,7,8,10,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,50,44,39,23,25,51,80,81,68,40,41,53,70,54,85,56,46,76])),We=P.object({type:P.enum([`all`,`enabled`,`disabled`]).optional().catch(void 0),filter:P.string().optional().catch(``),sort:P.enum([`asc`,`desc`]).optional().catch(void 0)}),Ge=E(`/_authenticated/payments/`)({validateSearch:We,component:O(Ue,`component`)}),Ke=()=>D(()=>import(`./payment-assets-DSsuCTEQ.js`),__vite__mapDeps([91,1,3,50,8,9,10,5,31,7,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,44,39,23,25,51,81,68,40,41,52,16,45,53,54,46,56,89])),qe=P.object({page:P.number().optional().catch(1),pageSize:P.number().optional().catch(10),status:P.enum([`enabled`,`disabled`]).array().optional().catch([]),chain:P.array(P.string()).optional().catch([]),keyword:P.string().optional().catch(``)}),Je=E(`/_authenticated/payment-assets/`)({validateSearch:qe,component:O(Ke,`component`)}),Ye=()=>D(()=>import(`./orders-Bv-Izk6_.js`),__vite__mapDeps([92,1,31,9,3,7,8,10,5,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,4,50,44,39,23,25,51,81,68,40,41,52,16,45,53,54,46,93,83,70,86,87,88,56,89])),Xe=P.object({page:P.number().optional().catch(1),pageSize:P.number().optional().catch(10),status:P.array(P.enum(G.map(e=>e.value))).optional().catch([]),chain:P.array(P.string()).optional().catch([]),orderNo:P.string().optional().catch(``)}),Ze=E(`/_authenticated/orders/`)({validateSearch:Xe,component:O(Ye,`component`)}),Qe=E(`/_authenticated/help/`)({component:O(()=>D(()=>import(`./help-F2O9kOnX.js`),__vite__mapDeps([94,1,87,14])),`component`)}),$e=()=>D(()=>import(`./chains-QKtNypSO.js`),__vite__mapDeps([95,1,2,3,4,5,6,31,9,7,8,10,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,79,50,44,39,23,25,51,80,52,16,45,53,54,46,82,83,84,85,86,87,56])),et=P.object({page:P.number().optional().catch(1),pageSize:P.number().optional().catch(10),status:P.array(P.enum(q.map(e=>e.value))).optional().catch([]),keyword:P.string().optional().catch(``)}),tt=E(`/_authenticated/chains/`)({validateSearch:et,component:O($e,`component`)}),nt=()=>D(()=>import(`./addresses-DQVKa3vf.js`),__vite__mapDeps([96,1,2,3,4,5,6,31,9,7,8,10,11,12,13,14,15,32,33,34,35,20,17,18,19,22,21,36,24,29,37,26,50,44,39,23,25,51,80,81,68,40,41,52,16,45,53,54,46,93,83,70,84,85,88,56,76,89])),rt=P.object({page:P.number().optional().catch(1),pageSize:P.number().optional().catch(10),status:P.array(P.enum(K.map(e=>e.value))).optional().catch([]),chain:P.array(P.string()).optional().catch([]),address:P.string().optional().catch(``)}),it=E(`/_authenticated/addresses/`)({validateSearch:rt,component:O(nt,`component`)}),at=E(`/_authenticated/account/`)({beforeLoad:()=>{throw b({to:`/account/password`,replace:!0})}}),ot=E(`/_authenticated/settings/telegram`)({component:O(()=>D(()=>import(`./telegram-HLdihqdM.js`),__vite__mapDeps([97,1,2,3,4,5,6,80,9,33,56,34,29,77,17,18,19,20])),`component`)}),st=E(`/_authenticated/settings/rate`)({component:O(()=>D(()=>import(`./rate-B9ZGMIwY.js`),__vite__mapDeps([98,1,2,3,4,5,6,56,34,29,77,17,18,19,20])),`component`)}),ct=E(`/_authenticated/settings/notifications`)({component:O(()=>D(()=>import(`./notifications-DfNeewuy.js`),__vite__mapDeps([99,1,2,3,4,5,6,79,9,13,33,15,14,80,44,39,36,19,22,100,32,12,10,56,34,101,18])),`component`)}),lt=E(`/_authenticated/settings/epay`)({component:O(()=>D(()=>import(`./epay-Db0RVMXe.js`),__vite__mapDeps([102,1,2,3,4,5,6,56,34,29,77,17,18,19,20])),`component`)}),ut=E(`/_authenticated/settings/display`)({component:O(()=>D(()=>import(`./display-CkSSrdk4.js`),__vite__mapDeps([103,1,2,3,4,5,6,79,9,13,33,15,14,56,34,101,18])),`component`)}),dt=E(`/_authenticated/settings/appearance`)({component:O(()=>D(()=>import(`./appearance-DJZ27An3.js`),__vite__mapDeps([104,1,2,3,4,5,6,23,14,100,32,9,12,10,13,33,56,34,37,20,26,101,18])),`component`)}),ft=E(`/_authenticated/account/password`)({component:O(()=>D(()=>import(`./password-BmNp63ZQ.js`),__vite__mapDeps([105,1,2,3,4,5,6,17,18,19,20,69,53,14,70,29,56,34])),`component`)}),pt=we.update({id:`/install`,path:`/install`,getParentRoute:()=>W}),J=Te.update({id:`/_authenticated`,getParentRoute:()=>W}),Y=Ee.update({id:`/(auth)`,getParentRoute:()=>W}),mt=De.update({id:`/`,path:`/`,getParentRoute:()=>W}),ht=Oe.update({id:`/dashboard`,path:`/dashboard`,getParentRoute:()=>J}),gt=ke.update({id:`/(errors)/503`,path:`/503`,getParentRoute:()=>W}),_t=Ae.update({id:`/(errors)/500`,path:`/500`,getParentRoute:()=>W}),vt=je.update({id:`/(errors)/404`,path:`/404`,getParentRoute:()=>W}),yt=Me.update({id:`/(errors)/403`,path:`/403`,getParentRoute:()=>W}),bt=Ne.update({id:`/(errors)/401`,path:`/401`,getParentRoute:()=>W}),xt=Ie.update({id:`/sign-in`,path:`/sign-in`,getParentRoute:()=>Y}),X=Le.update({id:`/settings`,path:`/settings`,getParentRoute:()=>J}),Z=Re.update({id:`/account`,path:`/account`,getParentRoute:()=>J}),St=ze.update({id:`/`,path:`/`,getParentRoute:()=>X}),Ct=He.update({id:`/rpc/`,path:`/rpc/`,getParentRoute:()=>J}),wt=Ge.update({id:`/payments/`,path:`/payments/`,getParentRoute:()=>J}),Tt=Je.update({id:`/payment-assets/`,path:`/payment-assets/`,getParentRoute:()=>J}),Et=Ze.update({id:`/orders/`,path:`/orders/`,getParentRoute:()=>J}),Dt=Qe.update({id:`/help/`,path:`/help/`,getParentRoute:()=>J}),Ot=tt.update({id:`/chains/`,path:`/chains/`,getParentRoute:()=>J}),kt=it.update({id:`/addresses/`,path:`/addresses/`,getParentRoute:()=>J}),At=at.update({id:`/`,path:`/`,getParentRoute:()=>Z}),jt=ot.update({id:`/telegram`,path:`/telegram`,getParentRoute:()=>X}),Mt=st.update({id:`/rate`,path:`/rate`,getParentRoute:()=>X}),Nt=ct.update({id:`/notifications`,path:`/notifications`,getParentRoute:()=>X}),Pt=lt.update({id:`/epay`,path:`/epay`,getParentRoute:()=>X}),Q=ut.update({id:`/display`,path:`/display`,getParentRoute:()=>X}),Ft=dt.update({id:`/appearance`,path:`/appearance`,getParentRoute:()=>X}),It=ee.update({id:`/errors/$error`,path:`/errors/$error`,getParentRoute:()=>J}),Lt=ft.update({id:`/password`,path:`/password`,getParentRoute:()=>Z}),Rt={authSignInRoute:xt},zt=Y._addFileChildren(Rt),Bt={AuthenticatedAccountPasswordRoute:Lt,AuthenticatedAccountIndexRoute:At},Vt=Z._addFileChildren(Bt),Ht={AuthenticatedSettingsAppearanceRoute:Ft,AuthenticatedSettingsDisplayRoute:Q,AuthenticatedSettingsEpayRoute:Pt,AuthenticatedSettingsNotificationsRoute:Nt,AuthenticatedSettingsRateRoute:Mt,AuthenticatedSettingsTelegramRoute:jt,AuthenticatedSettingsIndexRoute:St},Ut={AuthenticatedAccountRouteRoute:Vt,AuthenticatedSettingsRouteRoute:X._addFileChildren(Ht),AuthenticatedDashboardRoute:ht,AuthenticatedErrorsErrorRoute:It,AuthenticatedAddressesIndexRoute:kt,AuthenticatedChainsIndexRoute:Ot,AuthenticatedHelpIndexRoute:Dt,AuthenticatedOrdersIndexRoute:Et,AuthenticatedPaymentAssetsIndexRoute:Tt,AuthenticatedPaymentsIndexRoute:wt,AuthenticatedRpcIndexRoute:Ct},Wt={IndexRoute:mt,authRouteRoute:zt,AuthenticatedRouteRoute:J._addFileChildren(Ut),InstallRoute:pt,errors401Route:bt,errors403Route:yt,errors404Route:vt,errors500Route:_t,errors503Route:gt},Gt=W._addFileChildren(Wt)._addFileTypes(),$=new le({defaultOptions:{queries:{retry:(e,t)=>{if(e>3)return!1;if(typeof t==`object`&&t&&`status`in t){let e=t.status;if(e===401||e===403)return!1}return!0},refetchOnWindowFocus:!0,staleTime:10*1e3}}}),Kt=de({routeTree:Gt,context:{queryClient:$},scrollRestoration:!0,defaultPreload:`intent`,defaultPreloadStaleTime:0});export{G as i,Kt as n,K as r,$ as t}; \ No newline at end of file diff --git a/src/www/assets/routes-CJI6s37t.js b/src/www/assets/routes-CJI6s37t.js new file mode 100644 index 0000000..daa0be8 --- /dev/null +++ b/src/www/assets/routes-CJI6s37t.js @@ -0,0 +1 @@ +var e=()=>null;export{e as component}; \ No newline at end of file diff --git a/src/www/assets/rpc-BVbqsnlT.js b/src/www/assets/rpc-BVbqsnlT.js new file mode 100644 index 0000000..c1de18b --- /dev/null +++ b/src/www/assets/rpc-BVbqsnlT.js @@ -0,0 +1 @@ +import{$n as e,Cr as t,Di as n,Dr as r,Ei as i,Er as a,Gn as o,Gr as s,Hi as c,Hn as l,Jn as u,Kn as d,Ni as f,Oi as p,Or as m,Qn as h,Sr as g,Tr as ee,Un as _,Wn as v,Xn as y,Yn as b,Zl as te,Zn as ne,_r as re,aa as x,ar as S,br as C,cr as w,dr as T,er as E,fr as D,gi as ie,gr as ae,hi as oe,hr as se,ir as ce,kr as le,lr as O,mr as k,nr as ue,nu as de,or as fe,ou as pe,pr as me,qn as he,rr as ge,ru as _e,sr as A,tr as ve,ur as j,vr as ye,wr as be,xr as xe,yr as Se}from"./messages-BovT1T-w.js";import{a as M}from"./auth-store-BpIS8RMn.js";import{t as Ce}from"./router-Dohuf5K5.js";import{r as we}from"./route-BxpeArPd.js";import{P as N,R as Te,o as P,r as Ee}from"./search-provider-Cx1K1ilz.js";import{i as F,t as I}from"./button-DJA4fnJ8.js";import{a as L,c as R,l as De,r as Oe,s as ke,t as Ae}from"./dropdown-menu-CUea1X0A.js";import{d as je,g as Me,l as Ne,m as Pe,p as Fe,u as Ie}from"./command-BwVY_kli.js";import{t as Le}from"./checkbox-B_Isethe.js";import{a as Re,i as z,n as B,o as ze,r as V,s as Be,t as Ve}from"./select-DcStuzoT.js";import{t as He}from"./separator-CRLYw2cW.js";import{t as Ue}from"./switch-R6BNZUH1.js";import{t as We}from"./createLucideIcon-D28ivbfF.js";import{_ as Ge,d as H,f as Ke,g as qe,h as Je,n as Ye,p as Xe,r as Ze,t as Qe,v as $e,y as et}from"./data-table-CmcvKcj8.js";import{t as tt}from"./arrow-left-BrKcUadm.js";import{t as nt}from"./ellipsis-Y4gZr59G.js";import{t as rt}from"./empty-state-Cam-sX8U.js";import{n as it,t as at}from"./chains-store-Dzu_Y00B.js";import{n as ot,t as st}from"./trash-2-Du706Ujr.js";import{n as U}from"./dist-DvAgZMq72.js";import{a as ct,c as W,n as lt,r as ut,s as dt}from"./zod-Cymc5bS-.js";import{a as G,c as ft,i as K,l as pt,n as q,o as J,s as Y,t as mt}from"./form-DdHiBYMe.js";import{t as X}from"./input-DiRPHDd8.js";import{t as ht}from"./page-header-BBJ9dE3-.js";import{t as Z}from"./badge-BAmRBT3U.js";import{t as gt}from"./use-table-url-state-C7-IMA3_.js";import{t as _t}from"./long-text-BXQXVuRh.js";import{t as vt}from"./coming-soon-dialog-DMmjLgiX.js";var yt=We(`stethoscope`,[[`path`,{d:`M11 2v2`,key:`1539x4`}],[`path`,{d:`M5 2v2`,key:`1yf1q8`}],[`path`,{d:`M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1`,key:`rb5t3r`}],[`path`,{d:`M8 15a6 6 0 0 0 12 0v-3`,key:`x18d4x`}],[`circle`,{cx:`20`,cy:`10`,r:`2`,key:`ts1r5v`}]]),Q=pe(_e(),1),$=de(),bt=dt({network:W().min(1,v()),type:ut([`http`,`ws`]),url:W().url(_()),api_key:W().default(``),weight:lt().min(1,l()),enabled:ct().default(!0)});function xt({open:t,onOpenChange:n,currentRow:r,onSuccess:i}){let{chains:a}=at(),s=pt({resolver:ft(bt),defaultValues:{network:``,type:`http`,url:``,api_key:``,weight:1,enabled:!0}}),l=M.useMutation(`post`,`/admin/api/v1/rpc-nodes`),f=M.useMutation(`patch`,`/admin/api/v1/rpc-nodes/{id}`);(0,Q.useEffect)(()=>{t&&s.reset({network:r?.network??``,type:r?.type??`http`,url:r?.url??``,api_key:r?.api_key??``,weight:r?.weight??1,enabled:r?.enabled??!0})},[t,r,s]);function p(e){if(r?.id){f.mutate({params:{path:{id:r.id}},body:{url:e.url,api_key:e.api_key,weight:e.weight,enabled:e.enabled}},{onSuccess:()=>{U.success(d()),n(!1),i?.()}});return}l.mutate({body:{network:e.network,type:e.type,url:e.url,api_key:e.api_key,weight:e.weight,enabled:e.enabled}},{onSuccess:()=>{U.success(o()),n(!1),i?.()}})}let m=l.isPending||f.isPending;return(0,$.jsx)(Ne,{onOpenChange:n,open:t,children:(0,$.jsxs)(Ie,{children:[(0,$.jsxs)(Fe,{children:[(0,$.jsx)(Pe,{children:r?E():e()}),(0,$.jsx)(je,{children:r?h():ne()})]}),(0,$.jsx)(mt,{...s,children:(0,$.jsxs)(`form`,{className:`space-y-4`,onSubmit:s.handleSubmit(p),children:[(0,$.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,$.jsx)(K,{control:s.control,name:`network`,render:({field:e})=>(0,$.jsxs)(G,{children:[(0,$.jsx)(J,{children:j()}),(0,$.jsxs)(Ve,{disabled:!!r,onValueChange:e.onChange,value:e.value,children:[(0,$.jsx)(q,{children:(0,$.jsx)(z,{className:`w-full`,children:(0,$.jsx)(Re,{placeholder:c()})})}),(0,$.jsx)(B,{children:a.filter(e=>!!e.network).map(e=>(0,$.jsx)(V,{value:e.network??``,children:e.display_name??e.network},e.network))})]}),(0,$.jsx)(Y,{})]})}),(0,$.jsx)(K,{control:s.control,name:`type`,render:({field:e})=>(0,$.jsxs)(G,{children:[(0,$.jsx)(J,{children:O()}),(0,$.jsxs)(Ve,{disabled:!!r,onValueChange:e.onChange,value:e.value,children:[(0,$.jsx)(q,{children:(0,$.jsx)(z,{className:`w-full`,children:(0,$.jsx)(Re,{placeholder:y()})})}),(0,$.jsxs)(B,{children:[(0,$.jsx)(V,{value:`http`,children:`HTTP`}),(0,$.jsx)(V,{value:`ws`,children:`WebSocket`})]})]}),(0,$.jsx)(Y,{})]})})]}),(0,$.jsx)(K,{control:s.control,name:`url`,render:({field:e})=>(0,$.jsxs)(G,{children:[(0,$.jsx)(J,{children:w()}),(0,$.jsx)(q,{children:(0,$.jsx)(X,{placeholder:`https://api.trongrid.io`,...e})}),(0,$.jsx)(Y,{})]})}),(0,$.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,$.jsx)(K,{control:s.control,name:`api_key`,render:({field:e})=>(0,$.jsxs)(G,{children:[(0,$.jsx)(J,{children:`API Key`}),(0,$.jsx)(q,{children:(0,$.jsx)(X,{placeholder:b(),...e})}),(0,$.jsx)(Y,{})]})}),(0,$.jsx)(K,{control:s.control,name:`weight`,render:({field:e})=>(0,$.jsxs)(G,{children:[(0,$.jsx)(J,{children:A()}),(0,$.jsx)(q,{children:(0,$.jsx)(X,{name:e.name,onBlur:e.onBlur,onChange:t=>e.onChange(t.target.value),ref:e.ref,type:`number`,value:String(e.value??``)})}),(0,$.jsx)(Y,{})]})})]}),(0,$.jsx)(K,{control:s.control,name:`enabled`,render:({field:e})=>(0,$.jsxs)(G,{className:`flex flex-row items-center gap-3 rounded-lg border p-3`,children:[(0,$.jsx)(q,{children:(0,$.jsx)(Le,{checked:e.value,onCheckedChange:t=>e.onChange(!!t)})}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(J,{children:u()}),(0,$.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:he()})]})]})}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,$.jsx)(I,{onClick:()=>n(!1),type:`button`,variant:`outline`,children:te()}),(0,$.jsx)(I,{disabled:m,type:`submit`,children:m?ie():oe()})]})]})})]})})}function St(e){return[{id:`switch`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:f()}),cell:({row:t})=>(0,$.jsx)(Ue,{checked:!!t.original.enabled,onCheckedChange:()=>e(t.original.enabled?`disable`:`enable`,t.original)}),enableSorting:!1,enableHiding:!1,meta:{label:f(),skeleton:`switch`,sticky:`left`,th:{className:F(`rounded-tl-[inherit]`)}}},{accessorKey:`status`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:k()}),cell:({row:e})=>{let t=e.original.status??`unknown`,n=`bg-slate-500/10 text-slate-600`,r=T();return t===`ok`?(n=`bg-emerald-500/10 text-emerald-600`,r=me()):t===`down`&&(n=`bg-rose-500/10 text-rose-600`,r=D()),(0,$.jsx)(Z,{className:n,children:r})},filterFn:(e,t,n)=>n.includes(String(e.getValue(t))),meta:{label:k(),skeleton:`badge`}},{accessorKey:`network`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:j()}),cell:({row:e})=>(0,$.jsx)(`div`,{className:`min-w-24 font-medium`,children:e.original.network??`-`}),enableHiding:!1,meta:{label:j(),skeleton:`short`}},{accessorKey:`type`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:O()}),filterFn:(e,t,n)=>n.includes(String(e.getValue(t))),meta:{label:O(),skeleton:`short`}},{accessorKey:`url`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:w()}),cell:({row:e})=>(0,$.jsx)(_t,{className:`min-w-80`,children:e.original.url??`-`}),meta:{label:w(),skeleton:`long`}},{accessorKey:`weight`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:A()}),cell:({row:e})=>e.original.weight??`-`,meta:{label:A(),skeleton:`id`}},{accessorKey:`last_latency_ms`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:fe()}),cell:({row:e})=>e.original.last_latency_ms?`${e.original.last_latency_ms} ms`:`-`,meta:{label:fe(),skeleton:`id`}},{accessorKey:`last_checked_at`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:S()}),cell:({row:e})=>P(e.original.last_checked_at),meta:{label:S(),skeleton:`date`}},{accessorKey:`api_key`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:`API Key`}),cell:({row:e})=>(0,$.jsx)(_t,{children:e.original.api_key??`-`}),meta:{label:`API Key`,skeleton:`long`}},{accessorKey:`created_at`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:p()}),cell:({row:e})=>P(e.original.created_at),meta:{label:p(),skeleton:`date`}},{accessorKey:`updated_at`,header:({column:e})=>(0,$.jsx)(H,{column:e,title:n()}),cell:({row:e})=>P(e.original.updated_at),meta:{label:n(),skeleton:`date`}},{id:`actions`,enableHiding:!1,meta:{label:i(),skeleton:`action`,sticky:`right`,className:F(`w-12`)},cell:({row:t})=>(0,$.jsxs)(Ae,{modal:!1,children:[(0,$.jsx)(De,{asChild:!0,children:(0,$.jsxs)(I,{className:`flex h-8 w-8 p-0 data-[state=open]:bg-muted`,variant:`ghost`,children:[(0,$.jsx)(nt,{className:`h-4 w-4`}),(0,$.jsx)(`span`,{className:`sr-only`,children:`Open menu`})]})}),(0,$.jsxs)(Oe,{align:`end`,className:`w-40`,children:[(0,$.jsxs)(L,{onClick:()=>e(`edit`,t.original),children:[ve(),(0,$.jsx)(R,{children:(0,$.jsx)(it,{size:16})})]}),(0,$.jsxs)(L,{onClick:()=>e(`health-check`,t.original),children:[ce(),(0,$.jsx)(R,{children:(0,$.jsx)(yt,{size:16})})]}),(0,$.jsx)(ke,{}),(0,$.jsxs)(L,{onClick:()=>e(`delete`,t.original),variant:`destructive`,children:[s(),(0,$.jsx)(R,{children:(0,$.jsx)(st,{size:16})})]})]})]})}]}var Ct=we(`/_authenticated/rpc/`),wt=[{label:me(),value:`ok`},{label:D(),value:`down`},{label:T(),value:`unknown`}];function Tt({data:e,isLoading:t,onAction:n,onRefresh:r}){let[i,a]=(0,Q.useState)([]),{globalFilter:o,onGlobalFilterChange:s,columnFilters:c,onColumnFiltersChange:l,pagination:u,onPaginationChange:d,ensurePageInRange:f}=gt({search:Ct.useSearch(),navigate:Ct.useNavigate(),pagination:{defaultPage:1,defaultPageSize:10},globalFilter:{enabled:!0,key:`keyword`},columnFilters:[{columnId:`type`,searchKey:`type`,type:`array`},{columnId:`status`,searchKey:`status`,type:`array`}]}),p=Ke({data:e,columns:(0,Q.useMemo)(()=>St(n),[n]),state:{sorting:i,columnFilters:c,globalFilter:o,pagination:u},onSortingChange:a,onColumnFiltersChange:l,onGlobalFilterChange:s,onPaginationChange:d,globalFilterFn:(e,t,n)=>{let r=String(n).toLowerCase();return(e.original.network??``).toLowerCase().includes(r)||(e.original.url??``).toLowerCase().includes(r)},getCoreRowModel:Xe(),getFilteredRowModel:Ge(),getPaginationRowModel:$e(),getSortedRowModel:et(),getFacetedRowModel:Je(),getFacetedUniqueValues:qe()});(0,Q.useEffect)(()=>{f(p.getPageCount())},[p,f]);let m=[...new Set(e.map(e=>e.type).filter(Boolean))].map(e=>({label:e,value:e}));return(0,$.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4`,children:[(0,$.jsx)(Qe,{filters:[{columnId:`type`,title:O(),options:m},{columnId:`status`,title:k(),options:[...wt]}],onRefresh:r,searchPlaceholder:ge(),table:p}),(0,$.jsx)(Ze,{className:`min-w-[1200px]`,emptyText:ue(),loading:t,table:p}),(0,$.jsx)(Ye,{className:`mt-auto`,table:p})]})}var Et=[`chain-1`,`chain-2`,`chain-3`,`chain-4`,`chain-5`];function Dt({active:e,children:t,onClick:n}){return(0,$.jsx)(`div`,{className:F(`w-full cursor-pointer rounded-lg px-3 py-3 text-left transition-colors hover:bg-accent hover:text-accent-foreground`,e&&`bg-muted`),onClick:n,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())},role:`button`,tabIndex:0,children:t})}function Ot({chains:e,isLoading:n,keyword:i,onKeywordChange:o,selectedPanel:s,onSelect:c,totalNodes:l,hiddenOnMobile:u}){return(0,$.jsxs)(`div`,{className:F(`flex w-full flex-col gap-2 sm:w-56 lg:w-72 2xl:w-80`,u&&`hidden sm:flex`),children:[(0,$.jsxs)(`div`,{className:`sticky top-0 z-10 -mx-4 bg-background px-4 pb-3 shadow-md sm:static sm:z-auto sm:mx-0 sm:p-0 sm:shadow-none`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`h1`,{className:`font-bold text-2xl`,children:le()}),(0,$.jsx)(Te,{size:20})]}),(0,$.jsx)(Z,{variant:`secondary`,children:m({count:String(e.length)})})]}),(0,$.jsxs)(`div`,{className:`relative block`,children:[(0,$.jsx)(Me,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground`}),(0,$.jsx)(X,{className:`pl-9`,onChange:e=>o(e.target.value),placeholder:r(),value:i})]})]}),(0,$.jsxs)(Ee,{className:`-mx-3 h-full overflow-auto p-3`,children:[(0,$.jsx)(Dt,{active:s===`overview`,onClick:()=>c(`overview`),children:(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`font-medium`,children:a()}),(0,$.jsx)(`div`,{className:`mt-1 text-muted-foreground text-xs`,children:ee({chains:String(e.length),nodes:String(l)})})]}),(0,$.jsx)(Te,{className:`mt-0.5 size-4 text-muted-foreground`})]})}),(0,$.jsx)(He,{className:`my-1`}),n?Et.map(e=>(0,$.jsxs)(`div`,{className:`px-3 py-3`,children:[(0,$.jsx)(`div`,{className:`flex items-center justify-between gap-2`,children:(0,$.jsx)(N,{className:`h-4 w-24`})}),(0,$.jsxs)(`div`,{className:`mt-2 flex items-center justify-between gap-2`,children:[(0,$.jsx)(N,{className:`h-3 w-20`}),(0,$.jsx)(N,{className:`h-5 w-12 rounded-full`})]})]},e)):e.map((n,r)=>{let i=n.network??n.display_name??String(r);return(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Dt,{active:s===n.network,onClick:()=>c(n.network??`overview`),children:(0,$.jsx)(`div`,{className:`flex items-start gap-3`,children:(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`div`,{className:`truncate font-medium`,children:n.display_name??be()}),(0,$.jsxs)(`div`,{className:`mt-1 flex items-center justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:t({count:String(n.nodeCount??0)})}),(0,$.jsx)(Z,{className:`shrink-0 text-xs`,variant:`outline`,children:n.network??`-`})]})]})})}),rv.reduce((e,t)=>(t.network&&(e[t.network]=(e[t.network]??0)+1),e),{}),[v]),b=(0,Q.useMemo)(()=>e.map(e=>({...e,nodeCount:e.network?y[e.network]??0:0})),[e,y]),ne=(0,Q.useMemo)(()=>{let e=p.trim().toLowerCase();return e?b.filter(t=>[t.display_name,t.network].filter(Boolean).some(t=>String(t).toLowerCase().includes(e))):b},[b,p]),S=(0,Q.useMemo)(()=>h===`overview`?v:v.filter(e=>e.network===h),[v,h]);(0,Q.useEffect)(()=>{h!==`overview`&&!e.some(e=>e.network===h)&&(g(`overview`),_(null))},[e,h]);async function C(){await Ce.invalidateQueries({queryKey:[`get`,`/admin/api/v1/rpc-nodes`]})}async function w(){if(d?.row.id){if(d.action===`enable`||d.action===`disable`)await r.mutateAsync({params:{path:{id:d.row.id}},body:{enabled:d.action===`enable`}}),U.success(x());else if(d.action===`health-check`){let e=await i.mutateAsync({params:{path:{id:d.row.id}}}),t=e.data?.status??`unknown`,n=e.data?.last_latency_ms;U.success(Se({status:t,latency:n?ye({latency:String(n)}):``}))}await C(),f(null)}}async function T(e,t){if(e===`edit`){u(t),o(!0);return}if(e===`enable`||e===`disable`){if(!t.id)return;await r.mutateAsync({params:{path:{id:t.id}},body:{enabled:e===`enable`}}),U.success(x()),await C();return}if(e===`delete`){c(!0);return}f({action:e,row:t})}let E=ee!==null;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Be,{fixed:!0}),(0,$.jsx)(ze,{fixed:!0,children:(0,$.jsxs)(`section`,{className:`flex h-full gap-6`,children:[(0,$.jsx)(Ot,{chains:ne,hiddenOnMobile:E,isLoading:t,keyword:p,onKeywordChange:m,onSelect:e=>{g(e),_(e)},selectedPanel:h,totalNodes:v.length}),(0,$.jsx)(`div`,{className:F(`absolute inset-0 start-full z-50 hidden w-full flex-1 flex-col border bg-background shadow-xs sm:static sm:z-auto sm:flex sm:min-w-0 sm:rounded-md sm:border-0 sm:bg-transparent sm:shadow-none`,E&&`inset-s-0 flex`),children:(0,$.jsx)(kt,{isLoading:n.isLoading,nodes:S,onAction:T,onBack:()=>_(null),onCreate:()=>c(!0),onRefresh:()=>{n.refetch()}})})]})}),(0,$.jsx)(xt,{currentRow:l,onOpenChange:o,onSuccess:()=>n.refetch(),open:a}),(0,$.jsx)(vt,{onOpenChange:c,open:s}),(0,$.jsx)(Ne,{onOpenChange:e=>{e||f(null)},open:!!d,children:(0,$.jsxs)(Ie,{children:[(0,$.jsxs)(Fe,{children:[(0,$.jsx)(Pe,{children:se()}),(0,$.jsx)(je,{children:d?ae({url:String(d.row.url??``),action:d.action}):null})]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,$.jsx)(I,{onClick:()=>f(null),variant:`outline`,children:te()}),(0,$.jsx)(I,{onClick:w,children:re()})]})]})})]})}var jt=At;export{jt as component}; \ No newline at end of file diff --git a/src/www/assets/search-provider-Cx1K1ilz.js b/src/www/assets/search-provider-Cx1K1ilz.js new file mode 100644 index 0000000..6631220 --- /dev/null +++ b/src/www/assets/search-provider-Cx1K1ilz.js @@ -0,0 +1,7 @@ +import{Al as e,As as t,Bc as n,Cl as r,Dl as i,El as a,Fc as o,Fl as s,Gc as c,Gl as l,Hc as u,Ic as d,Il as f,Jc as p,Jl as m,Kc as h,Lc as g,Ml as _,Ms as v,Nl as ee,Ns as y,Ol as b,Pc as x,Pl as S,Sl as C,Tl as te,Uc as w,Ul as ne,Wc as re,Wl as ie,Xc as ae,Xl as oe,Yc as se,Zc as ce,Zl as le,bl as ue,jl as de,js as fe,kl as pe,ks as me,nu as he,ou as ge,qc as _e,ql as ve,ru as ye,t as be,wl as xe,xl as Se}from"./messages-BovT1T-w.js";import{a as Ce,c as we,l as Te,n as Ee}from"./auth-store-BpIS8RMn.js";import{t as De}from"./useRouter-D03zSgJO.js";import{g as Oe,t as ke}from"./useStore-1-QVtiLb.js";import{n as Ae}from"./with-selector-D_dmjfol.js";import{t as je}from"./useNavigate-Dg8CkCoa.js";import{t as T}from"./dist-15n4mVGL.js";import{d as E,i as D,l as Me,r as Ne,s as O,t as k}from"./button-DJA4fnJ8.js";import{a as Pe,i as Fe,o as Ie,r as Le,s as Re,t as ze}from"./wallet--XSRr4dT.js";import{i as A,o as Be,r as j}from"./dist-DG5UMlBd.js";import{t as M}from"./dist-Cp1lAGZy.js";import{r as Ve,t as N}from"./dist-BEDXr2LC.js";import{d as He,f as Ue,u as We}from"./dropdown-menu-CUea1X0A.js";import{C as Ge,E as Ke,S as qe,T as Je,_ as Ye,a as Xe,b as Ze,c as Qe,h as $e,i as et,n as tt,o as P,r as nt,s as rt,v as it,w as at,x as ot,y as st}from"./command-BwVY_kli.js";import{n as ct,r as F}from"./dist-DlZiaY1y.js";import"./separator-CRLYw2cW.js";import{r as lt,t as ut}from"./cookies-BNZcTwGc.js";import{n as dt,r as ft}from"./font-provider-DvtNHF7l.js";import{n as I}from"./theme-provider-CRKya7Cx.js";import{t as L}from"./createLucideIcon-D28ivbfF.js";import{t as pt}from"./circle-check-Dh8WOZF0.js";import"./input-DiRPHDd8.js";var R=ge(ye(),1);function mt(e){let t=De(),n=(0,R.useRef)(void 0);return ke(t.stores.location,r=>{let i=e?.select?e.select(r):r;if(e?.structuralSharing??t.options.defaultStructuralSharing){let e=Oe(n.current,i);return n.current=e,e}return i})}var z=he(),ht=`AlertDialog`,[gt,_t]=Be(ht,[Ke]),B=Ke(),vt=e=>{let{__scopeAlertDialog:t,...n}=e,r=B(t);return(0,z.jsx)(qe,{...r,...n,modal:!0})};vt.displayName=ht;var yt=`AlertDialogTrigger`,bt=R.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=B(n);return(0,z.jsx)(at,{...i,...r,ref:t})});bt.displayName=yt;var xt=`AlertDialogPortal`,St=e=>{let{__scopeAlertDialog:t,...n}=e,r=B(t);return(0,z.jsx)(ot,{...r,...n})};St.displayName=xt;var Ct=`AlertDialogOverlay`,wt=R.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=B(n);return(0,z.jsx)(Ze,{...i,...r,ref:t})});wt.displayName=Ct;var V=`AlertDialogContent`,[Tt,Et]=gt(V),Dt=Me(`AlertDialogContent`),Ot=R.forwardRef((e,t)=>{let{__scopeAlertDialog:n,children:r,...i}=e,a=B(n),o=R.useRef(null),s=E(t,o),c=R.useRef(null);return(0,z.jsx)(Je,{contentName:V,titleName:kt,docsSlug:`alert-dialog`,children:(0,z.jsx)(Tt,{scope:n,cancelRef:c,children:(0,z.jsxs)(it,{role:`alertdialog`,...a,...i,ref:s,onOpenAutoFocus:A(i.onOpenAutoFocus,e=>{e.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,z.jsx)(Dt,{children:r}),(0,z.jsx)(Lt,{contentRef:o})]})})})});Ot.displayName=V;var kt=`AlertDialogTitle`,At=R.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=B(n);return(0,z.jsx)(Ge,{...i,...r,ref:t})});At.displayName=kt;var jt=`AlertDialogDescription`,Mt=R.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=B(n);return(0,z.jsx)(st,{...i,...r,ref:t})});Mt.displayName=jt;var Nt=`AlertDialogAction`,Pt=R.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,i=B(n);return(0,z.jsx)(Ye,{...i,...r,ref:t})});Pt.displayName=Nt;var Ft=`AlertDialogCancel`,It=R.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...r}=e,{cancelRef:i}=Et(Ft,n),a=B(n),o=E(t,i);return(0,z.jsx)(Ye,{...a,...r,ref:o})});It.displayName=Ft;var Lt=({contentRef:e})=>{let t=`\`${V}\` requires a description for the component to be accessible for screen reader users. + +You can add a description to the \`${V}\` by passing a \`${jt}\` component as a child, which also benefits sighted users by adding visible context to the dialog. + +Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${V}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. + +For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return R.useEffect(()=>{document.getElementById(e.current?.getAttribute(`aria-describedby`))||console.warn(t)},[t,e]),null},Rt=vt,zt=St,Bt=wt,Vt=Ot,Ht=It,Ut=At,Wt=Mt,Gt=Ae();function Kt(){return(0,Gt.useSyncExternalStore)(qt,()=>!0,()=>!1)}function qt(){return()=>{}}var Jt=`Avatar`,[Yt,Xt]=Be(Jt),[Zt,Qt]=Yt(Jt),$t=R.forwardRef((e,t)=>{let{__scopeAvatar:n,...r}=e,[i,a]=R.useState(`idle`);return(0,z.jsx)(Zt,{scope:n,imageLoadingStatus:i,onImageLoadingStatusChange:a,children:(0,z.jsx)(T.span,{...r,ref:t})})});$t.displayName=Jt;var en=`AvatarImage`,tn=R.forwardRef((e,t)=>{let{__scopeAvatar:n,src:r,onLoadingStatusChange:i=()=>{},...a}=e,o=Qt(en,n),s=on(r,a),c=N(e=>{i(e),o.onImageLoadingStatusChange(e)});return j(()=>{s!==`idle`&&c(s)},[s,c]),s===`loaded`?(0,z.jsx)(T.img,{...a,ref:t,src:r}):null});tn.displayName=en;var nn=`AvatarFallback`,rn=R.forwardRef((e,t)=>{let{__scopeAvatar:n,delayMs:r,...i}=e,a=Qt(nn,n),[o,s]=R.useState(r===void 0);return R.useEffect(()=>{if(r!==void 0){let e=window.setTimeout(()=>s(!0),r);return()=>window.clearTimeout(e)}},[r]),o&&a.imageLoadingStatus!==`loaded`?(0,z.jsx)(T.span,{...i,ref:t}):null});rn.displayName=nn;function an(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?`loaded`:`loading`):`error`:`idle`}function on(e,{referrerPolicy:t,crossOrigin:n}){let r=Kt(),i=R.useRef(null),a=r?(i.current||=new window.Image,i.current):null,[o,s]=R.useState(()=>an(a,e));return j(()=>{s(an(a,e))},[a,e]),j(()=>{let e=e=>()=>{s(e)};if(!a)return;let r=e(`loaded`),i=e(`error`);return a.addEventListener(`load`,r),a.addEventListener(`error`,i),t&&(a.referrerPolicy=t),typeof n==`string`&&(a.crossOrigin=n),()=>{a.removeEventListener(`load`,r),a.removeEventListener(`error`,i)}},[a,n,t]),o}var sn=$t,cn=tn,ln=rn;function un(e,[t,n]){return Math.min(n,Math.max(t,e))}function dn(e,t){return R.useReducer((e,n)=>t[e][n]??e,e)}var fn=`ScrollArea`,[pn,mn]=Be(fn),[hn,H]=pn(fn),gn=R.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[s,c]=R.useState(null),[l,u]=R.useState(null),[d,f]=R.useState(null),[p,m]=R.useState(null),[h,g]=R.useState(null),[_,v]=R.useState(0),[ee,y]=R.useState(0),[b,x]=R.useState(!1),[S,C]=R.useState(!1),te=E(t,e=>c(e)),w=Ve(i);return(0,z.jsx)(hn,{scope:n,type:r,dir:w,scrollHideDelay:a,scrollArea:s,viewport:l,onViewportChange:u,content:d,onContentChange:f,scrollbarX:p,onScrollbarXChange:m,scrollbarXEnabled:b,onScrollbarXEnabledChange:x,scrollbarY:h,onScrollbarYChange:g,scrollbarYEnabled:S,onScrollbarYEnabledChange:C,onCornerWidthChange:v,onCornerHeightChange:y,children:(0,z.jsx)(T.div,{dir:w,...o,ref:te,style:{position:`relative`,"--radix-scroll-area-corner-width":_+`px`,"--radix-scroll-area-corner-height":ee+`px`,...e.style}})})});gn.displayName=fn;var _n=`ScrollAreaViewport`,vn=R.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=H(_n,n),s=E(t,R.useRef(null),o.onViewportChange);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,z.jsx)(T.div,{"data-radix-scroll-area-viewport":``,...a,ref:s,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,z.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});vn.displayName=_n;var U=`ScrollAreaScrollbar`,yn=R.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=H(U,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return R.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,z.jsx)(bn,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,z.jsx)(xn,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,z.jsx)(Sn,{...r,ref:t,forceMount:n}):i.type===`always`?(0,z.jsx)(Cn,{...r,ref:t}):null});yn.displayName=U;var bn=R.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=H(U,e.__scopeScrollArea),[a,o]=R.useState(!1);return R.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),o(!0)},r=()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,z.jsx)(M,{present:n||a,children:(0,z.jsx)(Sn,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),xn=R.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=H(U,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=q(()=>c(`SCROLL_END`),100),[s,c]=dn(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return R.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),R.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,z.jsx)(M,{present:n||s!==`hidden`,children:(0,z.jsx)(Cn,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:A(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:A(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),Sn=R.forwardRef((e,t)=>{let n=H(U,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=R.useState(!1),s=e.orientation===`horizontal`,c=q(()=>{if(n.viewport){let e=n.viewport.offsetWidth{let{orientation:n=`vertical`,...r}=e,i=H(U,e.__scopeScrollArea),a=R.useRef(null),o=R.useRef(0),[s,c]=R.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=Pn(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return Fn(e,o.current,s,t)}return n===`horizontal`?(0,z.jsx)(wn,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=In(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,z.jsx)(Tn,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=In(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),wn=R.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=H(U,e.__scopeScrollArea),[o,s]=R.useState(),c=R.useRef(null),l=E(t,c,a.onScrollbarXChange);return R.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,z.jsx)(On,{"data-orientation":`horizontal`,...i,ref:l,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":K(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),Rn(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:G(o.paddingLeft),paddingEnd:G(o.paddingRight)}})}})}),Tn=R.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=H(U,e.__scopeScrollArea),[o,s]=R.useState(),c=R.useRef(null),l=E(t,c,a.onScrollbarYChange);return R.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,z.jsx)(On,{"data-orientation":`vertical`,...i,ref:l,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":K(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),Rn(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:G(o.paddingTop),paddingEnd:G(o.paddingBottom)}})}})}),[En,Dn]=pn(U),On=R.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:c,onDragScroll:l,onWheelScroll:u,onResize:d,...f}=e,p=H(U,n),[m,h]=R.useState(null),g=E(t,e=>h(e)),_=R.useRef(null),v=R.useRef(``),ee=p.viewport,y=r.content-r.viewport,b=N(u),x=N(c),S=q(d,10);function C(e){_.current&&l({x:e.clientX-_.current.left,y:e.clientY-_.current.top})}return R.useEffect(()=>{let e=e=>{let t=e.target;m?.contains(t)&&b(e,y)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[ee,m,y,b]),R.useEffect(x,[r,x]),J(m,S),J(p.content,S),(0,z.jsx)(En,{scope:n,scrollbar:m,hasThumb:i,onThumbChange:N(a),onThumbPointerUp:N(o),onThumbPositionChange:x,onThumbPointerDown:N(s),children:(0,z.jsx)(T.div,{...f,ref:g,style:{position:`absolute`,...f.style},onPointerDown:A(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=m.getBoundingClientRect(),v.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,p.viewport&&(p.viewport.style.scrollBehavior=`auto`),C(e))}),onPointerMove:A(e.onPointerMove,C),onPointerUp:A(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=v.current,p.viewport&&(p.viewport.style.scrollBehavior=``),_.current=null})})})}),W=`ScrollAreaThumb`,kn=R.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Dn(W,e.__scopeScrollArea);return(0,z.jsx)(M,{present:n||i.hasThumb,children:(0,z.jsx)(An,{ref:t,...r})})}),An=R.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=H(W,n),o=Dn(W,n),{onThumbPositionChange:s}=o,c=E(t,e=>o.onThumbChange(e)),l=R.useRef(void 0),u=q(()=>{l.current&&=(l.current(),void 0)},100);return R.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{u(),l.current||(l.current=zn(e,s),s())};return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,u,s]),(0,z.jsx)(T.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:A(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:A(e.onPointerUp,o.onThumbPointerUp)})});kn.displayName=W;var jn=`ScrollAreaCorner`,Mn=R.forwardRef((e,t)=>{let n=H(jn,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,z.jsx)(Nn,{...e,ref:t}):null});Mn.displayName=jn;var Nn=R.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=H(jn,n),[a,o]=R.useState(0),[s,c]=R.useState(0),l=!!(a&&s);return J(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),J(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),l?(0,z.jsx)(T.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function G(e){return e?parseInt(e,10):0}function Pn(e,t){let n=e/t;return isNaN(n)?0:n}function K(e){let t=Pn(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Fn(e,t,n,r=`ltr`){let i=K(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return Ln([c,l],d)(e)}function In(e,t,n=`ltr`){let r=K(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=un(e,n===`ltr`?[0,o]:[o*-1,0]);return Ln([0,o],[0,s])(c)}function Ln(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Rn(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function q(e,t){let n=N(e),r=R.useRef(0);return R.useEffect(()=>()=>window.clearTimeout(r.current),[]),R.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function J(e,t){let n=N(t);j(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Bn=gn,Vn=vn,Hn=Mn,Un=L(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),Wn=L(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),Gn=L(`coins`,[[`path`,{d:`M13.744 17.736a6 6 0 1 1-7.48-7.48`,key:`bq4yh3`}],[`path`,{d:`M15 6h1v4`,key:`11y1tn`}],[`path`,{d:`m6.134 14.768.866-.5 2 3.464`,key:`17snzx`}],[`circle`,{cx:`16`,cy:`8`,r:`6`,key:`14bfc9`}]]),Kn=L(`credit-card`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`2`,key:`ynyp8z`}],[`line`,{x1:`2`,x2:`22`,y1:`10`,y2:`10`,key:`1b3vmo`}]]),qn=L(`git-branch`,[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]),Jn=L(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),Yn=L(`laptop`,[[`path`,{d:`M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z`,key:`1pdavp`}],[`path`,{d:`M20.054 15.987H3.946`,key:`14rxg9`}]]),Xn=L(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Zn=L(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),Qn=L(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),$n=L(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),er=L(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),tr=L(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),nr=L(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),rr=L(`shopping-cart`,[[`circle`,{cx:`8`,cy:`21`,r:`1`,key:`jimo8o`}],[`circle`,{cx:`19`,cy:`21`,r:`1`,key:`13723u`}],[`path`,{d:`M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12`,key:`9zh506`}]]),ir=L(`waypoints`,[[`path`,{d:`m10.586 5.414-5.172 5.172`,key:`4mc350`}],[`path`,{d:`m18.586 13.414-5.172 5.172`,key:`8c96vv`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`circle`,{cx:`12`,cy:`20`,r:`2`,key:`144qzu`}],[`circle`,{cx:`12`,cy:`4`,r:`2`,key:`muu5ef`}],[`circle`,{cx:`20`,cy:`12`,r:`2`,key:`1xzzfp`}],[`circle`,{cx:`4`,cy:`12`,r:`2`,key:`1hvhnz`}]]);function ar({dir:e,className:t,...n}){return(0,z.jsxs)(`svg`,{className:D(e===`rtl`&&`rotate-y-180`,t),"data-name":`icon-dir-${e}`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...n,children:[(0,z.jsx)(`title`,{children:`Directory Icon`}),(0,z.jsx)(`path`,{d:`M23.42.51h51.92c2.21 0 4 1.79 4 4v42.18c0 2.21-1.79 4-4 4H23.42s-.04-.02-.04-.04V.55s.02-.04.04-.04z`,opacity:.15}),(0,z.jsx)(`path`,{d:`M5.56 14.88L17.78 14.88`,fill:`none`,opacity:.72,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M5.56 22.09L16.08 22.09`,fill:`none`,opacity:.48,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M5.56 18.38L14.93 18.38`,fill:`none`,opacity:.55,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsxs)(`g`,{strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`circle`,{cx:7.51,cy:7.4,opacity:.8,r:2.54}),(0,z.jsx)(`path`,{d:`M12.06 6.14L17.78 6.14`,fill:`none`,opacity:.8,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M11.85 8.79L16.91 8.79`,fill:`none`,opacity:.6})]}),(0,z.jsx)(`path`,{d:`M29.41 7.4L34.67 7.4`,fill:`none`,opacity:.62,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`3px`}),(0,z.jsx)(`rect`,{height:2.73,opacity:.44,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:26.03,x:28.76,y:11.21}),(0,z.jsx)(`rect`,{height:13.48,opacity:.3,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:44.25,x:28.76,y:17.01}),(0,z.jsx)(`rect`,{height:4.67,opacity:.21,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:44.25,x:28.76,y:33.57}),(0,z.jsx)(`rect`,{height:4.67,opacity:.3,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:36.21,x:28.76,y:41.32})]})}function or(e){return(0,z.jsxs)(`svg`,{"data-name":`icon-layout-compact`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Compact Layout`}),(0,z.jsx)(`rect`,{height:40,rx:2,ry:2,strokeLinecap:`round`,strokeMiterlimit:10,width:4,x:5.84,y:5.2}),(0,z.jsxs)(`g`,{stroke:`#fff`,strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`path`,{d:`M7.26 11.56L8.37 11.56`,fill:`none`,opacity:.66,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M7.26 14.49L8.37 14.49`,fill:`none`,opacity:.51,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M7.26 17.39L8.37 17.39`,fill:`none`,opacity:.52,strokeWidth:`2px`}),(0,z.jsx)(`circle`,{cx:7.81,cy:7.25,fill:`#fff`,opacity:.8,r:1.16})]}),(0,z.jsx)(`path`,{d:`M15.81 14.49L22.89 14.49`,fill:`none`,opacity:.75,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`3px`}),(0,z.jsx)(`rect`,{height:2.73,opacity:.5,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:22.19,x:14.93,y:18.39}),(0,z.jsx)(`rect`,{height:2.73,opacity:.9,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:59.16,x:14.93,y:5.89}),(0,z.jsx)(`rect`,{height:19.95,opacity:.4,rx:2.11,ry:2.11,strokeLinecap:`round`,strokeMiterlimit:10,width:32.68,x:14.93,y:24.22}),(0,z.jsxs)(`g`,{strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`rect`,{height:3.42,opacity:.32,rx:.33,ry:.33,width:2.01,x:59.05,y:38.15}),(0,z.jsx)(`rect`,{height:6.58,opacity:.44,rx:.33,ry:.33,width:2.01,x:54.78,y:34.99}),(0,z.jsx)(`rect`,{height:8.7,opacity:.53,rx:.33,ry:.33,width:2.01,x:63.17,y:32.86}),(0,z.jsx)(`rect`,{height:12.4,opacity:.66,rx:.33,ry:.33,width:2.01,x:67.54,y:29.17})]}),(0,z.jsxs)(`g`,{opacity:.5,children:[(0,z.jsx)(`circle`,{cx:62.16,cy:18.63,r:7.5}),(0,z.jsx)(`path`,{d:`M62.16 11.63c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.14-7-7 3.14-7 7-7m0-1c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8z`})]}),(0,z.jsxs)(`g`,{opacity:.74,children:[(0,z.jsx)(`path`,{d:`M63.04 18.13l3.38-5.67c.93.64 1.7 1.48 2.26 2.47.56.98.89 2.08.96 3.21h-6.6z`}),(0,z.jsx)(`path`,{d:`M66.57 13.19a6.977 6.977 0 012.52 4.44h-5.17l2.65-4.44m-.31-1.43l-4.1 6.87h8c0-1.39-.36-2.75-1.04-3.95a8.007 8.007 0 00-2.86-2.92z`})]})]})}function sr(e){return(0,z.jsxs)(`svg`,{"data-name":`con-layout-default`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Default Layout`}),(0,z.jsx)(`path`,{d:`M39.22 15.99h-8.16c-.79 0-1.43-.67-1.43-1.5s.64-1.5 1.43-1.5h8.16c.79 0 1.43.67 1.43 1.5s-.64 1.5-1.43 1.5z`,opacity:.75}),(0,z.jsx)(`rect`,{height:2.73,opacity:.5,rx:1.36,ry:1.36,width:16.72,x:29.63,y:18.39}),(0,z.jsx)(`path`,{d:`M75.1 6.68v1.45c0 .63-.49 1.14-1.09 1.14H30.72c-.6 0-1.09-.51-1.09-1.14V6.68c0-.62.49-1.14 1.09-1.14h43.29c.6 0 1.09.52 1.09 1.14z`,opacity:.9}),(0,z.jsx)(`rect`,{height:19.95,opacity:.4,rx:2.11,ry:2.11,width:21.8,x:29.63,y:24.22}),(0,z.jsxs)(`g`,{strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`rect`,{height:3.42,opacity:.32,rx:.33,ry:.33,width:2.01,x:61.06,y:38.15}),(0,z.jsx)(`rect`,{height:6.58,opacity:.44,rx:.33,ry:.33,width:2.01,x:56.78,y:34.99}),(0,z.jsx)(`rect`,{height:8.7,opacity:.53,rx:.33,ry:.33,width:2.01,x:65.17,y:32.86}),(0,z.jsx)(`rect`,{height:12.4,opacity:.66,rx:.33,ry:.33,width:2.01,x:69.55,y:29.17})]}),(0,z.jsxs)(`g`,{opacity:.5,children:[(0,z.jsx)(`circle`,{cx:63.17,cy:18.63,r:7.5}),(0,z.jsx)(`path`,{d:`M63.17 11.63c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.14-7-7 3.14-7 7-7m0-1c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8z`})]}),(0,z.jsxs)(`g`,{opacity:.74,children:[(0,z.jsx)(`path`,{d:`M64.05 18.13l3.38-5.67c.93.64 1.7 1.48 2.26 2.47.56.98.89 2.08.96 3.21h-6.6z`}),(0,z.jsx)(`path`,{d:`M67.57 13.19a6.977 6.977 0 012.52 4.44h-5.17l2.65-4.44m-.31-1.43l-4.1 6.87h8c0-1.39-.36-2.75-1.04-3.95a8.007 8.007 0 00-2.86-2.92z`})]}),(0,z.jsxs)(`g`,{strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`rect`,{height:40,opacity:.8,rx:2,ry:2,width:19.14,x:5.84,y:5.02}),(0,z.jsxs)(`g`,{stroke:`#fff`,children:[(0,z.jsx)(`path`,{d:`M9.02 17.39L21.25 17.39`,fill:`none`,opacity:.72,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M9.02 24.6L19.54 24.6`,fill:`none`,opacity:.48,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M9.02 20.88L18.4 20.88`,fill:`none`,opacity:.55,strokeWidth:`2px`}),(0,z.jsx)(`circle`,{cx:10.98,cy:9.91,fill:`#fff`,opacity:.8,r:2.54}),(0,z.jsx)(`path`,{d:`M15.53 8.65L21.25 8.65`,fill:`none`,opacity:.8,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M15.32 11.3L20.38 11.3`,fill:`none`,opacity:.6})]})]})]})}function cr(e){return(0,z.jsxs)(`svg`,{"data-name":`icon-layout-full`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Full Layout`}),(0,z.jsx)(`path`,{d:`M6.85 14.49L15.02 14.49`,fill:`none`,opacity:.75,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`3px`}),(0,z.jsx)(`rect`,{height:2.73,opacity:.5,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:25.6,x:5.84,y:18.39}),(0,z.jsx)(`rect`,{height:2.73,opacity:.9,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:68.26,x:5.84,y:5.89}),(0,z.jsx)(`rect`,{height:19.95,opacity:.4,rx:2.11,ry:2.11,strokeLinecap:`round`,strokeMiterlimit:10,width:37.71,x:5.84,y:24.22}),(0,z.jsxs)(`g`,{strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`rect`,{height:3.42,opacity:.32,rx:.33,ry:.33,width:2.01,x:59.05,y:38.15}),(0,z.jsx)(`rect`,{height:6.58,opacity:.44,rx:.33,ry:.33,width:2.01,x:54.78,y:34.99}),(0,z.jsx)(`rect`,{height:8.7,opacity:.53,rx:.33,ry:.33,width:2.01,x:63.17,y:32.86}),(0,z.jsx)(`rect`,{height:12.4,opacity:.66,rx:.33,ry:.33,width:2.01,x:67.54,y:29.17})]}),(0,z.jsxs)(`g`,{opacity:.5,children:[(0,z.jsx)(`circle`,{cx:62.16,cy:18.63,r:7.5}),(0,z.jsx)(`path`,{d:`M62.16 11.63c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.14-7-7 3.14-7 7-7m0-1c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8z`})]}),(0,z.jsxs)(`g`,{opacity:.74,children:[(0,z.jsx)(`path`,{d:`M63.04 18.13l3.38-5.67c.93.64 1.7 1.48 2.26 2.47.56.98.89 2.08.96 3.21h-6.6z`}),(0,z.jsx)(`path`,{d:`M66.57 13.19a6.977 6.977 0 012.52 4.44h-5.17l2.65-4.44m-.31-1.43l-4.1 6.87h8c0-1.39-.36-2.75-1.04-3.95a8.007 8.007 0 00-2.86-2.92z`})]})]})}function lr(e){return(0,z.jsxs)(`svg`,{"data-name":`icon-sidebar-floating`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Floating Sidebar`}),(0,z.jsx)(`rect`,{height:40,opacity:.8,rx:2,ry:2,strokeLinecap:`round`,strokeMiterlimit:10,width:19.74,x:5.89,y:5.15}),(0,z.jsxs)(`g`,{stroke:`#fff`,strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`path`,{d:`M9.81 18.36L22.04 18.36`,fill:`none`,opacity:.72,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M9.81 25.57L20.33 25.57`,fill:`none`,opacity:.48,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M9.81 21.85L19.18 21.85`,fill:`none`,opacity:.55,strokeWidth:`2px`}),(0,z.jsx)(`circle`,{cx:11.76,cy:10.88,fill:`#fff`,opacity:.8,r:2.54}),(0,z.jsx)(`path`,{d:`M16.31 9.62L22.04 9.62`,fill:`none`,opacity:.8,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M16.1 12.27L21.16 12.27`,fill:`none`,opacity:.6})]}),(0,z.jsx)(`path`,{d:`M30.59 9.62L35.85 9.62`,fill:`none`,opacity:.62,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`3px`}),(0,z.jsx)(`rect`,{height:2.73,opacity:.44,rx:.64,ry:.64,strokeLinecap:`round`,strokeMiterlimit:10,width:26.03,x:29.94,y:13.42}),(0,z.jsx)(`rect`,{height:25.87,opacity:.3,rx:2,ry:2,strokeLinecap:`round`,strokeMiterlimit:10,width:43.11,x:29.94,y:19.28})]})}function ur(e){return(0,z.jsxs)(`svg`,{"data-name":`icon-sidebar-inset`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Inset Sidebar`}),(0,z.jsx)(`rect`,{height:40,opacity:.2,rx:2,ry:2,strokeLinecap:`round`,strokeMiterlimit:10,width:50.22,x:23.39,y:5.57}),(0,z.jsx)(`path`,{d:`M5.08 17.05L17.31 17.05`,fill:`none`,opacity:.72,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M5.08 24.25L15.6 24.25`,fill:`none`,opacity:.48,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M5.08 20.54L14.46 20.54`,fill:`none`,opacity:.55,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsxs)(`g`,{strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`circle`,{cx:7.04,cy:9.57,opacity:.8,r:2.54}),(0,z.jsx)(`path`,{d:`M11.59 8.3L17.31 8.3`,fill:`none`,opacity:.8,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M11.38 10.95L16.44 10.95`,fill:`none`,opacity:.6})]})]})}function dr(e){return(0,z.jsxs)(`svg`,{"data-name":`icon-sidebar-sidebar`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Sidebar`}),(0,z.jsx)(`path`,{d:`M23.42.51h51.99c2.21 0 4 1.79 4 4v42.18c0 2.21-1.79 4-4 4H23.42s-.04-.02-.04-.04V.55s.02-.04.04-.04z`,opacity:.2,strokeLinecap:`round`,strokeMiterlimit:10}),(0,z.jsx)(`path`,{d:`M5.56 14.88L17.78 14.88`,fill:`none`,opacity:.72,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M5.56 22.09L16.08 22.09`,fill:`none`,opacity:.48,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M5.56 18.38L14.93 18.38`,fill:`none`,opacity:.55,strokeLinecap:`round`,strokeMiterlimit:10,strokeWidth:`2px`}),(0,z.jsxs)(`g`,{strokeLinecap:`round`,strokeMiterlimit:10,children:[(0,z.jsx)(`circle`,{cx:7.51,cy:7.4,opacity:.8,r:2.54}),(0,z.jsx)(`path`,{d:`M12.06 6.14L17.78 6.14`,fill:`none`,opacity:.8,strokeWidth:`2px`}),(0,z.jsx)(`path`,{d:`M11.85 8.79L16.91 8.79`,fill:`none`,opacity:.6})]})]})}function fr(e){return(0,z.jsxs)(`svg`,{"aria-label":`Dark theme icon`,"data-name":`icon-theme-dark`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Dark Theme`}),(0,z.jsxs)(`g`,{fill:`#1d2b3f`,children:[(0,z.jsx)(`rect`,{height:50.14,rx:3.5,ry:3.5,width:78.83,x:.53,y:.5}),(0,z.jsx)(`path`,{d:`M75.86 1c1.65 0 3 1.35 3 3v43.14c0 1.65-1.35 3-3 3H4.03c-1.65 0-3-1.35-3-3V4c0-1.65 1.35-3 3-3h71.83m0-1H4.03c-2.21 0-4 1.79-4 4v43.14c0 2.21 1.79 4 4 4h71.83c2.21 0 4-1.79 4-4V4c0-2.21-1.79-4-4-4z`})]}),(0,z.jsx)(`path`,{d:`M22.88 0h52.97c2.21 0 4 1.79 4 4v43.14c0 2.21-1.79 4-4 4H22.88V0z`,fill:`#0d1628`}),(0,z.jsx)(`circle`,{cx:6.7,cy:7.04,fill:`#426187`,r:3.54}),(0,z.jsx)(`path`,{d:`M18.12 6.39h-5.87c-.6 0-1.09-.45-1.09-1s.49-1 1.09-1h5.87c.6 0 1.09.45 1.09 1s-.49 1-1.09 1zM16.55 9.77h-4.24c-.55 0-1-.45-1-1s.45-1 1-1h4.24c.55 0 1 .45 1 1s-.45 1-1 1zM18.32 17.37H4.59c-.69 0-1.25-.47-1.25-1.05s.56-1.05 1.25-1.05h13.73c.69 0 1.25.47 1.25 1.05s-.56 1.05-1.25 1.05zM15.34 21.26h-11c-.55 0-1-.41-1-.91s.45-.91 1-.91h11c.55 0 1 .41 1 .91s-.45.91-1 .91zM16.46 25.57H4.43c-.6 0-1.09-.44-1.09-.98s.49-.98 1.09-.98h12.03c.6 0 1.09.44 1.09.98s-.49.98-1.09.98z`,fill:`#426187`}),(0,z.jsxs)(`g`,{fill:`#2a62bc`,children:[(0,z.jsx)(`rect`,{height:3.42,opacity:.32,rx:.33,ry:.33,width:2.75,x:33.36,y:19.73}),(0,z.jsx)(`rect`,{height:6.58,opacity:.44,rx:.33,ry:.33,width:2.75,x:29.64,y:16.57}),(0,z.jsx)(`rect`,{height:8.7,opacity:.53,rx:.33,ry:.33,width:2.75,x:37.16,y:14.44}),(0,z.jsx)(`rect`,{height:12.4,opacity:.53,rx:.33,ry:.33,width:2.75,x:41.19,y:10.75})]}),(0,z.jsx)(`circle`,{cx:62.74,cy:16.32,fill:`#2f5491`,opacity:.5,r:8}),(0,z.jsx)(`path`,{d:`M62.74 16.32l4.1-6.87c1.19.71 2.18 1.72 2.86 2.92s1.04 2.57 1.04 3.95h-8z`,fill:`#2f5491`,opacity:.74}),(0,z.jsx)(`rect`,{fill:`#17273f`,height:18.62,rx:1.69,ry:1.69,width:41.62,x:29.64,y:27.75})]})}function pr(e){return(0,z.jsxs)(`svg`,{"aria-label":`Light theme icon`,"data-name":`icon-theme-light`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...e,children:[(0,z.jsx)(`title`,{children:`Light Theme`}),(0,z.jsxs)(`g`,{fill:`#d9d9d9`,children:[(0,z.jsx)(`rect`,{height:50.14,rx:3.5,ry:3.5,width:78.83,x:.53,y:.5}),(0,z.jsx)(`path`,{d:`M75.86 1c1.65 0 3 1.35 3 3v43.14c0 1.65-1.35 3-3 3H4.03c-1.65 0-3-1.35-3-3V4c0-1.65 1.35-3 3-3h71.83m0-1H4.03c-2.21 0-4 1.79-4 4v43.14c0 2.21 1.79 4 4 4h71.83c2.21 0 4-1.79 4-4V4c0-2.21-1.79-4-4-4z`})]}),(0,z.jsx)(`path`,{d:`M22.88 0h52.97c2.21 0 4 1.79 4 4v43.14c0 2.21-1.79 4-4 4H22.88V0z`,fill:`#ecedef`}),(0,z.jsx)(`circle`,{cx:6.7,cy:7.04,fill:`#fff`,r:3.54}),(0,z.jsx)(`path`,{d:`M18.12 6.39h-5.87c-.6 0-1.09-.45-1.09-1s.49-1 1.09-1h5.87c.6 0 1.09.45 1.09 1s-.49 1-1.09 1zM16.55 9.77h-4.24c-.55 0-1-.45-1-1s.45-1 1-1h4.24c.55 0 1 .45 1 1s-.45 1-1 1zM18.32 17.37H4.59c-.69 0-1.25-.47-1.25-1.05s.56-1.05 1.25-1.05h13.73c.69 0 1.25.47 1.25 1.05s-.56 1.05-1.25 1.05zM15.34 21.26h-11c-.55 0-1-.41-1-.91s.45-.91 1-.91h11c.55 0 1 .41 1 .91s-.45.91-1 .91zM16.46 25.57H4.43c-.6 0-1.09-.44-1.09-.98s.49-.98 1.09-.98h12.03c.6 0 1.09.44 1.09.98s-.49.98-1.09.98z`,fill:`#fff`}),(0,z.jsxs)(`g`,{fill:`#c0c4c4`,children:[(0,z.jsx)(`rect`,{height:3.42,opacity:.32,rx:.33,ry:.33,width:2.75,x:33.36,y:19.73}),(0,z.jsx)(`rect`,{height:6.58,opacity:.44,rx:.33,ry:.33,width:2.75,x:29.64,y:16.57}),(0,z.jsx)(`rect`,{height:8.7,opacity:.53,rx:.33,ry:.33,width:2.75,x:37.16,y:14.44}),(0,z.jsx)(`rect`,{height:12.4,opacity:.53,rx:.33,ry:.33,width:2.75,x:41.19,y:10.75})]}),(0,z.jsx)(`circle`,{cx:62.74,cy:16.32,fill:`#fff`,r:8}),(0,z.jsxs)(`g`,{fill:`#d9d9d9`,children:[(0,z.jsx)(`path`,{d:`M63.62 15.82L67 10.15c.93.64 1.7 1.48 2.26 2.47.56.98.89 2.08.96 3.21h-6.6z`}),(0,z.jsx)(`path`,{d:`M67.14 10.88a6.977 6.977 0 012.52 4.44h-5.17l2.65-4.44m-.31-1.43l-4.1 6.87h8c0-1.39-.36-2.75-1.04-3.95s-1.67-2.21-2.86-2.92z`})]}),(0,z.jsx)(`rect`,{fill:`#fff`,height:18.62,rx:1.69,ry:1.69,width:41.62,x:29.64,y:27.75})]})}function mr({className:e,...t}){return(0,z.jsxs)(`svg`,{"aria-label":`System theme icon`,className:D(`overflow-hidden rounded-[6px]`,`fill-primary stroke-primary group-data-[state=unchecked]:fill-muted-foreground group-data-[state=unchecked]:stroke-muted-foreground`,e),"data-name":`icon-theme-system`,viewBox:`0 0 79.86 51.14`,xmlns:`http://www.w3.org/2000/svg`,...t,children:[(0,z.jsx)(`title`,{children:`System Theme`}),(0,z.jsx)(`path`,{d:`M0 0.03H22.88V51.17H0z`,opacity:.2}),(0,z.jsx)(`circle`,{cx:6.7,cy:7.04,fill:`#fff`,opacity:.8,r:3.54,stroke:`#fff`,strokeLinecap:`round`,strokeMiterlimit:10}),(0,z.jsx)(`path`,{d:`M18.12 6.39h-5.87c-.6 0-1.09-.45-1.09-1s.49-1 1.09-1h5.87c.6 0 1.09.45 1.09 1s-.49 1-1.09 1zM16.55 9.77h-4.24c-.55 0-1-.45-1-1s.45-1 1-1h4.24c.55 0 1 .45 1 1s-.45 1-1 1z`,fill:`#fff`,opacity:.75,stroke:`none`}),(0,z.jsx)(`path`,{d:`M18.32 17.37H4.59c-.69 0-1.25-.47-1.25-1.05s.56-1.05 1.25-1.05h13.73c.69 0 1.25.47 1.25 1.05s-.56 1.05-1.25 1.05z`,fill:`#fff`,opacity:.72,stroke:`none`}),(0,z.jsx)(`path`,{d:`M15.34 21.26h-11c-.55 0-1-.41-1-.91s.45-.91 1-.91h11c.55 0 1 .41 1 .91s-.45.91-1 .91z`,fill:`#fff`,opacity:.55,stroke:`none`}),(0,z.jsx)(`path`,{d:`M16.46 25.57H4.43c-.6 0-1.09-.44-1.09-.98s.49-.98 1.09-.98h12.03c.6 0 1.09.44 1.09.98s-.49.98-1.09.98z`,fill:`#fff`,opacity:.67,stroke:`none`}),(0,z.jsx)(`rect`,{height:3.42,opacity:.31,rx:.33,ry:.33,stroke:`none`,width:2.75,x:33.36,y:19.73}),(0,z.jsx)(`rect`,{height:6.58,opacity:.4,rx:.33,ry:.33,stroke:`none`,width:2.75,x:29.64,y:16.57}),(0,z.jsx)(`rect`,{height:8.7,opacity:.26,rx:.33,ry:.33,stroke:`none`,width:2.75,x:37.16,y:14.44}),(0,z.jsx)(`rect`,{height:12.4,opacity:.37,rx:.33,ry:.33,stroke:`none`,width:2.75,x:41.19,y:10.75}),(0,z.jsxs)(`g`,{children:[(0,z.jsx)(`circle`,{cx:62.74,cy:16.32,opacity:.25,r:8}),(0,z.jsx)(`path`,{d:`M62.74 16.32l4.1-6.87c1.19.71 2.18 1.72 2.86 2.92s1.04 2.57 1.04 3.95h-8z`,opacity:.45})]}),(0,z.jsx)(`rect`,{height:18.62,opacity:.3,rx:1.69,ry:1.69,stroke:`none`,strokeLinecap:`round`,strokeMiterlimit:10,width:41.62,x:29.64,y:27.75})]})}function hr({...e}){return(0,z.jsx)(qe,{"data-slot":`sheet`,...e})}function gr({...e}){return(0,z.jsx)(at,{"data-slot":`sheet-trigger`,...e})}function _r({...e}){return(0,z.jsx)(ot,{"data-slot":`sheet-portal`,...e})}function vr({className:e,...t}){return(0,z.jsx)(Ze,{className:D(`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in`,e),"data-slot":`sheet-overlay`,...t})}function yr({className:e,children:t,side:n=`right`,showCloseButton:r=!0,...i}){return(0,z.jsxs)(_r,{children:[(0,z.jsx)(vr,{}),(0,z.jsxs)(it,{className:D(`fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:duration-300 data-[state=open]:duration-500`,n===`right`&&`data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,n===`left`&&`data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,n===`top`&&`data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b`,n===`bottom`&&`data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t`,e),"data-slot":`sheet-content`,...i,children:[t,r&&(0,z.jsxs)(Ye,{className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary`,children:[(0,z.jsx)($e,{className:`size-4`}),(0,z.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function br({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`flex flex-col gap-1.5 p-4`,e),"data-slot":`sheet-header`,...t})}function xr({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`mt-auto flex flex-col gap-2 p-4`,e),"data-slot":`sheet-footer`,...t})}function Sr({className:e,...t}){return(0,z.jsx)(Ge,{className:D(`font-semibold text-foreground`,e),"data-slot":`sheet-title`,...t})}function Cr({className:e,...t}){return(0,z.jsx)(st,{className:D(`text-muted-foreground text-sm`,e),"data-slot":`sheet-description`,...t})}var wr=`layout_collapsible`,Tr=`layout_variant`,Er=3600*24*7,Dr=`sidebar`,Or=`icon`,kr=(0,R.createContext)(null);function Ar({children:e}){let[t,n]=(0,R.useState)(()=>ut(wr)||Or),[r,i]=(0,R.useState)(()=>ut(Tr)||Dr),a=e=>{n(e),lt(wr,e,Er)},o=e=>{i(e),lt(Tr,e,Er)};return(0,z.jsx)(kr,{value:{resetLayout:()=>{a(Or),o(Dr)},defaultCollapsible:Or,collapsible:t,setCollapsible:a,defaultVariant:Dr,variant:r,setVariant:o},children:e})}function Y(){let e=(0,R.useContext)(kr);if(!e)throw Error(`useLayout must be used within a LayoutProvider`);return e}function jr({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`animate-pulse rounded-md bg-accent`,e),"data-slot":`skeleton`,...t})}var X=768;function Mr(){let[e,t]=R.useState(void 0);return R.useEffect(()=>{let e=window.matchMedia(`(max-width: ${X-1}px)`),n=()=>{t(window.innerWidthe.removeEventListener(`change`,n)},[]),!!e}var Nr=`16rem`,Pr=`18rem`,Fr=`3rem`,Ir=`b`,Lr=R.createContext(null);function Z(){let e=R.useContext(Lr);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function Rr({defaultOpen:e=!0,open:t,onOpenChange:n,className:r,style:i,children:a,...o}){let s=Mr(),[c,l]=R.useState(!1),[u,d]=R.useState(e),f=t??u,p=R.useCallback(e=>{let t=typeof e==`function`?e(f):e;n?n(t):d(t),document.cookie=`${Te}=${t}; path=/; max-age=${we}`},[n,f]),m=R.useCallback(()=>s?l(e=>!e):p(e=>!e),[s,p]);R.useEffect(()=>{let e=e=>{e.key===Ir&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),m())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[m]);let h=f?`expanded`:`collapsed`,g=R.useMemo(()=>({state:h,open:f,setOpen:p,isMobile:s,openMobile:c,setOpenMobile:l,toggleSidebar:m}),[h,f,p,s,c,m]);return(0,z.jsx)(Lr.Provider,{value:g,children:(0,z.jsx)(Ie,{delayDuration:0,children:(0,z.jsx)(`div`,{className:D(`group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar`,r),"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":Nr,"--sidebar-width-icon":Fr,...i},...o,children:a})})})}function zr({side:e=`left`,variant:t=`sidebar`,collapsible:n=`offcanvas`,className:r,children:i,...a}){let{isMobile:o,state:s,openMobile:c,setOpenMobile:l}=Z();return n===`none`?(0,z.jsx)(`div`,{className:D(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),"data-slot":`sidebar`,...a,children:i}):o?(0,z.jsx)(hr,{onOpenChange:l,open:c,...a,children:(0,z.jsxs)(yr,{className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden`,"data-mobile":`true`,"data-sidebar":`sidebar`,"data-slot":`sidebar`,side:e,style:{"--sidebar-width":Pr},children:[(0,z.jsxs)(br,{className:`sr-only`,children:[(0,z.jsx)(Sr,{children:`Sidebar`}),(0,z.jsx)(Cr,{children:`Displays the mobile sidebar.`})]}),(0,z.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:i})]})}):(0,z.jsxs)(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-collapsible":s===`collapsed`?n:``,"data-side":e,"data-slot":`sidebar`,"data-state":s,"data-variant":t,children:[(0,z.jsx)(`div`,{className:D(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,t===`floating`||t===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`),"data-slot":`sidebar-gap`}),(0,z.jsx)(`div`,{className:D(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,t===`floating`||t===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,r),"data-slot":`sidebar-container`,...a,children:(0,z.jsx)(`div`,{className:`flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm`,"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,children:i})})]})}function Br({className:e,onClick:t,...n}){let{toggleSidebar:r}=Z();return(0,z.jsxs)(k,{className:D(`size-7`,e),"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,onClick:e=>{t?.(e),r()},size:`icon`,variant:`ghost`,...n,children:[(0,z.jsx)(Qn,{}),(0,z.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function Vr({className:e,...t}){let{toggleSidebar:n}=Z();return(0,z.jsx)(`button`,{"aria-label":`Toggle Sidebar`,className:D(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`group-data-[collapsible=offcanvas]:translate-x-0 hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),"data-sidebar":`rail`,"data-slot":`sidebar-rail`,onClick:n,tabIndex:-1,title:`Toggle Sidebar`,...t})}function Hr({className:e,...t}){return(0,z.jsx)(`main`,{className:D(`relative flex w-full flex-1 flex-col bg-background`,`md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm`,e),"data-slot":`sidebar-inset`,...t})}function Ur({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`flex flex-col gap-2 p-2`,e),"data-sidebar":`header`,"data-slot":`sidebar-header`,...t})}function Wr({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`flex flex-col gap-2 p-2`,e),"data-sidebar":`footer`,"data-slot":`sidebar-footer`,...t})}function Gr({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),"data-sidebar":`content`,"data-slot":`sidebar-content`,...t})}function Kr({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`relative flex w-full min-w-0 flex-col p-2`,e),"data-sidebar":`group`,"data-slot":`sidebar-group`,...t})}function qr({className:e,asChild:t=!1,...n}){return(0,z.jsx)(t?O:`div`,{className:D(`flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,`group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0`,e),"data-sidebar":`group-label`,"data-slot":`sidebar-group-label`,...n})}function Jr({className:e,...t}){return(0,z.jsx)(`ul`,{className:D(`flex w-full min-w-0 flex-col gap-1`,e),"data-sidebar":`menu`,"data-slot":`sidebar-menu`,...t})}function Yr({className:e,...t}){return(0,z.jsx)(`li`,{className:D(`group/menu-item relative`,e),"data-sidebar":`menu-item`,"data-slot":`sidebar-menu-item`,...t})}var Xr=Ne(`peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function Zr({asChild:e=!1,isActive:t=!1,variant:n=`default`,size:r=`default`,tooltip:i,className:a,...o}){let s=e?O:`button`,{isMobile:c,state:l}=Z(),u=(0,z.jsx)(s,{className:D(Xr({variant:n,size:r}),a),"data-active":t,"data-sidebar":`menu-button`,"data-size":r,"data-slot":`sidebar-menu-button`,...o});return i?(typeof i==`string`&&(i={children:i}),(0,z.jsxs)(Fe,{children:[(0,z.jsx)(Re,{asChild:!0,children:u}),(0,z.jsx)(Pe,{align:`center`,hidden:l!==`collapsed`||c,side:`right`,...i})]})):u}function Qr({className:e,...t}){return(0,z.jsx)(`ul`,{className:D(`mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l px-2.5 py-0.5`,`group-data-[collapsible=icon]:hidden`,e),"data-sidebar":`menu-sub`,"data-slot":`sidebar-menu-sub`,...t})}function $r({className:e,...t}){return(0,z.jsx)(`li`,{className:D(`group/menu-sub-item relative`,e),"data-sidebar":`menu-sub-item`,"data-slot":`sidebar-menu-sub-item`,...t})}function ei({asChild:e=!1,size:t=`md`,isActive:n=!1,className:r,...i}){return(0,z.jsx)(e?O:`a`,{className:D(`flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground`,`data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground`,t===`sm`&&`text-xs`,t===`md`&&`text-sm`,`group-data-[collapsible=icon]:hidden`,r),"data-active":n,"data-sidebar":`menu-sub-button`,"data-size":t,"data-slot":`sidebar-menu-sub-button`,...i})}function ti(){return(0,z.jsxs)(hr,{children:[(0,z.jsx)(gr,{asChild:!0,children:(0,z.jsx)(k,{"aria-describedby":`config-drawer-description`,"aria-label":`Open theme settings`,className:`rounded-full`,size:`icon`,variant:`ghost`,children:(0,z.jsx)(tr,{"aria-hidden":`true`})})}),(0,z.jsx)(ni,{})]})}function ni(){let{setOpen:e}=Z(),{resetDir:t}=Le(),{resetFont:n}=dt(),{resetTheme:r}=I(),{resetLayout:i}=Y();return(0,z.jsxs)(yr,{className:`flex flex-col`,children:[(0,z.jsxs)(br,{className:`pb-0 text-start`,children:[(0,z.jsx)(Sr,{children:S()}),(0,z.jsx)(Cr,{id:`config-drawer-description`,children:ee()})]}),(0,z.jsxs)(`div`,{className:`space-y-6 overflow-y-auto px-4`,children:[(0,z.jsx)(ii,{}),(0,z.jsx)(ri,{}),(0,z.jsx)(ai,{}),(0,z.jsx)(oi,{}),(0,z.jsx)(si,{})]}),(0,z.jsx)(xr,{className:`gap-2`,children:(0,z.jsx)(k,{"aria-label":`Reset all settings to default values`,onClick:()=>{e(!0),t(),n(),r(),i()},variant:`destructive`,children:_()})})]})}function Q({title:e,showReset:t=!1,onReset:n,className:r}){return(0,z.jsxs)(`div`,{className:D(`mb-2 flex items-center gap-2 font-semibold text-muted-foreground text-sm`,r),children:[e,t&&n&&(0,z.jsx)(k,{className:`size-4 rounded-full`,onClick:n,size:`icon`,variant:`secondary`,children:(0,z.jsx)($n,{className:`size-3`})})]})}function $({item:e,isTheme:t=!1}){return(0,z.jsxs)(ct,{"aria-describedby":`${e.value}-description`,"aria-label":`Select ${e.label.toLowerCase()}`,className:D(`group outline-none`,`transition duration-200 ease-in`),value:e.value,children:[(0,z.jsxs)(`div`,{"aria-hidden":`false`,"aria-label":`${e.label} option preview`,className:D(`relative rounded-[6px] ring-[1px] ring-border`,`group-data-[state=checked]:shadow-2xl group-data-[state=checked]:ring-primary`,`group-focus-visible:ring-2`),role:`img`,children:[(0,z.jsx)(pt,{"aria-hidden":`true`,className:D(`size-6 fill-primary stroke-white`,`group-data-[state=unchecked]:hidden`,`absolute top-0 right-0 translate-x-1/2 -translate-y-1/2`)}),(0,z.jsx)(e.icon,{"aria-hidden":`true`,className:D(!t&&`fill-primary stroke-primary group-data-[state=unchecked]:fill-muted-foreground group-data-[state=unchecked]:stroke-muted-foreground`)})]}),(0,z.jsx)(`div`,{"aria-live":`polite`,className:`mt-1 text-xs`,id:`${e.value}-description`,children:e.label})]})}function ri(){let{defaultTheme:e,theme:t,setTheme:n}=I();return(0,z.jsxs)(`div`,{children:[(0,z.jsx)(Q,{onReset:()=>n(e),showReset:t!==e,title:de()}),(0,z.jsx)(F,{"aria-describedby":`theme-description`,"aria-label":`Select theme preference`,className:`grid w-full max-w-md grid-cols-3 gap-4`,onValueChange:n,value:t,children:[{value:`system`,label:ne(),icon:mr},{value:`light`,label:l(),icon:pr},{value:`dark`,label:ie(),icon:fr}].map(e=>(0,z.jsx)($,{isTheme:!0,item:e},e.value))}),(0,z.jsx)(`div`,{className:`sr-only`,id:`theme-description`,children:`Choose between system preference, light mode, or dark mode`})]})}function ii(){let{font:e,setFont:t,resetFont:n}=dt();return(0,z.jsxs)(`div`,{children:[(0,z.jsx)(Q,{onReset:n,showReset:e!==ft[0],title:be()}),(0,z.jsx)(`select`,{className:`w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,onChange:e=>t(e.target.value),value:e,children:ft.map(e=>(0,z.jsx)(`option`,{value:e,children:e},e))})]})}function ai(){let{defaultVariant:t,variant:n,setVariant:r}=Y();return(0,z.jsxs)(`div`,{className:`max-md:hidden`,children:[(0,z.jsx)(Q,{onReset:()=>r(t),showReset:t!==n,title:e()}),(0,z.jsx)(F,{"aria-describedby":`sidebar-description`,"aria-label":`Select sidebar style`,className:`grid w-full max-w-md grid-cols-3 gap-4`,onValueChange:r,value:n,children:[{value:`inset`,label:i(),icon:ur},{value:`floating`,label:a(),icon:lr},{value:`sidebar`,label:te(),icon:dr}].map(e=>(0,z.jsx)($,{item:e},e.value))}),(0,z.jsx)(`div`,{className:`sr-only`,id:`sidebar-description`,children:`Choose between inset, floating, or standard sidebar layout`})]})}function oi(){let{open:e,setOpen:t}=Z(),{defaultCollapsible:n,collapsible:i,setCollapsible:a}=Y(),o=e?`default`:i;return(0,z.jsxs)(`div`,{className:`max-md:hidden`,children:[(0,z.jsx)(Q,{onReset:()=>{t(!0),a(n)},showReset:o!==`default`,title:pe()}),(0,z.jsx)(F,{"aria-describedby":`layout-description`,"aria-label":`Select layout style`,className:`grid w-full max-w-md grid-cols-3 gap-4`,onValueChange:e=>{if(e===`default`){t(!0);return}t(!1),a(e)},value:o,children:[{value:`default`,label:xe(),icon:sr},{value:`icon`,label:r(),icon:or},{value:`offcanvas`,label:C(),icon:cr}].map(e=>(0,z.jsx)($,{item:e},e.value))}),(0,z.jsx)(`div`,{className:`sr-only`,id:`layout-description`,children:`Choose between default expanded, compact icon-only, or full layout mode`})]})}function si(){let{defaultDir:e,dir:t,setDir:n}=Le();return(0,z.jsxs)(`div`,{children:[(0,z.jsx)(Q,{onReset:()=>n(e),showReset:e!==t,title:b()}),(0,z.jsx)(F,{"aria-describedby":`direction-description`,"aria-label":`Select site direction`,className:`grid w-full max-w-md grid-cols-3 gap-4`,onValueChange:n,value:t,children:[{value:`ltr`,label:Se(),icon:e=>(0,z.jsx)(ar,{dir:`ltr`,...e})},{value:`rtl`,label:ue(),icon:e=>(0,z.jsx)(ar,{dir:`rtl`,...e})}].map(e=>(0,z.jsx)($,{item:e},e.value))}),(0,z.jsx)(`div`,{className:`sr-only`,id:`direction-description`,children:`Choose between left-to-right or right-to-left site direction`})]})}function ci({...e}){return(0,z.jsx)(Rt,{"data-slot":`alert-dialog`,...e})}function li({...e}){return(0,z.jsx)(zt,{"data-slot":`alert-dialog-portal`,...e})}function ui({className:e,...t}){return(0,z.jsx)(Bt,{className:D(`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in`,e),"data-slot":`alert-dialog-overlay`,...t})}function di({className:e,size:t=`default`,...n}){return(0,z.jsxs)(li,{children:[(0,z.jsx)(ui,{}),(0,z.jsx)(Vt,{className:D(`group/alert-dialog-content data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=open]:animate-in data-[size=default]:sm:max-w-lg`,e),"data-size":t,"data-slot":`alert-dialog-content`,...n})]})}function fi({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),"data-slot":`alert-dialog-header`,...t})}function pi({className:e,...t}){return(0,z.jsx)(`div`,{className:D(`flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),"data-slot":`alert-dialog-footer`,...t})}function mi({className:e,...t}){return(0,z.jsx)(Ut,{className:D(`font-semibold text-lg sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),"data-slot":`alert-dialog-title`,...t})}function hi({className:e,...t}){return(0,z.jsx)(Wt,{className:D(`text-muted-foreground text-sm`,e),"data-slot":`alert-dialog-description`,...t})}function gi({className:e,variant:t=`outline`,size:n=`default`,...r}){return(0,z.jsx)(k,{asChild:!0,size:n,variant:t,children:(0,z.jsx)(Ht,{className:D(e),"data-slot":`alert-dialog-cancel`,...r})})}function _i(e){let{title:t,desc:n,children:r,className:i,confirmText:a,cancelBtnText:o,destructive:s,isLoading:c,disabled:l=!1,form:u,handleConfirm:d,...f}=e;return(0,z.jsx)(ci,{...f,children:(0,z.jsxs)(di,{className:D(i&&i),children:[(0,z.jsxs)(fi,{className:`text-start`,children:[(0,z.jsx)(mi,{children:t}),(0,z.jsx)(hi,{asChild:!0,children:(0,z.jsx)(`div`,{children:n})})]}),r,(0,z.jsxs)(pi,{children:[(0,z.jsx)(gi,{disabled:c,children:o??le()}),(0,z.jsx)(k,{disabled:l||c,form:u,onClick:d,type:u?`submit`:`button`,variant:s?`destructive`:`default`,children:a??oe()})]})]})})}function vi({open:e,onOpenChange:t}){let n=je(),r=mt(),i=Ce.useMutation(`post`,`/admin/api/v1/auth/logout`);return(0,z.jsx)(_i,{className:`sm:max-w-sm`,confirmText:i.isPending?`退出中...`:m(),desc:ve(),destructive:!0,handleConfirm:async()=>{await i.mutateAsync({}),Ee();let e=r.href;n({to:`/sign-in`,search:{redirect:e},replace:!0})},onOpenChange:t,open:e,title:m()})}function yi({className:e,size:t=`default`,...n}){return(0,z.jsx)(sn,{className:D(`group/avatar relative flex size-8 shrink-0 select-none overflow-hidden rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6`,e),"data-size":t,"data-slot":`avatar`,...n})}function bi({className:e,...t}){return(0,z.jsx)(cn,{className:D(`aspect-square size-full`,e),"data-slot":`avatar-image`,...t})}function xi({className:e,...t}){return(0,z.jsx)(ln,{className:D(`flex size-full items-center justify-center rounded-full bg-muted text-muted-foreground text-sm group-data-[size=sm]/avatar:text-xs`,e),"data-slot":`avatar-fallback`,...t})}function Si(e=null){let[t,n]=(0,R.useState)(e);return[t,e=>n(t=>t===e?null:e)]}function Ci(e){if(!e)return`-`;let t=new Date(e.replace(` `,`T`));return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(`zh-CN`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hour12:!1}).format(t)}function wi(e){return e?e.includes(` `)?e.slice(11,16):e.slice(5):``}function Ti(e,t=2){return Number(e??0).toLocaleString(`en-US`,{maximumFractionDigits:t})}function Ei(e,t=2){return`$${Number(e??0).toLocaleString(`en-US`,{maximumFractionDigits:t})}`}function Di(){return{user:{name:`GMPay`,email:`admin@gmpay.local`,avatar:`/avatars/shadcn.jpg`},teams:[{name:`GMPay`,logo:We,plan:y()}],navGroups:[{title:ce(),items:[{title:ae(),url:`/dashboard`,icon:Xn},{title:v(),url:`/payment-assets`,icon:Gn}]},{title:fe(),items:[{title:se(),url:`/orders`,icon:rr}]},{title:t(),items:[{title:me(),url:`/addresses`,icon:ze}]},{title:_e(),items:[{title:h(),url:`/chains`,icon:qn},{title:c(),url:`/rpc`,icon:ir}]},{title:re(),items:[{title:p(),url:`/payments`,icon:Kn},{title:w(),icon:tr,items:[{title:g(),url:`/settings`},{title:d(),url:`/settings/telegram`},{title:o(),url:`/settings/rate`},{title:x(),url:`/settings/epay`}]},{title:u(),icon:nr,items:[{title:n(),url:`/account/password`}]}]}]}}function Oi({className:e,children:t,...n}){return(0,z.jsxs)(Bn,{className:D(`relative`,e),"data-slot":`scroll-area`,...n,children:[(0,z.jsx)(Vn,{className:`size-full rounded-[inherit] outline-none transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] focus-visible:ring-ring/50`,"data-slot":`scroll-area-viewport`,children:t}),(0,z.jsx)(ki,{}),(0,z.jsx)(Hn,{})]})}function ki({className:e,orientation:t=`vertical`,...n}){return(0,z.jsx)(yn,{className:D(`flex touch-none select-none p-px transition-colors`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),"data-slot":`scroll-area-scrollbar`,orientation:t,...n,children:(0,z.jsx)(kn,{className:`relative flex-1 rounded-full bg-border`,"data-slot":`scroll-area-thumb`})})}function Ai(){let e=je(),{setTheme:t}=I(),{open:n,setOpen:r}=Ni(),i=Di(),a=R.useCallback(e=>{r(!1),e()},[r]);return(0,z.jsxs)(tt,{modal:!0,onOpenChange:r,open:n,children:[(0,z.jsx)(Xe,{placeholder:f()}),(0,z.jsx)(rt,{children:(0,z.jsxs)(Oi,{className:`h-72 pe-1`,type:`hover`,children:[(0,z.jsx)(nt,{children:s()}),i.navGroups.map(t=>(0,z.jsx)(et,{heading:t.title,children:t.items.map(t=>t.url?(0,z.jsxs)(P,{onSelect:()=>{a(()=>e({to:t.url}))},value:t.title,children:[(0,z.jsx)(`div`,{className:`flex size-4 items-center justify-center`,children:(0,z.jsx)(Un,{className:`size-2 text-muted-foreground/80`})}),t.title]},t.url):t.items?.map(n=>(0,z.jsxs)(P,{onSelect:()=>{a(()=>e({to:n.url}))},value:`${t.title}-${n.url}`,children:[(0,z.jsx)(`div`,{className:`flex size-4 items-center justify-center`,children:(0,z.jsx)(Un,{className:`size-2 text-muted-foreground/80`})}),t.title,` `,(0,z.jsx)(Wn,{}),` `,n.title]},`${t.title}-${n.url}`)))},t.title)),(0,z.jsx)(Qe,{}),(0,z.jsxs)(et,{heading:de(),children:[(0,z.jsxs)(P,{onSelect:()=>a(()=>t(`light`)),children:[(0,z.jsx)(He,{}),` `,(0,z.jsx)(`span`,{children:l()})]}),(0,z.jsxs)(P,{onSelect:()=>a(()=>t(`dark`)),children:[(0,z.jsx)(Ue,{className:`scale-90`}),(0,z.jsx)(`span`,{children:ie()})]}),(0,z.jsxs)(P,{onSelect:()=>a(()=>t(`system`)),children:[(0,z.jsx)(Yn,{}),(0,z.jsx)(`span`,{children:ne()})]})]})]})})]})}var ji=(0,R.createContext)(null);function Mi({children:e}){let[t,n]=(0,R.useState)(!1);return(0,R.useEffect)(()=>{let e=e=>{e.key===`k`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),n(e=>!e))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[]),(0,z.jsxs)(ji,{value:{open:t,setOpen:n},children:[e,(0,z.jsx)(Ai,{})]})}var Ni=()=>{let e=(0,R.useContext)(ji);if(!e)throw Error(`useSearch has to be used within SearchProvider`);return e};export{Rr as A,er as B,Hr as C,Qr as D,Yr as E,Ar as F,Wn as G,Jn as H,Y as I,un as K,hr as L,Br as M,Z as N,ei as O,jr as P,ir as R,Ur as S,Zr as T,qn as U,Zn as V,Gn as W,zr as _,Ei as a,Kr as b,wi as c,xi as d,bi as f,ni as g,ti as h,Di as i,Vr as j,$r as k,Si as l,_i as m,Ni as n,Ci as o,vi as p,Oi as r,Ti as s,Mi as t,yi as u,Gr as v,Jr as w,qr as x,Wr as y,nr as z}; \ No newline at end of file diff --git a/src/www/assets/select-DcStuzoT.js b/src/www/assets/select-DcStuzoT.js new file mode 100644 index 0000000..ef9592a --- /dev/null +++ b/src/www/assets/select-DcStuzoT.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./link-CA4H4hTz.js";import{r as i,t as a}from"./dist-15n4mVGL.js";import{K as o}from"./search-provider-Cx1K1ilz.js";import{c as s,d as c,i as l,t as u}from"./button-DJA4fnJ8.js";import{c as d}from"./wallet--XSRr4dT.js";import{i as f,n as p,o as m,r as h}from"./dist-DG5UMlBd.js";import{i as g}from"./dist-D21KDGR3.js";import{i as _,r as v,t as y}from"./dist-BEDXr2LC.js";import{a as b,i as x,n as S,o as C,r as w,s as T,t as E}from"./dist-BKfJQFVD.js";import{_ as D,a as O,g as k,h as A,l as j,m as ee,r as M,t as N}from"./dropdown-menu-CUea1X0A.js";import{t as P}from"./dist-CGm-FpWw.js";import{t as F}from"./createLucideIcon-D28ivbfF.js";import{t as te}from"./check-gDgbfVXu.js";import{t as I}from"./chevron-down-CdmvZsfI.js";import{n as L,t as R}from"./theme-switch-BjXQNOij.js";import{n as z,r as B,t as ne}from"./header-DbmR8lIc.js";var V=t(n(),1),re=t(i(),1),H=e(),ie=[` `,`Enter`,`ArrowUp`,`ArrowDown`],ae=[` `,`Enter`],U=`Select`,[W,G,oe]=g(U),[K,se]=m(U,[oe,b]),q=b(),[ce,J]=K(U),[le,ue]=K(U),de=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:m,form:h}=e,g=q(t),[y,b]=V.useState(null),[S,C]=V.useState(null),[w,T]=V.useState(!1),E=v(l),[D,O]=p({prop:r,defaultProp:i??!1,onChange:a,caller:U}),[k,A]=p({prop:o,defaultProp:s,onChange:c,caller:U}),j=V.useRef(null),ee=y?h||!!y.closest(`form`):!0,[M,N]=V.useState(new Set),P=Array.from(M).map(e=>e.props.value).join(`;`);return(0,H.jsx)(x,{...g,children:(0,H.jsxs)(ce,{required:m,scope:t,trigger:y,onTriggerChange:b,valueNode:S,onValueNodeChange:C,valueNodeHasChildren:w,onValueNodeHasChildrenChange:T,contentId:_(),value:k,onValueChange:A,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:j,disabled:f,children:[(0,H.jsx)(W.Provider,{scope:t,children:(0,H.jsx)(le,{scope:e.__scopeSelect,onNativeOptionAdd:V.useCallback(e=>{N(t=>new Set(t).add(e))},[]),onNativeOptionRemove:V.useCallback(e=>{N(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),ee?(0,H.jsxs)(tt,{"aria-hidden":!0,required:m,tabIndex:-1,name:u,autoComplete:d,value:k,onChange:e=>A(e.target.value),disabled:f,form:h,children:[k===void 0?(0,H.jsx)(`option`,{value:``}):null,Array.from(M)]},P):null]})})};de.displayName=U;var fe=`SelectTrigger`,pe=V.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,o=q(n),s=J(fe,n),l=s.disabled||r,u=c(t,s.onTriggerChange),d=G(n),p=V.useRef(`touch`),[m,h,g]=rt(e=>{let t=d().filter(e=>!e.disabled),n=it(t,e,t.find(e=>e.value===s.value));n!==void 0&&s.onValueChange(n.value)}),_=e=>{l||(s.onOpenChange(!0),g()),e&&(s.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,H.jsx)(E,{asChild:!0,...o,children:(0,H.jsx)(a.button,{type:`button`,role:`combobox`,"aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":`none`,dir:s.dir,"data-state":s.open?`open`:`closed`,disabled:l,"data-disabled":l?``:void 0,"data-placeholder":nt(s.value)?``:void 0,...i,ref:u,onClick:f(i.onClick,e=>{e.currentTarget.focus(),p.current!==`mouse`&&_(e)}),onPointerDown:f(i.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(_(e),e.preventDefault())}),onKeyDown:f(i.onKeyDown,e=>{let t=m.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&h(e.key),!(t&&e.key===` `)&&ie.includes(e.key)&&(_(),e.preventDefault())})})})});pe.displayName=fe;var me=`SelectValue`,he=V.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:o,placeholder:s=``,...l}=e,u=J(me,n),{onValueNodeHasChildrenChange:d}=u,f=o!==void 0,p=c(t,u.onValueNodeChange);return h(()=>{d(f)},[d,f]),(0,H.jsx)(a.span,{...l,ref:p,style:{pointerEvents:`none`},children:nt(u.value)?(0,H.jsx)(H.Fragment,{children:s}):o})});he.displayName=me;var ge=`SelectIcon`,_e=V.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,H.jsx)(a.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});_e.displayName=ge;var ve=`SelectPortal`,ye=e=>(0,H.jsx)(C,{asChild:!0,...e});ye.displayName=ve;var Y=`SelectContent`,be=V.forwardRef((e,t)=>{let n=J(Y,e.__scopeSelect),[r,i]=V.useState();if(h(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?re.createPortal((0,H.jsx)(xe,{scope:e.__scopeSelect,children:(0,H.jsx)(W.Slot,{scope:e.__scopeSelect,children:(0,H.jsx)(`div`,{children:e.children})})}),t):null}return(0,H.jsx)(we,{...e,ref:t})});be.displayName=Y;var X=10,[xe,Z]=K(Y),Se=`SelectContentImpl`,Ce=s(`SelectContent.RemoveScroll`),we=V.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:l,align:u,alignOffset:d,arrowPadding:p,collisionBoundary:m,collisionPadding:h,sticky:g,hideWhenDetached:_,avoidCollisions:v,...y}=e,b=J(Y,n),[x,S]=V.useState(null),[C,w]=V.useState(null),E=c(t,e=>S(e)),[O,j]=V.useState(null),[M,N]=V.useState(null),P=G(n),[F,te]=V.useState(!1),I=V.useRef(!1);V.useEffect(()=>{if(x)return ee(x)},[x]),k();let L=V.useCallback(e=>{let[t,...n]=P().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&C&&(C.scrollTop=0),n===r&&C&&(C.scrollTop=C.scrollHeight),n?.focus(),document.activeElement!==i))return},[P,C]),R=V.useCallback(()=>L([O,x]),[L,O,x]);V.useEffect(()=>{F&&R()},[F,R]);let{onOpenChange:z,triggerPointerDownPosRef:B}=b;V.useEffect(()=>{if(x){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(B.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(B.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():x.contains(n.target)||z(!1),document.removeEventListener(`pointermove`,t),B.current=null};return B.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[x,z,B]),V.useEffect(()=>{let e=()=>z(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[z]);let[ne,re]=rt(e=>{let t=P().filter(e=>!e.disabled),n=it(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ie=V.useCallback((e,t,n)=>{let r=!I.current&&!n;(b.value!==void 0&&b.value===t||r)&&(j(e),r&&(I.current=!0))},[b.value]),ae=V.useCallback(()=>x?.focus(),[x]),U=V.useCallback((e,t,n)=>{let r=!I.current&&!n;(b.value!==void 0&&b.value===t||r)&&N(e)},[b.value]),W=r===`popper`?Oe:Ee,oe=W===Oe?{side:s,sideOffset:l,align:u,alignOffset:d,arrowPadding:p,collisionBoundary:m,collisionPadding:h,sticky:g,hideWhenDetached:_,avoidCollisions:v}:{};return(0,H.jsx)(xe,{scope:n,content:x,viewport:C,onViewportChange:w,itemRefCallback:ie,selectedItem:O,onItemLeave:ae,itemTextRefCallback:U,focusSelectedItem:R,selectedItemText:M,position:r,isPositioned:F,searchRef:ne,children:(0,H.jsx)(A,{as:Ce,allowPinchZoom:!0,children:(0,H.jsx)(D,{asChild:!0,trapped:b.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:f(i,e=>{b.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,H.jsx)(T,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>b.onOpenChange(!1),children:(0,H.jsx)(W,{role:`listbox`,id:b.contentId,"data-state":b.open?`open`:`closed`,dir:b.dir,onContextMenu:e=>e.preventDefault(),...y,...oe,onPlaced:()=>te(!0),ref:E,style:{display:`flex`,flexDirection:`column`,outline:`none`,...y.style},onKeyDown:f(y.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&re(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=P().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>L(t)),e.preventDefault()}})})})})})})});we.displayName=Se;var Te=`SelectItemAlignedPosition`,Ee=V.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,s=J(Y,n),l=Z(Y,n),[u,d]=V.useState(null),[f,p]=V.useState(null),m=c(t,e=>p(e)),g=G(n),_=V.useRef(!1),v=V.useRef(!0),{viewport:y,selectedItem:b,selectedItemText:x,focusSelectedItem:S}=l,C=V.useCallback(()=>{if(s.trigger&&s.valueNode&&u&&f&&y&&b&&x){let e=s.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),n=s.valueNode.getBoundingClientRect(),i=x.getBoundingClientRect();if(s.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,s=e.left-a,c=e.width+s,l=Math.max(c,t.width),d=window.innerWidth-X,f=o(a,[X,Math.max(X,d-l)]);u.style.minWidth=c+`px`,u.style.left=f+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,s=window.innerWidth-e.right-a,c=e.width+s,l=Math.max(c,t.width),d=window.innerWidth-X,f=o(a,[X,Math.max(X,d-l)]);u.style.minWidth=c+`px`,u.style.right=f+`px`}let a=g(),c=window.innerHeight-X*2,l=y.scrollHeight,d=window.getComputedStyle(f),p=parseInt(d.borderTopWidth,10),m=parseInt(d.paddingTop,10),h=parseInt(d.borderBottomWidth,10),v=parseInt(d.paddingBottom,10),S=p+m+l+v+h,C=Math.min(b.offsetHeight*5,S),w=window.getComputedStyle(y),T=parseInt(w.paddingTop,10),E=parseInt(w.paddingBottom,10),D=e.top+e.height/2-X,O=c-D,k=b.offsetHeight/2,A=b.offsetTop+k,j=p+m+A,ee=S-j;if(j<=D){let e=a.length>0&&b===a[a.length-1].ref.current;u.style.bottom=`0px`;let t=f.clientHeight-y.offsetTop-y.offsetHeight,n=j+Math.max(O,k+(e?E:0)+t+h);u.style.height=n+`px`}else{let e=a.length>0&&b===a[0].ref.current;u.style.top=`0px`;let t=Math.max(D,p+y.offsetTop+(e?T:0)+k)+ee;u.style.height=t+`px`,y.scrollTop=j-D+y.offsetTop}u.style.margin=`${X}px 0`,u.style.minHeight=C+`px`,u.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>_.current=!0)}},[g,s.trigger,s.valueNode,u,f,y,b,x,s.dir,r]);h(()=>C(),[C]);let[w,T]=V.useState();return h(()=>{f&&T(window.getComputedStyle(f).zIndex)},[f]),(0,H.jsx)(ke,{scope:n,contentWrapper:u,shouldExpandOnScrollRef:_,onScrollButtonChange:V.useCallback(e=>{e&&v.current===!0&&(C(),S?.(),v.current=!1)},[C,S]),children:(0,H.jsx)(`div`,{ref:d,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:w},children:(0,H.jsx)(a.div,{...i,ref:m,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Ee.displayName=Te;var De=`SelectPopperPosition`,Oe=V.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=X,...a}=e,o=q(n);return(0,H.jsx)(w,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});Oe.displayName=De;var[ke,Ae]=K(Y,{}),je=`SelectViewport`,Me=V.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,o=Z(je,n),s=Ae(je,n),l=c(t,o.onViewportChange),u=V.useRef(0);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,H.jsx)(W.Slot,{scope:n,children:(0,H.jsx)(a.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:l,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:f(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=s;if(r?.current&&n){let e=Math.abs(u.current-t.scrollTop);if(e>0){let r=window.innerHeight-X*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}u.current=t.scrollTop})})})]})});Me.displayName=je;var Ne=`SelectGroup`,[Pe,Fe]=K(Ne),Ie=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=_();return(0,H.jsx)(Pe,{scope:n,id:i,children:(0,H.jsx)(a.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});Ie.displayName=Ne;var Le=`SelectLabel`,Re=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Fe(Le,n);return(0,H.jsx)(a.div,{id:i.id,...r,ref:t})});Re.displayName=Le;var Q=`SelectItem`,[ze,Be]=K(Q),Ve=V.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:o,...s}=e,l=J(Q,n),u=Z(Q,n),d=l.value===r,[p,m]=V.useState(o??``),[h,g]=V.useState(!1),v=c(t,e=>u.itemRefCallback?.(e,r,i)),y=_(),b=V.useRef(`touch`),x=()=>{i||(l.onValueChange(r),l.onOpenChange(!1))};if(r===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,H.jsx)(ze,{scope:n,value:r,disabled:i,textId:y,isSelected:d,onItemTextChange:V.useCallback(e=>{m(t=>t||(e?.textContent??``).trim())},[]),children:(0,H.jsx)(W.ItemSlot,{scope:n,value:r,disabled:i,textValue:p,children:(0,H.jsx)(a.div,{role:`option`,"aria-labelledby":y,"data-highlighted":h?``:void 0,"aria-selected":d&&h,"data-state":d?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...s,ref:v,onFocus:f(s.onFocus,()=>g(!0)),onBlur:f(s.onBlur,()=>g(!1)),onClick:f(s.onClick,()=>{b.current!==`mouse`&&x()}),onPointerUp:f(s.onPointerUp,()=>{b.current===`mouse`&&x()}),onPointerDown:f(s.onPointerDown,e=>{b.current=e.pointerType}),onPointerMove:f(s.onPointerMove,e=>{b.current=e.pointerType,i?u.onItemLeave?.():b.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:f(s.onPointerLeave,e=>{e.currentTarget===document.activeElement&&u.onItemLeave?.()}),onKeyDown:f(s.onKeyDown,e=>{u.searchRef?.current!==``&&e.key===` `||(ae.includes(e.key)&&x(),e.key===` `&&e.preventDefault())})})})})});Ve.displayName=Q;var $=`SelectItemText`,He=V.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...o}=e,s=J($,n),l=Z($,n),u=Be($,n),d=ue($,n),[f,p]=V.useState(null),m=c(t,e=>p(e),u.onItemTextChange,e=>l.itemTextRefCallback?.(e,u.value,u.disabled)),g=f?.textContent,_=V.useMemo(()=>(0,H.jsx)(`option`,{value:u.value,disabled:u.disabled,children:g},u.value),[u.disabled,u.value,g]),{onNativeOptionAdd:v,onNativeOptionRemove:y}=d;return h(()=>(v(_),()=>y(_)),[v,y,_]),(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(a.span,{id:u.textId,...o,ref:m}),u.isSelected&&s.valueNode&&!s.valueNodeHasChildren?re.createPortal(o.children,s.valueNode):null]})});He.displayName=$;var Ue=`SelectItemIndicator`,We=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return Be(Ue,n).isSelected?(0,H.jsx)(a.span,{"aria-hidden":!0,...r,ref:t}):null});We.displayName=Ue;var Ge=`SelectScrollUpButton`,Ke=V.forwardRef((e,t)=>{let n=Z(Ge,e.__scopeSelect),r=Ae(Ge,e.__scopeSelect),[i,a]=V.useState(!1),o=c(t,r.onScrollButtonChange);return h(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,H.jsx)(Ye,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Ke.displayName=Ge;var qe=`SelectScrollDownButton`,Je=V.forwardRef((e,t)=>{let n=Z(qe,e.__scopeSelect),r=Ae(qe,e.__scopeSelect),[i,a]=V.useState(!1),o=c(t,r.onScrollButtonChange);return h(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,H.jsx)(Ye,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Je.displayName=qe;var Ye=V.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,o=Z(`SelectScrollButton`,n),s=V.useRef(null),c=G(n),l=V.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return V.useEffect(()=>()=>l(),[l]),h(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,H.jsx)(a.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:f(i.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(r,50))}),onPointerMove:f(i.onPointerMove,()=>{o.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(r,50))}),onPointerLeave:f(i.onPointerLeave,()=>{l()})})}),Xe=`SelectSeparator`,Ze=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,H.jsx)(a.div,{"aria-hidden":!0,...r,ref:t})});Ze.displayName=Xe;var Qe=`SelectArrow`,$e=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=q(n),a=J(Qe,n),o=Z(Qe,n);return a.open&&o.position===`popper`?(0,H.jsx)(S,{...i,...r,ref:t}):null});$e.displayName=Qe;var et=`SelectBubbleInput`,tt=V.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=V.useRef(null),o=c(r,i),s=P(t);return V.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(s!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,H.jsx)(a.select,{...n,style:{...d,...n.style},ref:o,defaultValue:t})});tt.displayName=et;function nt(e){return e===``||e===void 0}function rt(e){let t=y(e),n=V.useRef(``),r=V.useRef(0),i=V.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=V.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return V.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function it(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=at(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function at(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var ot=de,st=pe,ct=he,lt=_e,ut=ye,dt=be,ft=Me,pt=Ve,mt=He,ht=We,gt=Ke,_t=Je,vt=F(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),yt=F(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]);function bt({className:e,links:t,...n}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`lg:hidden`,children:(0,H.jsxs)(N,{modal:!1,children:[(0,H.jsx)(j,{asChild:!0,children:(0,H.jsx)(u,{className:`md:size-7`,size:`icon`,variant:`outline`,children:(0,H.jsx)(yt,{})})}),(0,H.jsx)(M,{align:`start`,side:`bottom`,children:t.map(({title:e,href:t,isActive:n,disabled:i})=>(0,H.jsx)(O,{asChild:!0,children:(0,H.jsx)(r,{className:n?``:`text-muted-foreground`,disabled:i,to:t,children:e})},`${e}-${t}`))})]})}),(0,H.jsx)(`nav`,{className:l(`hidden items-center space-x-4 lg:flex lg:space-x-4 xl:space-x-6`,e),...n,children:t.map(({title:e,href:t,isActive:n,disabled:i})=>(0,H.jsx)(r,{className:`font-medium text-sm transition-colors hover:text-primary ${n?``:`text-muted-foreground`}`,disabled:i,to:t,children:e},`${e}-${t}`))})]})}function xt({fixed:e,topNav:t}){return(0,H.jsxs)(ne,{fixed:e,children:[t?(0,H.jsx)(bt,{links:t}):(0,H.jsx)(z,{}),(0,H.jsxs)(`div`,{className:`ms-auto flex items-center space-x-4`,children:[t&&(0,H.jsx)(z,{}),(0,H.jsx)(L,{}),(0,H.jsx)(R,{}),(0,H.jsx)(B,{})]})]})}function St({fixed:e,className:t,fluid:n,...r}){return(0,H.jsx)(`main`,{className:l(`px-4 py-6`,e&&`flex grow flex-col overflow-hidden`,!n&&`@7xl/content:mx-auto @7xl/content:w-full @7xl/content:max-w-7xl`,t),"data-layout":e?`fixed`:`auto`,...r})}function Ct({...e}){return(0,H.jsx)(ot,{"data-slot":`select`,...e})}function wt({...e}){return(0,H.jsx)(ct,{"data-slot":`select-value`,...e})}function Tt({className:e,size:t=`default`,children:n,...r}){return(0,H.jsxs)(st,{className:l(`flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs outline-none transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[size=default]:h-9 data-[size=sm]:h-8 data-[placeholder]:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:hover:bg-input/50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0`,e),"data-size":t,"data-slot":`select-trigger`,...r,children:[n,(0,H.jsx)(lt,{asChild:!0,children:(0,H.jsx)(I,{className:`size-4 opacity-50`})})]})}function Et({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,H.jsx)(ut,{children:(0,H.jsxs)(dt,{align:r,className:l(`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in`,n===`popper`&&`data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1`,e),"data-slot":`select-content`,position:n,...i,children:[(0,H.jsx)(Ot,{}),(0,H.jsx)(ft,{className:l(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,H.jsx)(kt,{})]})})}function Dt({className:e,children:t,...n}){return(0,H.jsxs)(pt,{className:l(`relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),"data-slot":`select-item`,...n,children:[(0,H.jsx)(`span`,{className:`absolute right-2 flex size-3.5 items-center justify-center`,"data-slot":`select-item-indicator`,children:(0,H.jsx)(ht,{children:(0,H.jsx)(te,{className:`size-4`})})}),(0,H.jsx)(mt,{children:t})]})}function Ot({className:e,...t}){return(0,H.jsx)(gt,{className:l(`flex cursor-default items-center justify-center py-1`,e),"data-slot":`select-scroll-up-button`,...t,children:(0,H.jsx)(vt,{className:`size-4`})})}function kt({className:e,...t}){return(0,H.jsx)(_t,{className:l(`flex cursor-default items-center justify-center py-1`,e),"data-slot":`select-scroll-down-button`,...t,children:(0,H.jsx)(I,{className:`size-4`})})}export{wt as a,Tt as i,Et as n,St as o,Dt as r,xt as s,Ct as t}; \ No newline at end of file diff --git a/src/www/assets/separator-CRLYw2cW.js b/src/www/assets/separator-CRLYw2cW.js new file mode 100644 index 0000000..430f3af --- /dev/null +++ b/src/www/assets/separator-CRLYw2cW.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{i}from"./button-DJA4fnJ8.js";var a=t(n(),1),o=e(),s=`Separator`,c=`horizontal`,l=[`horizontal`,`vertical`],u=a.forwardRef((e,t)=>{let{decorative:n,orientation:i=c,...a}=e,s=d(i)?i:c,l=n?{role:`none`}:{"aria-orientation":s===`vertical`?s:void 0,role:`separator`};return(0,o.jsx)(r.div,{"data-orientation":s,...l,...a,ref:t})});u.displayName=s;function d(e){return l.includes(e)}var f=u;function p({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,o.jsx)(f,{className:i(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px`,e),"data-slot":`separator`,decorative:n,orientation:t,...r})}export{p as t}; \ No newline at end of file diff --git a/src/www/assets/settings-6L98-bwl.js b/src/www/assets/settings-6L98-bwl.js new file mode 100644 index 0000000..c81347d --- /dev/null +++ b/src/www/assets/settings-6L98-bwl.js @@ -0,0 +1 @@ +import{At as e,Ct as t,Dt as n,Et as r,Lc as i,Mt as a,Nt as o,Ot as s,St as c,Tt as l,bt as u,jt as d,kt as f,nu as p,ou as m,ru as h,wt as g,xt as _,yt as v}from"./messages-BovT1T-w.js";import{t as y}from"./button-DJA4fnJ8.js";import{n as b}from"./dist-DvAgZMq72.js";import{c as x,o as S,s as C}from"./zod-Cymc5bS-.js";import{a as w,c as T,i as E,l as D,n as O,o as k,s as A,t as j}from"./form-DdHiBYMe.js";import{t as M}from"./input-DiRPHDd8.js";import{t as N}from"./page-header-BBJ9dE3-.js";import{t as P}from"./textarea-D_TrrVtD.js";import{a as F,i as I,n as L,r as R,t as z}from"./lib-CTYwzR3w.js";var B=m(h(),1),V=p(),H=C({checkoutName:x().min(1,a()),logoUrl:x().url(d()).or(S(``)),siteTitle:x().min(1,e()),successCopy:x().min(1,f()),supportUrl:x().url(s()).or(S(``))});function U(){let e=I(`brand`),i=F(),a=D({resolver:T(H),defaultValues:{checkoutName:``,logoUrl:``,siteTitle:``,successCopy:``,supportUrl:``}});(0,B.useEffect)(()=>{let t=e.data?.data;t&&a.reset({checkoutName:z(t,`brand.checkout_name`),logoUrl:z(t,`brand.logo_url`),siteTitle:z(t,`brand.site_title`),successCopy:z(t,`brand.success_copy`),supportUrl:z(t,`brand.support_url`)})},[e.data,a]);let o=R();async function s(){for(let e of[`brand.checkout_name`,`brand.logo_url`,`brand.site_title`,`brand.success_copy`,`brand.support_url`])await o.mutateAsync({params:{path:{key:e}}});b.success(n()),await e.refetch()}async function d(t){await L(i.mutateAsync,[{group:`brand`,key:`brand.checkout_name`,type:`string`,value:t.checkoutName},{group:`brand`,key:`brand.logo_url`,type:`string`,value:t.logoUrl},{group:`brand`,key:`brand.site_title`,type:`string`,value:t.siteTitle},{group:`brand`,key:`brand.success_copy`,type:`string`,value:t.successCopy},{group:`brand`,key:`brand.support_url`,type:`string`,value:t.supportUrl}],r()),await e.refetch()}return(0,V.jsx)(j,{...a,children:(0,V.jsxs)(`form`,{className:`space-y-6`,onSubmit:a.handleSubmit(d),children:[(0,V.jsx)(E,{control:a.control,name:`checkoutName`,render:({field:e})=>(0,V.jsxs)(w,{children:[(0,V.jsx)(k,{children:l()}),(0,V.jsx)(O,{children:(0,V.jsx)(M,{...e})}),(0,V.jsx)(A,{})]})}),(0,V.jsx)(E,{control:a.control,name:`logoUrl`,render:({field:e})=>(0,V.jsxs)(w,{children:[(0,V.jsx)(k,{children:g()}),(0,V.jsx)(O,{children:(0,V.jsx)(M,{...e})}),(0,V.jsx)(A,{})]})}),(0,V.jsx)(E,{control:a.control,name:`siteTitle`,render:({field:e})=>(0,V.jsxs)(w,{children:[(0,V.jsx)(k,{children:t()}),(0,V.jsx)(O,{children:(0,V.jsx)(M,{...e})}),(0,V.jsx)(A,{})]})}),(0,V.jsx)(E,{control:a.control,name:`successCopy`,render:({field:e})=>(0,V.jsxs)(w,{children:[(0,V.jsx)(k,{children:c()}),(0,V.jsx)(O,{children:(0,V.jsx)(P,{...e})}),(0,V.jsx)(A,{})]})}),(0,V.jsx)(E,{control:a.control,name:`supportUrl`,render:({field:e})=>(0,V.jsxs)(w,{children:[(0,V.jsx)(k,{children:_()}),(0,V.jsx)(O,{children:(0,V.jsx)(M,{...e})}),(0,V.jsx)(A,{})]})}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(y,{disabled:i.isPending||e.isLoading,type:`submit`,children:u()}),(0,V.jsx)(y,{disabled:o.isPending,onClick:s,type:`button`,variant:`outline`,children:v()})]})]})})}function W(){return(0,V.jsx)(N,{description:o(),title:i(),variant:`section`,children:(0,V.jsx)(U,{})})}var G=W;export{G as component}; \ No newline at end of file diff --git a/src/www/assets/show-submitted-data-l0RlCwTX.js b/src/www/assets/show-submitted-data-l0RlCwTX.js new file mode 100644 index 0000000..2b0c8ed --- /dev/null +++ b/src/www/assets/show-submitted-data-l0RlCwTX.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{n as t}from"./dist-DvAgZMq72.js";var n=e();function r(e,r=`You submitted the following values:`){t.message(r,{description:(0,n.jsx)(`pre`,{className:`mt-2 w-full overflow-x-auto rounded-md bg-slate-950 p-4`,children:(0,n.jsx)(`code`,{className:`text-white`,children:JSON.stringify(e,null,2)})})})}export{r as t}; \ No newline at end of file diff --git a/src/www/assets/sidebar-nav-DgezD6QJ.js b/src/www/assets/sidebar-nav-DgezD6QJ.js new file mode 100644 index 0000000..6f29092 --- /dev/null +++ b/src/www/assets/sidebar-nav-DgezD6QJ.js @@ -0,0 +1 @@ +import{nu as e,p as t}from"./messages-BovT1T-w.js";import{t as n}from"./link-CA4H4hTz.js";import{t as r}from"./useNavigate-Dg8CkCoa.js";import{t as i}from"./useRouterState-DV1cSG1v.js";import{r as a}from"./search-provider-Cx1K1ilz.js";import{i as o,n as s}from"./button-DJA4fnJ8.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-DcStuzoT.js";var p=e();function m({className:e,items:m,...h}){let g=r(),{location:_}=i(),v=m.find(e=>_.pathname===e.href)?.href??m[0]?.href??``;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`p-1 md:hidden`,children:(0,p.jsxs)(f,{onValueChange:e=>{g({to:e})},value:v,children:[(0,p.jsx)(l,{className:`h-12 sm:w-48`,children:(0,p.jsx)(c,{placeholder:t()})}),(0,p.jsx)(u,{children:m.map(e=>(0,p.jsx)(d,{value:e.href,children:(0,p.jsxs)(`div`,{className:`flex gap-x-4 px-2 py-1`,children:[(0,p.jsx)(`span`,{className:`scale-125`,children:e.icon}),(0,p.jsx)(`span`,{className:`text-md`,children:e.title})]})},e.href))})]})}),(0,p.jsx)(a,{className:`hidden w-full min-w-40 bg-background px-1 py-2 md:block`,type:`always`,children:(0,p.jsx)(`nav`,{className:o(`flex space-x-2 py-1 lg:flex-col lg:space-x-0 lg:space-y-1`,e),...h,children:m.map(e=>(0,p.jsxs)(n,{activeOptions:{exact:!0},activeProps:{className:o(s({variant:`ghost`}),`justify-start bg-muted hover:bg-accent`)},className:o(s({variant:`ghost`}),`justify-start hover:bg-accent hover:underline`),to:e.href,children:[(0,p.jsx)(`span`,{className:`me-2`,children:e.icon}),e.title]},e.href))})})]})}export{m as t}; \ No newline at end of file diff --git a/src/www/assets/sign-in-DGULZo5h.js b/src/www/assets/sign-in-DGULZo5h.js new file mode 100644 index 0000000..62109d3 --- /dev/null +++ b/src/www/assets/sign-in-DGULZo5h.js @@ -0,0 +1 @@ +import{$s as e,Qs as t,Zs as n,ac as r,ec as i,ic as a,nc as o,nu as s,ou as c,rc as l,ru as u,tc as d}from"./messages-BovT1T-w.js";import{a as f,r as p}from"./auth-store-BpIS8RMn.js";import{t as m}from"./useSearch-B5ZWp8fU.js";import{t as h}from"./useNavigate-Dg8CkCoa.js";import{i as g,t as _}from"./button-DJA4fnJ8.js";import{t as v}from"./createLucideIcon-D28ivbfF.js";import{t as y}from"./loader-circle-fg8-aSyl.js";import{n as b}from"./dist-DvAgZMq72.js";import{c as x,s as S}from"./zod-Cymc5bS-.js";import{n as C}from"./auth-animation-context-zwGs7ZAM.js";import{a as w,c as T,i as E,l as D,n as O,o as k,s as A,t as j}from"./form-DdHiBYMe.js";import{t as M}from"./input-DiRPHDd8.js";import{t as N}from"./password-input-B463LDkD.js";var P=v(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),F=c(u(),1),I=s(),L=S({username:x().min(1,e()),password:x().min(1,t())});function R({className:e,redirectTo:t,...r}){let a=h(),{setIsTyping:s,setPasswordLength:c,setShowPassword:l}=C(),u=f.useMutation(`post`,`/admin/api/v1/auth/login`),m=D({resolver:T(L),defaultValues:{username:``,password:``}});(0,F.useEffect)(()=>()=>{s(!1),c(0),l(!1)},[s,c,l]);async function v(e){let n=await u.mutateAsync({body:{username:e.username,password:e.password}});n?.data?.token&&(p(n.data.token),b.success(`欢迎回来,${n.data.username??e.username}!`),a({to:t||`/dashboard`,replace:!0}))}function x(e){c(e.length)}return(0,I.jsx)(j,{...m,children:(0,I.jsxs)(`form`,{className:g(`grid gap-3`,e),onSubmit:m.handleSubmit(v),...r,children:[(0,I.jsx)(E,{control:m.control,name:`username`,render:({field:e})=>(0,I.jsxs)(w,{children:[(0,I.jsx)(k,{children:o()}),(0,I.jsx)(O,{children:(0,I.jsx)(M,{placeholder:d(),...e,onBlur:()=>{s(!1),e.onBlur()},onFocus:()=>s(!0)})}),(0,I.jsx)(A,{})]})}),(0,I.jsx)(E,{control:m.control,name:`password`,render:({field:e})=>(0,I.jsxs)(w,{children:[(0,I.jsx)(k,{children:i()}),(0,I.jsx)(O,{children:(0,I.jsx)(N,{placeholder:`********`,...e,onBlur:()=>{s(!1),e.onBlur()},onChange:t=>{x(t.target.value),e.onChange(t)},onFocus:()=>s(!0),onVisibilityChange:l})}),(0,I.jsx)(A,{})]})}),(0,I.jsxs)(_,{className:`mt-2`,disabled:u.isPending,children:[u.isPending?(0,I.jsx)(y,{className:`animate-spin`}):(0,I.jsx)(P,{}),n()]})]})})}function z(){let{redirect:e}=m({from:`/(auth)/sign-in`});return(0,I.jsxs)(`div`,{className:`w-full space-y-6`,children:[(0,I.jsxs)(`div`,{className:`space-y-2`,children:[(0,I.jsx)(`p`,{className:`font-medium text-primary text-sm`,children:r()}),(0,I.jsx)(`h2`,{className:`font-semibold text-3xl tracking-tight`,children:a()}),(0,I.jsx)(`p`,{className:`text-muted-foreground leading-6`,children:l()})]}),(0,I.jsx)(R,{redirectTo:e})]})}var B=z;export{B as component}; \ No newline at end of file diff --git a/src/www/assets/switch-R6BNZUH1.js b/src/www/assets/switch-R6BNZUH1.js new file mode 100644 index 0000000..27e2518 --- /dev/null +++ b/src/www/assets/switch-R6BNZUH1.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{d as i,i as a}from"./button-DJA4fnJ8.js";import{i as o,n as s,o as c,t as l}from"./dist-DG5UMlBd.js";import{t as u}from"./dist-CGm-FpWw.js";var d=t(n(),1),f=e(),p=`Switch`,[m,h]=c(p),[g,_]=m(p),v=d.forwardRef((e,t)=>{let{__scopeSwitch:n,name:a,checked:c,defaultChecked:l,required:u,disabled:m,value:h=`on`,onCheckedChange:_,form:v,...y}=e,[b,x]=d.useState(null),w=i(t,e=>x(e)),T=d.useRef(!1),E=b?v||!!b.closest(`form`):!0,[D,O]=s({prop:c,defaultProp:l??!1,onChange:_,caller:p});return(0,f.jsxs)(g,{scope:n,checked:D,disabled:m,children:[(0,f.jsx)(r.button,{type:`button`,role:`switch`,"aria-checked":D,"aria-required":u,"data-state":C(D),"data-disabled":m?``:void 0,disabled:m,value:h,...y,ref:w,onClick:o(e.onClick,e=>{O(e=>!e),E&&(T.current=e.isPropagationStopped(),T.current||e.stopPropagation())})}),E&&(0,f.jsx)(S,{control:b,bubbles:!T.current,name:a,value:h,checked:D,required:u,disabled:m,form:v,style:{transform:`translateX(-100%)`}})]})});v.displayName=p;var y=`SwitchThumb`,b=d.forwardRef((e,t)=>{let{__scopeSwitch:n,...i}=e,a=_(y,n);return(0,f.jsx)(r.span,{"data-state":C(a.checked),"data-disabled":a.disabled?``:void 0,...i,ref:t})});b.displayName=y;var x=`SwitchBubbleInput`,S=d.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...a},o)=>{let s=d.useRef(null),c=i(s,o),p=u(n),m=l(t);return d.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(p!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[p,n,r]),(0,f.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...a,tabIndex:-1,ref:c,style:{...a.style,...m,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});S.displayName=x;function C(e){return e?`checked`:`unchecked`}var w=v,T=b;function E({className:e,size:t=`default`,...n}){return(0,f.jsx)(w,{className:a(`peer group/switch inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs outline-none transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=sm]:h-3.5 data-[size=default]:w-8 data-[size=sm]:w-6 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80`,e),"data-size":t,"data-slot":`switch`,...n,children:(0,f.jsx)(T,{className:a(`pointer-events-none block rounded-full bg-background ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground`),"data-slot":`switch-thumb`})})}export{E as t}; \ No newline at end of file diff --git a/src/www/assets/telegram-HLdihqdM.js b/src/www/assets/telegram-HLdihqdM.js new file mode 100644 index 0000000..827f6e4 --- /dev/null +++ b/src/www/assets/telegram-HLdihqdM.js @@ -0,0 +1 @@ +import{Ic as e,_t as t,dt as n,ft as r,gt as i,ht as a,mt as o,nu as s,ou as c,pt as l,ru as u,ut as d,vt as f}from"./messages-BovT1T-w.js";import{t as p}from"./button-DJA4fnJ8.js";import{t as m}from"./switch-R6BNZUH1.js";import{a as h,c as g,s as _}from"./zod-Cymc5bS-.js";import{a as v,c as y,i as b,l as x,n as S,o as C,s as w,t as T}from"./form-DdHiBYMe.js";import{t as E}from"./input-DiRPHDd8.js";import{t as D}from"./page-header-BBJ9dE3-.js";import{a as O,i as k,n as A,t as j}from"./lib-CTYwzR3w.js";var M=c(u(),1),N=s(),P=_({botToken:g().min(1,t()),chatId:g().min(1,i()),paymentNoticeEnabled:h(),abnormalNoticeEnabled:h()});function F(){let e=k(`system`),t=O(),i=x({resolver:y(P),defaultValues:{botToken:``,chatId:``,paymentNoticeEnabled:!1,abnormalNoticeEnabled:!1}});(0,M.useEffect)(()=>{let t=e.data?.data;t&&i.reset({botToken:j(t,`system.telegram_bot_token`),chatId:j(t,`system.telegram_chat_id`),paymentNoticeEnabled:j(t,`system.telegram_payment_notice_enabled`)===`true`,abnormalNoticeEnabled:j(t,`system.telegram_abnormal_notice_enabled`)===`true`})},[e.data,i]);async function s(n){await A(t.mutateAsync,[{group:`system`,key:`system.telegram_bot_token`,type:`string`,value:n.botToken},{group:`system`,key:`system.telegram_chat_id`,type:`string`,value:n.chatId},{group:`system`,key:`system.telegram_payment_notice_enabled`,type:`bool`,value:String(n.paymentNoticeEnabled)},{group:`system`,key:`system.telegram_abnormal_notice_enabled`,type:`bool`,value:String(n.abnormalNoticeEnabled)}],a()),await e.refetch()}return(0,N.jsx)(T,{...i,children:(0,N.jsxs)(`form`,{className:`space-y-6`,onSubmit:i.handleSubmit(s),children:[(0,N.jsx)(b,{control:i.control,name:`botToken`,render:({field:e})=>(0,N.jsxs)(v,{children:[(0,N.jsx)(C,{children:o()}),(0,N.jsx)(S,{children:(0,N.jsx)(E,{...e})}),(0,N.jsx)(w,{})]})}),(0,N.jsx)(b,{control:i.control,name:`chatId`,render:({field:e})=>(0,N.jsxs)(v,{children:[(0,N.jsx)(C,{children:l()}),(0,N.jsx)(S,{children:(0,N.jsx)(E,{...e})}),(0,N.jsx)(w,{})]})}),(0,N.jsx)(b,{control:i.control,name:`paymentNoticeEnabled`,render:({field:e})=>(0,N.jsxs)(v,{className:`flex items-center justify-between rounded-lg border p-3`,children:[(0,N.jsx)(C,{children:r()}),(0,N.jsx)(S,{children:(0,N.jsx)(m,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,N.jsx)(b,{control:i.control,name:`abnormalNoticeEnabled`,render:({field:e})=>(0,N.jsxs)(v,{className:`flex items-center justify-between rounded-lg border p-3`,children:[(0,N.jsx)(C,{children:n()}),(0,N.jsx)(S,{children:(0,N.jsx)(m,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,N.jsx)(p,{disabled:t.isPending||e.isLoading,type:`submit`,children:d()})]})})}function I(){return(0,N.jsx)(D,{description:f(),title:e(),variant:`section`,children:(0,N.jsx)(F,{})})}var L=I;export{L as component}; \ No newline at end of file diff --git a/src/www/assets/telescope-67IWjQye.js b/src/www/assets/telescope-67IWjQye.js new file mode 100644 index 0000000..5c6c9e7 --- /dev/null +++ b/src/www/assets/telescope-67IWjQye.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`telescope`,[[`path`,{d:`m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44`,key:`k4qptu`}],[`path`,{d:`m13.56 11.747 4.332-.924`,key:`19l80z`}],[`path`,{d:`m16 21-3.105-6.21`,key:`7oh9d`}],[`path`,{d:`M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z`,key:`m7xp4m`}],[`path`,{d:`m6.158 8.633 1.114 4.456`,key:`74o979`}],[`path`,{d:`m8 21 3.105-6.21`,key:`1fvxut`}],[`circle`,{cx:`12`,cy:`13`,r:`2`,key:`1c1ljs`}]]);export{t}; \ No newline at end of file diff --git a/src/www/assets/textarea-D_TrrVtD.js b/src/www/assets/textarea-D_TrrVtD.js new file mode 100644 index 0000000..4ec8f84 --- /dev/null +++ b/src/www/assets/textarea-D_TrrVtD.js @@ -0,0 +1 @@ +import{nu as e}from"./messages-BovT1T-w.js";import{i as t}from"./button-DJA4fnJ8.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`textarea`,{className:t(`field-sizing-content flex min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40`,e),"data-slot":`textarea`,...r})}export{r as t}; \ No newline at end of file diff --git a/src/www/assets/theme-provider-CRKya7Cx.js b/src/www/assets/theme-provider-CRKya7Cx.js new file mode 100644 index 0000000..762855e --- /dev/null +++ b/src/www/assets/theme-provider-CRKya7Cx.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{n as r,r as i,t as a}from"./cookies-BNZcTwGc.js";var o=t(n(),1),s=e(),c=`system`,l=`theme`,u=3600*24*365,d=(0,o.createContext)({defaultTheme:c,resolvedTheme:`light`,theme:c,setTheme:()=>null,resetTheme:()=>null});function f({children:e,defaultTheme:t=c,storageKey:n=l,...f}){let[p,m]=(0,o.useState)(()=>a(n)||t),h=(0,o.useMemo)(()=>p===`system`?window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:p,[p]);return(0,o.useEffect)(()=>{let e=window.document.documentElement,t=window.matchMedia(`(prefers-color-scheme: dark)`),n=t=>{e.dataset.mode=t,e.style.colorScheme=t},r=()=>{p===`system`&&n(t.matches?`dark`:`light`)};return n(h),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[p,h]),(0,s.jsx)(d,{value:{defaultTheme:t,resolvedTheme:h,resetTheme:()=>{r(n),m(c)},theme:p,setTheme:e=>{i(n,e,u),m(e)}},...f,children:e})}var p=()=>{let e=(0,o.useContext)(d);if(!e)throw Error(`useTheme must be used within a ThemeProvider`);return e};export{p as n,f as t}; \ No newline at end of file diff --git a/src/www/assets/theme-switch-BjXQNOij.js b/src/www/assets/theme-switch-BjXQNOij.js new file mode 100644 index 0000000..ced60a4 --- /dev/null +++ b/src/www/assets/theme-switch-BjXQNOij.js @@ -0,0 +1 @@ +import{$l as e,Gl as t,Kl as n,Ul as r,Vl as i,Wl as a,eu as o,nu as s,ou as c,ru as l,tu as u}from"./messages-BovT1T-w.js";import{t as d}from"./useNavigate-Dg8CkCoa.js";import{i as f,t as p}from"./button-DJA4fnJ8.js";import{a as m,d as h,f as g,l as _,r as v,t as y}from"./dropdown-menu-CUea1X0A.js";import{n as b}from"./theme-provider-CRKya7Cx.js";import{t as x}from"./createLucideIcon-D28ivbfF.js";import{t as S}from"./check-gDgbfVXu.js";var C=x(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),w=s(),T={"en-US":`English`,"zh-CN":`中文`};function E(){let t=d(),n=e(),r=e=>{e!==n&&(u(e,{reload:!1}),t({to:`.`,replace:!0,reloadDocument:!0}))};return(0,w.jsxs)(y,{modal:!1,children:[(0,w.jsx)(_,{asChild:!0,children:(0,w.jsxs)(p,{className:`scale-95 rounded-full`,size:`icon`,variant:`ghost`,children:[(0,w.jsx)(C,{className:`size-[1.2rem]`}),(0,w.jsx)(`span`,{className:`sr-only`,children:i()})]})}),(0,w.jsx)(v,{align:`end`,children:o.map(e=>(0,w.jsxs)(m,{onClick:()=>r(e),children:[T[e]??e,(0,w.jsx)(S,{className:f(`ms-auto`,n!==e&&`hidden`),size:14})]},e))})]})}var D=c(l(),1);function O(){let{theme:e,setTheme:i}=b();return(0,D.useEffect)(()=>{let t=e===`dark`?`#020817`:`#fff`,n=document.querySelector(`meta[name='theme-color']`);n&&n.setAttribute(`content`,t)},[e]),(0,w.jsxs)(y,{modal:!1,children:[(0,w.jsx)(_,{asChild:!0,children:(0,w.jsxs)(p,{className:`scale-95 rounded-full`,size:`icon`,variant:`ghost`,children:[(0,w.jsx)(h,{className:`size-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0`}),(0,w.jsx)(g,{className:`absolute size-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100`}),(0,w.jsx)(`span`,{className:`sr-only`,children:n()})]})}),(0,w.jsxs)(v,{align:`end`,children:[(0,w.jsxs)(m,{onClick:()=>i(`light`),children:[t(),` `,(0,w.jsx)(S,{className:f(`ms-auto`,e!==`light`&&`hidden`),size:14})]}),(0,w.jsxs)(m,{onClick:()=>i(`dark`),children:[a(),(0,w.jsx)(S,{className:f(`ms-auto`,e!==`dark`&&`hidden`),size:14})]}),(0,w.jsxs)(m,{onClick:()=>i(`system`),children:[r(),(0,w.jsx)(S,{className:f(`ms-auto`,e!==`system`&&`hidden`),size:14})]})]})]})}export{E as n,O as t}; \ No newline at end of file diff --git a/src/www/assets/trash-2-Du706Ujr.js b/src/www/assets/trash-2-Du706Ujr.js new file mode 100644 index 0000000..0efbf82 --- /dev/null +++ b/src/www/assets/trash-2-Du706Ujr.js @@ -0,0 +1 @@ +import{t as e}from"./createLucideIcon-D28ivbfF.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),n=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t as n,n as t}; \ No newline at end of file diff --git a/src/www/assets/unauthorized-error-CxmfHb-a.js b/src/www/assets/unauthorized-error-CxmfHb-a.js new file mode 100644 index 0000000..bd0b70e --- /dev/null +++ b/src/www/assets/unauthorized-error-CxmfHb-a.js @@ -0,0 +1 @@ +import{a as e,cc as t,i as n,lc as r,nu as i,r as a}from"./messages-BovT1T-w.js";import{t as o}from"./useRouter-D03zSgJO.js";import{t as s}from"./useNavigate-Dg8CkCoa.js";import{t as c}from"./button-DJA4fnJ8.js";var l=i();function u(){let i=s(),{history:u}=o();return(0,l.jsx)(`div`,{className:`h-svh`,children:(0,l.jsxs)(`div`,{className:`m-auto flex h-full w-full flex-col items-center justify-center gap-2`,children:[(0,l.jsx)(`h1`,{className:`font-bold text-[7rem] leading-tight`,children:`401`}),(0,l.jsx)(`span`,{className:`font-medium`,children:e()}),(0,l.jsxs)(`p`,{className:`text-center text-muted-foreground`,children:[n(),` `,(0,l.jsx)(`br`,{}),a()]}),(0,l.jsxs)(`div`,{className:`mt-6 flex gap-4`,children:[(0,l.jsx)(c,{onClick:()=>u.go(-1),variant:`outline`,children:r()}),(0,l.jsx)(c,{onClick:()=>i({to:`/dashboard`}),children:t()})]})]})})}export{u as t}; \ No newline at end of file diff --git a/src/www/assets/use-table-url-state-C7-IMA3_.js b/src/www/assets/use-table-url-state-C7-IMA3_.js new file mode 100644 index 0000000..df7c85a --- /dev/null +++ b/src/www/assets/use-table-url-state-C7-IMA3_.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";var n=e(t(),1);function r(e,t){let n={};for(let r of e){let e=t.find(e=>e.id===r.columnId),i=r.serialize??(e=>e);if(r.type===`string`){let t=typeof e?.value==`string`?e.value:``;n[r.searchKey]=t.trim()===``?void 0:i(t)}else{let t=Array.isArray(e?.value)?e.value:[];n[r.searchKey]=t.length>0?i(t):void 0}}return n}function i(e){let{search:t,navigate:i,pagination:a,globalFilter:o,columnFilters:s=[]}=e,c=a?.pageKey??`page`,l=a?.pageSizeKey??`pageSize`,u=a?.defaultPage??1,d=a?.defaultPageSize??10,f=o?.key??`filter`,p=o?.enabled??!0,m=o?.trim??!0,[h,g]=(0,n.useState)((0,n.useMemo)(()=>{let e=[];for(let n of s){let r=t[n.searchKey],i=n.deserialize??(e=>e);if(n.type===`string`){let t=i(r)??``;typeof t==`string`&&t.trim()!==``&&e.push({id:n.columnId,value:t})}else{let t=i(r)??[];Array.isArray(t)&&t.length>0&&e.push({id:n.columnId,value:t})}}return e},[s,t])),_=(0,n.useMemo)(()=>{let e=t[c],n=t[l],r=typeof e==`number`?e:u,i=typeof n==`number`?n:d;return{pageIndex:Math.max(0,r-1),pageSize:i}},[t,c,l,u,d]),v=e=>{let t=typeof e==`function`?e(_):e,n=t.pageIndex+1,r=t.pageSize;i({search:e=>({...e,[c]:n<=u?void 0:n,[l]:r===d?void 0:r})})},[y,b]=(0,n.useState)(()=>{if(!p)return;let e=t[f];return typeof e==`string`?e:``});return{globalFilter:p?y??``:void 0,onGlobalFilterChange:p?e=>{let t=typeof e==`function`?e(y??``):e,n=m?t.trim():t;b(n),i({search:e=>({...e,[c]:void 0,[f]:n||void 0})})}:void 0,columnFilters:h,onColumnFiltersChange:e=>{let t=typeof e==`function`?e(h):e;g(t);let n=r(s,t);i({search:e=>({...e,[c]:void 0,...n})})},pagination:_,onPaginationChange:v,ensurePageInRange:(e,n={resetTo:`first`})=>{let r=t[c];e>0&&(typeof r==`number`?r:u)>e&&i({replace:!0,search:t=>({...t,[c]:n.resetTo===`last`?e:void 0})})}}}export{i as t}; \ No newline at end of file diff --git a/src/www/assets/useNavigate-Dg8CkCoa.js b/src/www/assets/useNavigate-Dg8CkCoa.js new file mode 100644 index 0000000..068c13c --- /dev/null +++ b/src/www/assets/useNavigate-Dg8CkCoa.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{t as n}from"./useRouter-D03zSgJO.js";var r=e(t(),1);function i(e){let t=n();return r.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}export{i as t}; \ No newline at end of file diff --git a/src/www/assets/useRouter-D03zSgJO.js b/src/www/assets/useRouter-D03zSgJO.js new file mode 100644 index 0000000..83a0fae --- /dev/null +++ b/src/www/assets/useRouter-D03zSgJO.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";var n=e(t(),1),r=n.use,i=typeof window<`u`?n.useLayoutEffect:n.useEffect;function a(e){let t=n.useRef({value:e,prev:null}),r=t.current.value;return e!==r&&(t.current={value:e,prev:r}),t.current.prev}function o(e,t,r={},i={}){n.useEffect(()=>{if(!e.current||i.disabled||typeof IntersectionObserver!=`function`)return;let n=new IntersectionObserver(([e])=>{t(e)},r);return n.observe(e.current),()=>{n.disconnect()}},[t,r,i.disabled,e])}function s(e){let t=n.useRef(null);return n.useImperativeHandle(e,()=>t.current,[]),t}var c=n.createContext(null);function l(e){return n.useContext(c)}export{o as a,s as i,c as n,i as o,r,a as s,l as t}; \ No newline at end of file diff --git a/src/www/assets/useRouterState-DV1cSG1v.js b/src/www/assets/useRouterState-DV1cSG1v.js new file mode 100644 index 0000000..891e925 --- /dev/null +++ b/src/www/assets/useRouterState-DV1cSG1v.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{t as n}from"./useRouter-D03zSgJO.js";import{g as r,t as i}from"./useStore-1-QVtiLb.js";var a=e(t(),1);function o(e){let t=n({warn:e?.router===void 0}),o=e?.router||t,s=(0,a.useRef)(void 0);return i(o.stores.__store,t=>{if(e?.select){if(e.structuralSharing??o.options.defaultStructuralSharing){let n=r(s.current,e.select(t));return s.current=n,n}return e.select(t)}return t})}export{o as t}; \ No newline at end of file diff --git a/src/www/assets/useSearch-B5ZWp8fU.js b/src/www/assets/useSearch-B5ZWp8fU.js new file mode 100644 index 0000000..0649769 --- /dev/null +++ b/src/www/assets/useSearch-B5ZWp8fU.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{t as n}from"./useRouter-D03zSgJO.js";import{g as r,n as i,t as a}from"./useStore-1-QVtiLb.js";import{n as o,t as s}from"./matchContext-BcwcZvp2.js";var c=e(t(),1),l={get:()=>void 0,subscribe:()=>({unsubscribe:()=>{}})};function u(e){let t=n(),u=c.useContext(e.from?s:o),d=e.from??u,f=d?e.from?t.stores.getRouteMatchStore(d):t.stores.matchStores.get(d):void 0,p=c.useRef(void 0);return a(f??l,n=>{if((e.shouldThrow??!0)&&!n&&i(),n===void 0)return;let a=e.select?e.select(n):n;if(e.structuralSharing??t.options.defaultStructuralSharing){let e=r(p.current,a);return p.current=e,e}return a})}function d(e){return u({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.search):t.search})}export{u as n,d as t}; \ No newline at end of file diff --git a/src/www/assets/useStore-1-QVtiLb.js b/src/www/assets/useStore-1-QVtiLb.js new file mode 100644 index 0000000..541f801 --- /dev/null +++ b/src/www/assets/useStore-1-QVtiLb.js @@ -0,0 +1 @@ +import{ou as e,ru as t}from"./messages-BovT1T-w.js";import{t as n}from"./with-selector-D_dmjfol.js";function r(e){return e[e.length-1]}function i(e){return typeof e==`function`}function a(e,t){return i(e)?e(t):e}var o=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,c=()=>Object.create(null),l=(e,t)=>u(e,t,c);function u(e,t,n=()=>({}),r=0){if(e===t)return e;if(r>500)return t;let i=t,a=m(e)&&m(i);if(!a&&!(f(e)&&f(i)))return i;let s=a?e:d(e);if(!s)return i;let c=a?i:d(i);if(!c)return i;let l=s.length,p=c.length,h=a?Array(p):n(),g=0;for(let t=0;ti||!h(e[o],t[o],n)))return!1;return i===a}return!1}function g(e){let t,n,r=new Promise((e,r)=>{t=e,n=r});return r.status=`pending`,r.resolve=n=>{r.status=`resolved`,r.value=n,t(n),e?.(n)},r.reject=e=>{r.status=`rejected`,n(e)},r}function _(e){return typeof e?.message==`string`?e.message.startsWith(`Failed to fetch dynamically imported module`)||e.message.startsWith(`error loading dynamically imported module`)||e.message.startsWith(`Importing a module script failed`):!1}function v(e){return!!(e&&typeof e==`object`&&typeof e.then==`function`)}function y(e){return e.replace(/[\x00-\x1f\x7f]/g,``)}function b(e){let t;try{t=decodeURI(e)}catch{t=e.replaceAll(/%[0-9A-F]{2}/gi,e=>{try{return decodeURI(e)}catch{return e}})}return y(t)}var x=[`http:`,`https:`,`mailto:`,`tel:`];function S(e,t){if(!e)return!1;try{let n=new URL(e);return!t.has(n.protocol)}catch{return!1}}function C(e){if(!e||!/[%\\\x00-\x1f\x7f]/.test(e)&&!e.startsWith(`//`))return{path:e,handledProtocolRelativeURL:!1};let t=/%25|%5C/gi,n=0,r=``,i;for(;(i=t.exec(e))!==null;)r+=b(e.slice(n,i.index))+i[0],n=t.lastIndex;r+=b(n?e.slice(n):e);let a=!1;return r.startsWith(`//`)&&(a=!0,r=`/`+r.replace(/^\/+/,``)),{path:r,handledProtocolRelativeURL:a}}function w(e){return/\s|[^\u0000-\u007F]/.test(e)?e.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):e}function T(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{if(!e)return()=>{};let{unsubscribe:n}=e.subscribe(t);return n},[e]),i=(0,D.useCallback)(()=>e?.get(),[e]);return(0,O.useSyncExternalStoreWithSelector)(r,i,i,t,n)}export{g as a,w as c,_ as d,f,u as g,l as h,T as i,a as l,r as m,E as n,C as o,v as p,x as r,h as s,A as t,S as u}; \ No newline at end of file diff --git a/src/www/assets/wallet--XSRr4dT.js b/src/www/assets/wallet--XSRr4dT.js new file mode 100644 index 0000000..c303e67 --- /dev/null +++ b/src/www/assets/wallet--XSRr4dT.js @@ -0,0 +1 @@ +import{nu as e,ou as t,ru as n}from"./messages-BovT1T-w.js";import{t as r}from"./dist-15n4mVGL.js";import{d as i,i as a,l as o}from"./button-DJA4fnJ8.js";import{i as s,n as c,o as l}from"./dist-DG5UMlBd.js";import{t as u}from"./dist-Cp1lAGZy.js";import{i as d,n as f}from"./dist-BEDXr2LC.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./dist-BKfJQFVD.js";import{n as b,r as x,t as S}from"./cookies-BNZcTwGc.js";import{t as C}from"./createLucideIcon-D28ivbfF.js";var w=t(n(),1),T=e(),E=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),D=`VisuallyHidden`,O=w.forwardRef((e,t)=>(0,T.jsx)(r.span,{...e,ref:t,style:{...E,...e.style}}));O.displayName=D;var ee=O,[k,te]=l(`Tooltip`,[p]),A=p(),j=`TooltipProvider`,ne=700,M=`tooltip.open`,[re,N]=k(j),P=e=>{let{__scopeTooltip:t,delayDuration:n=ne,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=w.useRef(!0),s=w.useRef(!1),c=w.useRef(0);return w.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,T.jsx)(re,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:w.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:w.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:w.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};P.displayName=j;var F=`Tooltip`,[ie,I]=k(F),L=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,l=N(F,e.__scopeTooltip),u=A(t),[f,p]=w.useState(null),h=d(),g=w.useRef(0),_=o??l.disableHoverableContent,v=s??l.delayDuration,y=w.useRef(!1),[b,x]=c({prop:r,defaultProp:i??!1,onChange:e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(M))):l.onClose(),a?.(e)},caller:F}),S=w.useMemo(()=>b?y.current?`delayed-open`:`instant-open`:`closed`,[b]),C=w.useCallback(()=>{window.clearTimeout(g.current),g.current=0,y.current=!1,x(!0)},[x]),E=w.useCallback(()=>{window.clearTimeout(g.current),g.current=0,x(!1)},[x]),D=w.useCallback(()=>{window.clearTimeout(g.current),g.current=window.setTimeout(()=>{y.current=!0,x(!0),g.current=0},v)},[v,x]);return w.useEffect(()=>()=>{g.current&&=(window.clearTimeout(g.current),0)},[]),(0,T.jsx)(m,{...u,children:(0,T.jsx)(ie,{scope:t,contentId:h,open:b,stateAttribute:S,trigger:f,onTriggerChange:p,onTriggerEnter:w.useCallback(()=>{l.isOpenDelayedRef.current?D():C()},[l.isOpenDelayedRef,D,C]),onTriggerLeave:w.useCallback(()=>{_?E():(window.clearTimeout(g.current),g.current=0)},[E,_]),onOpen:C,onClose:E,disableHoverableContent:_,children:n})})};L.displayName=F;var R=`TooltipTrigger`,z=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...a}=e,o=I(R,n),c=N(R,n),l=A(n),u=i(t,w.useRef(null),o.onTriggerChange),d=w.useRef(!1),f=w.useRef(!1),p=w.useCallback(()=>d.current=!1,[]);return w.useEffect(()=>()=>document.removeEventListener(`pointerup`,p),[p]),(0,T.jsx)(y,{asChild:!0,...l,children:(0,T.jsx)(r.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...a,ref:u,onPointerMove:s(e.onPointerMove,e=>{e.pointerType!==`touch`&&!f.current&&!c.isPointerInTransitRef.current&&(o.onTriggerEnter(),f.current=!0)}),onPointerLeave:s(e.onPointerLeave,()=>{o.onTriggerLeave(),f.current=!1}),onPointerDown:s(e.onPointerDown,()=>{o.open&&o.onClose(),d.current=!0,document.addEventListener(`pointerup`,p,{once:!0})}),onFocus:s(e.onFocus,()=>{d.current||o.onOpen()}),onBlur:s(e.onBlur,o.onClose),onClick:s(e.onClick,o.onClose)})})});z.displayName=R;var B=`TooltipPortal`,[ae,oe]=k(B,{forceMount:void 0}),V=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=I(B,t);return(0,T.jsx)(ae,{scope:t,forceMount:n,children:(0,T.jsx)(u,{present:n||a.open,children:(0,T.jsx)(g,{asChild:!0,container:i,children:r})})})};V.displayName=B;var H=`TooltipContent`,U=w.forwardRef((e,t)=>{let n=oe(H,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=I(H,e.__scopeTooltip);return(0,T.jsx)(u,{present:r||o.open,children:o.disableHoverableContent?(0,T.jsx)(q,{side:i,...a,ref:t}):(0,T.jsx)(W,{side:i,...a,ref:t})})}),W=w.forwardRef((e,t)=>{let n=I(H,e.__scopeTooltip),r=N(H,e.__scopeTooltip),a=w.useRef(null),o=i(t,a),[s,c]=w.useState(null),{trigger:l,onClose:u}=n,d=a.current,{onPointerInTransitChange:f}=r,p=w.useCallback(()=>{c(null),f(!1)},[f]),m=w.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=le(r,ce(r,n.getBoundingClientRect())),a=ue(t.getBoundingClientRect());c(fe([...i,...a])),f(!0)},[f]);return w.useEffect(()=>()=>p(),[p]),w.useEffect(()=>{if(l&&d){let e=e=>m(e,d),t=e=>m(e,l);return l.addEventListener(`pointerleave`,e),d.addEventListener(`pointerleave`,t),()=>{l.removeEventListener(`pointerleave`,e),d.removeEventListener(`pointerleave`,t)}}},[l,d,m,p]),w.useEffect(()=>{if(s){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=l?.contains(t)||d?.contains(t),i=!de(n,s);r?p():i&&(p(),u())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[l,d,s,u,p]),(0,T.jsx)(q,{...e,ref:o})}),[G,K]=k(F,{isInside:!1}),se=o(`TooltipContent`),q=w.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=I(H,n),l=A(n),{onClose:u}=c;return w.useEffect(()=>(document.addEventListener(M,u),()=>document.removeEventListener(M,u)),[u]),w.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,T.jsx)(v,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,T.jsxs)(_,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,T.jsx)(se,{children:r}),(0,T.jsx)(G,{scope:n,isInside:!0,children:(0,T.jsx)(ee,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});U.displayName=H;var J=`TooltipArrow`,Y=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=A(n);return K(J,n).isInside?null:(0,T.jsx)(h,{...i,...r,ref:t})});Y.displayName=J;function ce(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function le(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function ue(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function de(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function fe(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),pe(t)}function pe(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var me=P,he=L,ge=z,_e=V,ve=U,ye=Y;function be({delayDuration:e=0,...t}){return(0,T.jsx)(me,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function xe({...e}){return(0,T.jsx)(he,{"data-slot":`tooltip`,...e})}function Se({...e}){return(0,T.jsx)(ge,{"data-slot":`tooltip-trigger`,...e})}function X({className:e,sideOffset:t=0,children:n,...r}){return(0,T.jsx)(_e,{children:(0,T.jsxs)(ve,{className:a(`fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in text-balance rounded-md bg-foreground px-3 py-1.5 text-background text-xs data-[state=closed]:animate-out`,e),"data-slot":`tooltip-content`,sideOffset:t,...r,children:[n,(0,T.jsx)(ye,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}var Z=`ltr`,Q=`dir`,Ce=3600*24*365,$=(0,w.createContext)(null);function we({children:e}){let[t,n]=(0,w.useState)(()=>S(Q)||Z);return(0,w.useEffect)(()=>{document.documentElement.setAttribute(`dir`,t)},[t]),(0,T.jsx)($,{value:{defaultDir:Z,dir:t,setDir:e=>{n(e),x(Q,e,Ce)},resetDir:()=>{n(Z),b(Q)}},children:(0,T.jsx)(f,{dir:t,children:e})})}function Te(){let e=(0,w.useContext)($);if(!e)throw Error(`useDirection must be used within a DirectionProvider`);return e}var Ee=C(`wallet`,[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`,key:`18etb6`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`,key:`xoc0q4`}]]);export{X as a,E as c,xe as i,we as n,be as o,Te as r,Se as s,Ee as t}; \ No newline at end of file diff --git a/src/www/assets/web-vitals-f_BHH8AE.js b/src/www/assets/web-vitals-f_BHH8AE.js new file mode 100644 index 0000000..7feda2b --- /dev/null +++ b/src/www/assets/web-vitals-f_BHH8AE.js @@ -0,0 +1 @@ +var e=-1,t=t=>{addEventListener(`pageshow`,n=>{n.persisted&&(e=n.timeStamp,t(n))},!0)},n=(e,t,n,r)=>{let i,a;return o=>{t.value>=0&&(o||r)&&(a=t.value-(i??0),(a||i===void 0)&&(i=t.value,t.delta=a,t.rating=((e,t)=>e>t[1]?`poor`:e>t[0]?`needs-improvement`:`good`)(t.value,n),e(t)))}},r=e=>{requestAnimationFrame(()=>requestAnimationFrame(e))},i=()=>{let e=performance.getEntriesByType(`navigation`)[0];if(e&&e.responseStart>0&&e.responseStarti()?.activationStart??0,o=(t,n=-1)=>{let r=i(),o=`navigate`;return e>=0?o=`back-forward-cache`:r&&(document.prerendering||a()>0?o=`prerender`:document.wasDiscarded?o=`restore`:r.type&&(o=r.type.replace(/_/g,`-`))),{name:t,value:n,rating:`good`,delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+0xe8d4a51000}`,navigationType:o}},s=new WeakMap;function c(e,t){return s.get(e)||s.set(e,new t),s.get(e)}var l=class{t;i=0;o=[];h(e){if(e.hadRecentInput)return;let t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}},u=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){let r=new PerformanceObserver(e=>{queueMicrotask(()=>{t(e.getEntries())})});return r.observe({type:e,buffered:!0,...n}),r}}catch{}},d=e=>{let t=!1;return()=>{t||=(e(),!0)}},f=-1,p=new Set,m=()=>document.visibilityState!==`hidden`||document.prerendering?1/0:0,h=e=>{if(document.visibilityState===`hidden`){if(e.type===`visibilitychange`)for(let e of p)e();isFinite(f)||(f=e.type===`visibilitychange`?e.timeStamp:0,removeEventListener(`prerenderingchange`,h,!0))}},g=()=>{if(f<0){let e=a();f=(document.prerendering?void 0:globalThis.performance.getEntriesByType(`visibility-state`).find(t=>t.name===`hidden`&&t.startTime>=e)?.startTime)??m(),addEventListener(`visibilitychange`,h,!0),addEventListener(`prerenderingchange`,h,!0),t(()=>{setTimeout(()=>{f=m()})})}return{get firstHiddenTime(){return f},onHidden(e){p.add(e)}}},_=e=>{document.prerendering?addEventListener(`prerenderingchange`,e,!0):e()},v=[1800,3e3],y=(e,i={})=>{_(()=>{let s=g(),c,l=o(`FCP`),d=u(`paint`,e=>{for(let t of e)t.name===`first-contentful-paint`&&(d.disconnect(),t.startTime{l=o(`FCP`),c=n(e,l,v,i.reportAllChanges),r(()=>{l.value=performance.now()-t.timeStamp,c(!0)})}))})},b=[.1,.25],x=(e,i={})=>{let a=g();y(d(()=>{let s,d=o(`CLS`,0),f=c(i,l),p=e=>{for(let t of e)f.h(t);f.i>d.value&&(d.value=f.i,d.entries=f.o,s())},m=u(`layout-shift`,p);m&&(s=n(e,d,b,i.reportAllChanges),a.onHidden(()=>{p(m.takeRecords()),s(!0)}),t(()=>{f.i=0,d=o(`CLS`,0),s=n(e,d,b,i.reportAllChanges),r(s)}),setTimeout(s))}))},S=0,C=1/0,w=0,T=e=>{for(let t of e)t.interactionId&&(C=Math.min(C,t.interactionId),w=Math.max(w,t.interactionId),S=w?(w-C)/7+1:0)},E,D=()=>E?S:performance.interactionCount??0,O=()=>{`interactionCount`in performance||E||(E=u(`event`,T,{durationThreshold:0}))},k=0,A=class{l=[];u=new Map;m;p;v(){k=D(),this.l.length=0,this.u.clear()}T(){let e=Math.min(this.l.length-1,Math.floor((D()-k)/50));return this.l[e]}h(e){if(this.m?.(e),!e.interactionId&&e.entryType!==`first-input`)return;let t=this.l.at(-1),n=this.u.get(e.interactionId);if(n||this.l.length<10||e.duration>t.L){if(n?e.duration>n.L?(n.entries=[e],n.L=e.duration):e.duration===n.L&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],L:e.duration},this.u.set(n.id,n),this.l.push(n)),this.l.sort((e,t)=>t.L-e.L),this.l.length>10){let e=this.l.splice(10);for(let t of e)this.u.delete(t.id)}this.p?.(n)}}},j=e=>{let t=globalThis.requestIdleCallback||setTimeout,n=globalThis.cancelIdleCallback||clearTimeout;if(document.visibilityState===`hidden`)e();else{let r=d(e),i=-1,a=()=>{n(i),r()};addEventListener(`visibilitychange`,a,{once:!0,capture:!0}),i=t(()=>{removeEventListener(`visibilitychange`,a,{capture:!0}),r()})}},M=[200,500],N=(e,r={})=>{if(!globalThis.PerformanceEventTiming||!(`interactionId`in PerformanceEventTiming.prototype))return;let i=g();_(()=>{O();let a,s=o(`INP`),l=c(r,A),d=e=>{j(()=>{for(let t of e)l.h(t);let t=l.T();t&&t.L!==s.value&&(s.value=t.L,s.entries=t.entries,a())})},f=u(`event`,d,{durationThreshold:r.durationThreshold??40});a=n(e,s,M,r.reportAllChanges),f&&(f.observe({type:`first-input`,buffered:!0}),i.onHidden(()=>{d(f.takeRecords()),a(!0)}),t(()=>{l.v(),s=o(`INP`),a=n(e,s,M,r.reportAllChanges)}))})},P=class{m;h(e){this.m?.(e)}},F=[2500,4e3],I=(e,i={})=>{_(()=>{let s=g(),l,f=o(`LCP`),p=c(i,P),m=e=>{i.reportAllChanges||(e=e.slice(-1));for(let t of e)p.h(t),t.startTime{m(h.takeRecords()),h.disconnect(),l(!0)}),s=e=>{e.isTrusted&&(j(a),removeEventListener(e.type,s,{capture:!0}))};for(let e of[`keydown`,`click`,`visibilitychange`])addEventListener(e,s,{capture:!0});t(t=>{f=o(`LCP`),l=n(e,f,F,i.reportAllChanges),r(()=>{f.value=performance.now()-t.timeStamp,l(!0)})})}})},L=[800,1800],R=e=>{document.prerendering?_(()=>R(e)):document.readyState===`complete`?setTimeout(e):addEventListener(`load`,()=>R(e),!0)},z=(e,r={})=>{let s=o(`TTFB`),c=n(e,s,L,r.reportAllChanges);R(()=>{let l=i();l&&(s.value=Math.max(l.responseStart-a(),0),s.entries=[l],c(!0),t(()=>{s=o(`TTFB`,0),c=n(e,s,L,r.reportAllChanges),c(!0)}))})};export{x as onCLS,y as onFCP,N as onINP,I as onLCP,z as onTTFB}; \ No newline at end of file diff --git a/src/www/assets/with-selector-D_dmjfol.js b/src/www/assets/with-selector-D_dmjfol.js new file mode 100644 index 0000000..975c1f9 --- /dev/null +++ b/src/www/assets/with-selector-D_dmjfol.js @@ -0,0 +1 @@ +import{iu as e,ru as t}from"./messages-BovT1T-w.js";var n=e((e=>{var n=t();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useState,o=n.useEffect,s=n.useLayoutEffect,c=n.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=n.useSyncExternalStore===void 0?f:n.useSyncExternalStore})),r=e(((e,t)=>{t.exports=n()})),i=e((e=>{var n=t(),i=r();function a(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var o=typeof Object.is==`function`?Object.is:a,s=i.useSyncExternalStore,c=n.useRef,l=n.useEffect,u=n.useMemo,d=n.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var a=c(null);if(a.current===null){var f={hasValue:!1,value:null};a.current=f}else f=a.current;a=u(function(){function e(e){if(!a){if(a=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,o(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var a=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=s(e,a[0],a[1]);return l(function(){f.hasValue=!0,f.value=p},[p]),d(p),p}})),a=e(((e,t)=>{t.exports=i()}));export{r as n,a as t}; \ No newline at end of file diff --git a/src/www/assets/zod-Cymc5bS-.js b/src/www/assets/zod-Cymc5bS-.js new file mode 100644 index 0000000..eb21bbe --- /dev/null +++ b/src/www/assets/zod-Cymc5bS-.js @@ -0,0 +1,40 @@ +import{au as e}from"./messages-BovT1T-w.js";var t=Object.freeze({status:`aborted`});function n(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,`_zod`,{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,`name`,{value:e}),o}var r=Symbol(`zod_brand`),i=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},a=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}},o={};function s(e){return e&&Object.assign(o,e),o}var c=e({BIGINT_FORMAT_RANGES:()=>Ee,Class:()=>We,NUMBER_FORMAT_RANGES:()=>Te,aborted:()=>S,allowsEval:()=>_e,assert:()=>te,assertEqual:()=>l,assertIs:()=>ee,assertNever:()=>d,assertNotEqual:()=>u,assignProp:()=>h,base64ToUint8Array:()=>Re,base64urlToUint8Array:()=>Be,cached:()=>ie,captureStackTrace:()=>he,cleanEnum:()=>Le,cleanRegex:()=>ae,clone:()=>y,cloneDef:()=>le,createTransparentProxy:()=>Ce,defineLazy:()=>m,esc:()=>pe,escapeRegex:()=>v,extend:()=>ke,finalizeIssue:()=>w,floatSafeRemainder:()=>oe,getElementAtPath:()=>ue,getEnumValues:()=>ne,getLengthableOrigin:()=>Ie,getParsedType:()=>be,getSizableOrigin:()=>Fe,hexToUint8Array:()=>He,isObject:()=>ge,isPlainObject:()=>_,issue:()=>E,joinValues:()=>f,jsonStringifyReplacer:()=>re,merge:()=>je,mergeDefs:()=>g,normalizeParams:()=>b,nullish:()=>p,numKeys:()=>ye,objectClone:()=>ce,omit:()=>Oe,optionalKeys:()=>we,parsedType:()=>T,partial:()=>Me,pick:()=>De,prefixIssues:()=>C,primitiveTypes:()=>Se,promiseAllObject:()=>de,propertyKeyTypes:()=>xe,randomString:()=>fe,required:()=>Ne,safeExtend:()=>Ae,shallowClone:()=>ve,slugify:()=>me,stringifyPrimitive:()=>x,uint8ArrayToBase64:()=>ze,uint8ArrayToBase64url:()=>Ve,uint8ArrayToHex:()=>Ue,unwrapMessage:()=>Pe});function l(e){return e}function u(e){return e}function ee(e){}function d(e){throw Error(`Unexpected value in exhaustive check`)}function te(e){}function ne(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function f(e,t=`|`){return e.map(e=>x(e)).join(t)}function re(e,t){return typeof t==`bigint`?t.toString():t}function ie(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function p(e){return e==null}function ae(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function oe(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=t.toString(),i=(r.split(`.`)[1]||``).length;if(i===0&&/\d?e-\d?/.test(r)){let e=r.match(/\d?e-(\d?)/);e?.[1]&&(i=Number.parseInt(e[1]))}let a=n>i?n:i;return Number.parseInt(e.toFixed(a).replace(`.`,``))%Number.parseInt(t.toFixed(a).replace(`.`,``))/10**a}var se=Symbol(`evaluating`);function m(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==se)return r===void 0&&(r=se,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function ce(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function h(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function g(...e){let t={};for(let n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function le(e){return g(e._zod.def)}function ue(e,t){return t?t.reduce((e,t)=>e?.[t],e):e}function de(e){let t=Object.keys(e),n=t.map(t=>e[t]);return Promise.all(n).then(e=>{let n={};for(let r=0;r{};function ge(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var _e=ie(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function _(e){if(ge(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(ge(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function ve(e){return _(e)?{...e}:Array.isArray(e)?[...e]:e}function ye(e){let t=0;for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}var be=e=>{let t=typeof e;switch(t){case`undefined`:return`undefined`;case`string`:return`string`;case`number`:return Number.isNaN(e)?`nan`:`number`;case`boolean`:return`boolean`;case`function`:return`function`;case`bigint`:return`bigint`;case`symbol`:return`symbol`;case`object`:return Array.isArray(e)?`array`:e===null?`null`:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?`promise`:typeof Map<`u`&&e instanceof Map?`map`:typeof Set<`u`&&e instanceof Set?`set`:typeof Date<`u`&&e instanceof Date?`date`:typeof File<`u`&&e instanceof File?`file`:`object`;default:throw Error(`Unknown data type: ${t}`)}},xe=new Set([`string`,`number`,`symbol`]),Se=new Set([`string`,`number`,`bigint`,`boolean`,`symbol`,`undefined`]);function v(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function y(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function b(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Ce(e){let t;return new Proxy({},{get(n,r,i){return t??=e(),Reflect.get(t,r,i)},set(n,r,i,a){return t??=e(),Reflect.set(t,r,i,a)},has(n,r){return t??=e(),Reflect.has(t,r)},deleteProperty(n,r){return t??=e(),Reflect.deleteProperty(t,r)},ownKeys(n){return t??=e(),Reflect.ownKeys(t)},getOwnPropertyDescriptor(n,r){return t??=e(),Reflect.getOwnPropertyDescriptor(t,r)},defineProperty(n,r,i){return t??=e(),Reflect.defineProperty(t,r,i)}})}function x(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function we(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var Te={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Ee={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function De(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return y(e,g(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return h(this,`shape`,e),e},checks:[]}))}function Oe(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return y(e,g(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return h(this,`shape`,r),r},checks:[]}))}function ke(e,t){if(!_(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return y(e,g(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return h(this,`shape`,n),n}}))}function Ae(e,t){if(!_(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return y(e,g(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return h(this,`shape`,n),n}}))}function je(e,t){return y(e,g(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return h(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:[]}))}function Me(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return y(t,g(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return h(this,`shape`,i),i},checks:[]}))}function Ne(e,t,n){return y(t,g(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return h(this,`shape`,i),i}}))}function S(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Pe(e){return typeof e==`string`?e:e?.message}function w(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=Pe(e.inst?._zod.def?.error?.(e))??Pe(t?.error?.(e))??Pe(n.customError?.(e))??Pe(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function Fe(e){return e instanceof Set?`set`:e instanceof Map?`map`:e instanceof File?`file`:`unknown`}function Ie(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function T(e){let t=typeof e;switch(t){case`number`:return Number.isNaN(e)?`nan`:`number`;case`object`:{if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=e;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&`constructor`in t&&t.constructor)return t.constructor.name}}return t}function E(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}function Le(e){return Object.entries(e).filter(([e,t])=>Number.isNaN(Number.parseInt(e,10))).map(e=>e[1])}function Re(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;ee.toString(16).padStart(2,`0`)).join(``)}var We=class{constructor(...e){}},Ge=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,re,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})},Ke=n(`$ZodError`,Ge),D=n(`$ZodError`,Ge,{Parent:Error});function qe(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Je(e,t=e=>e.message){let n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`&&i.errors.length)i.errors.map(e=>r({issues:e}));else if(i.code===`invalid_key`)r({issues:i.issues});else if(i.code===`invalid_element`)r({issues:i.issues});else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;re.message){let n={errors:[]},r=(e,i=[])=>{var a,o;for(let s of e.issues)if(s.code===`invalid_union`&&s.errors.length)s.errors.map(e=>r({issues:e},s.path));else if(s.code===`invalid_key`)r({issues:s.issues},s.path);else if(s.code===`invalid_element`)r({issues:s.issues},s.path);else{let e=[...i,...s.path];if(e.length===0){n.errors.push(t(s));continue}let r=n,c=0;for(;ctypeof e==`object`?e.key:e);for(let e of n)typeof e==`number`?t.push(`[${e}]`):typeof e==`symbol`?t.push(`[${JSON.stringify(String(e))}]`):/[^\w$]/.test(e)?t.push(`[${JSON.stringify(e)}]`):(t.length&&t.push(`.`),t.push(e));return t.join(``)}function Ze(e){let t=[],n=[...e.issues].sort((e,t)=>(e.path??[]).length-(t.path??[]).length);for(let e of n)t.push(`✖ ${e.message}`),e.path?.length&&t.push(` → at ${Xe(e.path)}`);return t.join(` +`)}var Qe=e=>(t,n,r,a)=>{let o=r?Object.assign(r,{async:!1}):{async:!1},c=t._zod.run({value:n,issues:[]},o);if(c instanceof Promise)throw new i;if(c.issues.length){let t=new(a?.Err??e)(c.issues.map(e=>w(e,o,s())));throw he(t,a?.callee),t}return c.value},$e=Qe(D),et=e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>w(e,a,s())));throw he(t,i?.callee),t}return o.value},tt=et(D),nt=e=>(t,n,r)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new i;return o.issues.length?{success:!1,error:new(e??Ke)(o.issues.map(e=>w(e,a,s())))}:{success:!0,data:o.value}},rt=nt(D),it=e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>w(e,i,s())))}:{success:!0,data:a.value}},at=it(D),ot=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return Qe(e)(t,n,i)},st=ot(D),ct=e=>(t,n,r)=>Qe(e)(t,n,r),lt=ct(D),ut=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return et(e)(t,n,i)},dt=ut(D),ft=e=>async(t,n,r)=>et(e)(t,n,r),pt=ft(D),mt=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return nt(e)(t,n,i)},ht=mt(D),gt=e=>(t,n,r)=>nt(e)(t,n,r),_t=gt(D),vt=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return it(e)(t,n,i)},yt=vt(D),bt=e=>async(t,n,r)=>it(e)(t,n,r),xt=bt(D),St=e({base64:()=>Jt,base64url:()=>Yt,bigint:()=>on,boolean:()=>ln,browserEmail:()=>Bt,cidrv4:()=>Kt,cidrv6:()=>qt,cuid:()=>Ct,cuid2:()=>wt,date:()=>en,datetime:()=>rn,domain:()=>Zt,duration:()=>kt,e164:()=>Qt,email:()=>Ft,emoji:()=>Ht,extendedDuration:()=>At,guid:()=>jt,hex:()=>mn,hostname:()=>Xt,html5Email:()=>It,idnEmail:()=>zt,integer:()=>sn,ipv4:()=>Ut,ipv6:()=>Wt,ksuid:()=>Dt,lowercase:()=>fn,mac:()=>Gt,md5_base64:()=>vn,md5_base64url:()=>yn,md5_hex:()=>_n,nanoid:()=>Ot,null:()=>un,number:()=>cn,rfc5322Email:()=>Lt,sha1_base64:()=>xn,sha1_base64url:()=>Sn,sha1_hex:()=>bn,sha256_base64:()=>wn,sha256_base64url:()=>Tn,sha256_hex:()=>Cn,sha384_base64:()=>Dn,sha384_base64url:()=>On,sha384_hex:()=>En,sha512_base64:()=>An,sha512_base64url:()=>jn,sha512_hex:()=>kn,string:()=>an,time:()=>nn,ulid:()=>Tt,undefined:()=>dn,unicodeEmail:()=>Rt,uppercase:()=>pn,uuid:()=>O,uuid4:()=>Mt,uuid6:()=>Nt,uuid7:()=>Pt,xid:()=>Et}),Ct=/^[cC][^\s-]{8,}$/,wt=/^[0-9a-z]+$/,Tt=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Et=/^[0-9a-vA-V]{20}$/,Dt=/^[A-Za-z0-9]{27}$/,Ot=/^[a-zA-Z0-9_-]{21}$/,kt=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,At=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,jt=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,O=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Mt=O(4),Nt=O(6),Pt=O(7),Ft=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,It=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Lt=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,Rt=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,zt=Rt,Bt=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Vt=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function Ht(){return new RegExp(Vt,`u`)}var Ut=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Wt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Gt=e=>{let t=v(e??`:`);return RegExp(`^(?:[0-9A-F]{2}${t}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${t}){5}[0-9a-f]{2}$`)},Kt=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,qt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Jt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Yt=/^[A-Za-z0-9_-]*$/,Xt=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,Zt=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Qt=/^\+[1-9]\d{6,14}$/,$t=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,en=RegExp(`^${$t}$`);function tn(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function nn(e){return RegExp(`^${tn(e)}$`)}function rn(e){let t=tn({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${$t}T(?:${r})$`)}var an=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},on=/^-?\d+n?$/,sn=/^-?\d+$/,cn=/^-?\d+(?:\.\d+)?$/,ln=/^(?:true|false)$/i,un=/^null$/i,dn=/^undefined$/i,fn=/^[^A-Z]*$/,pn=/^[^a-z]*$/,mn=/^[0-9a-fA-F]*$/;function hn(e,t){return RegExp(`^[A-Za-z0-9+/]{${e}}${t}$`)}function gn(e){return RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var _n=/^[0-9a-fA-F]{32}$/,vn=hn(22,`==`),yn=gn(22),bn=/^[0-9a-fA-F]{40}$/,xn=hn(27,`=`),Sn=gn(27),Cn=/^[0-9a-fA-F]{64}$/,wn=hn(43,`=`),Tn=gn(43),En=/^[0-9a-fA-F]{96}$/,Dn=hn(64,``),On=gn(64),kn=/^[0-9a-fA-F]{128}$/,An=hn(86,`==`),jn=gn(86),k=n(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Mn={number:`number`,bigint:`bigint`,object:`date`},Nn=n(`$ZodCheckLessThan`,(e,t)=>{k.init(e,t);let n=Mn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value{(t.inclusive?r.value<=t.value:r.value{k.init(e,t);let n=Mn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Fn=n(`$ZodCheckMultipleOf`,(e,t)=>{k.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):oe(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),In=n(`$ZodCheckNumberFormat`,(e,t)=>{k.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Te[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=sn)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Ln=n(`$ZodCheckBigIntFormat`,(e,t)=>{k.init(e,t);let[n,r]=Ee[t.format];e._zod.onattach.push(e=>{let i=e._zod.bag;i.format=t.format,i.minimum=n,i.maximum=r}),e._zod.check=i=>{let a=i.value;ar&&i.issues.push({origin:`bigint`,input:a,code:`too_big`,maximum:r,inclusive:!0,inst:e,continue:!t.abort})}}),Rn=n(`$ZodCheckMaxSize`,(e,t)=>{var n;k.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!p(t)&&t.size!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;r.size<=t.maximum||n.issues.push({origin:Fe(r),code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),zn=n(`$ZodCheckMinSize`,(e,t)=>{var n;k.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!p(t)&&t.size!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;r.size>=t.minimum||n.issues.push({origin:Fe(r),code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Bn=n(`$ZodCheckSizeEquals`,(e,t)=>{var n;k.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!p(t)&&t.size!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.size,n.maximum=t.size,n.size=t.size}),e._zod.check=n=>{let r=n.value,i=r.size;if(i===t.size)return;let a=i>t.size;n.issues.push({origin:Fe(r),...a?{code:`too_big`,maximum:t.size}:{code:`too_small`,minimum:t.size},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Vn=n(`$ZodCheckMaxLength`,(e,t)=>{var n;k.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!p(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=Ie(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Hn=n(`$ZodCheckMinLength`,(e,t)=>{var n;k.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!p(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=Ie(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Un=n(`$ZodCheckLengthEquals`,(e,t)=>{var n;k.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!p(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=Ie(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Wn=n(`$ZodCheckStringFormat`,(e,t)=>{var n,r;k.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Gn=n(`$ZodCheckRegex`,(e,t)=>{Wn.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Kn=n(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=fn,Wn.init(e,t)}),qn=n(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=pn,Wn.init(e,t)}),Jn=n(`$ZodCheckIncludes`,(e,t)=>{k.init(e,t);let n=v(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Yn=n(`$ZodCheckStartsWith`,(e,t)=>{k.init(e,t);let n=RegExp(`^${v(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Xn=n(`$ZodCheckEndsWith`,(e,t)=>{k.init(e,t);let n=RegExp(`.*${v(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});function Zn(e,t,n){e.issues.length&&t.issues.push(...C(n,e.issues))}var Qn=n(`$ZodCheckProperty`,(e,t)=>{k.init(e,t),e._zod.check=e=>{let n=t.schema._zod.run({value:e.value[t.property],issues:[]},{});if(n instanceof Promise)return n.then(n=>Zn(n,e,t.property));Zn(n,e,t.property)}}),$n=n(`$ZodCheckMimeType`,(e,t)=>{k.init(e,t);let n=new Set(t.mime);e._zod.onattach.push(e=>{e._zod.bag.mime=t.mime}),e._zod.check=r=>{n.has(r.value.type)||r.issues.push({code:`invalid_value`,values:t.mime,input:r.value.type,inst:e,continue:!t.abort})}}),er=n(`$ZodCheckOverwrite`,(e,t)=>{k.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),tr=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` +`))}},nr={major:4,minor:3,patch:6},A=n(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=nr;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=S(e),a;for(let o of t){if(o._zod.def.when){if(!o._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,s=o._zod.check(e);if(s instanceof Promise&&n?.async===!1)throw new i;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,e.issues.length!==t&&(r||=S(e,t))});else{if(e.issues.length===t)continue;r||=S(e,t)}}return a?a.then(()=>e):e},n=(n,a,o)=>{if(S(n))return n.aborted=!0,n;let s=t(a,r,o);if(s instanceof Promise){if(o.async===!1)throw new i;return s.then(t=>e._zod.parse(t,o))}return e._zod.parse(s,o)};e._zod.run=(a,o)=>{if(o.skipChecks)return e._zod.parse(a,o);if(o.direction===`backward`){let t=e._zod.parse({value:a.value,issues:[]},{...o,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,a,o)):n(t,a,o)}let s=e._zod.parse(a,o);if(s instanceof Promise){if(o.async===!1)throw new i;return s.then(e=>t(e,r,o))}return t(s,r,o)}}m(e,`~standard`,()=>({validate:t=>{try{let n=rt(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return at(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),rr=n(`$ZodString`,(e,t)=>{A.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??an(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),j=n(`$ZodStringFormat`,(e,t)=>{Wn.init(e,t),rr.init(e,t)}),ir=n(`$ZodGUID`,(e,t)=>{t.pattern??=jt,j.init(e,t)}),ar=n(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=O(e)}else t.pattern??=O();j.init(e,t)}),or=n(`$ZodEmail`,(e,t)=>{t.pattern??=Ft,j.init(e,t)}),sr=n(`$ZodURL`,(e,t)=>{j.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=i.href:n.value=r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),cr=n(`$ZodEmoji`,(e,t)=>{t.pattern??=Ht(),j.init(e,t)}),lr=n(`$ZodNanoID`,(e,t)=>{t.pattern??=Ot,j.init(e,t)}),ur=n(`$ZodCUID`,(e,t)=>{t.pattern??=Ct,j.init(e,t)}),dr=n(`$ZodCUID2`,(e,t)=>{t.pattern??=wt,j.init(e,t)}),fr=n(`$ZodULID`,(e,t)=>{t.pattern??=Tt,j.init(e,t)}),pr=n(`$ZodXID`,(e,t)=>{t.pattern??=Et,j.init(e,t)}),mr=n(`$ZodKSUID`,(e,t)=>{t.pattern??=Dt,j.init(e,t)}),hr=n(`$ZodISODateTime`,(e,t)=>{t.pattern??=rn(t),j.init(e,t)}),gr=n(`$ZodISODate`,(e,t)=>{t.pattern??=en,j.init(e,t)}),_r=n(`$ZodISOTime`,(e,t)=>{t.pattern??=nn(t),j.init(e,t)}),vr=n(`$ZodISODuration`,(e,t)=>{t.pattern??=kt,j.init(e,t)}),yr=n(`$ZodIPv4`,(e,t)=>{t.pattern??=Ut,j.init(e,t),e._zod.bag.format=`ipv4`}),br=n(`$ZodIPv6`,(e,t)=>{t.pattern??=Wt,j.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),xr=n(`$ZodMAC`,(e,t)=>{t.pattern??=Gt(t.delimiter),j.init(e,t),e._zod.bag.format=`mac`}),Sr=n(`$ZodCIDRv4`,(e,t)=>{t.pattern??=Kt,j.init(e,t)}),Cr=n(`$ZodCIDRv6`,(e,t)=>{t.pattern??=qt,j.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function wr(e){if(e===``)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Tr=n(`$ZodBase64`,(e,t)=>{t.pattern??=Jt,j.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{wr(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function Er(e){if(!Yt.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return wr(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Dr=n(`$ZodBase64URL`,(e,t)=>{t.pattern??=Yt,j.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Er(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Or=n(`$ZodE164`,(e,t)=>{t.pattern??=Qt,j.init(e,t)});function kr(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Ar=n(`$ZodJWT`,(e,t)=>{j.init(e,t),e._zod.check=n=>{kr(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),jr=n(`$ZodCustomStringFormat`,(e,t)=>{j.init(e,t),e._zod.check=n=>{t.fn(n.value)||n.issues.push({code:`invalid_format`,format:t.format,input:n.value,inst:e,continue:!t.abort})}}),Mr=n(`$ZodNumber`,(e,t)=>{A.init(e,t),e._zod.pattern=e._zod.bag.pattern??cn,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Nr=n(`$ZodNumberFormat`,(e,t)=>{In.init(e,t),Mr.init(e,t)}),Pr=n(`$ZodBoolean`,(e,t)=>{A.init(e,t),e._zod.pattern=ln,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Fr=n(`$ZodBigInt`,(e,t)=>{A.init(e,t),e._zod.pattern=on,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=BigInt(n.value)}catch{}return typeof n.value==`bigint`||n.issues.push({expected:`bigint`,code:`invalid_type`,input:n.value,inst:e}),n}}),Ir=n(`$ZodBigIntFormat`,(e,t)=>{Ln.init(e,t),Fr.init(e,t)}),Lr=n(`$ZodSymbol`,(e,t)=>{A.init(e,t),e._zod.parse=(t,n)=>{let r=t.value;return typeof r==`symbol`||t.issues.push({expected:`symbol`,code:`invalid_type`,input:r,inst:e}),t}}),Rr=n(`$ZodUndefined`,(e,t)=>{A.init(e,t),e._zod.pattern=dn,e._zod.values=new Set([void 0]),e._zod.optin=`optional`,e._zod.optout=`optional`,e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),zr=n(`$ZodNull`,(e,t)=>{A.init(e,t),e._zod.pattern=un,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),Br=n(`$ZodAny`,(e,t)=>{A.init(e,t),e._zod.parse=e=>e}),Vr=n(`$ZodUnknown`,(e,t)=>{A.init(e,t),e._zod.parse=e=>e}),Hr=n(`$ZodNever`,(e,t)=>{A.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)}),Ur=n(`$ZodVoid`,(e,t)=>{A.init(e,t),e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`void`,code:`invalid_type`,input:r,inst:e}),t}}),Wr=n(`$ZodDate`,(e,t)=>{A.init(e,t),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=new Date(n.value)}catch{}let i=n.value,a=i instanceof Date;return a&&!Number.isNaN(i.getTime())||n.issues.push({expected:`date`,code:`invalid_type`,input:i,...a?{received:`Invalid Date`}:{},inst:e}),n}});function Gr(e,t,n){e.issues.length&&t.issues.push(...C(n,e.issues)),t.value[n]=e.value}var Kr=n(`$ZodArray`,(e,t)=>{A.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;eGr(t,n,e))):Gr(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function qr(e,t,n,r,i){if(e.issues.length){if(i&&!(n in r))return;t.issues.push(...C(n,e.issues))}e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function Jr(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=we(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function Yr(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optout===`optional`;for(let i in t){if(s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>qr(e,n,i,t,u))):qr(a,n,i,t,u)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var Xr=n(`$ZodObject`,(e,t)=>{if(A.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,`shape`,{get:()=>{let n={...e};return Object.defineProperty(t,`shape`,{value:n}),n}})}let n=ie(()=>Jr(t));m(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=ge,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optout===`optional`,i=n._zod.run({value:s[e],issues:[]},o);i instanceof Promise?c.push(i.then(n=>qr(n,t,e,s,r))):qr(i,t,e,s,r)}return i?Yr(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Zr=n(`$ZodObjectJIT`,(e,t)=>{Xr.init(e,t);let n=e._zod.parse,r=ie(()=>Jr(t)),i=e=>{let t=new tr([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=pe(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=pe(r),s=e[r]?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),s?t.write(` + if (${n}.issues.length) { + if (${o} in input) { + payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${o}, ...iss.path] : [${o}] + }))); + } + } + + if (${n}.value === undefined) { + if (${o} in input) { + newResult[${o}] = undefined; + } + } else { + newResult[${o}] = ${n}.value; + } + + `):t.write(` + if (${n}.issues.length) { + payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${o}, ...iss.path] : [${o}] + }))); + } + + if (${n}.value === undefined) { + if (${o} in input) { + newResult[${o}] = undefined; + } + } else { + newResult[${o}] = ${n}.value; + } + + `)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,s=ge,c=!o.jitless,l=c&&_e.value,u=t.catchall,ee;e._zod.parse=(o,d)=>{ee??=r.value;let te=o.value;return s(te)?c&&l&&d?.async===!1&&d.jitless!==!0?(a||=i(t.shape),o=a(o,d),u?Yr([],te,o,d,ee,e):o):n(o,d):(o.issues.push({expected:`object`,code:`invalid_type`,input:te,inst:e}),o)}});function Qr(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!S(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>w(e,r,s())))}),t)}var $r=n(`$ZodUnion`,(e,t)=>{A.init(e,t),m(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),m(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),m(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),m(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>ae(e.source)).join(`|`)})$`)}});let n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return r(i,a);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:i.value,issues:[]},a);if(t instanceof Promise)s.push(t),o=!0;else{if(t.issues.length===0)return t;s.push(t)}}return o?Promise.all(s).then(t=>Qr(t,i,e,a)):Qr(s,i,e,a)}});function ei(e,t,n,r){let i=e.filter(e=>e.issues.length===0);return i.length===1?(t.value=i[0].value,t):(i.length===0?t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>w(e,r,s())))}):t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:[],inclusive:!1}),t)}var ti=n(`$ZodXor`,(e,t)=>{$r.init(e,t),t.inclusive=!1;let n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return r(i,a);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:i.value,issues:[]},a);t instanceof Promise?(s.push(t),o=!0):s.push(t)}return o?Promise.all(s).then(t=>ei(t,i,e,a)):ei(s,i,e,a)}}),ni=n(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,$r.init(e,t);let n=e._zod.parse;m(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=ie(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!ge(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),i)}}),ri=n(`$ZodIntersection`,(e,t)=>{A.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>ai(e,t,n)):ai(e,i,a)}});function ii(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(_(e)&&_(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=ii(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;re.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),S(e))return e;let o=ii(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var oi=n(`$ZodTuple`,(e,t)=>{A.init(e,t);let n=t.items;e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({input:a,inst:e,expected:`tuple`,code:`invalid_type`}),r;r.value=[];let o=[],s=[...n].reverse().findIndex(e=>e._zod.optin!==`optional`),c=s===-1?0:n.length-s;if(!t.rest){let t=a.length>n.length,i=a.length=a.length&&l>=c)continue;let t=e._zod.run({value:a[l],issues:[]},i);t instanceof Promise?o.push(t.then(e=>si(e,r,l))):si(t,r,l)}if(t.rest){let e=a.slice(n.length);for(let n of e){l++;let e=t.rest._zod.run({value:n,issues:[]},i);e instanceof Promise?o.push(e.then(e=>si(e,r,l))):si(e,r,l)}}return o.length?Promise.all(o).then(()=>r):r}});function si(e,t,n){e.issues.length&&t.issues.push(...C(n,e.issues)),t.value[n]=e.value}var ci=n(`$ZodRecord`,(e,t)=>{A.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!_(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[],o=t.keyType._zod.values;if(o){n.value={};let s=new Set;for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){s.add(typeof e==`number`?e.toString():e);let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...C(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...C(e,o.issues)),n.value[e]=o.value)}let c;for(let e in i)s.has(e)||(c??=[],c.push(e));c&&c.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:c})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let c=t.keyType._zod.run({value:o,issues:[]},r);if(c instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof o==`string`&&cn.test(o)&&c.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},r);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(c=e)}if(c.issues.length){t.mode===`loose`?n.value[o]=i[o]:n.issues.push({code:`invalid_key`,origin:`record`,issues:c.issues.map(e=>w(e,r,s())),input:o,path:[o],inst:e});continue}let l=t.valueType._zod.run({value:i[o],issues:[]},r);l instanceof Promise?a.push(l.then(e=>{e.issues.length&&n.issues.push(...C(o,e.issues)),n.value[c.value]=e.value})):(l.issues.length&&n.issues.push(...C(o,l.issues)),n.value[c.value]=l.value)}}return a.length?Promise.all(a).then(()=>n):n}}),li=n(`$ZodMap`,(e,t)=>{A.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!(i instanceof Map))return n.issues.push({expected:`map`,code:`invalid_type`,input:i,inst:e}),n;let a=[];n.value=new Map;for(let[o,s]of i){let c=t.keyType._zod.run({value:o,issues:[]},r),l=t.valueType._zod.run({value:s,issues:[]},r);c instanceof Promise||l instanceof Promise?a.push(Promise.all([c,l]).then(([t,a])=>{ui(t,a,n,o,i,e,r)})):ui(c,l,n,o,i,e,r)}return a.length?Promise.all(a).then(()=>n):n}});function ui(e,t,n,r,i,a,o){e.issues.length&&(xe.has(typeof r)?n.issues.push(...C(r,e.issues)):n.issues.push({code:`invalid_key`,origin:`map`,input:i,inst:a,issues:e.issues.map(e=>w(e,o,s()))})),t.issues.length&&(xe.has(typeof r)?n.issues.push(...C(r,t.issues)):n.issues.push({origin:`map`,code:`invalid_element`,input:i,inst:a,key:r,issues:t.issues.map(e=>w(e,o,s()))})),n.value.set(e.value,t.value)}var di=n(`$ZodSet`,(e,t)=>{A.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!(i instanceof Set))return n.issues.push({input:i,inst:e,expected:`set`,code:`invalid_type`}),n;let a=[];n.value=new Set;for(let e of i){let i=t.valueType._zod.run({value:e,issues:[]},r);i instanceof Promise?a.push(i.then(e=>fi(e,n))):fi(i,n)}return a.length?Promise.all(a).then(()=>n):n}});function fi(e,t){e.issues.length&&t.issues.push(...e.issues),t.value.add(e.value)}var pi=n(`$ZodEnum`,(e,t)=>{A.init(e,t);let n=ne(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>xe.has(typeof e)).map(e=>typeof e==`string`?v(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),mi=n(`$ZodLiteral`,(e,t)=>{if(A.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?v(e):e?v(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),hi=n(`$ZodFile`,(e,t)=>{A.init(e,t),e._zod.parse=(t,n)=>{let r=t.value;return r instanceof File||t.issues.push({expected:`file`,code:`invalid_type`,input:r,inst:e}),t}}),gi=n(`$ZodTransform`,(e,t)=>{A.init(e,t),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new a(e.constructor.name);let o=t.transform(n.value,n);if(r.async)return(o instanceof Promise?o:Promise.resolve(o)).then(e=>(n.value=e,n));if(o instanceof Promise)throw new i;return n.value=o,n}});function _i(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}var vi=n(`$ZodOptional`,(e,t)=>{A.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,m(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),m(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${ae(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>_i(t,e.value)):_i(r,e.value)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),yi=n(`$ZodExactOptional`,(e,t)=>{vi.init(e,t),m(e._zod,`values`,()=>t.innerType._zod.values),m(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),bi=n(`$ZodNullable`,(e,t)=>{A.init(e,t),m(e._zod,`optin`,()=>t.innerType._zod.optin),m(e._zod,`optout`,()=>t.innerType._zod.optout),m(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${ae(e.source)}|null)$`):void 0}),m(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),xi=n(`$ZodDefault`,(e,t)=>{A.init(e,t),e._zod.optin=`optional`,m(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Si(e,t)):Si(r,t)}});function Si(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Ci=n(`$ZodPrefault`,(e,t)=>{A.init(e,t),e._zod.optin=`optional`,m(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),wi=n(`$ZodNonOptional`,(e,t)=>{A.init(e,t),m(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Ti(t,e)):Ti(i,e)}});function Ti(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var Ei=n(`$ZodSuccess`,(e,t)=>{A.init(e,t),e._zod.parse=(e,n)=>{if(n.direction===`backward`)throw new a(`ZodSuccess`);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>(e.value=t.issues.length===0,e)):(e.value=r.issues.length===0,e)}}),Di=n(`$ZodCatch`,(e,t)=>{A.init(e,t),m(e._zod,`optin`,()=>t.innerType._zod.optin),m(e._zod,`optout`,()=>t.innerType._zod.optout),m(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>w(e,n,s()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>w(e,n,s()))},input:e.value}),e.issues=[]),e)}}),Oi=n(`$ZodNaN`,(e,t)=>{A.init(e,t),e._zod.parse=(t,n)=>((typeof t.value!=`number`||!Number.isNaN(t.value))&&t.issues.push({input:t.value,inst:e,expected:`nan`,code:`invalid_type`}),t)}),ki=n(`$ZodPipe`,(e,t)=>{A.init(e,t),m(e._zod,`values`,()=>t.in._zod.values),m(e._zod,`optin`,()=>t.in._zod.optin),m(e._zod,`optout`,()=>t.out._zod.optout),m(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Ai(e,t.in,n)):Ai(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Ai(e,t.out,n)):Ai(r,t.out,n)}});function Ai(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var ji=n(`$ZodCodec`,(e,t)=>{A.init(e,t),m(e._zod,`values`,()=>t.in._zod.values),m(e._zod,`optin`,()=>t.in._zod.optin),m(e._zod,`optout`,()=>t.out._zod.optout),m(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if((n.direction||`forward`)===`forward`){let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Mi(e,t,n)):Mi(r,t,n)}else{let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Mi(e,t,n)):Mi(r,t,n)}}});function Mi(e,t,n){if(e.issues.length)return e.aborted=!0,e;if((n.direction||`forward`)===`forward`){let r=t.transform(e.value,e);return r instanceof Promise?r.then(r=>Ni(e,r,t.out,n)):Ni(e,r,t.out,n)}else{let r=t.reverseTransform(e.value,e);return r instanceof Promise?r.then(r=>Ni(e,r,t.in,n)):Ni(e,r,t.in,n)}}function Ni(e,t,n,r){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:t,issues:e.issues},r)}var Pi=n(`$ZodReadonly`,(e,t)=>{A.init(e,t),m(e._zod,`propValues`,()=>t.innerType._zod.propValues),m(e._zod,`values`,()=>t.innerType._zod.values),m(e._zod,`optin`,()=>t.innerType?._zod?.optin),m(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Fi):Fi(r)}});function Fi(e){return e.value=Object.freeze(e.value),e}var Ii=n(`$ZodTemplateLiteral`,(e,t)=>{A.init(e,t);let n=[];for(let e of t.parts)if(typeof e==`object`&&e){if(!e._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...e._zod.traits].shift()}`);let t=e._zod.pattern instanceof RegExp?e._zod.pattern.source:e._zod.pattern;if(!t)throw Error(`Invalid template literal part: ${e._zod.traits}`);let r=+!!t.startsWith(`^`),i=t.endsWith(`$`)?t.length-1:t.length;n.push(t.slice(r,i))}else if(e===null||Se.has(typeof e))n.push(v(`${e}`));else throw Error(`Invalid template literal part: ${e}`);e._zod.pattern=RegExp(`^${n.join(``)}$`),e._zod.parse=(n,r)=>typeof n.value==`string`?(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:`invalid_format`,format:t.format??`template_literal`,pattern:e._zod.pattern.source}),n):(n.issues.push({input:n.value,inst:e,expected:`string`,code:`invalid_type`}),n)}),Li=n(`$ZodFunction`,(e,t)=>(A.init(e,t),e._def=t,e._zod.def=t,e.implement=t=>{if(typeof t!=`function`)throw Error(`implement() must be called with a function`);return function(...n){let r=e._def.input?$e(e._def.input,n):n,i=Reflect.apply(t,this,r);return e._def.output?$e(e._def.output,i):i}},e.implementAsync=t=>{if(typeof t!=`function`)throw Error(`implementAsync() must be called with a function`);return async function(...n){let r=e._def.input?await tt(e._def.input,n):n,i=await Reflect.apply(t,this,r);return e._def.output?await tt(e._def.output,i):i}},e._zod.parse=(t,n)=>typeof t.value==`function`?(e._def.output&&e._def.output._zod.def.type===`promise`?t.value=e.implementAsync(t.value):t.value=e.implement(t.value),t):(t.issues.push({code:`invalid_type`,expected:`function`,input:t.value,inst:e}),t),e.input=(...t)=>{let n=e.constructor;return Array.isArray(t[0])?new n({type:`function`,input:new oi({type:`tuple`,items:t[0],rest:t[1]}),output:e._def.output}):new n({type:`function`,input:t[0],output:e._def.output})},e.output=t=>{let n=e.constructor;return new n({type:`function`,input:e._def.input,output:t})},e)),Ri=n(`$ZodPromise`,(e,t)=>{A.init(e,t),e._zod.parse=(e,n)=>Promise.resolve(e.value).then(e=>t.innerType._zod.run({value:e,issues:[]},n))}),zi=n(`$ZodLazy`,(e,t)=>{A.init(e,t),m(e._zod,`innerType`,()=>t.getter()),m(e._zod,`pattern`,()=>e._zod.innerType?._zod?.pattern),m(e._zod,`propValues`,()=>e._zod.innerType?._zod?.propValues),m(e._zod,`optin`,()=>e._zod.innerType?._zod?.optin??void 0),m(e._zod,`optout`,()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Bi=n(`$ZodCustom`,(e,t)=>{k.init(e,t),A.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Vi(t,n,r,e));Vi(i,n,r,e)}});function Vi(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(E(e))}}var Hi=()=>{let e={string:{unit:`حرف`,verb:`أن يحوي`},file:{unit:`بايت`,verb:`أن يحوي`},array:{unit:`عنصر`,verb:`أن يحوي`},set:{unit:`عنصر`,verb:`أن يحوي`}};function t(t){return e[t]??null}let n={regex:`مدخل`,email:`بريد إلكتروني`,url:`رابط`,emoji:`إيموجي`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`تاريخ ووقت بمعيار ISO`,date:`تاريخ بمعيار ISO`,time:`وقت بمعيار ISO`,duration:`مدة بمعيار ISO`,ipv4:`عنوان IPv4`,ipv6:`عنوان IPv6`,cidrv4:`مدى عناوين بصيغة IPv4`,cidrv6:`مدى عناوين بصيغة IPv6`,base64:`نَص بترميز base64-encoded`,base64url:`نَص بترميز base64url-encoded`,json_string:`نَص على هيئة JSON`,e164:`رقم هاتف بمعيار E.164`,jwt:`JWT`,template_literal:`مدخل`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`مدخلات غير مقبولة: يفترض إدخال instanceof ${e.expected}، ولكن تم إدخال ${i}`:`مدخلات غير مقبولة: يفترض إدخال ${t}، ولكن تم إدخال ${i}`}case`invalid_value`:return e.values.length===1?`مدخلات غير مقبولة: يفترض إدخال ${x(e.values[0])}`:`اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?` أكبر من اللازم: يفترض أن تكون ${e.origin??`القيمة`} ${n} ${e.maximum.toString()} ${r.unit??`عنصر`}`:`أكبر من اللازم: يفترض أن تكون ${e.origin??`القيمة`} ${n} ${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`أصغر من اللازم: يفترض لـ ${e.origin} أن يكون ${n} ${e.minimum.toString()} ${r.unit}`:`أصغر من اللازم: يفترض لـ ${e.origin} أن يكون ${n} ${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`نَص غير مقبول: يجب أن يبدأ بـ "${e.prefix}"`:t.format===`ends_with`?`نَص غير مقبول: يجب أن ينتهي بـ "${t.suffix}"`:t.format===`includes`?`نَص غير مقبول: يجب أن يتضمَّن "${t.includes}"`:t.format===`regex`?`نَص غير مقبول: يجب أن يطابق النمط ${t.pattern}`:`${n[t.format]??e.format} غير مقبول`}case`not_multiple_of`:return`رقم غير مقبول: يجب أن يكون من مضاعفات ${e.divisor}`;case`unrecognized_keys`:return`معرف${e.keys.length>1?`ات`:``} غريب${e.keys.length>1?`ة`:``}: ${f(e.keys,`، `)}`;case`invalid_key`:return`معرف غير مقبول في ${e.origin}`;case`invalid_union`:return`مدخل غير مقبول`;case`invalid_element`:return`مدخل غير مقبول في ${e.origin}`;default:return`مدخل غير مقبول`}}};function Ui(){return{localeError:Hi()}}var Wi=()=>{let e={string:{unit:`simvol`,verb:`olmalıdır`},file:{unit:`bayt`,verb:`olmalıdır`},array:{unit:`element`,verb:`olmalıdır`},set:{unit:`element`,verb:`olmalıdır`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Yanlış dəyər: gözlənilən instanceof ${e.expected}, daxil olan ${i}`:`Yanlış dəyər: gözlənilən ${t}, daxil olan ${i}`}case`invalid_value`:return e.values.length===1?`Yanlış dəyər: gözlənilən ${x(e.values[0])}`:`Yanlış seçim: aşağıdakılardan biri olmalıdır: ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Çox böyük: gözlənilən ${e.origin??`dəyər`} ${n}${e.maximum.toString()} ${r.unit??`element`}`:`Çox böyük: gözlənilən ${e.origin??`dəyər`} ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Çox kiçik: gözlənilən ${e.origin} ${n}${e.minimum.toString()} ${r.unit}`:`Çox kiçik: gözlənilən ${e.origin} ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Yanlış mətn: "${t.prefix}" ilə başlamalıdır`:t.format===`ends_with`?`Yanlış mətn: "${t.suffix}" ilə bitməlidir`:t.format===`includes`?`Yanlış mətn: "${t.includes}" daxil olmalıdır`:t.format===`regex`?`Yanlış mətn: ${t.pattern} şablonuna uyğun olmalıdır`:`Yanlış ${n[t.format]??e.format}`}case`not_multiple_of`:return`Yanlış ədəd: ${e.divisor} ilə bölünə bilən olmalıdır`;case`unrecognized_keys`:return`Tanınmayan açar${e.keys.length>1?`lar`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`${e.origin} daxilində yanlış açar`;case`invalid_union`:return`Yanlış dəyər`;case`invalid_element`:return`${e.origin} daxilində yanlış dəyər`;default:return`Yanlış dəyər`}}};function Gi(){return{localeError:Wi()}}function Ki(e,t,n,r){let i=Math.abs(e),a=i%10,o=i%100;return o>=11&&o<=19?r:a===1?t:a>=2&&a<=4?n:r}var qi=()=>{let e={string:{unit:{one:`сімвал`,few:`сімвалы`,many:`сімвалаў`},verb:`мець`},array:{unit:{one:`элемент`,few:`элементы`,many:`элементаў`},verb:`мець`},set:{unit:{one:`элемент`,few:`элементы`,many:`элементаў`},verb:`мець`},file:{unit:{one:`байт`,few:`байты`,many:`байтаў`},verb:`мець`}};function t(t){return e[t]??null}let n={regex:`увод`,email:`email адрас`,url:`URL`,emoji:`эмодзі`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO дата і час`,date:`ISO дата`,time:`ISO час`,duration:`ISO працягласць`,ipv4:`IPv4 адрас`,ipv6:`IPv6 адрас`,cidrv4:`IPv4 дыяпазон`,cidrv6:`IPv6 дыяпазон`,base64:`радок у фармаце base64`,base64url:`радок у фармаце base64url`,json_string:`JSON радок`,e164:`нумар E.164`,jwt:`JWT`,template_literal:`увод`},r={nan:`NaN`,number:`лік`,array:`масіў`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Няправільны ўвод: чакаўся instanceof ${e.expected}, атрымана ${i}`:`Няправільны ўвод: чакаўся ${t}, атрымана ${i}`}case`invalid_value`:return e.values.length===1?`Няправільны ўвод: чакалася ${x(e.values[0])}`:`Няправільны варыянт: чакаўся адзін з ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);if(r){let t=Ki(Number(e.maximum),r.unit.one,r.unit.few,r.unit.many);return`Занадта вялікі: чакалася, што ${e.origin??`значэнне`} павінна ${r.verb} ${n}${e.maximum.toString()} ${t}`}return`Занадта вялікі: чакалася, што ${e.origin??`значэнне`} павінна быць ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);if(r){let t=Ki(Number(e.minimum),r.unit.one,r.unit.few,r.unit.many);return`Занадта малы: чакалася, што ${e.origin} павінна ${r.verb} ${n}${e.minimum.toString()} ${t}`}return`Занадта малы: чакалася, што ${e.origin} павінна быць ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Няправільны радок: павінен пачынацца з "${t.prefix}"`:t.format===`ends_with`?`Няправільны радок: павінен заканчвацца на "${t.suffix}"`:t.format===`includes`?`Няправільны радок: павінен змяшчаць "${t.includes}"`:t.format===`regex`?`Няправільны радок: павінен адпавядаць шаблону ${t.pattern}`:`Няправільны ${n[t.format]??e.format}`}case`not_multiple_of`:return`Няправільны лік: павінен быць кратным ${e.divisor}`;case`unrecognized_keys`:return`Нераспазнаны ${e.keys.length>1?`ключы`:`ключ`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Няправільны ключ у ${e.origin}`;case`invalid_union`:return`Няправільны ўвод`;case`invalid_element`:return`Няправільнае значэнне ў ${e.origin}`;default:return`Няправільны ўвод`}}};function Ji(){return{localeError:qi()}}var Yi=()=>{let e={string:{unit:`символа`,verb:`да съдържа`},file:{unit:`байта`,verb:`да съдържа`},array:{unit:`елемента`,verb:`да съдържа`},set:{unit:`елемента`,verb:`да съдържа`}};function t(t){return e[t]??null}let n={regex:`вход`,email:`имейл адрес`,url:`URL`,emoji:`емоджи`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO време`,date:`ISO дата`,time:`ISO време`,duration:`ISO продължителност`,ipv4:`IPv4 адрес`,ipv6:`IPv6 адрес`,cidrv4:`IPv4 диапазон`,cidrv6:`IPv6 диапазон`,base64:`base64-кодиран низ`,base64url:`base64url-кодиран низ`,json_string:`JSON низ`,e164:`E.164 номер`,jwt:`JWT`,template_literal:`вход`},r={nan:`NaN`,number:`число`,array:`масив`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Невалиден вход: очакван instanceof ${e.expected}, получен ${i}`:`Невалиден вход: очакван ${t}, получен ${i}`}case`invalid_value`:return e.values.length===1?`Невалиден вход: очакван ${x(e.values[0])}`:`Невалидна опция: очаквано едно от ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Твърде голямо: очаква се ${e.origin??`стойност`} да съдържа ${n}${e.maximum.toString()} ${r.unit??`елемента`}`:`Твърде голямо: очаква се ${e.origin??`стойност`} да бъде ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Твърде малко: очаква се ${e.origin} да съдържа ${n}${e.minimum.toString()} ${r.unit}`:`Твърде малко: очаква се ${e.origin} да бъде ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;if(t.format===`starts_with`)return`Невалиден низ: трябва да започва с "${t.prefix}"`;if(t.format===`ends_with`)return`Невалиден низ: трябва да завършва с "${t.suffix}"`;if(t.format===`includes`)return`Невалиден низ: трябва да включва "${t.includes}"`;if(t.format===`regex`)return`Невалиден низ: трябва да съвпада с ${t.pattern}`;let r=`Невалиден`;return t.format===`emoji`&&(r=`Невалидно`),t.format===`datetime`&&(r=`Невалидно`),t.format===`date`&&(r=`Невалидна`),t.format===`time`&&(r=`Невалидно`),t.format===`duration`&&(r=`Невалидна`),`${r} ${n[t.format]??e.format}`}case`not_multiple_of`:return`Невалидно число: трябва да бъде кратно на ${e.divisor}`;case`unrecognized_keys`:return`Неразпознат${e.keys.length>1?`и`:``} ключ${e.keys.length>1?`ове`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Невалиден ключ в ${e.origin}`;case`invalid_union`:return`Невалиден вход`;case`invalid_element`:return`Невалидна стойност в ${e.origin}`;default:return`Невалиден вход`}}};function Xi(){return{localeError:Yi()}}var Zi=()=>{let e={string:{unit:`caràcters`,verb:`contenir`},file:{unit:`bytes`,verb:`contenir`},array:{unit:`elements`,verb:`contenir`},set:{unit:`elements`,verb:`contenir`}};function t(t){return e[t]??null}let n={regex:`entrada`,email:`adreça electrònica`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`data i hora ISO`,date:`data ISO`,time:`hora ISO`,duration:`durada ISO`,ipv4:`adreça IPv4`,ipv6:`adreça IPv6`,cidrv4:`rang IPv4`,cidrv6:`rang IPv6`,base64:`cadena codificada en base64`,base64url:`cadena codificada en base64url`,json_string:`cadena JSON`,e164:`número E.164`,jwt:`JWT`,template_literal:`entrada`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Tipus invàlid: s'esperava instanceof ${e.expected}, s'ha rebut ${i}`:`Tipus invàlid: s'esperava ${t}, s'ha rebut ${i}`}case`invalid_value`:return e.values.length===1?`Valor invàlid: s'esperava ${x(e.values[0])}`:`Opció invàlida: s'esperava una de ${f(e.values,` o `)}`;case`too_big`:{let n=e.inclusive?`com a màxim`:`menys de`,r=t(e.origin);return r?`Massa gran: s'esperava que ${e.origin??`el valor`} contingués ${n} ${e.maximum.toString()} ${r.unit??`elements`}`:`Massa gran: s'esperava que ${e.origin??`el valor`} fos ${n} ${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`com a mínim`:`més de`,r=t(e.origin);return r?`Massa petit: s'esperava que ${e.origin} contingués ${n} ${e.minimum.toString()} ${r.unit}`:`Massa petit: s'esperava que ${e.origin} fos ${n} ${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Format invàlid: ha de començar amb "${t.prefix}"`:t.format===`ends_with`?`Format invàlid: ha d'acabar amb "${t.suffix}"`:t.format===`includes`?`Format invàlid: ha d'incloure "${t.includes}"`:t.format===`regex`?`Format invàlid: ha de coincidir amb el patró ${t.pattern}`:`Format invàlid per a ${n[t.format]??e.format}`}case`not_multiple_of`:return`Número invàlid: ha de ser múltiple de ${e.divisor}`;case`unrecognized_keys`:return`Clau${e.keys.length>1?`s`:``} no reconeguda${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Clau invàlida a ${e.origin}`;case`invalid_union`:return`Entrada invàlida`;case`invalid_element`:return`Element invàlid a ${e.origin}`;default:return`Entrada invàlida`}}};function Qi(){return{localeError:Zi()}}var $i=()=>{let e={string:{unit:`znaků`,verb:`mít`},file:{unit:`bajtů`,verb:`mít`},array:{unit:`prvků`,verb:`mít`},set:{unit:`prvků`,verb:`mít`}};function t(t){return e[t]??null}let n={regex:`regulární výraz`,email:`e-mailová adresa`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`datum a čas ve formátu ISO`,date:`datum ve formátu ISO`,time:`čas ve formátu ISO`,duration:`doba trvání ISO`,ipv4:`IPv4 adresa`,ipv6:`IPv6 adresa`,cidrv4:`rozsah IPv4`,cidrv6:`rozsah IPv6`,base64:`řetězec zakódovaný ve formátu base64`,base64url:`řetězec zakódovaný ve formátu base64url`,json_string:`řetězec ve formátu JSON`,e164:`číslo E.164`,jwt:`JWT`,template_literal:`vstup`},r={nan:`NaN`,number:`číslo`,string:`řetězec`,function:`funkce`,array:`pole`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Neplatný vstup: očekáváno instanceof ${e.expected}, obdrženo ${i}`:`Neplatný vstup: očekáváno ${t}, obdrženo ${i}`}case`invalid_value`:return e.values.length===1?`Neplatný vstup: očekáváno ${x(e.values[0])}`:`Neplatná možnost: očekávána jedna z hodnot ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Hodnota je příliš velká: ${e.origin??`hodnota`} musí mít ${n}${e.maximum.toString()} ${r.unit??`prvků`}`:`Hodnota je příliš velká: ${e.origin??`hodnota`} musí být ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Hodnota je příliš malá: ${e.origin??`hodnota`} musí mít ${n}${e.minimum.toString()} ${r.unit??`prvků`}`:`Hodnota je příliš malá: ${e.origin??`hodnota`} musí být ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Neplatný řetězec: musí začínat na "${t.prefix}"`:t.format===`ends_with`?`Neplatný řetězec: musí končit na "${t.suffix}"`:t.format===`includes`?`Neplatný řetězec: musí obsahovat "${t.includes}"`:t.format===`regex`?`Neplatný řetězec: musí odpovídat vzoru ${t.pattern}`:`Neplatný formát ${n[t.format]??e.format}`}case`not_multiple_of`:return`Neplatné číslo: musí být násobkem ${e.divisor}`;case`unrecognized_keys`:return`Neznámé klíče: ${f(e.keys,`, `)}`;case`invalid_key`:return`Neplatný klíč v ${e.origin}`;case`invalid_union`:return`Neplatný vstup`;case`invalid_element`:return`Neplatná hodnota v ${e.origin}`;default:return`Neplatný vstup`}}};function ea(){return{localeError:$i()}}var ta=()=>{let e={string:{unit:`tegn`,verb:`havde`},file:{unit:`bytes`,verb:`havde`},array:{unit:`elementer`,verb:`indeholdt`},set:{unit:`elementer`,verb:`indeholdt`}};function t(t){return e[t]??null}let n={regex:`input`,email:`e-mailadresse`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO dato- og klokkeslæt`,date:`ISO-dato`,time:`ISO-klokkeslæt`,duration:`ISO-varighed`,ipv4:`IPv4-område`,ipv6:`IPv6-område`,cidrv4:`IPv4-spektrum`,cidrv6:`IPv6-spektrum`,base64:`base64-kodet streng`,base64url:`base64url-kodet streng`,json_string:`JSON-streng`,e164:`E.164-nummer`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`,string:`streng`,number:`tal`,boolean:`boolean`,array:`liste`,object:`objekt`,set:`sæt`,file:`fil`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Ugyldigt input: forventede instanceof ${e.expected}, fik ${i}`:`Ugyldigt input: forventede ${t}, fik ${i}`}case`invalid_value`:return e.values.length===1?`Ugyldig værdi: forventede ${x(e.values[0])}`:`Ugyldigt valg: forventede en af følgende ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,i=t(e.origin),a=r[e.origin]??e.origin;return i?`For stor: forventede ${a??`value`} ${i.verb} ${n} ${e.maximum.toString()} ${i.unit??`elementer`}`:`For stor: forventede ${a??`value`} havde ${n} ${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,i=t(e.origin),a=r[e.origin]??e.origin;return i?`For lille: forventede ${a} ${i.verb} ${n} ${e.minimum.toString()} ${i.unit}`:`For lille: forventede ${a} havde ${n} ${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Ugyldig streng: skal starte med "${t.prefix}"`:t.format===`ends_with`?`Ugyldig streng: skal ende med "${t.suffix}"`:t.format===`includes`?`Ugyldig streng: skal indeholde "${t.includes}"`:t.format===`regex`?`Ugyldig streng: skal matche mønsteret ${t.pattern}`:`Ugyldig ${n[t.format]??e.format}`}case`not_multiple_of`:return`Ugyldigt tal: skal være deleligt med ${e.divisor}`;case`unrecognized_keys`:return`${e.keys.length>1?`Ukendte nøgler`:`Ukendt nøgle`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Ugyldig nøgle i ${e.origin}`;case`invalid_union`:return`Ugyldigt input: matcher ingen af de tilladte typer`;case`invalid_element`:return`Ugyldig værdi i ${e.origin}`;default:return`Ugyldigt input`}}};function na(){return{localeError:ta()}}var ra=()=>{let e={string:{unit:`Zeichen`,verb:`zu haben`},file:{unit:`Bytes`,verb:`zu haben`},array:{unit:`Elemente`,verb:`zu haben`},set:{unit:`Elemente`,verb:`zu haben`}};function t(t){return e[t]??null}let n={regex:`Eingabe`,email:`E-Mail-Adresse`,url:`URL`,emoji:`Emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO-Datum und -Uhrzeit`,date:`ISO-Datum`,time:`ISO-Uhrzeit`,duration:`ISO-Dauer`,ipv4:`IPv4-Adresse`,ipv6:`IPv6-Adresse`,cidrv4:`IPv4-Bereich`,cidrv6:`IPv6-Bereich`,base64:`Base64-codierter String`,base64url:`Base64-URL-codierter String`,json_string:`JSON-String`,e164:`E.164-Nummer`,jwt:`JWT`,template_literal:`Eingabe`},r={nan:`NaN`,number:`Zahl`,array:`Array`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Ungültige Eingabe: erwartet instanceof ${e.expected}, erhalten ${i}`:`Ungültige Eingabe: erwartet ${t}, erhalten ${i}`}case`invalid_value`:return e.values.length===1?`Ungültige Eingabe: erwartet ${x(e.values[0])}`:`Ungültige Option: erwartet eine von ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Zu groß: erwartet, dass ${e.origin??`Wert`} ${n}${e.maximum.toString()} ${r.unit??`Elemente`} hat`:`Zu groß: erwartet, dass ${e.origin??`Wert`} ${n}${e.maximum.toString()} ist`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Zu klein: erwartet, dass ${e.origin} ${n}${e.minimum.toString()} ${r.unit} hat`:`Zu klein: erwartet, dass ${e.origin} ${n}${e.minimum.toString()} ist`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Ungültiger String: muss mit "${t.prefix}" beginnen`:t.format===`ends_with`?`Ungültiger String: muss mit "${t.suffix}" enden`:t.format===`includes`?`Ungültiger String: muss "${t.includes}" enthalten`:t.format===`regex`?`Ungültiger String: muss dem Muster ${t.pattern} entsprechen`:`Ungültig: ${n[t.format]??e.format}`}case`not_multiple_of`:return`Ungültige Zahl: muss ein Vielfaches von ${e.divisor} sein`;case`unrecognized_keys`:return`${e.keys.length>1?`Unbekannte Schlüssel`:`Unbekannter Schlüssel`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Ungültiger Schlüssel in ${e.origin}`;case`invalid_union`:return`Ungültige Eingabe`;case`invalid_element`:return`Ungültiger Wert in ${e.origin}`;default:return`Ungültige Eingabe`}}};function ia(){return{localeError:ra()}}var aa=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input);return`Invalid input: expected ${t}, received ${r[n]??n}`}case`invalid_value`:return e.values.length===1?`Invalid input: expected ${x(e.values[0])}`:`Invalid option: expected one of ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function oa(){return{localeError:aa()}}var sa=()=>{let e={string:{unit:`karaktrojn`,verb:`havi`},file:{unit:`bajtojn`,verb:`havi`},array:{unit:`elementojn`,verb:`havi`},set:{unit:`elementojn`,verb:`havi`}};function t(t){return e[t]??null}let n={regex:`enigo`,email:`retadreso`,url:`URL`,emoji:`emoĝio`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO-datotempo`,date:`ISO-dato`,time:`ISO-tempo`,duration:`ISO-daŭro`,ipv4:`IPv4-adreso`,ipv6:`IPv6-adreso`,cidrv4:`IPv4-rango`,cidrv6:`IPv6-rango`,base64:`64-ume kodita karaktraro`,base64url:`URL-64-ume kodita karaktraro`,json_string:`JSON-karaktraro`,e164:`E.164-nombro`,jwt:`JWT`,template_literal:`enigo`},r={nan:`NaN`,number:`nombro`,array:`tabelo`,null:`senvalora`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Nevalida enigo: atendiĝis instanceof ${e.expected}, riceviĝis ${i}`:`Nevalida enigo: atendiĝis ${t}, riceviĝis ${i}`}case`invalid_value`:return e.values.length===1?`Nevalida enigo: atendiĝis ${x(e.values[0])}`:`Nevalida opcio: atendiĝis unu el ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Tro granda: atendiĝis ke ${e.origin??`valoro`} havu ${n}${e.maximum.toString()} ${r.unit??`elementojn`}`:`Tro granda: atendiĝis ke ${e.origin??`valoro`} havu ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Tro malgranda: atendiĝis ke ${e.origin} havu ${n}${e.minimum.toString()} ${r.unit}`:`Tro malgranda: atendiĝis ke ${e.origin} estu ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Nevalida karaktraro: devas komenciĝi per "${t.prefix}"`:t.format===`ends_with`?`Nevalida karaktraro: devas finiĝi per "${t.suffix}"`:t.format===`includes`?`Nevalida karaktraro: devas inkluzivi "${t.includes}"`:t.format===`regex`?`Nevalida karaktraro: devas kongrui kun la modelo ${t.pattern}`:`Nevalida ${n[t.format]??e.format}`}case`not_multiple_of`:return`Nevalida nombro: devas esti oblo de ${e.divisor}`;case`unrecognized_keys`:return`Nekonata${e.keys.length>1?`j`:``} ŝlosilo${e.keys.length>1?`j`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Nevalida ŝlosilo en ${e.origin}`;case`invalid_union`:return`Nevalida enigo`;case`invalid_element`:return`Nevalida valoro en ${e.origin}`;default:return`Nevalida enigo`}}};function ca(){return{localeError:sa()}}var la=()=>{let e={string:{unit:`caracteres`,verb:`tener`},file:{unit:`bytes`,verb:`tener`},array:{unit:`elementos`,verb:`tener`},set:{unit:`elementos`,verb:`tener`}};function t(t){return e[t]??null}let n={regex:`entrada`,email:`dirección de correo electrónico`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`fecha y hora ISO`,date:`fecha ISO`,time:`hora ISO`,duration:`duración ISO`,ipv4:`dirección IPv4`,ipv6:`dirección IPv6`,cidrv4:`rango IPv4`,cidrv6:`rango IPv6`,base64:`cadena codificada en base64`,base64url:`URL codificada en base64`,json_string:`cadena JSON`,e164:`número E.164`,jwt:`JWT`,template_literal:`entrada`},r={nan:`NaN`,string:`texto`,number:`número`,boolean:`booleano`,array:`arreglo`,object:`objeto`,set:`conjunto`,file:`archivo`,date:`fecha`,bigint:`número grande`,symbol:`símbolo`,undefined:`indefinido`,null:`nulo`,function:`función`,map:`mapa`,record:`registro`,tuple:`tupla`,enum:`enumeración`,union:`unión`,literal:`literal`,promise:`promesa`,void:`vacío`,never:`nunca`,unknown:`desconocido`,any:`cualquiera`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Entrada inválida: se esperaba instanceof ${e.expected}, recibido ${i}`:`Entrada inválida: se esperaba ${t}, recibido ${i}`}case`invalid_value`:return e.values.length===1?`Entrada inválida: se esperaba ${x(e.values[0])}`:`Opción inválida: se esperaba una de ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,i=t(e.origin),a=r[e.origin]??e.origin;return i?`Demasiado grande: se esperaba que ${a??`valor`} tuviera ${n}${e.maximum.toString()} ${i.unit??`elementos`}`:`Demasiado grande: se esperaba que ${a??`valor`} fuera ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,i=t(e.origin),a=r[e.origin]??e.origin;return i?`Demasiado pequeño: se esperaba que ${a} tuviera ${n}${e.minimum.toString()} ${i.unit}`:`Demasiado pequeño: se esperaba que ${a} fuera ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Cadena inválida: debe comenzar con "${t.prefix}"`:t.format===`ends_with`?`Cadena inválida: debe terminar en "${t.suffix}"`:t.format===`includes`?`Cadena inválida: debe incluir "${t.includes}"`:t.format===`regex`?`Cadena inválida: debe coincidir con el patrón ${t.pattern}`:`Inválido ${n[t.format]??e.format}`}case`not_multiple_of`:return`Número inválido: debe ser múltiplo de ${e.divisor}`;case`unrecognized_keys`:return`Llave${e.keys.length>1?`s`:``} desconocida${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Llave inválida en ${r[e.origin]??e.origin}`;case`invalid_union`:return`Entrada inválida`;case`invalid_element`:return`Valor inválido en ${r[e.origin]??e.origin}`;default:return`Entrada inválida`}}};function ua(){return{localeError:la()}}var da=()=>{let e={string:{unit:`کاراکتر`,verb:`داشته باشد`},file:{unit:`بایت`,verb:`داشته باشد`},array:{unit:`آیتم`,verb:`داشته باشد`},set:{unit:`آیتم`,verb:`داشته باشد`}};function t(t){return e[t]??null}let n={regex:`ورودی`,email:`آدرس ایمیل`,url:`URL`,emoji:`ایموجی`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`تاریخ و زمان ایزو`,date:`تاریخ ایزو`,time:`زمان ایزو`,duration:`مدت زمان ایزو`,ipv4:`IPv4 آدرس`,ipv6:`IPv6 آدرس`,cidrv4:`IPv4 دامنه`,cidrv6:`IPv6 دامنه`,base64:`base64-encoded رشته`,base64url:`base64url-encoded رشته`,json_string:`JSON رشته`,e164:`E.164 عدد`,jwt:`JWT`,template_literal:`ورودی`},r={nan:`NaN`,number:`عدد`,array:`آرایه`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`ورودی نامعتبر: می‌بایست instanceof ${e.expected} می‌بود، ${i} دریافت شد`:`ورودی نامعتبر: می‌بایست ${t} می‌بود، ${i} دریافت شد`}case`invalid_value`:return e.values.length===1?`ورودی نامعتبر: می‌بایست ${x(e.values[0])} می‌بود`:`گزینه نامعتبر: می‌بایست یکی از ${f(e.values,`|`)} می‌بود`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`خیلی بزرگ: ${e.origin??`مقدار`} باید ${n}${e.maximum.toString()} ${r.unit??`عنصر`} باشد`:`خیلی بزرگ: ${e.origin??`مقدار`} باید ${n}${e.maximum.toString()} باشد`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`خیلی کوچک: ${e.origin} باید ${n}${e.minimum.toString()} ${r.unit} باشد`:`خیلی کوچک: ${e.origin} باید ${n}${e.minimum.toString()} باشد`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`رشته نامعتبر: باید با "${t.prefix}" شروع شود`:t.format===`ends_with`?`رشته نامعتبر: باید با "${t.suffix}" تمام شود`:t.format===`includes`?`رشته نامعتبر: باید شامل "${t.includes}" باشد`:t.format===`regex`?`رشته نامعتبر: باید با الگوی ${t.pattern} مطابقت داشته باشد`:`${n[t.format]??e.format} نامعتبر`}case`not_multiple_of`:return`عدد نامعتبر: باید مضرب ${e.divisor} باشد`;case`unrecognized_keys`:return`کلید${e.keys.length>1?`های`:``} ناشناس: ${f(e.keys,`, `)}`;case`invalid_key`:return`کلید ناشناس در ${e.origin}`;case`invalid_union`:return`ورودی نامعتبر`;case`invalid_element`:return`مقدار نامعتبر در ${e.origin}`;default:return`ورودی نامعتبر`}}};function fa(){return{localeError:da()}}var pa=()=>{let e={string:{unit:`merkkiä`,subject:`merkkijonon`},file:{unit:`tavua`,subject:`tiedoston`},array:{unit:`alkiota`,subject:`listan`},set:{unit:`alkiota`,subject:`joukon`},number:{unit:``,subject:`luvun`},bigint:{unit:``,subject:`suuren kokonaisluvun`},int:{unit:``,subject:`kokonaisluvun`},date:{unit:``,subject:`päivämäärän`}};function t(t){return e[t]??null}let n={regex:`säännöllinen lauseke`,email:`sähköpostiosoite`,url:`URL-osoite`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO-aikaleima`,date:`ISO-päivämäärä`,time:`ISO-aika`,duration:`ISO-kesto`,ipv4:`IPv4-osoite`,ipv6:`IPv6-osoite`,cidrv4:`IPv4-alue`,cidrv6:`IPv6-alue`,base64:`base64-koodattu merkkijono`,base64url:`base64url-koodattu merkkijono`,json_string:`JSON-merkkijono`,e164:`E.164-luku`,jwt:`JWT`,template_literal:`templaattimerkkijono`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Virheellinen tyyppi: odotettiin instanceof ${e.expected}, oli ${i}`:`Virheellinen tyyppi: odotettiin ${t}, oli ${i}`}case`invalid_value`:return e.values.length===1?`Virheellinen syöte: täytyy olla ${x(e.values[0])}`:`Virheellinen valinta: täytyy olla yksi seuraavista: ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Liian suuri: ${r.subject} täytyy olla ${n}${e.maximum.toString()} ${r.unit}`.trim():`Liian suuri: arvon täytyy olla ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Liian pieni: ${r.subject} täytyy olla ${n}${e.minimum.toString()} ${r.unit}`.trim():`Liian pieni: arvon täytyy olla ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Virheellinen syöte: täytyy alkaa "${t.prefix}"`:t.format===`ends_with`?`Virheellinen syöte: täytyy loppua "${t.suffix}"`:t.format===`includes`?`Virheellinen syöte: täytyy sisältää "${t.includes}"`:t.format===`regex`?`Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${t.pattern}`:`Virheellinen ${n[t.format]??e.format}`}case`not_multiple_of`:return`Virheellinen luku: täytyy olla luvun ${e.divisor} monikerta`;case`unrecognized_keys`:return`${e.keys.length>1?`Tuntemattomat avaimet`:`Tuntematon avain`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Virheellinen avain tietueessa`;case`invalid_union`:return`Virheellinen unioni`;case`invalid_element`:return`Virheellinen arvo joukossa`;default:return`Virheellinen syöte`}}};function ma(){return{localeError:pa()}}var ha=()=>{let e={string:{unit:`caractères`,verb:`avoir`},file:{unit:`octets`,verb:`avoir`},array:{unit:`éléments`,verb:`avoir`},set:{unit:`éléments`,verb:`avoir`}};function t(t){return e[t]??null}let n={regex:`entrée`,email:`adresse e-mail`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`date et heure ISO`,date:`date ISO`,time:`heure ISO`,duration:`durée ISO`,ipv4:`adresse IPv4`,ipv6:`adresse IPv6`,cidrv4:`plage IPv4`,cidrv6:`plage IPv6`,base64:`chaîne encodée en base64`,base64url:`chaîne encodée en base64url`,json_string:`chaîne JSON`,e164:`numéro E.164`,jwt:`JWT`,template_literal:`entrée`},r={nan:`NaN`,number:`nombre`,array:`tableau`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Entrée invalide : instanceof ${e.expected} attendu, ${i} reçu`:`Entrée invalide : ${t} attendu, ${i} reçu`}case`invalid_value`:return e.values.length===1?`Entrée invalide : ${x(e.values[0])} attendu`:`Option invalide : une valeur parmi ${f(e.values,`|`)} attendue`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Trop grand : ${e.origin??`valeur`} doit ${r.verb} ${n}${e.maximum.toString()} ${r.unit??`élément(s)`}`:`Trop grand : ${e.origin??`valeur`} doit être ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Trop petit : ${e.origin} doit ${r.verb} ${n}${e.minimum.toString()} ${r.unit}`:`Trop petit : ${e.origin} doit être ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Chaîne invalide : doit commencer par "${t.prefix}"`:t.format===`ends_with`?`Chaîne invalide : doit se terminer par "${t.suffix}"`:t.format===`includes`?`Chaîne invalide : doit inclure "${t.includes}"`:t.format===`regex`?`Chaîne invalide : doit correspondre au modèle ${t.pattern}`:`${n[t.format]??e.format} invalide`}case`not_multiple_of`:return`Nombre invalide : doit être un multiple de ${e.divisor}`;case`unrecognized_keys`:return`Clé${e.keys.length>1?`s`:``} non reconnue${e.keys.length>1?`s`:``} : ${f(e.keys,`, `)}`;case`invalid_key`:return`Clé invalide dans ${e.origin}`;case`invalid_union`:return`Entrée invalide`;case`invalid_element`:return`Valeur invalide dans ${e.origin}`;default:return`Entrée invalide`}}};function ga(){return{localeError:ha()}}var _a=()=>{let e={string:{unit:`caractères`,verb:`avoir`},file:{unit:`octets`,verb:`avoir`},array:{unit:`éléments`,verb:`avoir`},set:{unit:`éléments`,verb:`avoir`}};function t(t){return e[t]??null}let n={regex:`entrée`,email:`adresse courriel`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`date-heure ISO`,date:`date ISO`,time:`heure ISO`,duration:`durée ISO`,ipv4:`adresse IPv4`,ipv6:`adresse IPv6`,cidrv4:`plage IPv4`,cidrv6:`plage IPv6`,base64:`chaîne encodée en base64`,base64url:`chaîne encodée en base64url`,json_string:`chaîne JSON`,e164:`numéro E.164`,jwt:`JWT`,template_literal:`entrée`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Entrée invalide : attendu instanceof ${e.expected}, reçu ${i}`:`Entrée invalide : attendu ${t}, reçu ${i}`}case`invalid_value`:return e.values.length===1?`Entrée invalide : attendu ${x(e.values[0])}`:`Option invalide : attendu l'une des valeurs suivantes ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`≤`:`<`,r=t(e.origin);return r?`Trop grand : attendu que ${e.origin??`la valeur`} ait ${n}${e.maximum.toString()} ${r.unit}`:`Trop grand : attendu que ${e.origin??`la valeur`} soit ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`≥`:`>`,r=t(e.origin);return r?`Trop petit : attendu que ${e.origin} ait ${n}${e.minimum.toString()} ${r.unit}`:`Trop petit : attendu que ${e.origin} soit ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Chaîne invalide : doit commencer par "${t.prefix}"`:t.format===`ends_with`?`Chaîne invalide : doit se terminer par "${t.suffix}"`:t.format===`includes`?`Chaîne invalide : doit inclure "${t.includes}"`:t.format===`regex`?`Chaîne invalide : doit correspondre au motif ${t.pattern}`:`${n[t.format]??e.format} invalide`}case`not_multiple_of`:return`Nombre invalide : doit être un multiple de ${e.divisor}`;case`unrecognized_keys`:return`Clé${e.keys.length>1?`s`:``} non reconnue${e.keys.length>1?`s`:``} : ${f(e.keys,`, `)}`;case`invalid_key`:return`Clé invalide dans ${e.origin}`;case`invalid_union`:return`Entrée invalide`;case`invalid_element`:return`Valeur invalide dans ${e.origin}`;default:return`Entrée invalide`}}};function va(){return{localeError:_a()}}var ya=()=>{let e={string:{label:`מחרוזת`,gender:`f`},number:{label:`מספר`,gender:`m`},boolean:{label:`ערך בוליאני`,gender:`m`},bigint:{label:`BigInt`,gender:`m`},date:{label:`תאריך`,gender:`m`},array:{label:`מערך`,gender:`m`},object:{label:`אובייקט`,gender:`m`},null:{label:`ערך ריק (null)`,gender:`m`},undefined:{label:`ערך לא מוגדר (undefined)`,gender:`m`},symbol:{label:`סימבול (Symbol)`,gender:`m`},function:{label:`פונקציה`,gender:`f`},map:{label:`מפה (Map)`,gender:`f`},set:{label:`קבוצה (Set)`,gender:`f`},file:{label:`קובץ`,gender:`m`},promise:{label:`Promise`,gender:`m`},NaN:{label:`NaN`,gender:`m`},unknown:{label:`ערך לא ידוע`,gender:`m`},value:{label:`ערך`,gender:`m`}},t={string:{unit:`תווים`,shortLabel:`קצר`,longLabel:`ארוך`},file:{unit:`בייטים`,shortLabel:`קטן`,longLabel:`גדול`},array:{unit:`פריטים`,shortLabel:`קטן`,longLabel:`גדול`},set:{unit:`פריטים`,shortLabel:`קטן`,longLabel:`גדול`},number:{unit:``,shortLabel:`קטן`,longLabel:`גדול`}},n=t=>t?e[t]:void 0,r=t=>{let r=n(t);return r?r.label:t??e.unknown.label},i=e=>`ה${r(e)}`,a=e=>(n(e)?.gender??`m`)===`f`?`צריכה להיות`:`צריך להיות`,o=e=>e?t[e]??null:null,s={regex:{label:`קלט`,gender:`m`},email:{label:`כתובת אימייל`,gender:`f`},url:{label:`כתובת רשת`,gender:`f`},emoji:{label:`אימוג'י`,gender:`m`},uuid:{label:`UUID`,gender:`m`},nanoid:{label:`nanoid`,gender:`m`},guid:{label:`GUID`,gender:`m`},cuid:{label:`cuid`,gender:`m`},cuid2:{label:`cuid2`,gender:`m`},ulid:{label:`ULID`,gender:`m`},xid:{label:`XID`,gender:`m`},ksuid:{label:`KSUID`,gender:`m`},datetime:{label:`תאריך וזמן ISO`,gender:`m`},date:{label:`תאריך ISO`,gender:`m`},time:{label:`זמן ISO`,gender:`m`},duration:{label:`משך זמן ISO`,gender:`m`},ipv4:{label:`כתובת IPv4`,gender:`f`},ipv6:{label:`כתובת IPv6`,gender:`f`},cidrv4:{label:`טווח IPv4`,gender:`m`},cidrv6:{label:`טווח IPv6`,gender:`m`},base64:{label:`מחרוזת בבסיס 64`,gender:`f`},base64url:{label:`מחרוזת בבסיס 64 לכתובות רשת`,gender:`f`},json_string:{label:`מחרוזת JSON`,gender:`f`},e164:{label:`מספר E.164`,gender:`m`},jwt:{label:`JWT`,gender:`m`},ends_with:{label:`קלט`,gender:`m`},includes:{label:`קלט`,gender:`m`},lowercase:{label:`קלט`,gender:`m`},starts_with:{label:`קלט`,gender:`m`},uppercase:{label:`קלט`,gender:`m`}},c={nan:`NaN`};return t=>{switch(t.code){case`invalid_type`:{let n=t.expected,i=c[n??``]??r(n),a=T(t.input),o=c[a]??e[a]?.label??a;return/^[A-Z]/.test(t.expected)?`קלט לא תקין: צריך להיות instanceof ${t.expected}, התקבל ${o}`:`קלט לא תקין: צריך להיות ${i}, התקבל ${o}`}case`invalid_value`:{if(t.values.length===1)return`ערך לא תקין: הערך חייב להיות ${x(t.values[0])}`;let e=t.values.map(e=>x(e));if(t.values.length===2)return`ערך לא תקין: האפשרויות המתאימות הן ${e[0]} או ${e[1]}`;let n=e[e.length-1];return`ערך לא תקין: האפשרויות המתאימות הן ${e.slice(0,-1).join(`, `)} או ${n}`}case`too_big`:{let e=o(t.origin),n=i(t.origin??`value`);if(t.origin===`string`)return`${e?.longLabel??`ארוך`} מדי: ${n} צריכה להכיל ${t.maximum.toString()} ${e?.unit??``} ${t.inclusive?`או פחות`:`לכל היותר`}`.trim();if(t.origin===`number`)return`גדול מדי: ${n} צריך להיות ${t.inclusive?`קטן או שווה ל-${t.maximum}`:`קטן מ-${t.maximum}`}`;if(t.origin===`array`||t.origin===`set`)return`גדול מדי: ${n} ${t.origin===`set`?`צריכה`:`צריך`} להכיל ${t.inclusive?`${t.maximum} ${e?.unit??``} או פחות`:`פחות מ-${t.maximum} ${e?.unit??``}`}`.trim();let r=t.inclusive?`<=`:`<`,s=a(t.origin??`value`);return e?.unit?`${e.longLabel} מדי: ${n} ${s} ${r}${t.maximum.toString()} ${e.unit}`:`${e?.longLabel??`גדול`} מדי: ${n} ${s} ${r}${t.maximum.toString()}`}case`too_small`:{let e=o(t.origin),n=i(t.origin??`value`);if(t.origin===`string`)return`${e?.shortLabel??`קצר`} מדי: ${n} צריכה להכיל ${t.minimum.toString()} ${e?.unit??``} ${t.inclusive?`או יותר`:`לפחות`}`.trim();if(t.origin===`number`)return`קטן מדי: ${n} צריך להיות ${t.inclusive?`גדול או שווה ל-${t.minimum}`:`גדול מ-${t.minimum}`}`;if(t.origin===`array`||t.origin===`set`){let r=t.origin===`set`?`צריכה`:`צריך`;return t.minimum===1&&t.inclusive?`קטן מדי: ${n} ${r} להכיל ${t.origin,`לפחות פריט אחד`}`:`קטן מדי: ${n} ${r} להכיל ${t.inclusive?`${t.minimum} ${e?.unit??``} או יותר`:`יותר מ-${t.minimum} ${e?.unit??``}`}`.trim()}let r=t.inclusive?`>=`:`>`,s=a(t.origin??`value`);return e?.unit?`${e.shortLabel} מדי: ${n} ${s} ${r}${t.minimum.toString()} ${e.unit}`:`${e?.shortLabel??`קטן`} מדי: ${n} ${s} ${r}${t.minimum.toString()}`}case`invalid_format`:{let e=t;if(e.format===`starts_with`)return`המחרוזת חייבת להתחיל ב "${e.prefix}"`;if(e.format===`ends_with`)return`המחרוזת חייבת להסתיים ב "${e.suffix}"`;if(e.format===`includes`)return`המחרוזת חייבת לכלול "${e.includes}"`;if(e.format===`regex`)return`המחרוזת חייבת להתאים לתבנית ${e.pattern}`;let n=s[e.format];return`${n?.label??e.format} לא ${(n?.gender??`m`)===`f`?`תקינה`:`תקין`}`}case`not_multiple_of`:return`מספר לא תקין: חייב להיות מכפלה של ${t.divisor}`;case`unrecognized_keys`:return`מפתח${t.keys.length>1?`ות`:``} לא מזוה${t.keys.length>1?`ים`:`ה`}: ${f(t.keys,`, `)}`;case`invalid_key`:return`שדה לא תקין באובייקט`;case`invalid_union`:return`קלט לא תקין`;case`invalid_element`:return`ערך לא תקין ב${i(t.origin??`array`)}`;default:return`קלט לא תקין`}}};function ba(){return{localeError:ya()}}var xa=()=>{let e={string:{unit:`karakter`,verb:`legyen`},file:{unit:`byte`,verb:`legyen`},array:{unit:`elem`,verb:`legyen`},set:{unit:`elem`,verb:`legyen`}};function t(t){return e[t]??null}let n={regex:`bemenet`,email:`email cím`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO időbélyeg`,date:`ISO dátum`,time:`ISO idő`,duration:`ISO időintervallum`,ipv4:`IPv4 cím`,ipv6:`IPv6 cím`,cidrv4:`IPv4 tartomány`,cidrv6:`IPv6 tartomány`,base64:`base64-kódolt string`,base64url:`base64url-kódolt string`,json_string:`JSON string`,e164:`E.164 szám`,jwt:`JWT`,template_literal:`bemenet`},r={nan:`NaN`,number:`szám`,array:`tömb`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Érvénytelen bemenet: a várt érték instanceof ${e.expected}, a kapott érték ${i}`:`Érvénytelen bemenet: a várt érték ${t}, a kapott érték ${i}`}case`invalid_value`:return e.values.length===1?`Érvénytelen bemenet: a várt érték ${x(e.values[0])}`:`Érvénytelen opció: valamelyik érték várt ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Túl nagy: ${e.origin??`érték`} mérete túl nagy ${n}${e.maximum.toString()} ${r.unit??`elem`}`:`Túl nagy: a bemeneti érték ${e.origin??`érték`} túl nagy: ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Túl kicsi: a bemeneti érték ${e.origin} mérete túl kicsi ${n}${e.minimum.toString()} ${r.unit}`:`Túl kicsi: a bemeneti érték ${e.origin} túl kicsi ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Érvénytelen string: "${t.prefix}" értékkel kell kezdődnie`:t.format===`ends_with`?`Érvénytelen string: "${t.suffix}" értékkel kell végződnie`:t.format===`includes`?`Érvénytelen string: "${t.includes}" értéket kell tartalmaznia`:t.format===`regex`?`Érvénytelen string: ${t.pattern} mintának kell megfelelnie`:`Érvénytelen ${n[t.format]??e.format}`}case`not_multiple_of`:return`Érvénytelen szám: ${e.divisor} többszörösének kell lennie`;case`unrecognized_keys`:return`Ismeretlen kulcs${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Érvénytelen kulcs ${e.origin}`;case`invalid_union`:return`Érvénytelen bemenet`;case`invalid_element`:return`Érvénytelen érték: ${e.origin}`;default:return`Érvénytelen bemenet`}}};function Sa(){return{localeError:xa()}}function Ca(e,t,n){return Math.abs(e)===1?t:n}function wa(e){if(!e)return``;let t=[`ա`,`ե`,`ը`,`ի`,`ո`,`ու`,`օ`],n=e[e.length-1];return e+(t.includes(n)?`ն`:`ը`)}var Ta=()=>{let e={string:{unit:{one:`նշան`,many:`նշաններ`},verb:`ունենալ`},file:{unit:{one:`բայթ`,many:`բայթեր`},verb:`ունենալ`},array:{unit:{one:`տարր`,many:`տարրեր`},verb:`ունենալ`},set:{unit:{one:`տարր`,many:`տարրեր`},verb:`ունենալ`}};function t(t){return e[t]??null}let n={regex:`մուտք`,email:`էլ. հասցե`,url:`URL`,emoji:`էմոջի`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO ամսաթիվ և ժամ`,date:`ISO ամսաթիվ`,time:`ISO ժամ`,duration:`ISO տևողություն`,ipv4:`IPv4 հասցե`,ipv6:`IPv6 հասցե`,cidrv4:`IPv4 միջակայք`,cidrv6:`IPv6 միջակայք`,base64:`base64 ձևաչափով տող`,base64url:`base64url ձևաչափով տող`,json_string:`JSON տող`,e164:`E.164 համար`,jwt:`JWT`,template_literal:`մուտք`},r={nan:`NaN`,number:`թիվ`,array:`զանգված`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Սխալ մուտքագրում․ սպասվում էր instanceof ${e.expected}, ստացվել է ${i}`:`Սխալ մուտքագրում․ սպասվում էր ${t}, ստացվել է ${i}`}case`invalid_value`:return e.values.length===1?`Սխալ մուտքագրում․ սպասվում էր ${x(e.values[1])}`:`Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);if(r){let t=Ca(Number(e.maximum),r.unit.one,r.unit.many);return`Չափազանց մեծ արժեք․ սպասվում է, որ ${wa(e.origin??`արժեք`)} կունենա ${n}${e.maximum.toString()} ${t}`}return`Չափազանց մեծ արժեք․ սպասվում է, որ ${wa(e.origin??`արժեք`)} լինի ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);if(r){let t=Ca(Number(e.minimum),r.unit.one,r.unit.many);return`Չափազանց փոքր արժեք․ սպասվում է, որ ${wa(e.origin)} կունենա ${n}${e.minimum.toString()} ${t}`}return`Չափազանց փոքր արժեք․ սպասվում է, որ ${wa(e.origin)} լինի ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Սխալ տող․ պետք է սկսվի "${t.prefix}"-ով`:t.format===`ends_with`?`Սխալ տող․ պետք է ավարտվի "${t.suffix}"-ով`:t.format===`includes`?`Սխալ տող․ պետք է պարունակի "${t.includes}"`:t.format===`regex`?`Սխալ տող․ պետք է համապատասխանի ${t.pattern} ձևաչափին`:`Սխալ ${n[t.format]??e.format}`}case`not_multiple_of`:return`Սխալ թիվ․ պետք է բազմապատիկ լինի ${e.divisor}-ի`;case`unrecognized_keys`:return`Չճանաչված բանալի${e.keys.length>1?`ներ`:``}. ${f(e.keys,`, `)}`;case`invalid_key`:return`Սխալ բանալի ${wa(e.origin)}-ում`;case`invalid_union`:return`Սխալ մուտքագրում`;case`invalid_element`:return`Սխալ արժեք ${wa(e.origin)}-ում`;default:return`Սխալ մուտքագրում`}}};function Ea(){return{localeError:Ta()}}var Da=()=>{let e={string:{unit:`karakter`,verb:`memiliki`},file:{unit:`byte`,verb:`memiliki`},array:{unit:`item`,verb:`memiliki`},set:{unit:`item`,verb:`memiliki`}};function t(t){return e[t]??null}let n={regex:`input`,email:`alamat email`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`tanggal dan waktu format ISO`,date:`tanggal format ISO`,time:`jam format ISO`,duration:`durasi format ISO`,ipv4:`alamat IPv4`,ipv6:`alamat IPv6`,cidrv4:`rentang alamat IPv4`,cidrv6:`rentang alamat IPv6`,base64:`string dengan enkode base64`,base64url:`string dengan enkode base64url`,json_string:`string JSON`,e164:`angka E.164`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Input tidak valid: diharapkan instanceof ${e.expected}, diterima ${i}`:`Input tidak valid: diharapkan ${t}, diterima ${i}`}case`invalid_value`:return e.values.length===1?`Input tidak valid: diharapkan ${x(e.values[0])}`:`Pilihan tidak valid: diharapkan salah satu dari ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Terlalu besar: diharapkan ${e.origin??`value`} memiliki ${n}${e.maximum.toString()} ${r.unit??`elemen`}`:`Terlalu besar: diharapkan ${e.origin??`value`} menjadi ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Terlalu kecil: diharapkan ${e.origin} memiliki ${n}${e.minimum.toString()} ${r.unit}`:`Terlalu kecil: diharapkan ${e.origin} menjadi ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`String tidak valid: harus dimulai dengan "${t.prefix}"`:t.format===`ends_with`?`String tidak valid: harus berakhir dengan "${t.suffix}"`:t.format===`includes`?`String tidak valid: harus menyertakan "${t.includes}"`:t.format===`regex`?`String tidak valid: harus sesuai pola ${t.pattern}`:`${n[t.format]??e.format} tidak valid`}case`not_multiple_of`:return`Angka tidak valid: harus kelipatan dari ${e.divisor}`;case`unrecognized_keys`:return`Kunci tidak dikenali ${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Kunci tidak valid di ${e.origin}`;case`invalid_union`:return`Input tidak valid`;case`invalid_element`:return`Nilai tidak valid di ${e.origin}`;default:return`Input tidak valid`}}};function Oa(){return{localeError:Da()}}var ka=()=>{let e={string:{unit:`stafi`,verb:`að hafa`},file:{unit:`bæti`,verb:`að hafa`},array:{unit:`hluti`,verb:`að hafa`},set:{unit:`hluti`,verb:`að hafa`}};function t(t){return e[t]??null}let n={regex:`gildi`,email:`netfang`,url:`vefslóð`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO dagsetning og tími`,date:`ISO dagsetning`,time:`ISO tími`,duration:`ISO tímalengd`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded strengur`,base64url:`base64url-encoded strengur`,json_string:`JSON strengur`,e164:`E.164 tölugildi`,jwt:`JWT`,template_literal:`gildi`},r={nan:`NaN`,number:`númer`,array:`fylki`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Rangt gildi: Þú slóst inn ${i} þar sem á að vera instanceof ${e.expected}`:`Rangt gildi: Þú slóst inn ${i} þar sem á að vera ${t}`}case`invalid_value`:return e.values.length===1?`Rangt gildi: gert ráð fyrir ${x(e.values[0])}`:`Ógilt val: má vera eitt af eftirfarandi ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Of stórt: gert er ráð fyrir að ${e.origin??`gildi`} hafi ${n}${e.maximum.toString()} ${r.unit??`hluti`}`:`Of stórt: gert er ráð fyrir að ${e.origin??`gildi`} sé ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Of lítið: gert er ráð fyrir að ${e.origin} hafi ${n}${e.minimum.toString()} ${r.unit}`:`Of lítið: gert er ráð fyrir að ${e.origin} sé ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Ógildur strengur: verður að byrja á "${t.prefix}"`:t.format===`ends_with`?`Ógildur strengur: verður að enda á "${t.suffix}"`:t.format===`includes`?`Ógildur strengur: verður að innihalda "${t.includes}"`:t.format===`regex`?`Ógildur strengur: verður að fylgja mynstri ${t.pattern}`:`Rangt ${n[t.format]??e.format}`}case`not_multiple_of`:return`Röng tala: verður að vera margfeldi af ${e.divisor}`;case`unrecognized_keys`:return`Óþekkt ${e.keys.length>1?`ir lyklar`:`ur lykill`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Rangur lykill í ${e.origin}`;case`invalid_union`:return`Rangt gildi`;case`invalid_element`:return`Rangt gildi í ${e.origin}`;default:return`Rangt gildi`}}};function Aa(){return{localeError:ka()}}var ja=()=>{let e={string:{unit:`caratteri`,verb:`avere`},file:{unit:`byte`,verb:`avere`},array:{unit:`elementi`,verb:`avere`},set:{unit:`elementi`,verb:`avere`}};function t(t){return e[t]??null}let n={regex:`input`,email:`indirizzo email`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`data e ora ISO`,date:`data ISO`,time:`ora ISO`,duration:`durata ISO`,ipv4:`indirizzo IPv4`,ipv6:`indirizzo IPv6`,cidrv4:`intervallo IPv4`,cidrv6:`intervallo IPv6`,base64:`stringa codificata in base64`,base64url:`URL codificata in base64`,json_string:`stringa JSON`,e164:`numero E.164`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`,number:`numero`,array:`vettore`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Input non valido: atteso instanceof ${e.expected}, ricevuto ${i}`:`Input non valido: atteso ${t}, ricevuto ${i}`}case`invalid_value`:return e.values.length===1?`Input non valido: atteso ${x(e.values[0])}`:`Opzione non valida: atteso uno tra ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Troppo grande: ${e.origin??`valore`} deve avere ${n}${e.maximum.toString()} ${r.unit??`elementi`}`:`Troppo grande: ${e.origin??`valore`} deve essere ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Troppo piccolo: ${e.origin} deve avere ${n}${e.minimum.toString()} ${r.unit}`:`Troppo piccolo: ${e.origin} deve essere ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Stringa non valida: deve iniziare con "${t.prefix}"`:t.format===`ends_with`?`Stringa non valida: deve terminare con "${t.suffix}"`:t.format===`includes`?`Stringa non valida: deve includere "${t.includes}"`:t.format===`regex`?`Stringa non valida: deve corrispondere al pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Numero non valido: deve essere un multiplo di ${e.divisor}`;case`unrecognized_keys`:return`Chiav${e.keys.length>1?`i`:`e`} non riconosciut${e.keys.length>1?`e`:`a`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Chiave non valida in ${e.origin}`;case`invalid_union`:return`Input non valido`;case`invalid_element`:return`Valore non valido in ${e.origin}`;default:return`Input non valido`}}};function Ma(){return{localeError:ja()}}var Na=()=>{let e={string:{unit:`文字`,verb:`である`},file:{unit:`バイト`,verb:`である`},array:{unit:`要素`,verb:`である`},set:{unit:`要素`,verb:`である`}};function t(t){return e[t]??null}let n={regex:`入力値`,email:`メールアドレス`,url:`URL`,emoji:`絵文字`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO日時`,date:`ISO日付`,time:`ISO時刻`,duration:`ISO期間`,ipv4:`IPv4アドレス`,ipv6:`IPv6アドレス`,cidrv4:`IPv4範囲`,cidrv6:`IPv6範囲`,base64:`base64エンコード文字列`,base64url:`base64urlエンコード文字列`,json_string:`JSON文字列`,e164:`E.164番号`,jwt:`JWT`,template_literal:`入力値`},r={nan:`NaN`,number:`数値`,array:`配列`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`無効な入力: instanceof ${e.expected}が期待されましたが、${i}が入力されました`:`無効な入力: ${t}が期待されましたが、${i}が入力されました`}case`invalid_value`:return e.values.length===1?`無効な入力: ${x(e.values[0])}が期待されました`:`無効な選択: ${f(e.values,`、`)}のいずれかである必要があります`;case`too_big`:{let n=e.inclusive?`以下である`:`より小さい`,r=t(e.origin);return r?`大きすぎる値: ${e.origin??`値`}は${e.maximum.toString()}${r.unit??`要素`}${n}必要があります`:`大きすぎる値: ${e.origin??`値`}は${e.maximum.toString()}${n}必要があります`}case`too_small`:{let n=e.inclusive?`以上である`:`より大きい`,r=t(e.origin);return r?`小さすぎる値: ${e.origin}は${e.minimum.toString()}${r.unit}${n}必要があります`:`小さすぎる値: ${e.origin}は${e.minimum.toString()}${n}必要があります`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`無効な文字列: "${t.prefix}"で始まる必要があります`:t.format===`ends_with`?`無効な文字列: "${t.suffix}"で終わる必要があります`:t.format===`includes`?`無効な文字列: "${t.includes}"を含む必要があります`:t.format===`regex`?`無効な文字列: パターン${t.pattern}に一致する必要があります`:`無効な${n[t.format]??e.format}`}case`not_multiple_of`:return`無効な数値: ${e.divisor}の倍数である必要があります`;case`unrecognized_keys`:return`認識されていないキー${e.keys.length>1?`群`:``}: ${f(e.keys,`、`)}`;case`invalid_key`:return`${e.origin}内の無効なキー`;case`invalid_union`:return`無効な入力`;case`invalid_element`:return`${e.origin}内の無効な値`;default:return`無効な入力`}}};function Pa(){return{localeError:Na()}}var Fa=()=>{let e={string:{unit:`სიმბოლო`,verb:`უნდა შეიცავდეს`},file:{unit:`ბაიტი`,verb:`უნდა შეიცავდეს`},array:{unit:`ელემენტი`,verb:`უნდა შეიცავდეს`},set:{unit:`ელემენტი`,verb:`უნდა შეიცავდეს`}};function t(t){return e[t]??null}let n={regex:`შეყვანა`,email:`ელ-ფოსტის მისამართი`,url:`URL`,emoji:`ემოჯი`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`თარიღი-დრო`,date:`თარიღი`,time:`დრო`,duration:`ხანგრძლივობა`,ipv4:`IPv4 მისამართი`,ipv6:`IPv6 მისამართი`,cidrv4:`IPv4 დიაპაზონი`,cidrv6:`IPv6 დიაპაზონი`,base64:`base64-კოდირებული სტრინგი`,base64url:`base64url-კოდირებული სტრინგი`,json_string:`JSON სტრინგი`,e164:`E.164 ნომერი`,jwt:`JWT`,template_literal:`შეყვანა`},r={nan:`NaN`,number:`რიცხვი`,string:`სტრინგი`,boolean:`ბულეანი`,function:`ფუნქცია`,array:`მასივი`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`არასწორი შეყვანა: მოსალოდნელი instanceof ${e.expected}, მიღებული ${i}`:`არასწორი შეყვანა: მოსალოდნელი ${t}, მიღებული ${i}`}case`invalid_value`:return e.values.length===1?`არასწორი შეყვანა: მოსალოდნელი ${x(e.values[0])}`:`არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${f(e.values,`|`)}-დან`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`ზედმეტად დიდი: მოსალოდნელი ${e.origin??`მნიშვნელობა`} ${r.verb} ${n}${e.maximum.toString()} ${r.unit}`:`ზედმეტად დიდი: მოსალოდნელი ${e.origin??`მნიშვნელობა`} იყოს ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`ზედმეტად პატარა: მოსალოდნელი ${e.origin} ${r.verb} ${n}${e.minimum.toString()} ${r.unit}`:`ზედმეტად პატარა: მოსალოდნელი ${e.origin} იყოს ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`არასწორი სტრინგი: უნდა იწყებოდეს "${t.prefix}"-ით`:t.format===`ends_with`?`არასწორი სტრინგი: უნდა მთავრდებოდეს "${t.suffix}"-ით`:t.format===`includes`?`არასწორი სტრინგი: უნდა შეიცავდეს "${t.includes}"-ს`:t.format===`regex`?`არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${t.pattern}`:`არასწორი ${n[t.format]??e.format}`}case`not_multiple_of`:return`არასწორი რიცხვი: უნდა იყოს ${e.divisor}-ის ჯერადი`;case`unrecognized_keys`:return`უცნობი გასაღებ${e.keys.length>1?`ები`:`ი`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`არასწორი გასაღები ${e.origin}-ში`;case`invalid_union`:return`არასწორი შეყვანა`;case`invalid_element`:return`არასწორი მნიშვნელობა ${e.origin}-ში`;default:return`არასწორი შეყვანა`}}};function Ia(){return{localeError:Fa()}}var La=()=>{let e={string:{unit:`តួអក្សរ`,verb:`គួរមាន`},file:{unit:`បៃ`,verb:`គួរមាន`},array:{unit:`ធាតុ`,verb:`គួរមាន`},set:{unit:`ធាតុ`,verb:`គួរមាន`}};function t(t){return e[t]??null}let n={regex:`ទិន្នន័យបញ្ចូល`,email:`អាសយដ្ឋានអ៊ីមែល`,url:`URL`,emoji:`សញ្ញាអារម្មណ៍`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`កាលបរិច្ឆេទ និងម៉ោង ISO`,date:`កាលបរិច្ឆេទ ISO`,time:`ម៉ោង ISO`,duration:`រយៈពេល ISO`,ipv4:`អាសយដ្ឋាន IPv4`,ipv6:`អាសយដ្ឋាន IPv6`,cidrv4:`ដែនអាសយដ្ឋាន IPv4`,cidrv6:`ដែនអាសយដ្ឋាន IPv6`,base64:`ខ្សែអក្សរអ៊ិកូដ base64`,base64url:`ខ្សែអក្សរអ៊ិកូដ base64url`,json_string:`ខ្សែអក្សរ JSON`,e164:`លេខ E.164`,jwt:`JWT`,template_literal:`ទិន្នន័យបញ្ចូល`},r={nan:`NaN`,number:`លេខ`,array:`អារេ (Array)`,null:`គ្មានតម្លៃ (null)`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${e.expected} ប៉ុន្តែទទួលបាន ${i}`:`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${t} ប៉ុន្តែទទួលបាន ${i}`}case`invalid_value`:return e.values.length===1?`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${x(e.values[0])}`:`ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`ធំពេក៖ ត្រូវការ ${e.origin??`តម្លៃ`} ${n} ${e.maximum.toString()} ${r.unit??`ធាតុ`}`:`ធំពេក៖ ត្រូវការ ${e.origin??`តម្លៃ`} ${n} ${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`តូចពេក៖ ត្រូវការ ${e.origin} ${n} ${e.minimum.toString()} ${r.unit}`:`តូចពេក៖ ត្រូវការ ${e.origin} ${n} ${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ "${t.prefix}"`:t.format===`ends_with`?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ "${t.suffix}"`:t.format===`includes`?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន "${t.includes}"`:t.format===`regex`?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${t.pattern}`:`មិនត្រឹមត្រូវ៖ ${n[t.format]??e.format}`}case`not_multiple_of`:return`លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${e.divisor}`;case`unrecognized_keys`:return`រកឃើញសោមិនស្គាល់៖ ${f(e.keys,`, `)}`;case`invalid_key`:return`សោមិនត្រឹមត្រូវនៅក្នុង ${e.origin}`;case`invalid_union`:return`ទិន្នន័យមិនត្រឹមត្រូវ`;case`invalid_element`:return`ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${e.origin}`;default:return`ទិន្នន័យមិនត្រឹមត្រូវ`}}};function Ra(){return{localeError:La()}}function za(){return Ra()}var Ba=()=>{let e={string:{unit:`문자`,verb:`to have`},file:{unit:`바이트`,verb:`to have`},array:{unit:`개`,verb:`to have`},set:{unit:`개`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`입력`,email:`이메일 주소`,url:`URL`,emoji:`이모지`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO 날짜시간`,date:`ISO 날짜`,time:`ISO 시간`,duration:`ISO 기간`,ipv4:`IPv4 주소`,ipv6:`IPv6 주소`,cidrv4:`IPv4 범위`,cidrv6:`IPv6 범위`,base64:`base64 인코딩 문자열`,base64url:`base64url 인코딩 문자열`,json_string:`JSON 문자열`,e164:`E.164 번호`,jwt:`JWT`,template_literal:`입력`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`잘못된 입력: 예상 타입은 instanceof ${e.expected}, 받은 타입은 ${i}입니다`:`잘못된 입력: 예상 타입은 ${t}, 받은 타입은 ${i}입니다`}case`invalid_value`:return e.values.length===1?`잘못된 입력: 값은 ${x(e.values[0])} 이어야 합니다`:`잘못된 옵션: ${f(e.values,`또는 `)} 중 하나여야 합니다`;case`too_big`:{let n=e.inclusive?`이하`:`미만`,r=n===`미만`?`이어야 합니다`:`여야 합니다`,i=t(e.origin),a=i?.unit??`요소`;return i?`${e.origin??`값`}이 너무 큽니다: ${e.maximum.toString()}${a} ${n}${r}`:`${e.origin??`값`}이 너무 큽니다: ${e.maximum.toString()} ${n}${r}`}case`too_small`:{let n=e.inclusive?`이상`:`초과`,r=n===`이상`?`이어야 합니다`:`여야 합니다`,i=t(e.origin),a=i?.unit??`요소`;return i?`${e.origin??`값`}이 너무 작습니다: ${e.minimum.toString()}${a} ${n}${r}`:`${e.origin??`값`}이 너무 작습니다: ${e.minimum.toString()} ${n}${r}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`잘못된 문자열: "${t.prefix}"(으)로 시작해야 합니다`:t.format===`ends_with`?`잘못된 문자열: "${t.suffix}"(으)로 끝나야 합니다`:t.format===`includes`?`잘못된 문자열: "${t.includes}"을(를) 포함해야 합니다`:t.format===`regex`?`잘못된 문자열: 정규식 ${t.pattern} 패턴과 일치해야 합니다`:`잘못된 ${n[t.format]??e.format}`}case`not_multiple_of`:return`잘못된 숫자: ${e.divisor}의 배수여야 합니다`;case`unrecognized_keys`:return`인식할 수 없는 키: ${f(e.keys,`, `)}`;case`invalid_key`:return`잘못된 키: ${e.origin}`;case`invalid_union`:return`잘못된 입력`;case`invalid_element`:return`잘못된 값: ${e.origin}`;default:return`잘못된 입력`}}};function Va(){return{localeError:Ba()}}var Ha=e=>e.charAt(0).toUpperCase()+e.slice(1);function Ua(e){let t=Math.abs(e),n=t%10,r=t%100;return r>=11&&r<=19||n===0?`many`:n===1?`one`:`few`}var Wa=()=>{let e={string:{unit:{one:`simbolis`,few:`simboliai`,many:`simbolių`},verb:{smaller:{inclusive:`turi būti ne ilgesnė kaip`,notInclusive:`turi būti trumpesnė kaip`},bigger:{inclusive:`turi būti ne trumpesnė kaip`,notInclusive:`turi būti ilgesnė kaip`}}},file:{unit:{one:`baitas`,few:`baitai`,many:`baitų`},verb:{smaller:{inclusive:`turi būti ne didesnis kaip`,notInclusive:`turi būti mažesnis kaip`},bigger:{inclusive:`turi būti ne mažesnis kaip`,notInclusive:`turi būti didesnis kaip`}}},array:{unit:{one:`elementą`,few:`elementus`,many:`elementų`},verb:{smaller:{inclusive:`turi turėti ne daugiau kaip`,notInclusive:`turi turėti mažiau kaip`},bigger:{inclusive:`turi turėti ne mažiau kaip`,notInclusive:`turi turėti daugiau kaip`}}},set:{unit:{one:`elementą`,few:`elementus`,many:`elementų`},verb:{smaller:{inclusive:`turi turėti ne daugiau kaip`,notInclusive:`turi turėti mažiau kaip`},bigger:{inclusive:`turi turėti ne mažiau kaip`,notInclusive:`turi turėti daugiau kaip`}}}};function t(t,n,r,i){let a=e[t]??null;return a===null?a:{unit:a.unit[n],verb:a.verb[i][r?`inclusive`:`notInclusive`]}}let n={regex:`įvestis`,email:`el. pašto adresas`,url:`URL`,emoji:`jaustukas`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO data ir laikas`,date:`ISO data`,time:`ISO laikas`,duration:`ISO trukmė`,ipv4:`IPv4 adresas`,ipv6:`IPv6 adresas`,cidrv4:`IPv4 tinklo prefiksas (CIDR)`,cidrv6:`IPv6 tinklo prefiksas (CIDR)`,base64:`base64 užkoduota eilutė`,base64url:`base64url užkoduota eilutė`,json_string:`JSON eilutė`,e164:`E.164 numeris`,jwt:`JWT`,template_literal:`įvestis`},r={nan:`NaN`,number:`skaičius`,bigint:`sveikasis skaičius`,string:`eilutė`,boolean:`loginė reikšmė`,undefined:`neapibrėžta reikšmė`,function:`funkcija`,symbol:`simbolis`,array:`masyvas`,object:`objektas`,null:`nulinė reikšmė`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Gautas tipas ${i}, o tikėtasi - instanceof ${e.expected}`:`Gautas tipas ${i}, o tikėtasi - ${t}`}case`invalid_value`:return e.values.length===1?`Privalo būti ${x(e.values[0])}`:`Privalo būti vienas iš ${f(e.values,`|`)} pasirinkimų`;case`too_big`:{let n=r[e.origin]??e.origin,i=t(e.origin,Ua(Number(e.maximum)),e.inclusive??!1,`smaller`);if(i?.verb)return`${Ha(n??e.origin??`reikšmė`)} ${i.verb} ${e.maximum.toString()} ${i.unit??`elementų`}`;let a=e.inclusive?`ne didesnis kaip`:`mažesnis kaip`;return`${Ha(n??e.origin??`reikšmė`)} turi būti ${a} ${e.maximum.toString()} ${i?.unit}`}case`too_small`:{let n=r[e.origin]??e.origin,i=t(e.origin,Ua(Number(e.minimum)),e.inclusive??!1,`bigger`);if(i?.verb)return`${Ha(n??e.origin??`reikšmė`)} ${i.verb} ${e.minimum.toString()} ${i.unit??`elementų`}`;let a=e.inclusive?`ne mažesnis kaip`:`didesnis kaip`;return`${Ha(n??e.origin??`reikšmė`)} turi būti ${a} ${e.minimum.toString()} ${i?.unit}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Eilutė privalo prasidėti "${t.prefix}"`:t.format===`ends_with`?`Eilutė privalo pasibaigti "${t.suffix}"`:t.format===`includes`?`Eilutė privalo įtraukti "${t.includes}"`:t.format===`regex`?`Eilutė privalo atitikti ${t.pattern}`:`Neteisingas ${n[t.format]??e.format}`}case`not_multiple_of`:return`Skaičius privalo būti ${e.divisor} kartotinis.`;case`unrecognized_keys`:return`Neatpažint${e.keys.length>1?`i`:`as`} rakt${e.keys.length>1?`ai`:`as`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Rastas klaidingas raktas`;case`invalid_union`:return`Klaidinga įvestis`;case`invalid_element`:return`${Ha(r[e.origin]??e.origin??e.origin??`reikšmė`)} turi klaidingą įvestį`;default:return`Klaidinga įvestis`}}};function Ga(){return{localeError:Wa()}}var Ka=()=>{let e={string:{unit:`знаци`,verb:`да имаат`},file:{unit:`бајти`,verb:`да имаат`},array:{unit:`ставки`,verb:`да имаат`},set:{unit:`ставки`,verb:`да имаат`}};function t(t){return e[t]??null}let n={regex:`внес`,email:`адреса на е-пошта`,url:`URL`,emoji:`емоџи`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO датум и време`,date:`ISO датум`,time:`ISO време`,duration:`ISO времетраење`,ipv4:`IPv4 адреса`,ipv6:`IPv6 адреса`,cidrv4:`IPv4 опсег`,cidrv6:`IPv6 опсег`,base64:`base64-енкодирана низа`,base64url:`base64url-енкодирана низа`,json_string:`JSON низа`,e164:`E.164 број`,jwt:`JWT`,template_literal:`внес`},r={nan:`NaN`,number:`број`,array:`низа`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Грешен внес: се очекува instanceof ${e.expected}, примено ${i}`:`Грешен внес: се очекува ${t}, примено ${i}`}case`invalid_value`:return e.values.length===1?`Invalid input: expected ${x(e.values[0])}`:`Грешана опција: се очекува една ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Премногу голем: се очекува ${e.origin??`вредноста`} да има ${n}${e.maximum.toString()} ${r.unit??`елементи`}`:`Премногу голем: се очекува ${e.origin??`вредноста`} да биде ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Премногу мал: се очекува ${e.origin} да има ${n}${e.minimum.toString()} ${r.unit}`:`Премногу мал: се очекува ${e.origin} да биде ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Неважечка низа: мора да започнува со "${t.prefix}"`:t.format===`ends_with`?`Неважечка низа: мора да завршува со "${t.suffix}"`:t.format===`includes`?`Неважечка низа: мора да вклучува "${t.includes}"`:t.format===`regex`?`Неважечка низа: мора да одгоара на патернот ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Грешен број: мора да биде делив со ${e.divisor}`;case`unrecognized_keys`:return`${e.keys.length>1?`Непрепознаени клучеви`:`Непрепознаен клуч`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Грешен клуч во ${e.origin}`;case`invalid_union`:return`Грешен внес`;case`invalid_element`:return`Грешна вредност во ${e.origin}`;default:return`Грешен внес`}}};function qa(){return{localeError:Ka()}}var Ja=()=>{let e={string:{unit:`aksara`,verb:`mempunyai`},file:{unit:`bait`,verb:`mempunyai`},array:{unit:`elemen`,verb:`mempunyai`},set:{unit:`elemen`,verb:`mempunyai`}};function t(t){return e[t]??null}let n={regex:`input`,email:`alamat e-mel`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`tarikh masa ISO`,date:`tarikh ISO`,time:`masa ISO`,duration:`tempoh ISO`,ipv4:`alamat IPv4`,ipv6:`alamat IPv6`,cidrv4:`julat IPv4`,cidrv6:`julat IPv6`,base64:`string dikodkan base64`,base64url:`string dikodkan base64url`,json_string:`string JSON`,e164:`nombor E.164`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`,number:`nombor`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Input tidak sah: dijangka instanceof ${e.expected}, diterima ${i}`:`Input tidak sah: dijangka ${t}, diterima ${i}`}case`invalid_value`:return e.values.length===1?`Input tidak sah: dijangka ${x(e.values[0])}`:`Pilihan tidak sah: dijangka salah satu daripada ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Terlalu besar: dijangka ${e.origin??`nilai`} ${r.verb} ${n}${e.maximum.toString()} ${r.unit??`elemen`}`:`Terlalu besar: dijangka ${e.origin??`nilai`} adalah ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Terlalu kecil: dijangka ${e.origin} ${r.verb} ${n}${e.minimum.toString()} ${r.unit}`:`Terlalu kecil: dijangka ${e.origin} adalah ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`String tidak sah: mesti bermula dengan "${t.prefix}"`:t.format===`ends_with`?`String tidak sah: mesti berakhir dengan "${t.suffix}"`:t.format===`includes`?`String tidak sah: mesti mengandungi "${t.includes}"`:t.format===`regex`?`String tidak sah: mesti sepadan dengan corak ${t.pattern}`:`${n[t.format]??e.format} tidak sah`}case`not_multiple_of`:return`Nombor tidak sah: perlu gandaan ${e.divisor}`;case`unrecognized_keys`:return`Kunci tidak dikenali: ${f(e.keys,`, `)}`;case`invalid_key`:return`Kunci tidak sah dalam ${e.origin}`;case`invalid_union`:return`Input tidak sah`;case`invalid_element`:return`Nilai tidak sah dalam ${e.origin}`;default:return`Input tidak sah`}}};function Ya(){return{localeError:Ja()}}var Xa=()=>{let e={string:{unit:`tekens`,verb:`heeft`},file:{unit:`bytes`,verb:`heeft`},array:{unit:`elementen`,verb:`heeft`},set:{unit:`elementen`,verb:`heeft`}};function t(t){return e[t]??null}let n={regex:`invoer`,email:`emailadres`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datum en tijd`,date:`ISO datum`,time:`ISO tijd`,duration:`ISO duur`,ipv4:`IPv4-adres`,ipv6:`IPv6-adres`,cidrv4:`IPv4-bereik`,cidrv6:`IPv6-bereik`,base64:`base64-gecodeerde tekst`,base64url:`base64 URL-gecodeerde tekst`,json_string:`JSON string`,e164:`E.164-nummer`,jwt:`JWT`,template_literal:`invoer`},r={nan:`NaN`,number:`getal`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Ongeldige invoer: verwacht instanceof ${e.expected}, ontving ${i}`:`Ongeldige invoer: verwacht ${t}, ontving ${i}`}case`invalid_value`:return e.values.length===1?`Ongeldige invoer: verwacht ${x(e.values[0])}`:`Ongeldige optie: verwacht één van ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin),i=e.origin===`date`?`laat`:e.origin===`string`?`lang`:`groot`;return r?`Te ${i}: verwacht dat ${e.origin??`waarde`} ${n}${e.maximum.toString()} ${r.unit??`elementen`} ${r.verb}`:`Te ${i}: verwacht dat ${e.origin??`waarde`} ${n}${e.maximum.toString()} is`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin),i=e.origin===`date`?`vroeg`:e.origin===`string`?`kort`:`klein`;return r?`Te ${i}: verwacht dat ${e.origin} ${n}${e.minimum.toString()} ${r.unit} ${r.verb}`:`Te ${i}: verwacht dat ${e.origin} ${n}${e.minimum.toString()} is`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Ongeldige tekst: moet met "${t.prefix}" beginnen`:t.format===`ends_with`?`Ongeldige tekst: moet op "${t.suffix}" eindigen`:t.format===`includes`?`Ongeldige tekst: moet "${t.includes}" bevatten`:t.format===`regex`?`Ongeldige tekst: moet overeenkomen met patroon ${t.pattern}`:`Ongeldig: ${n[t.format]??e.format}`}case`not_multiple_of`:return`Ongeldig getal: moet een veelvoud van ${e.divisor} zijn`;case`unrecognized_keys`:return`Onbekende key${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Ongeldige key in ${e.origin}`;case`invalid_union`:return`Ongeldige invoer`;case`invalid_element`:return`Ongeldige waarde in ${e.origin}`;default:return`Ongeldige invoer`}}};function Za(){return{localeError:Xa()}}var Qa=()=>{let e={string:{unit:`tegn`,verb:`å ha`},file:{unit:`bytes`,verb:`å ha`},array:{unit:`elementer`,verb:`å inneholde`},set:{unit:`elementer`,verb:`å inneholde`}};function t(t){return e[t]??null}let n={regex:`input`,email:`e-postadresse`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO dato- og klokkeslett`,date:`ISO-dato`,time:`ISO-klokkeslett`,duration:`ISO-varighet`,ipv4:`IPv4-område`,ipv6:`IPv6-område`,cidrv4:`IPv4-spekter`,cidrv6:`IPv6-spekter`,base64:`base64-enkodet streng`,base64url:`base64url-enkodet streng`,json_string:`JSON-streng`,e164:`E.164-nummer`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`,number:`tall`,array:`liste`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Ugyldig input: forventet instanceof ${e.expected}, fikk ${i}`:`Ugyldig input: forventet ${t}, fikk ${i}`}case`invalid_value`:return e.values.length===1?`Ugyldig verdi: forventet ${x(e.values[0])}`:`Ugyldig valg: forventet en av ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`For stor(t): forventet ${e.origin??`value`} til å ha ${n}${e.maximum.toString()} ${r.unit??`elementer`}`:`For stor(t): forventet ${e.origin??`value`} til å ha ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`For lite(n): forventet ${e.origin} til å ha ${n}${e.minimum.toString()} ${r.unit}`:`For lite(n): forventet ${e.origin} til å ha ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Ugyldig streng: må starte med "${t.prefix}"`:t.format===`ends_with`?`Ugyldig streng: må ende med "${t.suffix}"`:t.format===`includes`?`Ugyldig streng: må inneholde "${t.includes}"`:t.format===`regex`?`Ugyldig streng: må matche mønsteret ${t.pattern}`:`Ugyldig ${n[t.format]??e.format}`}case`not_multiple_of`:return`Ugyldig tall: må være et multiplum av ${e.divisor}`;case`unrecognized_keys`:return`${e.keys.length>1?`Ukjente nøkler`:`Ukjent nøkkel`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Ugyldig nøkkel i ${e.origin}`;case`invalid_union`:return`Ugyldig input`;case`invalid_element`:return`Ugyldig verdi i ${e.origin}`;default:return`Ugyldig input`}}};function $a(){return{localeError:Qa()}}var eo=()=>{let e={string:{unit:`harf`,verb:`olmalıdır`},file:{unit:`bayt`,verb:`olmalıdır`},array:{unit:`unsur`,verb:`olmalıdır`},set:{unit:`unsur`,verb:`olmalıdır`}};function t(t){return e[t]??null}let n={regex:`giren`,email:`epostagâh`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO hengâmı`,date:`ISO tarihi`,time:`ISO zamanı`,duration:`ISO müddeti`,ipv4:`IPv4 nişânı`,ipv6:`IPv6 nişânı`,cidrv4:`IPv4 menzili`,cidrv6:`IPv6 menzili`,base64:`base64-şifreli metin`,base64url:`base64url-şifreli metin`,json_string:`JSON metin`,e164:`E.164 sayısı`,jwt:`JWT`,template_literal:`giren`},r={nan:`NaN`,number:`numara`,array:`saf`,null:`gayb`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Fâsit giren: umulan instanceof ${e.expected}, alınan ${i}`:`Fâsit giren: umulan ${t}, alınan ${i}`}case`invalid_value`:return e.values.length===1?`Fâsit giren: umulan ${x(e.values[0])}`:`Fâsit tercih: mûteberler ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Fazla büyük: ${e.origin??`value`}, ${n}${e.maximum.toString()} ${r.unit??`elements`} sahip olmalıydı.`:`Fazla büyük: ${e.origin??`value`}, ${n}${e.maximum.toString()} olmalıydı.`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Fazla küçük: ${e.origin}, ${n}${e.minimum.toString()} ${r.unit} sahip olmalıydı.`:`Fazla küçük: ${e.origin}, ${n}${e.minimum.toString()} olmalıydı.`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Fâsit metin: "${t.prefix}" ile başlamalı.`:t.format===`ends_with`?`Fâsit metin: "${t.suffix}" ile bitmeli.`:t.format===`includes`?`Fâsit metin: "${t.includes}" ihtivâ etmeli.`:t.format===`regex`?`Fâsit metin: ${t.pattern} nakşına uymalı.`:`Fâsit ${n[t.format]??e.format}`}case`not_multiple_of`:return`Fâsit sayı: ${e.divisor} katı olmalıydı.`;case`unrecognized_keys`:return`Tanınmayan anahtar ${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`${e.origin} için tanınmayan anahtar var.`;case`invalid_union`:return`Giren tanınamadı.`;case`invalid_element`:return`${e.origin} için tanınmayan kıymet var.`;default:return`Kıymet tanınamadı.`}}};function to(){return{localeError:eo()}}var no=()=>{let e={string:{unit:`توکي`,verb:`ولري`},file:{unit:`بایټس`,verb:`ولري`},array:{unit:`توکي`,verb:`ولري`},set:{unit:`توکي`,verb:`ولري`}};function t(t){return e[t]??null}let n={regex:`ورودي`,email:`بریښنالیک`,url:`یو آر ال`,emoji:`ایموجي`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`نیټه او وخت`,date:`نېټه`,time:`وخت`,duration:`موده`,ipv4:`د IPv4 پته`,ipv6:`د IPv6 پته`,cidrv4:`د IPv4 ساحه`,cidrv6:`د IPv6 ساحه`,base64:`base64-encoded متن`,base64url:`base64url-encoded متن`,json_string:`JSON متن`,e164:`د E.164 شمېره`,jwt:`JWT`,template_literal:`ورودي`},r={nan:`NaN`,number:`عدد`,array:`ارې`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`ناسم ورودي: باید instanceof ${e.expected} وای, مګر ${i} ترلاسه شو`:`ناسم ورودي: باید ${t} وای, مګر ${i} ترلاسه شو`}case`invalid_value`:return e.values.length===1?`ناسم ورودي: باید ${x(e.values[0])} وای`:`ناسم انتخاب: باید یو له ${f(e.values,`|`)} څخه وای`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`ډیر لوی: ${e.origin??`ارزښت`} باید ${n}${e.maximum.toString()} ${r.unit??`عنصرونه`} ولري`:`ډیر لوی: ${e.origin??`ارزښت`} باید ${n}${e.maximum.toString()} وي`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`ډیر کوچنی: ${e.origin} باید ${n}${e.minimum.toString()} ${r.unit} ولري`:`ډیر کوچنی: ${e.origin} باید ${n}${e.minimum.toString()} وي`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`ناسم متن: باید د "${t.prefix}" سره پیل شي`:t.format===`ends_with`?`ناسم متن: باید د "${t.suffix}" سره پای ته ورسيږي`:t.format===`includes`?`ناسم متن: باید "${t.includes}" ولري`:t.format===`regex`?`ناسم متن: باید د ${t.pattern} سره مطابقت ولري`:`${n[t.format]??e.format} ناسم دی`}case`not_multiple_of`:return`ناسم عدد: باید د ${e.divisor} مضرب وي`;case`unrecognized_keys`:return`ناسم ${e.keys.length>1?`کلیډونه`:`کلیډ`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`ناسم کلیډ په ${e.origin} کې`;case`invalid_union`:return`ناسمه ورودي`;case`invalid_element`:return`ناسم عنصر په ${e.origin} کې`;default:return`ناسمه ورودي`}}};function ro(){return{localeError:no()}}var io=()=>{let e={string:{unit:`znaków`,verb:`mieć`},file:{unit:`bajtów`,verb:`mieć`},array:{unit:`elementów`,verb:`mieć`},set:{unit:`elementów`,verb:`mieć`}};function t(t){return e[t]??null}let n={regex:`wyrażenie`,email:`adres email`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`data i godzina w formacie ISO`,date:`data w formacie ISO`,time:`godzina w formacie ISO`,duration:`czas trwania ISO`,ipv4:`adres IPv4`,ipv6:`adres IPv6`,cidrv4:`zakres IPv4`,cidrv6:`zakres IPv6`,base64:`ciąg znaków zakodowany w formacie base64`,base64url:`ciąg znaków zakodowany w formacie base64url`,json_string:`ciąg znaków w formacie JSON`,e164:`liczba E.164`,jwt:`JWT`,template_literal:`wejście`},r={nan:`NaN`,number:`liczba`,array:`tablica`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Nieprawidłowe dane wejściowe: oczekiwano instanceof ${e.expected}, otrzymano ${i}`:`Nieprawidłowe dane wejściowe: oczekiwano ${t}, otrzymano ${i}`}case`invalid_value`:return e.values.length===1?`Nieprawidłowe dane wejściowe: oczekiwano ${x(e.values[0])}`:`Nieprawidłowa opcja: oczekiwano jednej z wartości ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Za duża wartość: oczekiwano, że ${e.origin??`wartość`} będzie mieć ${n}${e.maximum.toString()} ${r.unit??`elementów`}`:`Zbyt duż(y/a/e): oczekiwano, że ${e.origin??`wartość`} będzie wynosić ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Za mała wartość: oczekiwano, że ${e.origin??`wartość`} będzie mieć ${n}${e.minimum.toString()} ${r.unit??`elementów`}`:`Zbyt mał(y/a/e): oczekiwano, że ${e.origin??`wartość`} będzie wynosić ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Nieprawidłowy ciąg znaków: musi zaczynać się od "${t.prefix}"`:t.format===`ends_with`?`Nieprawidłowy ciąg znaków: musi kończyć się na "${t.suffix}"`:t.format===`includes`?`Nieprawidłowy ciąg znaków: musi zawierać "${t.includes}"`:t.format===`regex`?`Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${t.pattern}`:`Nieprawidłow(y/a/e) ${n[t.format]??e.format}`}case`not_multiple_of`:return`Nieprawidłowa liczba: musi być wielokrotnością ${e.divisor}`;case`unrecognized_keys`:return`Nierozpoznane klucze${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Nieprawidłowy klucz w ${e.origin}`;case`invalid_union`:return`Nieprawidłowe dane wejściowe`;case`invalid_element`:return`Nieprawidłowa wartość w ${e.origin}`;default:return`Nieprawidłowe dane wejściowe`}}};function ao(){return{localeError:io()}}var oo=()=>{let e={string:{unit:`caracteres`,verb:`ter`},file:{unit:`bytes`,verb:`ter`},array:{unit:`itens`,verb:`ter`},set:{unit:`itens`,verb:`ter`}};function t(t){return e[t]??null}let n={regex:`padrão`,email:`endereço de e-mail`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`data e hora ISO`,date:`data ISO`,time:`hora ISO`,duration:`duração ISO`,ipv4:`endereço IPv4`,ipv6:`endereço IPv6`,cidrv4:`faixa de IPv4`,cidrv6:`faixa de IPv6`,base64:`texto codificado em base64`,base64url:`URL codificada em base64`,json_string:`texto JSON`,e164:`número E.164`,jwt:`JWT`,template_literal:`entrada`},r={nan:`NaN`,number:`número`,null:`nulo`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Tipo inválido: esperado instanceof ${e.expected}, recebido ${i}`:`Tipo inválido: esperado ${t}, recebido ${i}`}case`invalid_value`:return e.values.length===1?`Entrada inválida: esperado ${x(e.values[0])}`:`Opção inválida: esperada uma das ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Muito grande: esperado que ${e.origin??`valor`} tivesse ${n}${e.maximum.toString()} ${r.unit??`elementos`}`:`Muito grande: esperado que ${e.origin??`valor`} fosse ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Muito pequeno: esperado que ${e.origin} tivesse ${n}${e.minimum.toString()} ${r.unit}`:`Muito pequeno: esperado que ${e.origin} fosse ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Texto inválido: deve começar com "${t.prefix}"`:t.format===`ends_with`?`Texto inválido: deve terminar com "${t.suffix}"`:t.format===`includes`?`Texto inválido: deve incluir "${t.includes}"`:t.format===`regex`?`Texto inválido: deve corresponder ao padrão ${t.pattern}`:`${n[t.format]??e.format} inválido`}case`not_multiple_of`:return`Número inválido: deve ser múltiplo de ${e.divisor}`;case`unrecognized_keys`:return`Chave${e.keys.length>1?`s`:``} desconhecida${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Chave inválida em ${e.origin}`;case`invalid_union`:return`Entrada inválida`;case`invalid_element`:return`Valor inválido em ${e.origin}`;default:return`Campo inválido`}}};function so(){return{localeError:oo()}}function co(e,t,n,r){let i=Math.abs(e),a=i%10,o=i%100;return o>=11&&o<=19?r:a===1?t:a>=2&&a<=4?n:r}var lo=()=>{let e={string:{unit:{one:`символ`,few:`символа`,many:`символов`},verb:`иметь`},file:{unit:{one:`байт`,few:`байта`,many:`байт`},verb:`иметь`},array:{unit:{one:`элемент`,few:`элемента`,many:`элементов`},verb:`иметь`},set:{unit:{one:`элемент`,few:`элемента`,many:`элементов`},verb:`иметь`}};function t(t){return e[t]??null}let n={regex:`ввод`,email:`email адрес`,url:`URL`,emoji:`эмодзи`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO дата и время`,date:`ISO дата`,time:`ISO время`,duration:`ISO длительность`,ipv4:`IPv4 адрес`,ipv6:`IPv6 адрес`,cidrv4:`IPv4 диапазон`,cidrv6:`IPv6 диапазон`,base64:`строка в формате base64`,base64url:`строка в формате base64url`,json_string:`JSON строка`,e164:`номер E.164`,jwt:`JWT`,template_literal:`ввод`},r={nan:`NaN`,number:`число`,array:`массив`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Неверный ввод: ожидалось instanceof ${e.expected}, получено ${i}`:`Неверный ввод: ожидалось ${t}, получено ${i}`}case`invalid_value`:return e.values.length===1?`Неверный ввод: ожидалось ${x(e.values[0])}`:`Неверный вариант: ожидалось одно из ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);if(r){let t=co(Number(e.maximum),r.unit.one,r.unit.few,r.unit.many);return`Слишком большое значение: ожидалось, что ${e.origin??`значение`} будет иметь ${n}${e.maximum.toString()} ${t}`}return`Слишком большое значение: ожидалось, что ${e.origin??`значение`} будет ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);if(r){let t=co(Number(e.minimum),r.unit.one,r.unit.few,r.unit.many);return`Слишком маленькое значение: ожидалось, что ${e.origin} будет иметь ${n}${e.minimum.toString()} ${t}`}return`Слишком маленькое значение: ожидалось, что ${e.origin} будет ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Неверная строка: должна начинаться с "${t.prefix}"`:t.format===`ends_with`?`Неверная строка: должна заканчиваться на "${t.suffix}"`:t.format===`includes`?`Неверная строка: должна содержать "${t.includes}"`:t.format===`regex`?`Неверная строка: должна соответствовать шаблону ${t.pattern}`:`Неверный ${n[t.format]??e.format}`}case`not_multiple_of`:return`Неверное число: должно быть кратным ${e.divisor}`;case`unrecognized_keys`:return`Нераспознанн${e.keys.length>1?`ые`:`ый`} ключ${e.keys.length>1?`и`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Неверный ключ в ${e.origin}`;case`invalid_union`:return`Неверные входные данные`;case`invalid_element`:return`Неверное значение в ${e.origin}`;default:return`Неверные входные данные`}}};function uo(){return{localeError:lo()}}var fo=()=>{let e={string:{unit:`znakov`,verb:`imeti`},file:{unit:`bajtov`,verb:`imeti`},array:{unit:`elementov`,verb:`imeti`},set:{unit:`elementov`,verb:`imeti`}};function t(t){return e[t]??null}let n={regex:`vnos`,email:`e-poštni naslov`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datum in čas`,date:`ISO datum`,time:`ISO čas`,duration:`ISO trajanje`,ipv4:`IPv4 naslov`,ipv6:`IPv6 naslov`,cidrv4:`obseg IPv4`,cidrv6:`obseg IPv6`,base64:`base64 kodiran niz`,base64url:`base64url kodiran niz`,json_string:`JSON niz`,e164:`E.164 številka`,jwt:`JWT`,template_literal:`vnos`},r={nan:`NaN`,number:`število`,array:`tabela`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Neveljaven vnos: pričakovano instanceof ${e.expected}, prejeto ${i}`:`Neveljaven vnos: pričakovano ${t}, prejeto ${i}`}case`invalid_value`:return e.values.length===1?`Neveljaven vnos: pričakovano ${x(e.values[0])}`:`Neveljavna možnost: pričakovano eno izmed ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Preveliko: pričakovano, da bo ${e.origin??`vrednost`} imelo ${n}${e.maximum.toString()} ${r.unit??`elementov`}`:`Preveliko: pričakovano, da bo ${e.origin??`vrednost`} ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Premajhno: pričakovano, da bo ${e.origin} imelo ${n}${e.minimum.toString()} ${r.unit}`:`Premajhno: pričakovano, da bo ${e.origin} ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Neveljaven niz: mora se začeti z "${t.prefix}"`:t.format===`ends_with`?`Neveljaven niz: mora se končati z "${t.suffix}"`:t.format===`includes`?`Neveljaven niz: mora vsebovati "${t.includes}"`:t.format===`regex`?`Neveljaven niz: mora ustrezati vzorcu ${t.pattern}`:`Neveljaven ${n[t.format]??e.format}`}case`not_multiple_of`:return`Neveljavno število: mora biti večkratnik ${e.divisor}`;case`unrecognized_keys`:return`Neprepoznan${e.keys.length>1?`i ključi`:` ključ`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Neveljaven ključ v ${e.origin}`;case`invalid_union`:return`Neveljaven vnos`;case`invalid_element`:return`Neveljavna vrednost v ${e.origin}`;default:return`Neveljaven vnos`}}};function po(){return{localeError:fo()}}var mo=()=>{let e={string:{unit:`tecken`,verb:`att ha`},file:{unit:`bytes`,verb:`att ha`},array:{unit:`objekt`,verb:`att innehålla`},set:{unit:`objekt`,verb:`att innehålla`}};function t(t){return e[t]??null}let n={regex:`reguljärt uttryck`,email:`e-postadress`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO-datum och tid`,date:`ISO-datum`,time:`ISO-tid`,duration:`ISO-varaktighet`,ipv4:`IPv4-intervall`,ipv6:`IPv6-intervall`,cidrv4:`IPv4-spektrum`,cidrv6:`IPv6-spektrum`,base64:`base64-kodad sträng`,base64url:`base64url-kodad sträng`,json_string:`JSON-sträng`,e164:`E.164-nummer`,jwt:`JWT`,template_literal:`mall-literal`},r={nan:`NaN`,number:`antal`,array:`lista`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Ogiltig inmatning: förväntat instanceof ${e.expected}, fick ${i}`:`Ogiltig inmatning: förväntat ${t}, fick ${i}`}case`invalid_value`:return e.values.length===1?`Ogiltig inmatning: förväntat ${x(e.values[0])}`:`Ogiltigt val: förväntade en av ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`För stor(t): förväntade ${e.origin??`värdet`} att ha ${n}${e.maximum.toString()} ${r.unit??`element`}`:`För stor(t): förväntat ${e.origin??`värdet`} att ha ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`För lite(t): förväntade ${e.origin??`värdet`} att ha ${n}${e.minimum.toString()} ${r.unit}`:`För lite(t): förväntade ${e.origin??`värdet`} att ha ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Ogiltig sträng: måste börja med "${t.prefix}"`:t.format===`ends_with`?`Ogiltig sträng: måste sluta med "${t.suffix}"`:t.format===`includes`?`Ogiltig sträng: måste innehålla "${t.includes}"`:t.format===`regex`?`Ogiltig sträng: måste matcha mönstret "${t.pattern}"`:`Ogiltig(t) ${n[t.format]??e.format}`}case`not_multiple_of`:return`Ogiltigt tal: måste vara en multipel av ${e.divisor}`;case`unrecognized_keys`:return`${e.keys.length>1?`Okända nycklar`:`Okänd nyckel`}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Ogiltig nyckel i ${e.origin??`värdet`}`;case`invalid_union`:return`Ogiltig input`;case`invalid_element`:return`Ogiltigt värde i ${e.origin??`värdet`}`;default:return`Ogiltig input`}}};function ho(){return{localeError:mo()}}var go=()=>{let e={string:{unit:`எழுத்துக்கள்`,verb:`கொண்டிருக்க வேண்டும்`},file:{unit:`பைட்டுகள்`,verb:`கொண்டிருக்க வேண்டும்`},array:{unit:`உறுப்புகள்`,verb:`கொண்டிருக்க வேண்டும்`},set:{unit:`உறுப்புகள்`,verb:`கொண்டிருக்க வேண்டும்`}};function t(t){return e[t]??null}let n={regex:`உள்ளீடு`,email:`மின்னஞ்சல் முகவரி`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO தேதி நேரம்`,date:`ISO தேதி`,time:`ISO நேரம்`,duration:`ISO கால அளவு`,ipv4:`IPv4 முகவரி`,ipv6:`IPv6 முகவரி`,cidrv4:`IPv4 வரம்பு`,cidrv6:`IPv6 வரம்பு`,base64:`base64-encoded சரம்`,base64url:`base64url-encoded சரம்`,json_string:`JSON சரம்`,e164:`E.164 எண்`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`,number:`எண்`,array:`அணி`,null:`வெறுமை`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${e.expected}, பெறப்பட்டது ${i}`:`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${t}, பெறப்பட்டது ${i}`}case`invalid_value`:return e.values.length===1?`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${x(e.values[0])}`:`தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${f(e.values,`|`)} இல் ஒன்று`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`மிக பெரியது: எதிர்பார்க்கப்பட்டது ${e.origin??`மதிப்பு`} ${n}${e.maximum.toString()} ${r.unit??`உறுப்புகள்`} ஆக இருக்க வேண்டும்`:`மிக பெரியது: எதிர்பார்க்கப்பட்டது ${e.origin??`மதிப்பு`} ${n}${e.maximum.toString()} ஆக இருக்க வேண்டும்`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${e.origin} ${n}${e.minimum.toString()} ${r.unit} ஆக இருக்க வேண்டும்`:`மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${e.origin} ${n}${e.minimum.toString()} ஆக இருக்க வேண்டும்`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`தவறான சரம்: "${t.prefix}" இல் தொடங்க வேண்டும்`:t.format===`ends_with`?`தவறான சரம்: "${t.suffix}" இல் முடிவடைய வேண்டும்`:t.format===`includes`?`தவறான சரம்: "${t.includes}" ஐ உள்ளடக்க வேண்டும்`:t.format===`regex`?`தவறான சரம்: ${t.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`:`தவறான ${n[t.format]??e.format}`}case`not_multiple_of`:return`தவறான எண்: ${e.divisor} இன் பலமாக இருக்க வேண்டும்`;case`unrecognized_keys`:return`அடையாளம் தெரியாத விசை${e.keys.length>1?`கள்`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`${e.origin} இல் தவறான விசை`;case`invalid_union`:return`தவறான உள்ளீடு`;case`invalid_element`:return`${e.origin} இல் தவறான மதிப்பு`;default:return`தவறான உள்ளீடு`}}};function _o(){return{localeError:go()}}var vo=()=>{let e={string:{unit:`ตัวอักษร`,verb:`ควรมี`},file:{unit:`ไบต์`,verb:`ควรมี`},array:{unit:`รายการ`,verb:`ควรมี`},set:{unit:`รายการ`,verb:`ควรมี`}};function t(t){return e[t]??null}let n={regex:`ข้อมูลที่ป้อน`,email:`ที่อยู่อีเมล`,url:`URL`,emoji:`อิโมจิ`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`วันที่เวลาแบบ ISO`,date:`วันที่แบบ ISO`,time:`เวลาแบบ ISO`,duration:`ช่วงเวลาแบบ ISO`,ipv4:`ที่อยู่ IPv4`,ipv6:`ที่อยู่ IPv6`,cidrv4:`ช่วง IP แบบ IPv4`,cidrv6:`ช่วง IP แบบ IPv6`,base64:`ข้อความแบบ Base64`,base64url:`ข้อความแบบ Base64 สำหรับ URL`,json_string:`ข้อความแบบ JSON`,e164:`เบอร์โทรศัพท์ระหว่างประเทศ (E.164)`,jwt:`โทเคน JWT`,template_literal:`ข้อมูลที่ป้อน`},r={nan:`NaN`,number:`ตัวเลข`,array:`อาร์เรย์ (Array)`,null:`ไม่มีค่า (null)`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${e.expected} แต่ได้รับ ${i}`:`ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${t} แต่ได้รับ ${i}`}case`invalid_value`:return e.values.length===1?`ค่าไม่ถูกต้อง: ควรเป็น ${x(e.values[0])}`:`ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`ไม่เกิน`:`น้อยกว่า`,r=t(e.origin);return r?`เกินกำหนด: ${e.origin??`ค่า`} ควรมี${n} ${e.maximum.toString()} ${r.unit??`รายการ`}`:`เกินกำหนด: ${e.origin??`ค่า`} ควรมี${n} ${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`อย่างน้อย`:`มากกว่า`,r=t(e.origin);return r?`น้อยกว่ากำหนด: ${e.origin} ควรมี${n} ${e.minimum.toString()} ${r.unit}`:`น้อยกว่ากำหนด: ${e.origin} ควรมี${n} ${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย "${t.prefix}"`:t.format===`ends_with`?`รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย "${t.suffix}"`:t.format===`includes`?`รูปแบบไม่ถูกต้อง: ข้อความต้องมี "${t.includes}" อยู่ในข้อความ`:t.format===`regex`?`รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${t.pattern}`:`รูปแบบไม่ถูกต้อง: ${n[t.format]??e.format}`}case`not_multiple_of`:return`ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${e.divisor} ได้ลงตัว`;case`unrecognized_keys`:return`พบคีย์ที่ไม่รู้จัก: ${f(e.keys,`, `)}`;case`invalid_key`:return`คีย์ไม่ถูกต้องใน ${e.origin}`;case`invalid_union`:return`ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้`;case`invalid_element`:return`ข้อมูลไม่ถูกต้องใน ${e.origin}`;default:return`ข้อมูลไม่ถูกต้อง`}}};function yo(){return{localeError:vo()}}var bo=()=>{let e={string:{unit:`karakter`,verb:`olmalı`},file:{unit:`bayt`,verb:`olmalı`},array:{unit:`öğe`,verb:`olmalı`},set:{unit:`öğe`,verb:`olmalı`}};function t(t){return e[t]??null}let n={regex:`girdi`,email:`e-posta adresi`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO tarih ve saat`,date:`ISO tarih`,time:`ISO saat`,duration:`ISO süre`,ipv4:`IPv4 adresi`,ipv6:`IPv6 adresi`,cidrv4:`IPv4 aralığı`,cidrv6:`IPv6 aralığı`,base64:`base64 ile şifrelenmiş metin`,base64url:`base64url ile şifrelenmiş metin`,json_string:`JSON dizesi`,e164:`E.164 sayısı`,jwt:`JWT`,template_literal:`Şablon dizesi`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Geçersiz değer: beklenen instanceof ${e.expected}, alınan ${i}`:`Geçersiz değer: beklenen ${t}, alınan ${i}`}case`invalid_value`:return e.values.length===1?`Geçersiz değer: beklenen ${x(e.values[0])}`:`Geçersiz seçenek: aşağıdakilerden biri olmalı: ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Çok büyük: beklenen ${e.origin??`değer`} ${n}${e.maximum.toString()} ${r.unit??`öğe`}`:`Çok büyük: beklenen ${e.origin??`değer`} ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Çok küçük: beklenen ${e.origin} ${n}${e.minimum.toString()} ${r.unit}`:`Çok küçük: beklenen ${e.origin} ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Geçersiz metin: "${t.prefix}" ile başlamalı`:t.format===`ends_with`?`Geçersiz metin: "${t.suffix}" ile bitmeli`:t.format===`includes`?`Geçersiz metin: "${t.includes}" içermeli`:t.format===`regex`?`Geçersiz metin: ${t.pattern} desenine uymalı`:`Geçersiz ${n[t.format]??e.format}`}case`not_multiple_of`:return`Geçersiz sayı: ${e.divisor} ile tam bölünebilmeli`;case`unrecognized_keys`:return`Tanınmayan anahtar${e.keys.length>1?`lar`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`${e.origin} içinde geçersiz anahtar`;case`invalid_union`:return`Geçersiz değer`;case`invalid_element`:return`${e.origin} içinde geçersiz değer`;default:return`Geçersiz değer`}}};function xo(){return{localeError:bo()}}var So=()=>{let e={string:{unit:`символів`,verb:`матиме`},file:{unit:`байтів`,verb:`матиме`},array:{unit:`елементів`,verb:`матиме`},set:{unit:`елементів`,verb:`матиме`}};function t(t){return e[t]??null}let n={regex:`вхідні дані`,email:`адреса електронної пошти`,url:`URL`,emoji:`емодзі`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`дата та час ISO`,date:`дата ISO`,time:`час ISO`,duration:`тривалість ISO`,ipv4:`адреса IPv4`,ipv6:`адреса IPv6`,cidrv4:`діапазон IPv4`,cidrv6:`діапазон IPv6`,base64:`рядок у кодуванні base64`,base64url:`рядок у кодуванні base64url`,json_string:`рядок JSON`,e164:`номер E.164`,jwt:`JWT`,template_literal:`вхідні дані`},r={nan:`NaN`,number:`число`,array:`масив`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Неправильні вхідні дані: очікується instanceof ${e.expected}, отримано ${i}`:`Неправильні вхідні дані: очікується ${t}, отримано ${i}`}case`invalid_value`:return e.values.length===1?`Неправильні вхідні дані: очікується ${x(e.values[0])}`:`Неправильна опція: очікується одне з ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Занадто велике: очікується, що ${e.origin??`значення`} ${r.verb} ${n}${e.maximum.toString()} ${r.unit??`елементів`}`:`Занадто велике: очікується, що ${e.origin??`значення`} буде ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Занадто мале: очікується, що ${e.origin} ${r.verb} ${n}${e.minimum.toString()} ${r.unit}`:`Занадто мале: очікується, що ${e.origin} буде ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Неправильний рядок: повинен починатися з "${t.prefix}"`:t.format===`ends_with`?`Неправильний рядок: повинен закінчуватися на "${t.suffix}"`:t.format===`includes`?`Неправильний рядок: повинен містити "${t.includes}"`:t.format===`regex`?`Неправильний рядок: повинен відповідати шаблону ${t.pattern}`:`Неправильний ${n[t.format]??e.format}`}case`not_multiple_of`:return`Неправильне число: повинно бути кратним ${e.divisor}`;case`unrecognized_keys`:return`Нерозпізнаний ключ${e.keys.length>1?`і`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Неправильний ключ у ${e.origin}`;case`invalid_union`:return`Неправильні вхідні дані`;case`invalid_element`:return`Неправильне значення у ${e.origin}`;default:return`Неправильні вхідні дані`}}};function Co(){return{localeError:So()}}function wo(){return Co()}var To=()=>{let e={string:{unit:`حروف`,verb:`ہونا`},file:{unit:`بائٹس`,verb:`ہونا`},array:{unit:`آئٹمز`,verb:`ہونا`},set:{unit:`آئٹمز`,verb:`ہونا`}};function t(t){return e[t]??null}let n={regex:`ان پٹ`,email:`ای میل ایڈریس`,url:`یو آر ایل`,emoji:`ایموجی`,uuid:`یو یو آئی ڈی`,uuidv4:`یو یو آئی ڈی وی 4`,uuidv6:`یو یو آئی ڈی وی 6`,nanoid:`نینو آئی ڈی`,guid:`جی یو آئی ڈی`,cuid:`سی یو آئی ڈی`,cuid2:`سی یو آئی ڈی 2`,ulid:`یو ایل آئی ڈی`,xid:`ایکس آئی ڈی`,ksuid:`کے ایس یو آئی ڈی`,datetime:`آئی ایس او ڈیٹ ٹائم`,date:`آئی ایس او تاریخ`,time:`آئی ایس او وقت`,duration:`آئی ایس او مدت`,ipv4:`آئی پی وی 4 ایڈریس`,ipv6:`آئی پی وی 6 ایڈریس`,cidrv4:`آئی پی وی 4 رینج`,cidrv6:`آئی پی وی 6 رینج`,base64:`بیس 64 ان کوڈڈ سٹرنگ`,base64url:`بیس 64 یو آر ایل ان کوڈڈ سٹرنگ`,json_string:`جے ایس او این سٹرنگ`,e164:`ای 164 نمبر`,jwt:`جے ڈبلیو ٹی`,template_literal:`ان پٹ`},r={nan:`NaN`,number:`نمبر`,array:`آرے`,null:`نل`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`غلط ان پٹ: instanceof ${e.expected} متوقع تھا، ${i} موصول ہوا`:`غلط ان پٹ: ${t} متوقع تھا، ${i} موصول ہوا`}case`invalid_value`:return e.values.length===1?`غلط ان پٹ: ${x(e.values[0])} متوقع تھا`:`غلط آپشن: ${f(e.values,`|`)} میں سے ایک متوقع تھا`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`بہت بڑا: ${e.origin??`ویلیو`} کے ${n}${e.maximum.toString()} ${r.unit??`عناصر`} ہونے متوقع تھے`:`بہت بڑا: ${e.origin??`ویلیو`} کا ${n}${e.maximum.toString()} ہونا متوقع تھا`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`بہت چھوٹا: ${e.origin} کے ${n}${e.minimum.toString()} ${r.unit} ہونے متوقع تھے`:`بہت چھوٹا: ${e.origin} کا ${n}${e.minimum.toString()} ہونا متوقع تھا`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`غلط سٹرنگ: "${t.prefix}" سے شروع ہونا چاہیے`:t.format===`ends_with`?`غلط سٹرنگ: "${t.suffix}" پر ختم ہونا چاہیے`:t.format===`includes`?`غلط سٹرنگ: "${t.includes}" شامل ہونا چاہیے`:t.format===`regex`?`غلط سٹرنگ: پیٹرن ${t.pattern} سے میچ ہونا چاہیے`:`غلط ${n[t.format]??e.format}`}case`not_multiple_of`:return`غلط نمبر: ${e.divisor} کا مضاعف ہونا چاہیے`;case`unrecognized_keys`:return`غیر تسلیم شدہ کی${e.keys.length>1?`ز`:``}: ${f(e.keys,`، `)}`;case`invalid_key`:return`${e.origin} میں غلط کی`;case`invalid_union`:return`غلط ان پٹ`;case`invalid_element`:return`${e.origin} میں غلط ویلیو`;default:return`غلط ان پٹ`}}};function Eo(){return{localeError:To()}}var Do=()=>{let e={string:{unit:`belgi`,verb:`bo‘lishi kerak`},file:{unit:`bayt`,verb:`bo‘lishi kerak`},array:{unit:`element`,verb:`bo‘lishi kerak`},set:{unit:`element`,verb:`bo‘lishi kerak`}};function t(t){return e[t]??null}let n={regex:`kirish`,email:`elektron pochta manzili`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO sana va vaqti`,date:`ISO sana`,time:`ISO vaqt`,duration:`ISO davomiylik`,ipv4:`IPv4 manzil`,ipv6:`IPv6 manzil`,mac:`MAC manzil`,cidrv4:`IPv4 diapazon`,cidrv6:`IPv6 diapazon`,base64:`base64 kodlangan satr`,base64url:`base64url kodlangan satr`,json_string:`JSON satr`,e164:`E.164 raqam`,jwt:`JWT`,template_literal:`kirish`},r={nan:`NaN`,number:`raqam`,array:`massiv`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Noto‘g‘ri kirish: kutilgan instanceof ${e.expected}, qabul qilingan ${i}`:`Noto‘g‘ri kirish: kutilgan ${t}, qabul qilingan ${i}`}case`invalid_value`:return e.values.length===1?`Noto‘g‘ri kirish: kutilgan ${x(e.values[0])}`:`Noto‘g‘ri variant: quyidagilardan biri kutilgan ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Juda katta: kutilgan ${e.origin??`qiymat`} ${n}${e.maximum.toString()} ${r.unit} ${r.verb}`:`Juda katta: kutilgan ${e.origin??`qiymat`} ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Juda kichik: kutilgan ${e.origin} ${n}${e.minimum.toString()} ${r.unit} ${r.verb}`:`Juda kichik: kutilgan ${e.origin} ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Noto‘g‘ri satr: "${t.prefix}" bilan boshlanishi kerak`:t.format===`ends_with`?`Noto‘g‘ri satr: "${t.suffix}" bilan tugashi kerak`:t.format===`includes`?`Noto‘g‘ri satr: "${t.includes}" ni o‘z ichiga olishi kerak`:t.format===`regex`?`Noto‘g‘ri satr: ${t.pattern} shabloniga mos kelishi kerak`:`Noto‘g‘ri ${n[t.format]??e.format}`}case`not_multiple_of`:return`Noto‘g‘ri raqam: ${e.divisor} ning karralisi bo‘lishi kerak`;case`unrecognized_keys`:return`Noma’lum kalit${e.keys.length>1?`lar`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`${e.origin} dagi kalit noto‘g‘ri`;case`invalid_union`:return`Noto‘g‘ri kirish`;case`invalid_element`:return`${e.origin} da noto‘g‘ri qiymat`;default:return`Noto‘g‘ri kirish`}}};function Oo(){return{localeError:Do()}}var ko=()=>{let e={string:{unit:`ký tự`,verb:`có`},file:{unit:`byte`,verb:`có`},array:{unit:`phần tử`,verb:`có`},set:{unit:`phần tử`,verb:`có`}};function t(t){return e[t]??null}let n={regex:`đầu vào`,email:`địa chỉ email`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ngày giờ ISO`,date:`ngày ISO`,time:`giờ ISO`,duration:`khoảng thời gian ISO`,ipv4:`địa chỉ IPv4`,ipv6:`địa chỉ IPv6`,cidrv4:`dải IPv4`,cidrv6:`dải IPv6`,base64:`chuỗi mã hóa base64`,base64url:`chuỗi mã hóa base64url`,json_string:`chuỗi JSON`,e164:`số E.164`,jwt:`JWT`,template_literal:`đầu vào`},r={nan:`NaN`,number:`số`,array:`mảng`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Đầu vào không hợp lệ: mong đợi instanceof ${e.expected}, nhận được ${i}`:`Đầu vào không hợp lệ: mong đợi ${t}, nhận được ${i}`}case`invalid_value`:return e.values.length===1?`Đầu vào không hợp lệ: mong đợi ${x(e.values[0])}`:`Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Quá lớn: mong đợi ${e.origin??`giá trị`} ${r.verb} ${n}${e.maximum.toString()} ${r.unit??`phần tử`}`:`Quá lớn: mong đợi ${e.origin??`giá trị`} ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Quá nhỏ: mong đợi ${e.origin} ${r.verb} ${n}${e.minimum.toString()} ${r.unit}`:`Quá nhỏ: mong đợi ${e.origin} ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Chuỗi không hợp lệ: phải bắt đầu bằng "${t.prefix}"`:t.format===`ends_with`?`Chuỗi không hợp lệ: phải kết thúc bằng "${t.suffix}"`:t.format===`includes`?`Chuỗi không hợp lệ: phải bao gồm "${t.includes}"`:t.format===`regex`?`Chuỗi không hợp lệ: phải khớp với mẫu ${t.pattern}`:`${n[t.format]??e.format} không hợp lệ`}case`not_multiple_of`:return`Số không hợp lệ: phải là bội số của ${e.divisor}`;case`unrecognized_keys`:return`Khóa không được nhận dạng: ${f(e.keys,`, `)}`;case`invalid_key`:return`Khóa không hợp lệ trong ${e.origin}`;case`invalid_union`:return`Đầu vào không hợp lệ`;case`invalid_element`:return`Giá trị không hợp lệ trong ${e.origin}`;default:return`Đầu vào không hợp lệ`}}};function Ao(){return{localeError:ko()}}var jo=()=>{let e={string:{unit:`字符`,verb:`包含`},file:{unit:`字节`,verb:`包含`},array:{unit:`项`,verb:`包含`},set:{unit:`项`,verb:`包含`}};function t(t){return e[t]??null}let n={regex:`输入`,email:`电子邮件`,url:`URL`,emoji:`表情符号`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO日期时间`,date:`ISO日期`,time:`ISO时间`,duration:`ISO时长`,ipv4:`IPv4地址`,ipv6:`IPv6地址`,cidrv4:`IPv4网段`,cidrv6:`IPv6网段`,base64:`base64编码字符串`,base64url:`base64url编码字符串`,json_string:`JSON字符串`,e164:`E.164号码`,jwt:`JWT`,template_literal:`输入`},r={nan:`NaN`,number:`数字`,array:`数组`,null:`空值(null)`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`无效输入:期望 instanceof ${e.expected},实际接收 ${i}`:`无效输入:期望 ${t},实际接收 ${i}`}case`invalid_value`:return e.values.length===1?`无效输入:期望 ${x(e.values[0])}`:`无效选项:期望以下之一 ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`数值过大:期望 ${e.origin??`值`} ${n}${e.maximum.toString()} ${r.unit??`个元素`}`:`数值过大:期望 ${e.origin??`值`} ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`数值过小:期望 ${e.origin} ${n}${e.minimum.toString()} ${r.unit}`:`数值过小:期望 ${e.origin} ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`无效字符串:必须以 "${t.prefix}" 开头`:t.format===`ends_with`?`无效字符串:必须以 "${t.suffix}" 结尾`:t.format===`includes`?`无效字符串:必须包含 "${t.includes}"`:t.format===`regex`?`无效字符串:必须满足正则表达式 ${t.pattern}`:`无效${n[t.format]??e.format}`}case`not_multiple_of`:return`无效数字:必须是 ${e.divisor} 的倍数`;case`unrecognized_keys`:return`出现未知的键(key): ${f(e.keys,`, `)}`;case`invalid_key`:return`${e.origin} 中的键(key)无效`;case`invalid_union`:return`无效输入`;case`invalid_element`:return`${e.origin} 中包含无效值(value)`;default:return`无效输入`}}};function Mo(){return{localeError:jo()}}var No=()=>{let e={string:{unit:`字元`,verb:`擁有`},file:{unit:`位元組`,verb:`擁有`},array:{unit:`項目`,verb:`擁有`},set:{unit:`項目`,verb:`擁有`}};function t(t){return e[t]??null}let n={regex:`輸入`,email:`郵件地址`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO 日期時間`,date:`ISO 日期`,time:`ISO 時間`,duration:`ISO 期間`,ipv4:`IPv4 位址`,ipv6:`IPv6 位址`,cidrv4:`IPv4 範圍`,cidrv6:`IPv6 範圍`,base64:`base64 編碼字串`,base64url:`base64url 編碼字串`,json_string:`JSON 字串`,e164:`E.164 數值`,jwt:`JWT`,template_literal:`輸入`},r={nan:`NaN`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`無效的輸入值:預期為 instanceof ${e.expected},但收到 ${i}`:`無效的輸入值:預期為 ${t},但收到 ${i}`}case`invalid_value`:return e.values.length===1?`無效的輸入值:預期為 ${x(e.values[0])}`:`無效的選項:預期為以下其中之一 ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`數值過大:預期 ${e.origin??`值`} 應為 ${n}${e.maximum.toString()} ${r.unit??`個元素`}`:`數值過大:預期 ${e.origin??`值`} 應為 ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`數值過小:預期 ${e.origin} 應為 ${n}${e.minimum.toString()} ${r.unit}`:`數值過小:預期 ${e.origin} 應為 ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`無效的字串:必須以 "${t.prefix}" 開頭`:t.format===`ends_with`?`無效的字串:必須以 "${t.suffix}" 結尾`:t.format===`includes`?`無效的字串:必須包含 "${t.includes}"`:t.format===`regex`?`無效的字串:必須符合格式 ${t.pattern}`:`無效的 ${n[t.format]??e.format}`}case`not_multiple_of`:return`無效的數字:必須為 ${e.divisor} 的倍數`;case`unrecognized_keys`:return`無法識別的鍵值${e.keys.length>1?`們`:``}:${f(e.keys,`、`)}`;case`invalid_key`:return`${e.origin} 中有無效的鍵值`;case`invalid_union`:return`無效的輸入值`;case`invalid_element`:return`${e.origin} 中有無效的值`;default:return`無效的輸入值`}}};function Po(){return{localeError:No()}}var Fo=()=>{let e={string:{unit:`àmi`,verb:`ní`},file:{unit:`bytes`,verb:`ní`},array:{unit:`nkan`,verb:`ní`},set:{unit:`nkan`,verb:`ní`}};function t(t){return e[t]??null}let n={regex:`ẹ̀rọ ìbáwọlé`,email:`àdírẹ́sì ìmẹ́lì`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`àkókò ISO`,date:`ọjọ́ ISO`,time:`àkókò ISO`,duration:`àkókò tó pé ISO`,ipv4:`àdírẹ́sì IPv4`,ipv6:`àdírẹ́sì IPv6`,cidrv4:`àgbègbè IPv4`,cidrv6:`àgbègbè IPv6`,base64:`ọ̀rọ̀ tí a kọ́ ní base64`,base64url:`ọ̀rọ̀ base64url`,json_string:`ọ̀rọ̀ JSON`,e164:`nọ́mbà E.164`,jwt:`JWT`,template_literal:`ẹ̀rọ ìbáwọlé`},r={nan:`NaN`,number:`nọ́mbà`,array:`akopọ`};return e=>{switch(e.code){case`invalid_type`:{let t=r[e.expected]??e.expected,n=T(e.input),i=r[n]??n;return/^[A-Z]/.test(e.expected)?`Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${e.expected}, àmọ̀ a rí ${i}`:`Ìbáwọlé aṣìṣe: a ní láti fi ${t}, àmọ̀ a rí ${i}`}case`invalid_value`:return e.values.length===1?`Ìbáwọlé aṣìṣe: a ní láti fi ${x(e.values[0])}`:`Àṣàyàn aṣìṣe: yan ọ̀kan lára ${f(e.values,`|`)}`;case`too_big`:{let n=e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Tó pọ̀ jù: a ní láti jẹ́ pé ${e.origin??`iye`} ${r.verb} ${n}${e.maximum} ${r.unit}`:`Tó pọ̀ jù: a ní láti jẹ́ ${n}${e.maximum}`}case`too_small`:{let n=e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Kéré ju: a ní láti jẹ́ pé ${e.origin} ${r.verb} ${n}${e.minimum} ${r.unit}`:`Kéré ju: a ní láti jẹ́ ${n}${e.minimum}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú "${t.prefix}"`:t.format===`ends_with`?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú "${t.suffix}"`:t.format===`includes`?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní "${t.includes}"`:t.format===`regex`?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${t.pattern}`:`Aṣìṣe: ${n[t.format]??e.format}`}case`not_multiple_of`:return`Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${e.divisor}`;case`unrecognized_keys`:return`Bọtìnì àìmọ̀: ${f(e.keys,`, `)}`;case`invalid_key`:return`Bọtìnì aṣìṣe nínú ${e.origin}`;case`invalid_union`:return`Ìbáwọlé aṣìṣe`;case`invalid_element`:return`Iye aṣìṣe nínú ${e.origin}`;default:return`Ìbáwọlé aṣìṣe`}}};function Io(){return{localeError:Fo()}}var Lo=e({ar:()=>Ui,az:()=>Gi,be:()=>Ji,bg:()=>Xi,ca:()=>Qi,cs:()=>ea,da:()=>na,de:()=>ia,en:()=>oa,eo:()=>ca,es:()=>ua,fa:()=>fa,fi:()=>ma,fr:()=>ga,frCA:()=>va,he:()=>ba,hu:()=>Sa,hy:()=>Ea,id:()=>Oa,is:()=>Aa,it:()=>Ma,ja:()=>Pa,ka:()=>Ia,kh:()=>za,km:()=>Ra,ko:()=>Va,lt:()=>Ga,mk:()=>qa,ms:()=>Ya,nl:()=>Za,no:()=>$a,ota:()=>to,pl:()=>ao,ps:()=>ro,pt:()=>so,ru:()=>uo,sl:()=>po,sv:()=>ho,ta:()=>_o,th:()=>yo,tr:()=>xo,ua:()=>wo,uk:()=>Co,ur:()=>Eo,uz:()=>Oo,vi:()=>Ao,yo:()=>Io,zhCN:()=>Mo,zhTW:()=>Po}),Ro,zo=Symbol(`ZodOutput`),Bo=Symbol(`ZodInput`),Vo=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Ho(){return new Vo}(Ro=globalThis).__zod_globalRegistry??(Ro.__zod_globalRegistry=Ho());var M=globalThis.__zod_globalRegistry;function Uo(e,t){return new e({type:`string`,...b(t)})}function Wo(e,t){return new e({type:`string`,coerce:!0,...b(t)})}function Go(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...b(t)})}function Ko(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...b(t)})}function qo(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...b(t)})}function Jo(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...b(t)})}function Yo(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...b(t)})}function Xo(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...b(t)})}function Zo(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...b(t)})}function Qo(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...b(t)})}function $o(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...b(t)})}function es(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...b(t)})}function ts(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...b(t)})}function ns(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...b(t)})}function rs(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...b(t)})}function is(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...b(t)})}function as(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...b(t)})}function os(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...b(t)})}function ss(e,t){return new e({type:`string`,format:`mac`,check:`string_format`,abort:!1,...b(t)})}function cs(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...b(t)})}function ls(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...b(t)})}function us(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...b(t)})}function ds(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...b(t)})}function fs(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...b(t)})}function ps(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...b(t)})}var ms={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function hs(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...b(t)})}function gs(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...b(t)})}function _s(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...b(t)})}function vs(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...b(t)})}function ys(e,t){return new e({type:`number`,checks:[],...b(t)})}function bs(e,t){return new e({type:`number`,coerce:!0,checks:[],...b(t)})}function xs(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...b(t)})}function Ss(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`float32`,...b(t)})}function Cs(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`float64`,...b(t)})}function ws(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`int32`,...b(t)})}function Ts(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`uint32`,...b(t)})}function Es(e,t){return new e({type:`boolean`,...b(t)})}function Ds(e,t){return new e({type:`boolean`,coerce:!0,...b(t)})}function Os(e,t){return new e({type:`bigint`,...b(t)})}function ks(e,t){return new e({type:`bigint`,coerce:!0,...b(t)})}function As(e,t){return new e({type:`bigint`,check:`bigint_format`,abort:!1,format:`int64`,...b(t)})}function js(e,t){return new e({type:`bigint`,check:`bigint_format`,abort:!1,format:`uint64`,...b(t)})}function Ms(e,t){return new e({type:`symbol`,...b(t)})}function Ns(e,t){return new e({type:`undefined`,...b(t)})}function Ps(e,t){return new e({type:`null`,...b(t)})}function Fs(e){return new e({type:`any`})}function Is(e){return new e({type:`unknown`})}function Ls(e,t){return new e({type:`never`,...b(t)})}function Rs(e,t){return new e({type:`void`,...b(t)})}function zs(e,t){return new e({type:`date`,...b(t)})}function Bs(e,t){return new e({type:`date`,coerce:!0,...b(t)})}function Vs(e,t){return new e({type:`nan`,...b(t)})}function N(e,t){return new Nn({check:`less_than`,...b(t),value:e,inclusive:!1})}function P(e,t){return new Nn({check:`less_than`,...b(t),value:e,inclusive:!0})}function F(e,t){return new Pn({check:`greater_than`,...b(t),value:e,inclusive:!1})}function I(e,t){return new Pn({check:`greater_than`,...b(t),value:e,inclusive:!0})}function Hs(e){return F(0,e)}function Us(e){return N(0,e)}function Ws(e){return P(0,e)}function Gs(e){return I(0,e)}function L(e,t){return new Fn({check:`multiple_of`,...b(t),value:e})}function R(e,t){return new Rn({check:`max_size`,...b(t),maximum:e})}function z(e,t){return new zn({check:`min_size`,...b(t),minimum:e})}function Ks(e,t){return new Bn({check:`size_equals`,...b(t),size:e})}function qs(e,t){return new Vn({check:`max_length`,...b(t),maximum:e})}function B(e,t){return new Hn({check:`min_length`,...b(t),minimum:e})}function Js(e,t){return new Un({check:`length_equals`,...b(t),length:e})}function Ys(e,t){return new Gn({check:`string_format`,format:`regex`,...b(t),pattern:e})}function Xs(e){return new Kn({check:`string_format`,format:`lowercase`,...b(e)})}function Zs(e){return new qn({check:`string_format`,format:`uppercase`,...b(e)})}function Qs(e,t){return new Jn({check:`string_format`,format:`includes`,...b(t),includes:e})}function $s(e,t){return new Yn({check:`string_format`,format:`starts_with`,...b(t),prefix:e})}function ec(e,t){return new Xn({check:`string_format`,format:`ends_with`,...b(t),suffix:e})}function tc(e,t,n){return new Qn({check:`property`,property:e,schema:t,...b(n)})}function nc(e,t){return new $n({check:`mime_type`,mime:e,...b(t)})}function V(e){return new er({check:`overwrite`,tx:e})}function rc(e){return V(t=>t.normalize(e))}function ic(){return V(e=>e.trim())}function ac(){return V(e=>e.toLowerCase())}function oc(){return V(e=>e.toUpperCase())}function sc(){return V(e=>me(e))}function cc(e,t,n){return new e({type:`array`,element:t,...b(n)})}function lc(e,t,n){return new e({type:`union`,options:t,...b(n)})}function uc(e,t,n){return new e({type:`union`,options:t,inclusive:!1,...b(n)})}function dc(e,t,n,r){return new e({type:`union`,options:n,discriminator:t,...b(r)})}function fc(e,t,n){return new e({type:`intersection`,left:t,right:n})}function pc(e,t,n,r){let i=n instanceof A;return new e({type:`tuple`,items:t,rest:i?n:null,...b(i?r:n)})}function mc(e,t,n,r){return new e({type:`record`,keyType:t,valueType:n,...b(r)})}function hc(e,t,n,r){return new e({type:`map`,keyType:t,valueType:n,...b(r)})}function gc(e,t,n){return new e({type:`set`,valueType:t,...b(n)})}function _c(e,t,n){return new e({type:`enum`,entries:Array.isArray(t)?Object.fromEntries(t.map(e=>[e,e])):t,...b(n)})}function vc(e,t,n){return new e({type:`enum`,entries:t,...b(n)})}function yc(e,t,n){return new e({type:`literal`,values:Array.isArray(t)?t:[t],...b(n)})}function bc(e,t){return new e({type:`file`,...b(t)})}function xc(e,t){return new e({type:`transform`,transform:t})}function Sc(e,t){return new e({type:`optional`,innerType:t})}function Cc(e,t){return new e({type:`nullable`,innerType:t})}function wc(e,t,n){return new e({type:`default`,innerType:t,get defaultValue(){return typeof n==`function`?n():ve(n)}})}function Tc(e,t,n){return new e({type:`nonoptional`,innerType:t,...b(n)})}function Ec(e,t){return new e({type:`success`,innerType:t})}function Dc(e,t,n){return new e({type:`catch`,innerType:t,catchValue:typeof n==`function`?n:()=>n})}function Oc(e,t,n){return new e({type:`pipe`,in:t,out:n})}function kc(e,t){return new e({type:`readonly`,innerType:t})}function Ac(e,t,n){return new e({type:`template_literal`,parts:t,...b(n)})}function jc(e,t){return new e({type:`lazy`,getter:t})}function Mc(e,t){return new e({type:`promise`,innerType:t})}function Nc(e,t,n){let r=b(n);return r.abort??=!0,new e({type:`custom`,check:`custom`,fn:t,...r})}function Pc(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...b(n)})}function Fc(e){let t=Ic(n=>(n.addIssue=e=>{if(typeof e==`string`)n.issues.push(E(e,n.value,t._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=n.value,r.inst??=t,r.continue??=!t._zod.def.abort,n.issues.push(E(r))}},e(n.value,n)));return t}function Ic(e,t){let n=new k({check:`custom`,...b(t)});return n._zod.check=e,n}function Lc(e){let t=new k({check:`describe`});return t._zod.onattach=[t=>{let n=M.get(t)??{};M.add(t,{...n,description:e})}],t._zod.check=()=>{},t}function Rc(e){let t=new k({check:`meta`});return t._zod.onattach=[t=>{let n=M.get(t)??{};M.add(t,{...n,...e})}],t._zod.check=()=>{},t}function zc(e,t){let n=b(t),r=n.truthy??[`true`,`1`,`yes`,`on`,`y`,`enabled`],i=n.falsy??[`false`,`0`,`no`,`off`,`n`,`disabled`];n.case!==`sensitive`&&(r=r.map(e=>typeof e==`string`?e.toLowerCase():e),i=i.map(e=>typeof e==`string`?e.toLowerCase():e));let a=new Set(r),o=new Set(i),s=e.Codec??ji,c=e.Boolean??Pr,l=new s({type:`pipe`,in:new(e.String??rr)({type:`string`,error:n.error}),out:new c({type:`boolean`,error:n.error}),transform:((e,t)=>{let r=e;return n.case!==`sensitive`&&(r=r.toLowerCase()),a.has(r)?!0:o.has(r)?!1:(t.issues.push({code:`invalid_value`,expected:`stringbool`,values:[...a,...o],input:t.value,inst:l,continue:!1}),{})}),reverseTransform:((e,t)=>e===!0?r[0]||`true`:i[0]||`false`),error:n.error});return l}function Bc(e,t,n,r={}){let i=b(r),a={...b(r),check:`string_format`,type:`string`,format:t,fn:typeof n==`function`?n:e=>n.test(e),...i};return n instanceof RegExp&&(a.pattern=n),new e(a)}function H(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??M,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function U(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,U(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&G(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&o.schema._prefault&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function W(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function Vc(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e===`$ref`||e===`allOf`||e in a||delete i[e];if(s.$ref&&n.def)for(let e in i)e===`$ref`||e===`allOf`||e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e===`$ref`||e===`allOf`||e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(a[e.defId]=e.def)}e.external||Object.keys(a).length>0&&(e.target===`draft-2020-12`?i.$defs=a:i.definitions=a);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,`~standard`,{value:{...t[`~standard`],jsonSchema:{input:Uc(t,`input`,e.processors),output:Uc(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function G(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return G(r.element,n);if(r.type===`set`)return G(r.valueType,n);if(r.type===`lazy`)return G(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type===`default`||r.type===`prefault`)return G(r.innerType,n);if(r.type===`intersection`)return G(r.left,n)||G(r.right,n);if(r.type===`record`||r.type===`map`)return G(r.keyType,n)||G(r.valueType,n);if(r.type===`pipe`)return G(r.in,n)||G(r.out,n);if(r.type===`object`){for(let e in r.shape)if(G(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(G(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(G(e,n))return!0;return!!(r.rest&&G(r.rest,n))}return!1}var Hc=(e,t={})=>n=>{let r=H({...n,processors:t});return U(e,r),W(r,e),Vc(r,e)},Uc=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=H({...i??{},target:a,io:t,processors:n});return U(e,o),W(o,e),Vc(o,e)},Wc={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Gc=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Wc[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},Kc=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;typeof s==`string`&&s.includes(`int`)?i.type=`integer`:i.type=`number`,typeof u==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u),typeof a==`number`&&(i.minimum=a,typeof u==`number`&&t.target!==`draft-04`&&(u>=a?delete i.minimum:delete i.exclusiveMinimum)),typeof l==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l),typeof o==`number`&&(i.maximum=o,typeof l==`number`&&t.target!==`draft-04`&&(l<=o?delete i.maximum:delete i.exclusiveMaximum)),typeof c==`number`&&(i.multipleOf=c)},qc=(e,t,n,r)=>{n.type=`boolean`},Jc=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`BigInt cannot be represented in JSON Schema`)},Yc=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Symbols cannot be represented in JSON Schema`)},Xc=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},Zc=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Undefined cannot be represented in JSON Schema`)},Qc=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Void cannot be represented in JSON Schema`)},$c=(e,t,n,r)=>{n.not={}},el=(e,t,n,r)=>{},tl=(e,t,n,r)=>{},nl=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Date cannot be represented in JSON Schema`)},rl=(e,t,n,r)=>{let i=e._zod.def,a=ne(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},il=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0)if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a},al=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`NaN cannot be represented in JSON Schema`)},ol=(e,t,n,r)=>{let i=n,a=e._zod.pattern;if(!a)throw Error(`Pattern not found in template literal`);i.type=`string`,i.pattern=a.source},sl=(e,t,n,r)=>{let i=n,a={type:`string`,format:`binary`,contentEncoding:`binary`},{minimum:o,maximum:s,mime:c}=e._zod.bag;o!==void 0&&(a.minLength=o),s!==void 0&&(a.maxLength=s),c?c.length===1?(a.contentMediaType=c[0],Object.assign(i,a)):(Object.assign(i,a),i.anyOf=c.map(e=>({contentMediaType:e}))):Object.assign(i,a)},cl=(e,t,n,r)=>{n.type=`boolean`},ll=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},ul=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Function types cannot be represented in JSON Schema`)},dl=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},fl=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Map cannot be represented in JSON Schema`)},pl=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Set cannot be represented in JSON Schema`)},ml=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=U(a.element,t,{...r,path:[...r.path,`items`]})},hl=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=U(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=U(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},gl=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>U(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},_l=(e,t,n,r)=>{let i=e._zod.def,a=U(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=U(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},vl=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>U(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?U(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null;t.target===`draft-2020-12`?(i.prefixItems=c,l&&(i.items=l)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),i.minItems=c.length,l||(i.maxItems=c.length)):(i.items=c,l&&(i.additionalItems=l));let{minimum:u,maximum:ee}=e._zod.bag;typeof u==`number`&&(i.minItems=u),typeof ee==`number`&&(i.maxItems=ee)},yl=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=U(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else (t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=U(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=U(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},bl=(e,t,n,r)=>{let i=e._zod.def,a=U(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},xl=(e,t,n,r)=>{let i=e._zod.def;U(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Sl=(e,t,n,r)=>{let i=e._zod.def;U(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},Cl=(e,t,n,r)=>{let i=e._zod.def;U(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},wl=(e,t,n,r)=>{let i=e._zod.def;U(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},Tl=(e,t,n,r)=>{let i=e._zod.def,a=t.io===`input`?i.in._zod.def.type===`transform`?i.out:i.in:i.out;U(a,t,r);let o=t.seen.get(e);o.ref=a},El=(e,t,n,r)=>{let i=e._zod.def;U(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Dl=(e,t,n,r)=>{let i=e._zod.def;U(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Ol=(e,t,n,r)=>{let i=e._zod.def;U(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},kl=(e,t,n,r)=>{let i=e._zod.innerType;U(i,t,r);let a=t.seen.get(e);a.ref=i},Al={string:Gc,number:Kc,boolean:qc,bigint:Jc,symbol:Yc,null:Xc,undefined:Zc,void:Qc,never:$c,any:el,unknown:tl,date:nl,enum:rl,literal:il,nan:al,template_literal:ol,file:sl,success:cl,custom:ll,function:ul,transform:dl,map:fl,set:pl,array:ml,object:hl,union:gl,intersection:_l,tuple:vl,record:yl,nullable:bl,nonoptional:xl,default:Sl,prefault:Cl,catch:wl,pipe:Tl,readonly:El,promise:Dl,optional:Ol,lazy:kl};function jl(e,t){if(`_idmap`in e){let n=e,r=H({...t,processors:Al}),i={};for(let e of n._idmap.entries()){let[t,n]=e;U(n,r)}let a={};r.external={registry:n,uri:t?.uri,defs:i};for(let e of n._idmap.entries()){let[t,n]=e;W(r,n),a[t]=Vc(r,n)}return Object.keys(i).length>0&&(a.__shared={[r.target===`draft-2020-12`?`$defs`:`definitions`]:i}),{schemas:a}}let n=H({...t,processors:Al});return U(e,n),W(n,e),Vc(n,e)}var Ml=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(e){this.ctx.counter=e}get seen(){return this.ctx.seen}constructor(e){let t=e?.target??`draft-2020-12`;t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),this.ctx=H({processors:Al,target:t,...e?.metadata&&{metadata:e.metadata},...e?.unrepresentable&&{unrepresentable:e.unrepresentable},...e?.override&&{override:e.override},...e?.io&&{io:e.io}})}process(e,t={path:[],schemaPath:[]}){return U(e,this.ctx,t)}emit(e,t){t&&(t.cycles&&(this.ctx.cycles=t.cycles),t.reused&&(this.ctx.reused=t.reused),t.external&&(this.ctx.external=t.external)),W(this.ctx,e);let{"~standard":n,...r}=Vc(this.ctx,e);return r}},Nl=e({}),Pl=e({$ZodAny:()=>Br,$ZodArray:()=>Kr,$ZodAsyncError:()=>i,$ZodBase64:()=>Tr,$ZodBase64URL:()=>Dr,$ZodBigInt:()=>Fr,$ZodBigIntFormat:()=>Ir,$ZodBoolean:()=>Pr,$ZodCIDRv4:()=>Sr,$ZodCIDRv6:()=>Cr,$ZodCUID:()=>ur,$ZodCUID2:()=>dr,$ZodCatch:()=>Di,$ZodCheck:()=>k,$ZodCheckBigIntFormat:()=>Ln,$ZodCheckEndsWith:()=>Xn,$ZodCheckGreaterThan:()=>Pn,$ZodCheckIncludes:()=>Jn,$ZodCheckLengthEquals:()=>Un,$ZodCheckLessThan:()=>Nn,$ZodCheckLowerCase:()=>Kn,$ZodCheckMaxLength:()=>Vn,$ZodCheckMaxSize:()=>Rn,$ZodCheckMimeType:()=>$n,$ZodCheckMinLength:()=>Hn,$ZodCheckMinSize:()=>zn,$ZodCheckMultipleOf:()=>Fn,$ZodCheckNumberFormat:()=>In,$ZodCheckOverwrite:()=>er,$ZodCheckProperty:()=>Qn,$ZodCheckRegex:()=>Gn,$ZodCheckSizeEquals:()=>Bn,$ZodCheckStartsWith:()=>Yn,$ZodCheckStringFormat:()=>Wn,$ZodCheckUpperCase:()=>qn,$ZodCodec:()=>ji,$ZodCustom:()=>Bi,$ZodCustomStringFormat:()=>jr,$ZodDate:()=>Wr,$ZodDefault:()=>xi,$ZodDiscriminatedUnion:()=>ni,$ZodE164:()=>Or,$ZodEmail:()=>or,$ZodEmoji:()=>cr,$ZodEncodeError:()=>a,$ZodEnum:()=>pi,$ZodError:()=>Ke,$ZodExactOptional:()=>yi,$ZodFile:()=>hi,$ZodFunction:()=>Li,$ZodGUID:()=>ir,$ZodIPv4:()=>yr,$ZodIPv6:()=>br,$ZodISODate:()=>gr,$ZodISODateTime:()=>hr,$ZodISODuration:()=>vr,$ZodISOTime:()=>_r,$ZodIntersection:()=>ri,$ZodJWT:()=>Ar,$ZodKSUID:()=>mr,$ZodLazy:()=>zi,$ZodLiteral:()=>mi,$ZodMAC:()=>xr,$ZodMap:()=>li,$ZodNaN:()=>Oi,$ZodNanoID:()=>lr,$ZodNever:()=>Hr,$ZodNonOptional:()=>wi,$ZodNull:()=>zr,$ZodNullable:()=>bi,$ZodNumber:()=>Mr,$ZodNumberFormat:()=>Nr,$ZodObject:()=>Xr,$ZodObjectJIT:()=>Zr,$ZodOptional:()=>vi,$ZodPipe:()=>ki,$ZodPrefault:()=>Ci,$ZodPromise:()=>Ri,$ZodReadonly:()=>Pi,$ZodRealError:()=>D,$ZodRecord:()=>ci,$ZodRegistry:()=>Vo,$ZodSet:()=>di,$ZodString:()=>rr,$ZodStringFormat:()=>j,$ZodSuccess:()=>Ei,$ZodSymbol:()=>Lr,$ZodTemplateLiteral:()=>Ii,$ZodTransform:()=>gi,$ZodTuple:()=>oi,$ZodType:()=>A,$ZodULID:()=>fr,$ZodURL:()=>sr,$ZodUUID:()=>ar,$ZodUndefined:()=>Rr,$ZodUnion:()=>$r,$ZodUnknown:()=>Vr,$ZodVoid:()=>Ur,$ZodXID:()=>pr,$ZodXor:()=>ti,$brand:()=>r,$constructor:()=>n,$input:()=>Bo,$output:()=>zo,Doc:()=>tr,JSONSchema:()=>Nl,JSONSchemaGenerator:()=>Ml,NEVER:()=>t,TimePrecision:()=>ms,_any:()=>Fs,_array:()=>cc,_base64:()=>us,_base64url:()=>ds,_bigint:()=>Os,_boolean:()=>Es,_catch:()=>Dc,_check:()=>Ic,_cidrv4:()=>cs,_cidrv6:()=>ls,_coercedBigint:()=>ks,_coercedBoolean:()=>Ds,_coercedDate:()=>Bs,_coercedNumber:()=>bs,_coercedString:()=>Wo,_cuid:()=>es,_cuid2:()=>ts,_custom:()=>Nc,_date:()=>zs,_decode:()=>ct,_decodeAsync:()=>ft,_default:()=>wc,_discriminatedUnion:()=>dc,_e164:()=>fs,_email:()=>Go,_emoji:()=>Qo,_encode:()=>ot,_encodeAsync:()=>ut,_endsWith:()=>ec,_enum:()=>_c,_file:()=>bc,_float32:()=>Ss,_float64:()=>Cs,_gt:()=>F,_gte:()=>I,_guid:()=>Ko,_includes:()=>Qs,_int:()=>xs,_int32:()=>ws,_int64:()=>As,_intersection:()=>fc,_ipv4:()=>as,_ipv6:()=>os,_isoDate:()=>gs,_isoDateTime:()=>hs,_isoDuration:()=>vs,_isoTime:()=>_s,_jwt:()=>ps,_ksuid:()=>is,_lazy:()=>jc,_length:()=>Js,_literal:()=>yc,_lowercase:()=>Xs,_lt:()=>N,_lte:()=>P,_mac:()=>ss,_map:()=>hc,_max:()=>P,_maxLength:()=>qs,_maxSize:()=>R,_mime:()=>nc,_min:()=>I,_minLength:()=>B,_minSize:()=>z,_multipleOf:()=>L,_nan:()=>Vs,_nanoid:()=>$o,_nativeEnum:()=>vc,_negative:()=>Us,_never:()=>Ls,_nonnegative:()=>Gs,_nonoptional:()=>Tc,_nonpositive:()=>Ws,_normalize:()=>rc,_null:()=>Ps,_nullable:()=>Cc,_number:()=>ys,_optional:()=>Sc,_overwrite:()=>V,_parse:()=>Qe,_parseAsync:()=>et,_pipe:()=>Oc,_positive:()=>Hs,_promise:()=>Mc,_property:()=>tc,_readonly:()=>kc,_record:()=>mc,_refine:()=>Pc,_regex:()=>Ys,_safeDecode:()=>gt,_safeDecodeAsync:()=>bt,_safeEncode:()=>mt,_safeEncodeAsync:()=>vt,_safeParse:()=>nt,_safeParseAsync:()=>it,_set:()=>gc,_size:()=>Ks,_slugify:()=>sc,_startsWith:()=>$s,_string:()=>Uo,_stringFormat:()=>Bc,_stringbool:()=>zc,_success:()=>Ec,_superRefine:()=>Fc,_symbol:()=>Ms,_templateLiteral:()=>Ac,_toLowerCase:()=>ac,_toUpperCase:()=>oc,_transform:()=>xc,_trim:()=>ic,_tuple:()=>pc,_uint32:()=>Ts,_uint64:()=>js,_ulid:()=>ns,_undefined:()=>Ns,_union:()=>lc,_unknown:()=>Is,_uppercase:()=>Zs,_url:()=>Zo,_uuid:()=>qo,_uuidv4:()=>Jo,_uuidv6:()=>Yo,_uuidv7:()=>Xo,_void:()=>Rs,_xid:()=>rs,_xor:()=>uc,clone:()=>y,config:()=>s,createStandardJSONSchemaMethod:()=>Uc,createToJSONSchemaMethod:()=>Hc,decode:()=>lt,decodeAsync:()=>pt,describe:()=>Lc,encode:()=>st,encodeAsync:()=>dt,extractDefs:()=>W,finalize:()=>Vc,flattenError:()=>qe,formatError:()=>Je,globalConfig:()=>o,globalRegistry:()=>M,initializeContext:()=>H,isValidBase64:()=>wr,isValidBase64URL:()=>Er,isValidJWT:()=>kr,locales:()=>Lo,meta:()=>Rc,parse:()=>$e,parseAsync:()=>tt,prettifyError:()=>Ze,process:()=>U,regexes:()=>St,registry:()=>Ho,safeDecode:()=>_t,safeDecodeAsync:()=>xt,safeEncode:()=>ht,safeEncodeAsync:()=>yt,safeParse:()=>rt,safeParseAsync:()=>at,toDotPath:()=>Xe,toJSONSchema:()=>jl,treeifyError:()=>Ye,util:()=>c,version:()=>nr}),Fl=e({endsWith:()=>ec,gt:()=>F,gte:()=>I,includes:()=>Qs,length:()=>Js,lowercase:()=>Xs,lt:()=>N,lte:()=>P,maxLength:()=>qs,maxSize:()=>R,mime:()=>nc,minLength:()=>B,minSize:()=>z,multipleOf:()=>L,negative:()=>Us,nonnegative:()=>Gs,nonpositive:()=>Ws,normalize:()=>rc,overwrite:()=>V,positive:()=>Hs,property:()=>tc,regex:()=>Ys,size:()=>Ks,slugify:()=>sc,startsWith:()=>$s,toLowerCase:()=>ac,toUpperCase:()=>oc,trim:()=>ic,uppercase:()=>Zs}),Il=e({ZodISODate:()=>zl,ZodISODateTime:()=>Ll,ZodISODuration:()=>Ul,ZodISOTime:()=>Vl,date:()=>Bl,datetime:()=>Rl,duration:()=>Wl,time:()=>Hl}),Ll=n(`ZodISODateTime`,(e,t)=>{hr.init(e,t),J.init(e,t)});function Rl(e){return hs(Ll,e)}var zl=n(`ZodISODate`,(e,t)=>{gr.init(e,t),J.init(e,t)});function Bl(e){return gs(zl,e)}var Vl=n(`ZodISOTime`,(e,t)=>{_r.init(e,t),J.init(e,t)});function Hl(e){return _s(Vl,e)}var Ul=n(`ZodISODuration`,(e,t)=>{vr.init(e,t),J.init(e,t)});function Wl(e){return vs(Ul,e)}var Gl=(e,t)=>{Ke.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>Je(e,t)},flatten:{value:t=>qe(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,re,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,re,2)}},isEmpty:{get(){return e.issues.length===0}}})},Kl=n(`ZodError`,Gl),K=n(`ZodError`,Gl,{Parent:Error}),ql=Qe(K),Jl=et(K),Yl=nt(K),Xl=it(K),Zl=ot(K),Ql=ct(K),$l=ut(K),eu=ft(K),tu=mt(K),nu=gt(K),ru=vt(K),iu=bt(K),au=e({ZodAny:()=>Cd,ZodArray:()=>Md,ZodBase64:()=>Wu,ZodBase64URL:()=>Ku,ZodBigInt:()=>fd,ZodBigIntFormat:()=>md,ZodBoolean:()=>ud,ZodCIDRv4:()=>Bu,ZodCIDRv6:()=>Hu,ZodCUID:()=>wu,ZodCUID2:()=>Eu,ZodCatch:()=>Of,ZodCodec:()=>Pf,ZodCustom:()=>Kf,ZodCustomStringFormat:()=>Qu,ZodDate:()=>Ad,ZodDefault:()=>bf,ZodDiscriminatedUnion:()=>Ud,ZodE164:()=>Ju,ZodEmail:()=>lu,ZodEmoji:()=>bu,ZodEnum:()=>rf,ZodExactOptional:()=>hf,ZodFile:()=>lf,ZodFunction:()=>Wf,ZodGUID:()=>du,ZodIPv4:()=>Pu,ZodIPv6:()=>Ru,ZodIntersection:()=>Gd,ZodJWT:()=>Xu,ZodKSUID:()=>Mu,ZodLazy:()=>Bf,ZodLiteral:()=>sf,ZodMAC:()=>Iu,ZodMap:()=>$d,ZodNaN:()=>Af,ZodNanoID:()=>Su,ZodNever:()=>Ed,ZodNonOptional:()=>wf,ZodNull:()=>xd,ZodNullable:()=>_f,ZodNumber:()=>rd,ZodNumberFormat:()=>X,ZodObject:()=>Fd,ZodOptional:()=>pf,ZodPipe:()=>Mf,ZodPrefault:()=>Sf,ZodPromise:()=>Hf,ZodReadonly:()=>If,ZodRecord:()=>Yd,ZodSet:()=>tf,ZodString:()=>su,ZodStringFormat:()=>J,ZodSuccess:()=>Ef,ZodSymbol:()=>_d,ZodTemplateLiteral:()=>Rf,ZodTransform:()=>df,ZodTuple:()=>qd,ZodType:()=>q,ZodULID:()=>Ou,ZodURL:()=>_u,ZodUUID:()=>Y,ZodUndefined:()=>yd,ZodUnion:()=>zd,ZodUnknown:()=>Td,ZodVoid:()=>Od,ZodXID:()=>Au,ZodXor:()=>Vd,_ZodString:()=>ou,_default:()=>xf,_function:()=>Gf,any:()=>wd,array:()=>Nd,base64:()=>Gu,base64url:()=>qu,bigint:()=>pd,boolean:()=>dd,catch:()=>kf,check:()=>qf,cidrv4:()=>Vu,cidrv6:()=>Uu,codec:()=>Ff,cuid:()=>Tu,cuid2:()=>Du,custom:()=>Jf,date:()=>jd,describe:()=>Zf,discriminatedUnion:()=>Wd,e164:()=>Yu,email:()=>uu,emoji:()=>xu,enum:()=>af,exactOptional:()=>gf,file:()=>uf,float32:()=>od,float64:()=>sd,function:()=>Gf,guid:()=>fu,hash:()=>nd,hex:()=>td,hostname:()=>ed,httpUrl:()=>yu,instanceof:()=>$f,int:()=>ad,int32:()=>cd,int64:()=>hd,intersection:()=>Kd,ipv4:()=>Fu,ipv6:()=>zu,json:()=>tp,jwt:()=>Zu,keyof:()=>Pd,ksuid:()=>Nu,lazy:()=>Vf,literal:()=>cf,looseObject:()=>Rd,looseRecord:()=>Qd,mac:()=>Lu,map:()=>ef,meta:()=>Qf,nan:()=>jf,nanoid:()=>Cu,nativeEnum:()=>of,never:()=>Dd,nonoptional:()=>Tf,null:()=>Sd,nullable:()=>vf,nullish:()=>yf,number:()=>id,object:()=>Id,optional:()=>mf,partialRecord:()=>Zd,pipe:()=>Nf,prefault:()=>Cf,preprocess:()=>np,promise:()=>Uf,readonly:()=>Lf,record:()=>Xd,refine:()=>Yf,set:()=>nf,strictObject:()=>Ld,string:()=>cu,stringFormat:()=>$u,stringbool:()=>ep,success:()=>Df,superRefine:()=>Xf,symbol:()=>vd,templateLiteral:()=>zf,transform:()=>ff,tuple:()=>Jd,uint32:()=>ld,uint64:()=>gd,ulid:()=>ku,undefined:()=>bd,union:()=>Bd,unknown:()=>Z,url:()=>vu,uuid:()=>pu,uuidv4:()=>mu,uuidv6:()=>hu,uuidv7:()=>gu,void:()=>kd,xid:()=>ju,xor:()=>Hd}),q=n(`ZodType`,(e,t)=>(A.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:Uc(e,`input`),output:Uc(e,`output`)}}),e.toJSONSchema=Hc(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,`_def`,{value:t}),e.check=(...n)=>e.clone(g(t,{checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,n)=>y(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e)),e.parse=(t,n)=>ql(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Yl(e,t,n),e.parseAsync=async(t,n)=>Jl(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>Xl(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Zl(e,t,n),e.decode=(t,n)=>Ql(e,t,n),e.encodeAsync=async(t,n)=>$l(e,t,n),e.decodeAsync=async(t,n)=>eu(e,t,n),e.safeEncode=(t,n)=>tu(e,t,n),e.safeDecode=(t,n)=>nu(e,t,n),e.safeEncodeAsync=async(t,n)=>ru(e,t,n),e.safeDecodeAsync=async(t,n)=>iu(e,t,n),e.refine=(t,n)=>e.check(Yf(t,n)),e.superRefine=t=>e.check(Xf(t)),e.overwrite=t=>e.check(V(t)),e.optional=()=>mf(e),e.exactOptional=()=>gf(e),e.nullable=()=>vf(e),e.nullish=()=>mf(vf(e)),e.nonoptional=t=>Tf(e,t),e.array=()=>Nd(e),e.or=t=>Bd([e,t]),e.and=t=>Kd(e,t),e.transform=t=>Nf(e,ff(t)),e.default=t=>xf(e,t),e.prefault=t=>Cf(e,t),e.catch=t=>kf(e,t),e.pipe=t=>Nf(e,t),e.readonly=()=>Lf(e),e.describe=t=>{let n=e.clone();return M.add(n,{description:t}),n},Object.defineProperty(e,`description`,{get(){return M.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return M.get(e);let n=e.clone();return M.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),ou=n(`_ZodString`,(e,t)=>{rr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Gc(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...t)=>e.check(Ys(...t)),e.includes=(...t)=>e.check(Qs(...t)),e.startsWith=(...t)=>e.check($s(...t)),e.endsWith=(...t)=>e.check(ec(...t)),e.min=(...t)=>e.check(B(...t)),e.max=(...t)=>e.check(qs(...t)),e.length=(...t)=>e.check(Js(...t)),e.nonempty=(...t)=>e.check(B(1,...t)),e.lowercase=t=>e.check(Xs(t)),e.uppercase=t=>e.check(Zs(t)),e.trim=()=>e.check(ic()),e.normalize=(...t)=>e.check(rc(...t)),e.toLowerCase=()=>e.check(ac()),e.toUpperCase=()=>e.check(oc()),e.slugify=()=>e.check(sc())}),su=n(`ZodString`,(e,t)=>{rr.init(e,t),ou.init(e,t),e.email=t=>e.check(Go(lu,t)),e.url=t=>e.check(Zo(_u,t)),e.jwt=t=>e.check(ps(Xu,t)),e.emoji=t=>e.check(Qo(bu,t)),e.guid=t=>e.check(Ko(du,t)),e.uuid=t=>e.check(qo(Y,t)),e.uuidv4=t=>e.check(Jo(Y,t)),e.uuidv6=t=>e.check(Yo(Y,t)),e.uuidv7=t=>e.check(Xo(Y,t)),e.nanoid=t=>e.check($o(Su,t)),e.guid=t=>e.check(Ko(du,t)),e.cuid=t=>e.check(es(wu,t)),e.cuid2=t=>e.check(ts(Eu,t)),e.ulid=t=>e.check(ns(Ou,t)),e.base64=t=>e.check(us(Wu,t)),e.base64url=t=>e.check(ds(Ku,t)),e.xid=t=>e.check(rs(Au,t)),e.ksuid=t=>e.check(is(Mu,t)),e.ipv4=t=>e.check(as(Pu,t)),e.ipv6=t=>e.check(os(Ru,t)),e.cidrv4=t=>e.check(cs(Bu,t)),e.cidrv6=t=>e.check(ls(Hu,t)),e.e164=t=>e.check(fs(Ju,t)),e.datetime=t=>e.check(Rl(t)),e.date=t=>e.check(Bl(t)),e.time=t=>e.check(Hl(t)),e.duration=t=>e.check(Wl(t))});function cu(e){return Uo(su,e)}var J=n(`ZodStringFormat`,(e,t)=>{j.init(e,t),ou.init(e,t)}),lu=n(`ZodEmail`,(e,t)=>{or.init(e,t),J.init(e,t)});function uu(e){return Go(lu,e)}var du=n(`ZodGUID`,(e,t)=>{ir.init(e,t),J.init(e,t)});function fu(e){return Ko(du,e)}var Y=n(`ZodUUID`,(e,t)=>{ar.init(e,t),J.init(e,t)});function pu(e){return qo(Y,e)}function mu(e){return Jo(Y,e)}function hu(e){return Yo(Y,e)}function gu(e){return Xo(Y,e)}var _u=n(`ZodURL`,(e,t)=>{sr.init(e,t),J.init(e,t)});function vu(e){return Zo(_u,e)}function yu(e){return Zo(_u,{protocol:/^https?$/,hostname:Zt,...b(e)})}var bu=n(`ZodEmoji`,(e,t)=>{cr.init(e,t),J.init(e,t)});function xu(e){return Qo(bu,e)}var Su=n(`ZodNanoID`,(e,t)=>{lr.init(e,t),J.init(e,t)});function Cu(e){return $o(Su,e)}var wu=n(`ZodCUID`,(e,t)=>{ur.init(e,t),J.init(e,t)});function Tu(e){return es(wu,e)}var Eu=n(`ZodCUID2`,(e,t)=>{dr.init(e,t),J.init(e,t)});function Du(e){return ts(Eu,e)}var Ou=n(`ZodULID`,(e,t)=>{fr.init(e,t),J.init(e,t)});function ku(e){return ns(Ou,e)}var Au=n(`ZodXID`,(e,t)=>{pr.init(e,t),J.init(e,t)});function ju(e){return rs(Au,e)}var Mu=n(`ZodKSUID`,(e,t)=>{mr.init(e,t),J.init(e,t)});function Nu(e){return is(Mu,e)}var Pu=n(`ZodIPv4`,(e,t)=>{yr.init(e,t),J.init(e,t)});function Fu(e){return as(Pu,e)}var Iu=n(`ZodMAC`,(e,t)=>{xr.init(e,t),J.init(e,t)});function Lu(e){return ss(Iu,e)}var Ru=n(`ZodIPv6`,(e,t)=>{br.init(e,t),J.init(e,t)});function zu(e){return os(Ru,e)}var Bu=n(`ZodCIDRv4`,(e,t)=>{Sr.init(e,t),J.init(e,t)});function Vu(e){return cs(Bu,e)}var Hu=n(`ZodCIDRv6`,(e,t)=>{Cr.init(e,t),J.init(e,t)});function Uu(e){return ls(Hu,e)}var Wu=n(`ZodBase64`,(e,t)=>{Tr.init(e,t),J.init(e,t)});function Gu(e){return us(Wu,e)}var Ku=n(`ZodBase64URL`,(e,t)=>{Dr.init(e,t),J.init(e,t)});function qu(e){return ds(Ku,e)}var Ju=n(`ZodE164`,(e,t)=>{Or.init(e,t),J.init(e,t)});function Yu(e){return fs(Ju,e)}var Xu=n(`ZodJWT`,(e,t)=>{Ar.init(e,t),J.init(e,t)});function Zu(e){return ps(Xu,e)}var Qu=n(`ZodCustomStringFormat`,(e,t)=>{jr.init(e,t),J.init(e,t)});function $u(e,t,n={}){return Bc(Qu,e,t,n)}function ed(e){return Bc(Qu,`hostname`,Xt,e)}function td(e){return Bc(Qu,`hex`,mn,e)}function nd(e,t){let n=`${e}_${t?.enc??`hex`}`,r=St[n];if(!r)throw Error(`Unrecognized hash format: ${n}`);return Bc(Qu,n,r,t)}var rd=n(`ZodNumber`,(e,t)=>{Mr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kc(e,t,n,r),e.gt=(t,n)=>e.check(F(t,n)),e.gte=(t,n)=>e.check(I(t,n)),e.min=(t,n)=>e.check(I(t,n)),e.lt=(t,n)=>e.check(N(t,n)),e.lte=(t,n)=>e.check(P(t,n)),e.max=(t,n)=>e.check(P(t,n)),e.int=t=>e.check(ad(t)),e.safe=t=>e.check(ad(t)),e.positive=t=>e.check(F(0,t)),e.nonnegative=t=>e.check(I(0,t)),e.negative=t=>e.check(N(0,t)),e.nonpositive=t=>e.check(P(0,t)),e.multipleOf=(t,n)=>e.check(L(t,n)),e.step=(t,n)=>e.check(L(t,n)),e.finite=()=>e;let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function id(e){return ys(rd,e)}var X=n(`ZodNumberFormat`,(e,t)=>{Nr.init(e,t),rd.init(e,t)});function ad(e){return xs(X,e)}function od(e){return Ss(X,e)}function sd(e){return Cs(X,e)}function cd(e){return ws(X,e)}function ld(e){return Ts(X,e)}var ud=n(`ZodBoolean`,(e,t)=>{Pr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qc(e,t,n,r)});function dd(e){return Es(ud,e)}var fd=n(`ZodBigInt`,(e,t)=>{Fr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Jc(e,t,n,r),e.gte=(t,n)=>e.check(I(t,n)),e.min=(t,n)=>e.check(I(t,n)),e.gt=(t,n)=>e.check(F(t,n)),e.gte=(t,n)=>e.check(I(t,n)),e.min=(t,n)=>e.check(I(t,n)),e.lt=(t,n)=>e.check(N(t,n)),e.lte=(t,n)=>e.check(P(t,n)),e.max=(t,n)=>e.check(P(t,n)),e.positive=t=>e.check(F(BigInt(0),t)),e.negative=t=>e.check(N(BigInt(0),t)),e.nonpositive=t=>e.check(P(BigInt(0),t)),e.nonnegative=t=>e.check(I(BigInt(0),t)),e.multipleOf=(t,n)=>e.check(L(t,n));let n=e._zod.bag;e.minValue=n.minimum??null,e.maxValue=n.maximum??null,e.format=n.format??null});function pd(e){return Os(fd,e)}var md=n(`ZodBigIntFormat`,(e,t)=>{Ir.init(e,t),fd.init(e,t)});function hd(e){return As(md,e)}function gd(e){return js(md,e)}var _d=n(`ZodSymbol`,(e,t)=>{Lr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Yc(e,t,n,r)});function vd(e){return Ms(_d,e)}var yd=n(`ZodUndefined`,(e,t)=>{Rr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zc(e,t,n,r)});function bd(e){return Ns(yd,e)}var xd=n(`ZodNull`,(e,t)=>{zr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Xc(e,t,n,r)});function Sd(e){return Ps(xd,e)}var Cd=n(`ZodAny`,(e,t)=>{Br.init(e,t),q.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function wd(){return Fs(Cd)}var Td=n(`ZodUnknown`,(e,t)=>{Vr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Z(){return Is(Td)}var Ed=n(`ZodNever`,(e,t)=>{Hr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$c(e,t,n,r)});function Dd(e){return Ls(Ed,e)}var Od=n(`ZodVoid`,(e,t)=>{Ur.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Qc(e,t,n,r)});function kd(e){return Rs(Od,e)}var Ad=n(`ZodDate`,(e,t)=>{Wr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>nl(e,t,n,r),e.min=(t,n)=>e.check(I(t,n)),e.max=(t,n)=>e.check(P(t,n));let n=e._zod.bag;e.minDate=n.minimum?new Date(n.minimum):null,e.maxDate=n.maximum?new Date(n.maximum):null});function jd(e){return zs(Ad,e)}var Md=n(`ZodArray`,(e,t)=>{Kr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ml(e,t,n,r),e.element=t.element,e.min=(t,n)=>e.check(B(t,n)),e.nonempty=t=>e.check(B(1,t)),e.max=(t,n)=>e.check(qs(t,n)),e.length=(t,n)=>e.check(Js(t,n)),e.unwrap=()=>e.element});function Nd(e,t){return cc(Md,e,t)}function Pd(e){let t=e._zod.def.shape;return af(Object.keys(t))}var Fd=n(`ZodObject`,(e,t)=>{Zr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hl(e,t,n,r),m(e,`shape`,()=>t.shape),e.keyof=()=>af(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Z()}),e.loose=()=>e.clone({...e._zod.def,catchall:Z()}),e.strict=()=>e.clone({...e._zod.def,catchall:Dd()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>ke(e,t),e.safeExtend=t=>Ae(e,t),e.merge=t=>je(e,t),e.pick=t=>De(e,t),e.omit=t=>Oe(e,t),e.partial=(...t)=>Me(pf,e,t[0]),e.required=(...t)=>Ne(wf,e,t[0])});function Id(e,t){return new Fd({type:`object`,shape:e??{},...b(t)})}function Ld(e,t){return new Fd({type:`object`,shape:e,catchall:Dd(),...b(t)})}function Rd(e,t){return new Fd({type:`object`,shape:e,catchall:Z(),...b(t)})}var zd=n(`ZodUnion`,(e,t)=>{$r.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gl(e,t,n,r),e.options=t.options});function Bd(e,t){return new zd({type:`union`,options:e,...b(t)})}var Vd=n(`ZodXor`,(e,t)=>{zd.init(e,t),ti.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gl(e,t,n,r),e.options=t.options});function Hd(e,t){return new Vd({type:`union`,options:e,inclusive:!1,...b(t)})}var Ud=n(`ZodDiscriminatedUnion`,(e,t)=>{zd.init(e,t),ni.init(e,t)});function Wd(e,t,n){return new Ud({type:`union`,options:t,discriminator:e,...b(n)})}var Gd=n(`ZodIntersection`,(e,t)=>{ri.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_l(e,t,n,r)});function Kd(e,t){return new Gd({type:`intersection`,left:e,right:t})}var qd=n(`ZodTuple`,(e,t)=>{oi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vl(e,t,n,r),e.rest=t=>e.clone({...e._zod.def,rest:t})});function Jd(e,t,n){let r=t instanceof A;return new qd({type:`tuple`,items:e,rest:r?t:null,...b(r?n:t)})}var Yd=n(`ZodRecord`,(e,t)=>{ci.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yl(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function Xd(e,t,n){return new Yd({type:`record`,keyType:e,valueType:t,...b(n)})}function Zd(e,t,n){let r=y(e);return r._zod.values=void 0,new Yd({type:`record`,keyType:r,valueType:t,...b(n)})}function Qd(e,t,n){return new Yd({type:`record`,keyType:e,valueType:t,mode:`loose`,...b(n)})}var $d=n(`ZodMap`,(e,t)=>{li.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fl(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...t)=>e.check(z(...t)),e.nonempty=t=>e.check(z(1,t)),e.max=(...t)=>e.check(R(...t)),e.size=(...t)=>e.check(Ks(...t))});function ef(e,t,n){return new $d({type:`map`,keyType:e,valueType:t,...b(n)})}var tf=n(`ZodSet`,(e,t)=>{di.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pl(e,t,n,r),e.min=(...t)=>e.check(z(...t)),e.nonempty=t=>e.check(z(1,t)),e.max=(...t)=>e.check(R(...t)),e.size=(...t)=>e.check(Ks(...t))});function nf(e,t){return new tf({type:`set`,valueType:e,...b(t)})}var rf=n(`ZodEnum`,(e,t)=>{pi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>rl(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new rf({...t,checks:[],...b(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new rf({...t,checks:[],...b(r),entries:i})}});function af(e,t){return new rf({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...b(t)})}function of(e,t){return new rf({type:`enum`,entries:e,...b(t)})}var sf=n(`ZodLiteral`,(e,t)=>{mi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>il(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,`value`,{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function cf(e,t){return new sf({type:`literal`,values:Array.isArray(e)?e:[e],...b(t)})}var lf=n(`ZodFile`,(e,t)=>{hi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>sl(e,t,n,r),e.min=(t,n)=>e.check(z(t,n)),e.max=(t,n)=>e.check(R(t,n)),e.mime=(t,n)=>e.check(nc(Array.isArray(t)?t:[t],n))});function uf(e){return bc(lf,e)}var df=n(`ZodTransform`,(e,t)=>{gi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>dl(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new a(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(E(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(E(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function ff(e){return new df({type:`transform`,transform:e})}var pf=n(`ZodOptional`,(e,t)=>{vi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ol(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function mf(e){return new pf({type:`optional`,innerType:e})}var hf=n(`ZodExactOptional`,(e,t)=>{yi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ol(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function gf(e){return new hf({type:`optional`,innerType:e})}var _f=n(`ZodNullable`,(e,t)=>{bi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bl(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function vf(e){return new _f({type:`nullable`,innerType:e})}function yf(e){return mf(vf(e))}var bf=n(`ZodDefault`,(e,t)=>{xi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sl(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function xf(e,t){return new bf({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():ve(t)}})}var Sf=n(`ZodPrefault`,(e,t)=>{Ci.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Cl(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Cf(e,t){return new Sf({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():ve(t)}})}var wf=n(`ZodNonOptional`,(e,t)=>{wi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xl(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Tf(e,t){return new wf({type:`nonoptional`,innerType:e,...b(t)})}var Ef=n(`ZodSuccess`,(e,t)=>{Ei.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>cl(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Df(e){return new Ef({type:`success`,innerType:e})}var Of=n(`ZodCatch`,(e,t)=>{Di.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wl(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function kf(e,t){return new Of({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var Af=n(`ZodNaN`,(e,t)=>{Oi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>al(e,t,n,r)});function jf(e){return Vs(Af,e)}var Mf=n(`ZodPipe`,(e,t)=>{ki.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Tl(e,t,n,r),e.in=t.in,e.out=t.out});function Nf(e,t){return new Mf({type:`pipe`,in:e,out:t})}var Pf=n(`ZodCodec`,(e,t)=>{Mf.init(e,t),ji.init(e,t)});function Ff(e,t,n){return new Pf({type:`pipe`,in:e,out:t,transform:n.decode,reverseTransform:n.encode})}var If=n(`ZodReadonly`,(e,t)=>{Pi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>El(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Lf(e){return new If({type:`readonly`,innerType:e})}var Rf=n(`ZodTemplateLiteral`,(e,t)=>{Ii.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ol(e,t,n,r)});function zf(e,t){return new Rf({type:`template_literal`,parts:e,...b(t)})}var Bf=n(`ZodLazy`,(e,t)=>{zi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kl(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function Vf(e){return new Bf({type:`lazy`,getter:e})}var Hf=n(`ZodPromise`,(e,t)=>{Ri.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dl(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Uf(e){return new Hf({type:`promise`,innerType:e})}var Wf=n(`ZodFunction`,(e,t)=>{Li.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ul(e,t,n,r)});function Gf(e){return new Wf({type:`function`,input:Array.isArray(e?.input)?Jd(e?.input):e?.input??Nd(Z()),output:e?.output??Z()})}var Kf=n(`ZodCustom`,(e,t)=>{Bi.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ll(e,t,n,r)});function qf(e){let t=new k({check:`custom`});return t._zod.check=e,t}function Jf(e,t){return Nc(Kf,e??(()=>!0),t)}function Yf(e,t={}){return Pc(Kf,e,t)}function Xf(e){return Fc(e)}var Zf=Lc,Qf=Rc;function $f(e,t={}){let n=new Kf({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...b(t)});return n._zod.bag.Class=e,n._zod.check=t=>{t.value instanceof e||t.issues.push({code:`invalid_type`,expected:e.name,input:t.value,inst:n,path:[...n._zod.def.path??[]]})},n}var ep=(...e)=>zc({Codec:Pf,Boolean:ud,String:su},...e);function tp(e){let t=Vf(()=>Bd([cu(e),id(),dd(),Sd(),Nd(t),Xd(cu(),t)]));return t}function np(e,t){return Nf(ff(e),t)}var rp={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`};function ip(e){s({customError:e})}function ap(){return s().customError}var op;(function(e){})(op||={});var Q={...au,...Fl,iso:Il},sp=new Set(`$schema.$ref.$defs.definitions.$id.id.$comment.$anchor.$vocabulary.$dynamicRef.$dynamicAnchor.type.enum.const.anyOf.oneOf.allOf.not.properties.required.additionalProperties.patternProperties.propertyNames.minProperties.maxProperties.items.prefixItems.additionalItems.minItems.maxItems.uniqueItems.contains.minContains.maxContains.minLength.maxLength.pattern.format.minimum.maximum.exclusiveMinimum.exclusiveMaximum.multipleOf.description.default.contentEncoding.contentMediaType.contentSchema.unevaluatedItems.unevaluatedProperties.if.then.else.dependentSchemas.dependentRequired.nullable.readOnly`.split(`.`));function cp(e,t){let n=e.$schema;return n===`https://json-schema.org/draft/2020-12/schema`?`draft-2020-12`:n===`http://json-schema.org/draft-07/schema#`?`draft-7`:n===`http://json-schema.org/draft-04/schema#`?`draft-4`:t??`draft-2020-12`}function lp(e,t){if(!e.startsWith(`#`))throw Error(`External $ref is not supported, only local refs (#/...) are allowed`);let n=e.slice(1).split(`/`).filter(Boolean);if(n.length===0)return t.rootSchema;let r=t.version===`draft-2020-12`?`$defs`:`definitions`;if(n[0]===r){let r=n[1];if(!r||!t.defs[r])throw Error(`Reference not found: ${e}`);return t.defs[r]}throw Error(`Reference not found: ${e}`)}function up(e,t){if(e.not!==void 0){if(typeof e.not==`object`&&Object.keys(e.not).length===0)return Q.never();throw Error(`not is not supported in Zod (except { not: {} } for never)`)}if(e.unevaluatedItems!==void 0)throw Error(`unevaluatedItems is not supported`);if(e.unevaluatedProperties!==void 0)throw Error(`unevaluatedProperties is not supported`);if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw Error(`Conditional schemas (if/then/else) are not supported`);if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw Error(`dependentSchemas and dependentRequired are not supported`);if(e.$ref){let n=e.$ref;if(t.refs.has(n))return t.refs.get(n);if(t.processing.has(n))return Q.lazy(()=>{if(!t.refs.has(n))throw Error(`Circular reference not resolved: ${n}`);return t.refs.get(n)});t.processing.add(n);let r=$(lp(n,t),t);return t.refs.set(n,r),t.processing.delete(n),r}if(e.enum!==void 0){let n=e.enum;if(t.version===`openapi-3.0`&&e.nullable===!0&&n.length===1&&n[0]===null)return Q.null();if(n.length===0)return Q.never();if(n.length===1)return Q.literal(n[0]);if(n.every(e=>typeof e==`string`))return Q.enum(n);let r=n.map(e=>Q.literal(e));return r.length<2?r[0]:Q.union([r[0],r[1],...r.slice(2)])}if(e.const!==void 0)return Q.literal(e.const);let n=e.type;if(Array.isArray(n)){let r=n.map(n=>up({...e,type:n},t));return r.length===0?Q.never():r.length===1?r[0]:Q.union(r)}if(!n)return Q.any();let r;switch(n){case`string`:{let t=Q.string();if(e.format){let n=e.format;n===`email`?t=t.check(Q.email()):n===`uri`||n===`uri-reference`?t=t.check(Q.url()):n===`uuid`||n===`guid`?t=t.check(Q.uuid()):n===`date-time`?t=t.check(Q.iso.datetime()):n===`date`?t=t.check(Q.iso.date()):n===`time`?t=t.check(Q.iso.time()):n===`duration`?t=t.check(Q.iso.duration()):n===`ipv4`?t=t.check(Q.ipv4()):n===`ipv6`?t=t.check(Q.ipv6()):n===`mac`?t=t.check(Q.mac()):n===`cidr`?t=t.check(Q.cidrv4()):n===`cidr-v6`?t=t.check(Q.cidrv6()):n===`base64`?t=t.check(Q.base64()):n===`base64url`?t=t.check(Q.base64url()):n===`e164`?t=t.check(Q.e164()):n===`jwt`?t=t.check(Q.jwt()):n===`emoji`?t=t.check(Q.emoji()):n===`nanoid`?t=t.check(Q.nanoid()):n===`cuid`?t=t.check(Q.cuid()):n===`cuid2`?t=t.check(Q.cuid2()):n===`ulid`?t=t.check(Q.ulid()):n===`xid`?t=t.check(Q.xid()):n===`ksuid`&&(t=t.check(Q.ksuid()))}typeof e.minLength==`number`&&(t=t.min(e.minLength)),typeof e.maxLength==`number`&&(t=t.max(e.maxLength)),e.pattern&&(t=t.regex(new RegExp(e.pattern))),r=t;break}case`number`:case`integer`:{let t=n===`integer`?Q.number().int():Q.number();typeof e.minimum==`number`&&(t=t.min(e.minimum)),typeof e.maximum==`number`&&(t=t.max(e.maximum)),typeof e.exclusiveMinimum==`number`?t=t.gt(e.exclusiveMinimum):e.exclusiveMinimum===!0&&typeof e.minimum==`number`&&(t=t.gt(e.minimum)),typeof e.exclusiveMaximum==`number`?t=t.lt(e.exclusiveMaximum):e.exclusiveMaximum===!0&&typeof e.maximum==`number`&&(t=t.lt(e.maximum)),typeof e.multipleOf==`number`&&(t=t.multipleOf(e.multipleOf)),r=t;break}case`boolean`:r=Q.boolean();break;case`null`:r=Q.null();break;case`object`:{let n={},i=e.properties||{},a=new Set(e.required||[]);for(let[e,r]of Object.entries(i)){let i=$(r,t);n[e]=a.has(e)?i:i.optional()}if(e.propertyNames){let i=$(e.propertyNames,t),a=e.additionalProperties&&typeof e.additionalProperties==`object`?$(e.additionalProperties,t):Q.any();if(Object.keys(n).length===0){r=Q.record(i,a);break}let o=Q.object(n).passthrough(),s=Q.looseRecord(i,a);r=Q.intersection(o,s);break}if(e.patternProperties){let i=e.patternProperties,a=Object.keys(i),o=[];for(let e of a){let n=$(i[e],t),r=Q.string().regex(new RegExp(e));o.push(Q.looseRecord(r,n))}let s=[];if(Object.keys(n).length>0&&s.push(Q.object(n).passthrough()),s.push(...o),s.length===0)r=Q.object({}).passthrough();else if(s.length===1)r=s[0];else{let e=Q.intersection(s[0],s[1]);for(let t=2;t$(e,t)),o=i&&typeof i==`object`&&!Array.isArray(i)?$(i,t):void 0;r=o?Q.tuple(a).rest(o):Q.tuple(a),typeof e.minItems==`number`&&(r=r.check(Q.minLength(e.minItems))),typeof e.maxItems==`number`&&(r=r.check(Q.maxLength(e.maxItems)))}else if(Array.isArray(i)){let n=i.map(e=>$(e,t)),a=e.additionalItems&&typeof e.additionalItems==`object`?$(e.additionalItems,t):void 0;r=a?Q.tuple(n).rest(a):Q.tuple(n),typeof e.minItems==`number`&&(r=r.check(Q.minLength(e.minItems))),typeof e.maxItems==`number`&&(r=r.check(Q.maxLength(e.maxItems)))}else if(i!==void 0){let n=$(i,t),a=Q.array(n);typeof e.minItems==`number`&&(a=a.min(e.minItems)),typeof e.maxItems==`number`&&(a=a.max(e.maxItems)),r=a}else r=Q.array(Q.any());break}default:throw Error(`Unsupported type: ${n}`)}return e.description&&(r=r.describe(e.description)),e.default!==void 0&&(r=r.default(e.default)),r}function $(e,t){if(typeof e==`boolean`)return e?Q.any():Q.never();let n=up(e,t),r=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){let i=e.anyOf.map(e=>$(e,t)),a=Q.union(i);n=r?Q.intersection(n,a):a}if(e.oneOf&&Array.isArray(e.oneOf)){let i=e.oneOf.map(e=>$(e,t)),a=Q.xor(i);n=r?Q.intersection(n,a):a}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)n=r?n:Q.any();else{let i=r?n:$(e.allOf[0],t),a=+!r;for(let n=a;n0&&t.registry.add(n,i),n}function dp(e,t){return typeof e==`boolean`?e?Q.any():Q.never():$(e,{version:cp(e,t?.defaultTarget),defs:e.$defs||e.definitions||{},refs:new Map,processing:new Set,rootSchema:e,registry:t?.registry??M})}var fp=e({bigint:()=>gp,boolean:()=>hp,date:()=>_p,number:()=>mp,string:()=>pp});function pp(e){return Wo(su,e)}function mp(e){return bs(rd,e)}function hp(e){return Ds(ud,e)}function gp(e){return ks(fd,e)}function _p(e){return Bs(Ad,e)}var vp=e({$brand:()=>r,$input:()=>Bo,$output:()=>zo,NEVER:()=>t,TimePrecision:()=>ms,ZodAny:()=>Cd,ZodArray:()=>Md,ZodBase64:()=>Wu,ZodBase64URL:()=>Ku,ZodBigInt:()=>fd,ZodBigIntFormat:()=>md,ZodBoolean:()=>ud,ZodCIDRv4:()=>Bu,ZodCIDRv6:()=>Hu,ZodCUID:()=>wu,ZodCUID2:()=>Eu,ZodCatch:()=>Of,ZodCodec:()=>Pf,ZodCustom:()=>Kf,ZodCustomStringFormat:()=>Qu,ZodDate:()=>Ad,ZodDefault:()=>bf,ZodDiscriminatedUnion:()=>Ud,ZodE164:()=>Ju,ZodEmail:()=>lu,ZodEmoji:()=>bu,ZodEnum:()=>rf,ZodError:()=>Kl,ZodExactOptional:()=>hf,ZodFile:()=>lf,ZodFirstPartyTypeKind:()=>op,ZodFunction:()=>Wf,ZodGUID:()=>du,ZodIPv4:()=>Pu,ZodIPv6:()=>Ru,ZodISODate:()=>zl,ZodISODateTime:()=>Ll,ZodISODuration:()=>Ul,ZodISOTime:()=>Vl,ZodIntersection:()=>Gd,ZodIssueCode:()=>rp,ZodJWT:()=>Xu,ZodKSUID:()=>Mu,ZodLazy:()=>Bf,ZodLiteral:()=>sf,ZodMAC:()=>Iu,ZodMap:()=>$d,ZodNaN:()=>Af,ZodNanoID:()=>Su,ZodNever:()=>Ed,ZodNonOptional:()=>wf,ZodNull:()=>xd,ZodNullable:()=>_f,ZodNumber:()=>rd,ZodNumberFormat:()=>X,ZodObject:()=>Fd,ZodOptional:()=>pf,ZodPipe:()=>Mf,ZodPrefault:()=>Sf,ZodPromise:()=>Hf,ZodReadonly:()=>If,ZodRealError:()=>K,ZodRecord:()=>Yd,ZodSet:()=>tf,ZodString:()=>su,ZodStringFormat:()=>J,ZodSuccess:()=>Ef,ZodSymbol:()=>_d,ZodTemplateLiteral:()=>Rf,ZodTransform:()=>df,ZodTuple:()=>qd,ZodType:()=>q,ZodULID:()=>Ou,ZodURL:()=>_u,ZodUUID:()=>Y,ZodUndefined:()=>yd,ZodUnion:()=>zd,ZodUnknown:()=>Td,ZodVoid:()=>Od,ZodXID:()=>Au,ZodXor:()=>Vd,_ZodString:()=>ou,_default:()=>xf,_function:()=>Gf,any:()=>wd,array:()=>Nd,base64:()=>Gu,base64url:()=>qu,bigint:()=>pd,boolean:()=>dd,catch:()=>kf,check:()=>qf,cidrv4:()=>Vu,cidrv6:()=>Uu,clone:()=>y,codec:()=>Ff,coerce:()=>fp,config:()=>s,core:()=>Pl,cuid:()=>Tu,cuid2:()=>Du,custom:()=>Jf,date:()=>jd,decode:()=>Ql,decodeAsync:()=>eu,describe:()=>Zf,discriminatedUnion:()=>Wd,e164:()=>Yu,email:()=>uu,emoji:()=>xu,encode:()=>Zl,encodeAsync:()=>$l,endsWith:()=>ec,enum:()=>af,exactOptional:()=>gf,file:()=>uf,flattenError:()=>qe,float32:()=>od,float64:()=>sd,formatError:()=>Je,fromJSONSchema:()=>dp,function:()=>Gf,getErrorMap:()=>ap,globalRegistry:()=>M,gt:()=>F,gte:()=>I,guid:()=>fu,hash:()=>nd,hex:()=>td,hostname:()=>ed,httpUrl:()=>yu,includes:()=>Qs,instanceof:()=>$f,int:()=>ad,int32:()=>cd,int64:()=>hd,intersection:()=>Kd,ipv4:()=>Fu,ipv6:()=>zu,iso:()=>Il,json:()=>tp,jwt:()=>Zu,keyof:()=>Pd,ksuid:()=>Nu,lazy:()=>Vf,length:()=>Js,literal:()=>cf,locales:()=>Lo,looseObject:()=>Rd,looseRecord:()=>Qd,lowercase:()=>Xs,lt:()=>N,lte:()=>P,mac:()=>Lu,map:()=>ef,maxLength:()=>qs,maxSize:()=>R,meta:()=>Qf,mime:()=>nc,minLength:()=>B,minSize:()=>z,multipleOf:()=>L,nan:()=>jf,nanoid:()=>Cu,nativeEnum:()=>of,negative:()=>Us,never:()=>Dd,nonnegative:()=>Gs,nonoptional:()=>Tf,nonpositive:()=>Ws,normalize:()=>rc,null:()=>Sd,nullable:()=>vf,nullish:()=>yf,number:()=>id,object:()=>Id,optional:()=>mf,overwrite:()=>V,parse:()=>ql,parseAsync:()=>Jl,partialRecord:()=>Zd,pipe:()=>Nf,positive:()=>Hs,prefault:()=>Cf,preprocess:()=>np,prettifyError:()=>Ze,promise:()=>Uf,property:()=>tc,readonly:()=>Lf,record:()=>Xd,refine:()=>Yf,regex:()=>Ys,regexes:()=>St,registry:()=>Ho,safeDecode:()=>nu,safeDecodeAsync:()=>iu,safeEncode:()=>tu,safeEncodeAsync:()=>ru,safeParse:()=>Yl,safeParseAsync:()=>Xl,set:()=>nf,setErrorMap:()=>ip,size:()=>Ks,slugify:()=>sc,startsWith:()=>$s,strictObject:()=>Ld,string:()=>cu,stringFormat:()=>$u,stringbool:()=>ep,success:()=>Df,superRefine:()=>Xf,symbol:()=>vd,templateLiteral:()=>zf,toJSONSchema:()=>jl,toLowerCase:()=>ac,toUpperCase:()=>oc,transform:()=>ff,treeifyError:()=>Ye,trim:()=>ic,tuple:()=>Jd,uint32:()=>ld,uint64:()=>gd,ulid:()=>ku,undefined:()=>bd,union:()=>Bd,unknown:()=>Z,uppercase:()=>Zs,url:()=>vu,util:()=>c,uuid:()=>pu,uuidv4:()=>mu,uuidv6:()=>hu,uuidv7:()=>gu,void:()=>kd,xid:()=>ju,xor:()=>Hd});s(oa());var yp=vp;export{dd as a,cu as c,Ke as d,Nd as i,$e as l,mp as n,cf as o,af as r,Id as s,yp as t,tt as u}; \ No newline at end of file diff --git a/src/www/favicon-16x16.png b/src/www/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3dca18221d2c572b0b4ace778a20133e9b181f GIT binary patch literal 371 zcmV-(0gV2MP)#)Pd!o-%&kZ25v2`GXv%*^M@ zWD@W@xwp9Y6gRnS(^sHlwN+PD+i8w8w;HHQ5sOHODadL^7^+Ew8YL_sAn`b5!dPt% z=+O2`5fBkEmI4idgC=<#;+F||M1rssz2E?1Nh?kDsz==@P+iW`P)A4VswXER^4{L_ zzza`6lTvzco*ZT^FaQ{=U!T*Zio;?&Iot&aLPTs>Fy?`P7^MKXISG*`WXTt0?r@yY z!evr!Jz20|?w8*f9B(``@_j~#CC#B)s>;c#q^8bvrF#uE(z~Vt2jMcTgv8llYd-m) z2y8rHVKvZojLj%h^HoUYQv(hlGA=R30Fbcahnbfy4gXU~>e^RNf%-e|{sVwbkatxL_|bbSXlM-^?7-D;Nak*qM{KI5fTy-{r&wA5D@zM`a?rQ2nY!K`}-^` zEO2me^z`)q|Ns8}{{8*^{QUg;`}_L(`uX|!`1ttu_xJYp_VxAk^78WW@$vBR@bB;M z?(XjG?d|OB?Cb06>gwv~=;-I?=jP_-<>lq%$@($LV*&(F`!&d$xv&CJZq%gf8k%F4yX z#l*zK!^6YE!otD9!N9=4zrVk{yu7)&xwyEvx3{;pwzjpkwY0Rfva+(Uu&}SMudc4H ztgNi7tE;N2s;Q}|sHmu?r>CZ-rlqB&qobpuqN1Upp`f6kpP!$dot>PVoSU1Qn3$NC zmzS27mX(#2l$4Z{larE?l8}&)j*gCujEswmi;9YhiHV7bh=_-WhlYlRg@uKKgM)&C zf_r;=dU|?!d3kqtcXoDmb#--gbaZobb8>QWadB~QaBy#LZ*6UDYHDg|XlQ3=XJut& zWMpJxV`E`qVP9WgUS3{ZU0qvSTUl9ISXfwAR#sJ2Ra8_|Q&Uq?Qc_S*P)|=!PEJls zOG`>hN=ZpcNJvOUMMXkFLP0@6KtMo0KR-P^Jv=--J3Bi%IyyNyIXE~tH#avnHa0ai zH8eCdGBPqTF)=VOFfT7JE-o%DEiEi8EGsK3Dk>@|DJdu@C?_W;CMG5&B_$*zBqJju zA|fIoAt4|jARiwe9v&VY9UUAT92*-O8X6iI85tND7#9~878Vv26%`Z|6cZB@5)u*- z5fKm&5DyOz4h{|t4Gjzo3=0bj3JMAd2?+=Y2nPoT1_lNN1qB2I1Oo#D0s;a70RaF2 z0MC(k-~a#s6?9TgQvd=mI9_68fr6jM$j;H%;OX!6_WA0E+qD1y0)9zEK~#9!ZBxH% z6+sZ5-JRR_D=~?ng$M~EScyf@!rs=x+JKFPVju|C)>>&m5iOKh2r29|pq)j)#t>2n ziW0#;KoWg-ySFpr>|T&3`t8B(+wa?NcISHs6EIKLUvF-0@9e+??4Q}~JNKE&%zgay z`5(dHR$^i%0R#G&ud{y(mX;z%O2h)9w2HRAO$siC5MoS8q--yM-L4)eF64=;9C|H33G!Z-CehNiA5wTV@0jPm+}(x^Br0JD@L z&iAJW`ce~0I{3A40%xqOz(kn;GCbWiA7DOo7yvg)uqL$#MjYLUL#xiG)<@1S(#P<&!J+-(v zgmH+eG#&^5P03O8Mf>Bi%%kkpLCr;3&eU-+0*cOuPCwZlXLCijWL}i?bXc&~59gQP z>orTHQk>0809|l;HpJdwwtn;W%U)|tR&-%qc33HVuQwcyraA02nQ8^P0eI;ZScOAG z-vg4-k$v&|m0q+I3fNYrEF{)~J}!RU$&f9Dc@_d#tqHRw00000NkvXXu0mjf&pfMZ literal 0 HcmV?d00001 diff --git a/src/www/favicon.ico b/src/www/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6a1ccaec5173c598a188a01e9d5b80d21f7ccd42 GIT binary patch literal 3510 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 literal 0 HcmV?d00001 diff --git a/src/www/index.html b/src/www/index.html new file mode 100644 index 0000000..8517d9c --- /dev/null +++ b/src/www/index.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + GMPay + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ GM Wallet +
+
+ + diff --git a/src/www/manifest.webmanifest b/src/www/manifest.webmanifest new file mode 100644 index 0000000..0f013c0 --- /dev/null +++ b/src/www/manifest.webmanifest @@ -0,0 +1 @@ +{"name":"GMPay","short_name":"GMPay","description":"GMPay 收款管理后台 - 多链 USDT 支付中间件管理面板","start_url":"/","display":"standalone","background_color":"#FFFFFF","theme_color":"#FFFFFF","lang":"en","scope":"/","icons":[{"src":"/pwa-192x192.png","sizes":"192x192","type":"image/png","purpose":"any"},{"src":"/pwa-512x512.png","sizes":"512x512","type":"image/png","purpose":"any"},{"src":"/pwa-maskable-192x192.png","sizes":"192x192","type":"image/png","purpose":"maskable"},{"src":"/pwa-maskable-512x512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}]} diff --git a/src/www/pwa-192x192.png b/src/www/pwa-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5d3f889ce4f493e8f9e899aaf2356cf8b000d8 GIT binary patch literal 11709 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 Ty`@Do00000NkvXXu0mjfo;?n{ literal 0 HcmV?d00001 diff --git a/src/www/pwa-512x512.png b/src/www/pwa-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..61fb785bc03ee33d4d8595af8353bf58fbfdbd26 GIT binary patch literal 42229 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 tNQ8$y9jpi_C=YOt!d+DzzyZ6kI zHWpWw+FS13=wP(K(c|B%7r(mj#oK32JhHTXamSuVPrdxs=ihyQ>B^rzVn6aXcQb)u zkO^c0Ln0H%1cpQ=kO>TlOdt~&5}80IFeEa8OkhZ40-3;&$OJNhA(07W0z)Db$OMK& jCXfjXiA*39xJB?kVpOkF$)L`o00000NkvXXu0mjf+=X)* literal 0 HcmV?d00001 diff --git a/src/www/pwa-maskable-512x512.png b/src/www/pwa-maskable-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..228f53088346ae84096cdc5ce17c36afb5203e89 GIT binary patch literal 24393 zcmd>kZ?q=uRzE*2#g006kkN^)8N0RHa@24Me1;1^LeD*%|nmF1*$ zyyg$4U)d*16DzDWwNfRdlfQuzPDDmbi4G6e`4B7yb2^h8^|TOmYa->~XavtVD2YbY z1Fo6KHbzxcf;zj5)G3ZJ3r-%Hx2CKNfe%2&VnymR}1932IV``pzV=)P-b z`6G;?%}~P+XcND7cAJ0Z?)j>GOz5?zyIx5JM+);_mkXsyrXq2sZ*^@~C;zH)4sXf~ zW~MS9_g`$>Z=JEJ=e2u1oH^)BE-8y?Ti5d|RA^H$WyCT+k`|_z zZPC>dIB?;V<>Z9UzKKl9VTdKQU_!vq<%J^HWAr2RGZZ2~+%kQy`DBzB2wA#o8906( zwQ(K{IKl(EJ9_y(&>g>W$9JNAJHqpWwDGZWY)MkW<8<*{p;k7fp<0XT)%8yJP5AhZ zuK#zNIdmqXRHkrbWMUEu8E;2kbzV59pX+z-_VL5G31#F^+3{WDk{xfAult|I=xm80 zG)gEcCLzi}*=qLt-woicc`azSy5`$+ug%%=hr7*I>azD3yKQ+H21ZB3WFjy{e)1xj zX3$$%74tb}v|oyeu^P*L@m0JvM;$Kvz-!GZiu@a4&$Ial^#x;T0#GUe${F?zz%+{I zx5Ge9qQyuHz=B5r5!^S;Zq^R2b)Pqo&%j=1OXslzhu^9R^4m5CK|M%pJ_Yhprt@D% zQ?nU@%;*P`_xjDg_dQ9+5*!7jAhCKP?XxTiq!PU>5D3NqgI@8F>o__PTAi4ca66yy zdT6VB^mv@OCUn;b1sv5)K5FK(Fo5ZgTgC+s@<;__P$^#{BtOSlI-?gch8;LUjMtaz zh_nrLkZ9n_PTGKzmO6sK5c(h`$k(^BW61}8X3_*RPc-j#dnfP&lLrS&uJ#Z6dz&Ob zJvucckeS_$U8IQ*oz`11g$r=T*TRb#=ohfSMc{tGBYv=D+29%Zsow&s2OVLOBkJvu zLSWN?c0Ih*)IXm|ZR2P9a5s{!96=qEL@pO(71-Skm1V{#xR&AZP(7H%!_&iLJH?J` zI{~+y_CY=Z%*>{k8jRPhP)usrxAm(&QF8IUWU!pd|qqwR^mbKz`YW zoE<(oB~7sBW`nxlByuod`?b>z`vK)87a$__SmVE5Bm!`4$U7sS#$hVKX4}%vV2wFn zetRZxatVDz(!bI|bc3SmfYpJ=p>fIJhs+=v?5@(M3v~%^cr23p@~2r!0#t7hhcDf7 zAu9fP5e>Xj|2TO0a~|wnA~dSo??ON`zxHukeEC{@@$jp2Q$p9%)l}#0x%Bq)Q2Fw{ z|M2)D(4pV!#nN+3xSmo8rZv4#Q}o{wVlGPG^OcADKTjDs+t^n(h8uNxcaa!s(iRNL z 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

JTiW$)cMZ3YY9 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 q97q9_ham=E1a$rX!T$x45Mo5&xsp}8qWAxL {navigator.serviceWorker.register('/sw.js', { scope: '/' })})} \ No newline at end of file diff --git a/src/www/robots.txt b/src/www/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/src/www/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/src/www/sw.js b/src/www/sw.js new file mode 100644 index 0000000..6c92256 --- /dev/null +++ b/src/www/sw.js @@ -0,0 +1 @@ +if(!self.define){let s,e={};const l=(l,r)=>(l=new URL(l+".js",r).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(r,n)=>{const i=s||("document"in self?document.currentScript.src:"")||location.href;if(e[i])return;let u={};const o=s=>l(s,i),t={module:{uri:i},exports:u,require:o};e[i]=Promise.all(r.map(s=>t[s]||o(s))).then(s=>(n(...s),u))}}define(["./workbox-8c29f6e4"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"pwa-maskable-512x512.png",revision:"106b94c2eb0675579ae40309698f364c"},{url:"pwa-maskable-192x192.png",revision:"8befa0caebf24d2e0b01c36e01ab4bd7"},{url:"pwa-512x512.png",revision:"2fcf48a2ae4e95f6d7f4a6bc2cc42a63"},{url:"pwa-192x192.png",revision:"8bc372216f92e2f0e011daff55721ccb"},{url:"index.html",revision:"094194cc3d9b66e284de5691e5a4e5f1"},{url:"favicon.ico",revision:"abba9e0d76413fa735e878d17223cfcb"},{url:"favicon-32x32.png",revision:"0847a57e9d3ae134e314a1339af3516d"},{url:"favicon-16x16.png",revision:"3e5fdc64b0a41f498c177fb2dc89ec6a"},{url:"apple-touch-icon.png",revision:"f9c8240d0509320d85a82bd60a6b426f"},{url:"images/logo.png",revision:"fa701b6a1d714ecf4856df660055eb89"},{url:"assets/zod-Cymc5bS-.js",revision:null},{url:"assets/with-selector-D_dmjfol.js",revision:null},{url:"assets/web-vitals-f_BHH8AE.js",revision:null},{url:"assets/wallet--XSRr4dT.js",revision:null},{url:"assets/useStore-1-QVtiLb.js",revision:null},{url:"assets/useSearch-B5ZWp8fU.js",revision:null},{url:"assets/useRouterState-DV1cSG1v.js",revision:null},{url:"assets/useRouter-D03zSgJO.js",revision:null},{url:"assets/useNavigate-Dg8CkCoa.js",revision:null},{url:"assets/use-table-url-state-C7-IMA3_.js",revision:null},{url:"assets/unauthorized-error-CxmfHb-a.js",revision:null},{url:"assets/trash-2-Du706Ujr.js",revision:null},{url:"assets/theme-switch-BjXQNOij.js",revision:null},{url:"assets/theme-provider-CRKya7Cx.js",revision:null},{url:"assets/textarea-D_TrrVtD.js",revision:null},{url:"assets/telescope-67IWjQye.js",revision:null},{url:"assets/telegram-HLdihqdM.js",revision:null},{url:"assets/switch-R6BNZUH1.js",revision:null},{url:"assets/sign-in-DGULZo5h.js",revision:null},{url:"assets/sidebar-nav-DgezD6QJ.js",revision:null},{url:"assets/show-submitted-data-l0RlCwTX.js",revision:null},{url:"assets/settings-6L98-bwl.js",revision:null},{url:"assets/separator-CRLYw2cW.js",revision:null},{url:"assets/select-DcStuzoT.js",revision:null},{url:"assets/search-provider-Cx1K1ilz.js",revision:null},{url:"assets/rpc-BVbqsnlT.js",revision:null},{url:"assets/routes-CJI6s37t.js",revision:null},{url:"assets/router-Dohuf5K5.js",revision:null},{url:"assets/route-jvq7ILAD.js",revision:null},{url:"assets/route-Cut38oeV.js",revision:null},{url:"assets/route-ClLiRb_H.js",revision:null},{url:"assets/route-C7cw4pTD.js",revision:null},{url:"assets/route-BxpeArPd.js",revision:null},{url:"assets/redirect-dE0wk0WH.js",revision:null},{url:"assets/rate-B9ZGMIwY.js",revision:null},{url:"assets/radio-group-DXVwPYJH.js",revision:null},{url:"assets/popover-D5q6Hufu.js",revision:null},{url:"assets/payments-DTD79Ztb.js",revision:null},{url:"assets/payment-assets-DSsuCTEQ.js",revision:null},{url:"assets/password-input-B463LDkD.js",revision:null},{url:"assets/password-BmNp63ZQ.js",revision:null},{url:"assets/page-header-BBJ9dE3-.js",revision:null},{url:"assets/orders-Bv-Izk6_.js",revision:null},{url:"assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2",revision:null},{url:"assets/nunito-latin-wght-normal-BzFMHfZw.woff2",revision:null},{url:"assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2",revision:null},{url:"assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2",revision:null},{url:"assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2",revision:null},{url:"assets/noto-sans-vietnamese-wght-normal-DLTJy58D.woff2",revision:null},{url:"assets/noto-sans-latin-wght-normal-BYSzYMf3.woff2",revision:null},{url:"assets/noto-sans-latin-ext-wght-normal-W1qJv59z.woff2",revision:null},{url:"assets/noto-sans-greek-wght-normal-Ymb6dZNd.woff2",revision:null},{url:"assets/noto-sans-greek-ext-wght-normal-12T8GTDR.woff2",revision:null},{url:"assets/noto-sans-devanagari-wght-normal-Cv-Vwajv.woff2",revision:null},{url:"assets/noto-sans-cyrillic-wght-normal-B2hlT84T.woff2",revision:null},{url:"assets/noto-sans-cyrillic-ext-wght-normal-DSNfmdVt.woff2",revision:null},{url:"assets/notifications-DfNeewuy.js",revision:null},{url:"assets/not-found-error-toRsO1Fi.js",revision:null},{url:"assets/messages-BovT1T-w.js",revision:null},{url:"assets/matchContext-BcwcZvp2.js",revision:null},{url:"assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2",revision:null},{url:"assets/manrope-latin-wght-normal-DHIcAJRg.woff2",revision:null},{url:"assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2",revision:null},{url:"assets/manrope-greek-wght-normal-DL7QRZyv.woff2",revision:null},{url:"assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2",revision:null},{url:"assets/maintenance-error-PO6kK4Oj.js",revision:null},{url:"assets/long-text-BXQXVuRh.js",revision:null},{url:"assets/loader-circle-fg8-aSyl.js",revision:null},{url:"assets/link-CA4H4hTz.js",revision:null},{url:"assets/lib-CTYwzR3w.js",revision:null},{url:"assets/label-CsevXZTG.js",revision:null},{url:"assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2",revision:null},{url:"assets/inter-latin-wght-normal-Dx4kXJAl.woff2",revision:null},{url:"assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2",revision:null},{url:"assets/inter-greek-wght-normal-CkhJZR-_.woff2",revision:null},{url:"assets/inter-greek-ext-wght-normal-DlzME5K_.woff2",revision:null},{url:"assets/inter-cyrillic-wght-normal-DqGufNeO.woff2",revision:null},{url:"assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2",revision:null},{url:"assets/install-BDL3tVBh.js",revision:null},{url:"assets/input-DiRPHDd8.js",revision:null},{url:"assets/index-TVbhXeum.css",revision:null},{url:"assets/index-CvQvpjMM.js",revision:null},{url:"assets/help-F2O9kOnX.js",revision:null},{url:"assets/header-DbmR8lIc.js",revision:null},{url:"assets/general-error-DKtbS-qh.js",revision:null},{url:"assets/form-DdHiBYMe.js",revision:null},{url:"assets/forbidden-BEz-zjy_.js",revision:null},{url:"assets/font-provider-DvtNHF7l.js",revision:null},{url:"assets/eye-off-C-BF3gv3.js",revision:null},{url:"assets/eye-CDavQcLN.js",revision:null},{url:"assets/epay-Db0RVMXe.js",revision:null},{url:"assets/empty-state-Cam-sX8U.js",revision:null},{url:"assets/ellipsis-Y4gZr59G.js",revision:null},{url:"assets/dropdown-menu-CUea1X0A.js",revision:null},{url:"assets/download-CN4vU01G.js",revision:null},{url:"assets/dist-DvAgZMq72.js",revision:null},{url:"assets/dist-DlZiaY1y.js",revision:null},{url:"assets/dist-DG5UMlBd.js",revision:null},{url:"assets/dist-D21KDGR3.js",revision:null},{url:"assets/dist-Cp1lAGZy.js",revision:null},{url:"assets/dist-CGm-FpWw.js",revision:null},{url:"assets/dist-BKfJQFVD.js",revision:null},{url:"assets/dist-BEDXr2LC.js",revision:null},{url:"assets/dist-15n4mVGL.js",revision:null},{url:"assets/display-CkSSrdk4.js",revision:null},{url:"assets/data-table-CmcvKcj8.js",revision:null},{url:"assets/dashboard-Clgehcjb.js",revision:null},{url:"assets/createLucideIcon-D28ivbfF.js",revision:null},{url:"assets/cookies-BNZcTwGc.js",revision:null},{url:"assets/command-BwVY_kli.js",revision:null},{url:"assets/coming-soon-dialog-DMmjLgiX.js",revision:null},{url:"assets/clock-3-BoF5rDzX.js",revision:null},{url:"assets/circle-check-Dh8WOZF0.js",revision:null},{url:"assets/chevrons-up-down-iOmAu5Fh.js",revision:null},{url:"assets/chevron-down-CdmvZsfI.js",revision:null},{url:"assets/checkbox-B_Isethe.js",revision:null},{url:"assets/check-gDgbfVXu.js",revision:null},{url:"assets/chains-store-Dzu_Y00B.js",revision:null},{url:"assets/chains-QKtNypSO.js",revision:null},{url:"assets/card-DuQAN29P.js",revision:null},{url:"assets/button-DJA4fnJ8.js",revision:null},{url:"assets/badge-BAmRBT3U.js",revision:null},{url:"assets/auth-store-BpIS8RMn.js",revision:null},{url:"assets/auth-animation-context-zwGs7ZAM.js",revision:null},{url:"assets/atom-DI1Bn-1s.js",revision:null},{url:"assets/arrow-left-BrKcUadm.js",revision:null},{url:"assets/appearance-DJZ27An3.js",revision:null},{url:"assets/addresses-DQVKa3vf.js",revision:null},{url:"assets/_error-Dttamloo.js",revision:null},{url:"assets/_error-DGJYkCxd.js",revision:null},{url:"assets/Matches-LuvVcyUg.js",revision:null},{url:"assets/Match-B8-zI9ZJ.js",revision:null},{url:"assets/ClientOnly-CtYi2y5F.js",revision:null},{url:"assets/503-BTAQ6Iri.js",revision:null},{url:"assets/500-DSCRAyCF.js",revision:null},{url:"assets/404-VQj_aY6A.js",revision:null},{url:"assets/403-BfPOIf6t.js",revision:null},{url:"assets/401-IieFK_aS.js",revision:null},{url:"apple-touch-icon.png",revision:"f9c8240d0509320d85a82bd60a6b426f"},{url:"favicon.ico",revision:"abba9e0d76413fa735e878d17223cfcb"},{url:"pwa-192x192.png",revision:"8bc372216f92e2f0e011daff55721ccb"},{url:"pwa-512x512.png",revision:"2fcf48a2ae4e95f6d7f4a6bc2cc42a63"},{url:"pwa-maskable-192x192.png",revision:"8befa0caebf24d2e0b01c36e01ab4bd7"},{url:"pwa-maskable-512x512.png",revision:"106b94c2eb0675579ae40309698f364c"},{url:"robots.txt",revision:"fa1ded1ed7c11438a9b0385b1e112850"},{url:"images/logo.png",revision:"fa701b6a1d714ecf4856df660055eb89"},{url:"manifest.webmanifest",revision:"8d2924aafc68495c2adffcd2b8cff2c1"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html")))}); diff --git a/src/www/workbox-8c29f6e4.js b/src/www/workbox-8c29f6e4.js new file mode 100644 index 0000000..9ef0b86 --- /dev/null +++ b/src/www/workbox-8c29f6e4.js @@ -0,0 +1 @@ +define(["exports"],function(t){"use strict";try{self["workbox:core:7.3.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.3.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super(({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)},e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map(e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})}));t.waitUntil(s),t.ports&&t.ports[0]&&s.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const c=t.method;if(!o&&this.i.has(c)&&(o=this.i.get(c)),!o)return;let a;try{a=o.handle({url:s,request:t,event:e,params:i})}catch(t){a=Promise.reject(t)}const h=r&&r.catchHandler;return a instanceof Promise&&(this.o||h)&&(a=a.catch(async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n})),a}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let c;const a=()=>(c||(c=new o,c.addFetchListener(),c.addCacheListener()),c);function h(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i(({url:t})=>t.href===s.href,e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}return a().registerRoute(o),o}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter(t=>t&&t.length>0).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.3.0"]&&_()}catch(t){}function p(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class y{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class g{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.h.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.h=t}}let R;async function m(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,c=function(){if(void 0===R){const t=new Response("");if("body"in t)try{new Response(t.body),R=!0}catch(t){R=!1}R=!1}return R}()?i.body:await i.blob();return new Response(c,o)}function v(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class q{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const U=new Set;try{self["workbox:strategies:7.3.0"]&&_()}catch(t){}function L(t){return"string"==typeof t?new Request(t):t}class b{constructor(t,e){this.u={},Object.assign(this,e),this.event=e.event,this.l=t,this.p=new q,this.R=[],this.m=[...t.plugins],this.v=new Map;for(const t of this.m)this.v.set(t,{});this.event.waitUntil(this.p.promise)}async fetch(t){const{event:e}=this;let n=L(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.l.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=L(t);let s;const{cacheName:n,matchOptions:i}=this.l,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=L(t);var i;await(i=0,new Promise(t=>setTimeout(t,i)));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const c=await this.q(e);if(!c)return!1;const{cacheName:a,matchOptions:h}=this.l,u=await self.caches.open(a),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=v(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===v(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?c.clone():c)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of U)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:a,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.u[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=L(await t({mode:e,request:n,event:this.event,params:this.params}));this.u[s]=n}return this.u[s]}hasCallback(t){for(const e of this.l.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.l.plugins)if("function"==typeof e[t]){const s=this.v.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.R.push(t),t}async doneWaiting(){for(;this.R.length;){const t=this.R.splice(0),e=(await Promise.allSettled(t)).find(t=>"rejected"===t.status);if(e)throw e.reason}}destroy(){this.p.resolve(null)}async q(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class C{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new b(this,{event:e,request:s,params:n}),r=this.U(i,s,e);return[r,this.L(r,i,s,e)]}async U(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this._(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async L(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}class E extends C{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.C=!1!==t.fallbackToNetwork,this.plugins.push(E.copyRedirectedCacheableResponsesPlugin)}async _(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.O(t,e):await this.N(t,e))}async N(t,e){let n;const i=e.params||{};if(!this.C)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.P(),await e.cachePut(t,n.clone()))}return n}async O(t,e){this.P();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}P(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==E.copyRedirectedCacheableResponsesPlugin&&(n===E.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(E.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}E.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},E.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await m(t):t};class O{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.j=new Map,this.k=new Map,this.K=new Map,this.l=new E({cacheName:f(t),plugins:[...e,new g({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.l}precache(t){this.addToCacheList(t),this.T||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.T=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=p(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.j.has(i)&&this.j.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.j.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.K.has(t)&&this.K.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.K.set(t,n.integrity)}if(this.j.set(i,t),this.k.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return d(t,async()=>{const e=new y;this.strategy.plugins.push(e);for(const[e,s]of this.j){const n=this.K.get(s),i=this.k.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}})}activate(t){return d(t,async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.j.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this.j}getCachedURLs(){return[...this.j.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.j.get(e.href)}getIntegrityForCacheKey(t){return this.K.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}let x;const N=()=>(x||(x=new O),x);class P extends i{constructor(t,e){super(({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some(t=>t.test(s))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}},t.strategy)}}t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super(t=>this.W(t),t),this.M=e,this.S=s}W({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.S)if(t.test(s))return!1;return!!this.M.some(t=>t.test(s))}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",t=>{const e=f();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter(s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t);return await Promise.all(s.map(t=>self.caches.delete(t))),s})(e).then(t=>{}))})},t.clientsClaim=function(){self.addEventListener("activate",()=>self.clients.claim())},t.createHandlerBoundToURL=function(t){return N().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){N().precache(t)}(t),function(t){const e=N();h(new P(e,t))}(e)},t.registerRoute=h});