@opexa/portal-components 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Account/Account.d.ts +12 -0
- package/dist/components/Account/Account.jsx +172 -0
- package/dist/components/Account/index.d.ts +1 -0
- package/dist/components/Account/index.js +1 -0
- package/dist/components/Banner/Banner.d.ts +11 -0
- package/dist/components/Banner/Banner.jsx +52 -0
- package/dist/components/Banner/index.d.ts +1 -0
- package/dist/components/Banner/index.js +1 -0
- package/dist/components/BetRecords/BetRecords.d.ts +7 -0
- package/dist/components/BetRecords/BetRecords.jsx +4 -0
- package/dist/components/BetRecords/BetRecordsContent.d.ts +2 -0
- package/dist/components/BetRecords/BetRecordsContent.jsx +413 -0
- package/dist/components/BetRecords/index.d.ts +1 -0
- package/dist/components/BetRecords/index.js +1 -0
- package/dist/components/DepositWithdrawal/AmountChoices.d.ts +11 -0
- package/dist/components/DepositWithdrawal/AmountChoices.jsx +31 -0
- package/dist/components/DepositWithdrawal/AvailablePromos.d.ts +8 -0
- package/dist/components/DepositWithdrawal/AvailablePromos.jsx +78 -0
- package/dist/components/DepositWithdrawal/Deposit/Deposit.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/Deposit.jsx +82 -0
- package/dist/components/DepositWithdrawal/Deposit/GCashDeposit/GCashDeposit.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/GCashDeposit/GCashDeposit.jsx +275 -0
- package/dist/components/DepositWithdrawal/Deposit/MayaAppDeposit/MayaAppDeposit.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/MayaAppDeposit/MayaAppDeposit.jsx +282 -0
- package/dist/components/DepositWithdrawal/Deposit/MayaAppDeposit/SessionExpired.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/MayaAppDeposit/SessionExpired.jsx +13 -0
- package/dist/components/DepositWithdrawal/Deposit/MayaDeposit/MayaDeposit.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/MayaDeposit/MayaDeposit.jsx +275 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDeposit.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDeposit.jsx +15 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositContext.d.ts +22 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositContext.jsx +8 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositForm.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositForm.jsx +286 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositLoading.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositLoading.jsx +15 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositSuccess.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositSuccess.jsx +13 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositVCA.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositVCA.jsx +92 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.d.ts +14 -0
- package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.jsx +77 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDeposit.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDeposit.jsx +15 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositContext.d.ts +24 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositContext.jsx +8 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.jsx +256 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositLoading.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositLoading.jsx +14 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositQrCode.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositQrCode.jsx +107 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositSuccess.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositSuccess.jsx +19 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/useQRPHDeposit.d.ts +15 -0
- package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/useQRPHDeposit.jsx +81 -0
- package/dist/components/DepositWithdrawal/DepositWithdrawal.d.ts +6 -0
- package/dist/components/DepositWithdrawal/DepositWithdrawal.jsx +101 -0
- package/dist/components/DepositWithdrawal/DepositWithdrawalTrigger.d.ts +4 -0
- package/dist/components/DepositWithdrawal/DepositWithdrawalTrigger.jsx +63 -0
- package/dist/components/DepositWithdrawal/PaymentMethods.d.ts +10 -0
- package/dist/components/DepositWithdrawal/PaymentMethods.jsx +70 -0
- package/dist/components/DepositWithdrawal/Withdrawal/GCashWithdrawal.d.ts +0 -0
- package/dist/components/DepositWithdrawal/Withdrawal/GCashWithdrawal.jsx +1 -0
- package/dist/components/DepositWithdrawal/Withdrawal/InstapayWithdrawal.d.ts +0 -0
- package/dist/components/DepositWithdrawal/Withdrawal/InstapayWithdrawal.jsx +1 -0
- package/dist/components/DepositWithdrawal/Withdrawal/MayaAppWithdrawal.d.ts +0 -0
- package/dist/components/DepositWithdrawal/Withdrawal/MayaAppWithdrawal.jsx +1 -0
- package/dist/components/DepositWithdrawal/Withdrawal/MayaWithdrawal.d.ts +0 -0
- package/dist/components/DepositWithdrawal/Withdrawal/MayaWithdrawal.jsx +1 -0
- package/dist/components/DepositWithdrawal/Withdrawal/Withdrawal.d.ts +1 -0
- package/dist/components/DepositWithdrawal/Withdrawal/Withdrawal.jsx +3 -0
- package/dist/components/DepositWithdrawal/index.d.ts +1 -0
- package/dist/components/DepositWithdrawal/index.js +1 -0
- package/dist/components/DepositWithdrawal/utils.d.ts +3 -0
- package/dist/components/DepositWithdrawal/utils.js +8 -0
- package/dist/components/Disclaimer/Disclaimer.d.ts +5 -0
- package/dist/components/Disclaimer/Disclaimer.jsx +45 -0
- package/dist/components/Disclaimer/index.d.ts +1 -0
- package/dist/components/Disclaimer/index.js +1 -0
- package/dist/components/Disclaimer/useDisclaimer.d.ts +4 -0
- package/dist/components/Disclaimer/useDisclaimer.jsx +39 -0
- package/dist/components/Empty/CloudIcon.d.ts +2 -0
- package/dist/components/Empty/CloudIcon.jsx +42 -0
- package/dist/components/Empty/Empty.d.ts +9 -0
- package/dist/components/Empty/Empty.jsx +16 -0
- package/dist/components/Empty/index.d.ts +1 -0
- package/dist/components/Empty/index.js +1 -0
- package/dist/components/FeatureFlagProvider/FeatureFlagContext.d.ts +3 -0
- package/dist/components/FeatureFlagProvider/FeatureFlagContext.jsx +8 -0
- package/dist/components/FeatureFlagProvider/FeatureFlagProvider.d.ts +6 -0
- package/dist/components/FeatureFlagProvider/FeatureFlagProvider.jsx +19 -0
- package/dist/components/FeatureFlagProvider/index.d.ts +2 -0
- package/dist/components/FeatureFlagProvider/index.js +3 -0
- package/dist/components/FeatureFlagProvider/useFeatureFlag.d.ts +8 -0
- package/dist/components/FeatureFlagProvider/useFeatureFlag.js +66 -0
- package/dist/components/GameLaunch/GameLaunch.d.ts +5 -0
- package/dist/components/GameLaunch/GameLaunch.jsx +225 -0
- package/dist/components/GameLaunch/GameLaunchTrigger.d.ts +6 -0
- package/dist/components/GameLaunch/GameLaunchTrigger.jsx +107 -0
- package/dist/components/GameLaunch/index.d.ts +2 -0
- package/dist/components/GameLaunch/index.js +2 -0
- package/dist/components/GameProviders/GameProviders.d.ts +14 -0
- package/dist/components/GameProviders/GameProviders.jsx +3 -0
- package/dist/components/Games/Games.d.ts +10 -0
- package/dist/components/Games/Games.jsx +57 -0
- package/dist/components/Games/GamesContent.d.ts +2 -0
- package/dist/components/Games/GamesContent.jsx +138 -0
- package/dist/components/Games/index.d.ts +1 -0
- package/dist/components/Games/index.js +1 -0
- package/dist/components/JackpotCounter/JackpotCounter.d.ts +6 -0
- package/dist/components/JackpotCounter/JackpotCounter.jsx +61 -0
- package/dist/components/JackpotCounter/JackpotCounterContent.d.ts +2 -0
- package/dist/components/JackpotCounter/JackpotCounterContent.jsx +87 -0
- package/dist/components/JackpotCounter/JackpotCounterItem.d.ts +6 -0
- package/dist/components/JackpotCounter/JackpotCounterItem.jsx +108 -0
- package/dist/components/JackpotCounter/index.d.ts +1 -0
- package/dist/components/JackpotCounter/index.js +1 -0
- package/dist/components/Marquee/Marquee.d.ts +5 -0
- package/dist/components/Marquee/Marquee.jsx +14 -0
- package/dist/components/Marquee/index.d.ts +1 -0
- package/dist/components/Marquee/index.js +1 -0
- package/dist/components/PortalProvider/PortalProvider.d.ts +2 -0
- package/dist/components/PortalProvider/PortalProvider.jsx +67 -0
- package/dist/components/PortalProvider/Providers.d.ts +2 -0
- package/dist/components/PortalProvider/Providers.jsx +49 -0
- package/dist/components/PortalProvider/index.d.ts +1 -0
- package/dist/components/PortalProvider/index.js +1 -0
- package/dist/components/Promo/Promo.d.ts +4 -0
- package/dist/components/Promo/Promo.jsx +50 -0
- package/dist/components/Promo/PromoContent.d.ts +2 -0
- package/dist/components/Promo/PromoContent.jsx +18 -0
- package/dist/components/Promo/index.d.ts +1 -0
- package/dist/components/Promo/index.js +1 -0
- package/dist/components/Promos/PromoCarousel.d.ts +2 -0
- package/dist/components/Promos/PromoCarousel.jsx +110 -0
- package/dist/components/Promos/PromoGrid.d.ts +2 -0
- package/dist/components/Promos/PromoGrid.jsx +24 -0
- package/dist/components/Promos/PromoItem.d.ts +7 -0
- package/dist/components/Promos/PromoItem.jsx +24 -0
- package/dist/components/Promos/Promos.d.ts +11 -0
- package/dist/components/Promos/Promos.jsx +57 -0
- package/dist/components/Promos/PromosContent.d.ts +2 -0
- package/dist/components/Promos/PromosContent.jsx +110 -0
- package/dist/components/Promos/index.d.ts +1 -0
- package/dist/components/Promos/index.js +1 -0
- package/dist/components/Protected/Protected.d.ts +6 -0
- package/dist/components/Protected/Protected.jsx +9 -0
- package/dist/components/Protected/index.d.ts +1 -0
- package/dist/components/Protected/index.js +1 -0
- package/dist/components/SignIn/SignIn.d.ts +8 -0
- package/dist/components/SignIn/SignIn.jsx +39 -0
- package/dist/components/SignIn/SignInForm.d.ts +1 -0
- package/dist/components/SignIn/SignInForm.jsx +308 -0
- package/dist/components/SignIn/index.d.ts +1 -0
- package/dist/components/SignIn/index.js +1 -0
- package/dist/components/SignUp/SignUp.d.ts +8 -0
- package/dist/components/SignUp/SignUp.jsx +37 -0
- package/dist/components/SignUp/SignUpForm.d.ts +1 -0
- package/dist/components/SignUp/SignUpForm.jsx +312 -0
- package/dist/components/SignUp/index.d.ts +1 -0
- package/dist/components/SignUp/index.js +1 -0
- package/dist/components/TopWins/TopWins.d.ts +5 -0
- package/dist/components/TopWins/TopWins.jsx +45 -0
- package/dist/components/TopWins/TopWinsContent.d.ts +2 -0
- package/dist/components/TopWins/TopWinsContent.jsx +51 -0
- package/dist/components/TopWins/index.d.ts +1 -0
- package/dist/components/TopWins/index.js +1 -0
- package/dist/components/TournamentCounter/TournamentCounter.d.ts +6 -0
- package/dist/components/TournamentCounter/TournamentCounter.jsx +54 -0
- package/dist/components/TournamentCounter/TournamentCounterContent.d.ts +2 -0
- package/dist/components/TournamentCounter/TournamentCounterContent.jsx +79 -0
- package/dist/components/TournamentCounter/TournamentCounterItem.d.ts +8 -0
- package/dist/components/TournamentCounter/TournamentCounterItem.jsx +111 -0
- package/dist/components/TournamentCounter/index.d.ts +1 -0
- package/dist/components/TournamentCounter/index.js +1 -0
- package/dist/components/TransactionRecords/DepositRecordsTable.d.ts +1 -0
- package/dist/components/TransactionRecords/DepositRecordsTable.jsx +181 -0
- package/dist/components/TransactionRecords/TableFilters.d.ts +26 -0
- package/dist/components/TransactionRecords/TableFilters.jsx +359 -0
- package/dist/components/TransactionRecords/TransactionRecords.d.ts +7 -0
- package/dist/components/TransactionRecords/TransactionRecords.jsx +33 -0
- package/dist/components/TransactionRecords/TransactionRecordsTable.d.ts +1 -0
- package/dist/components/TransactionRecords/TransactionRecordsTable.jsx +141 -0
- package/dist/components/TransactionRecords/WithdrawalRecordsTable.d.ts +1 -0
- package/dist/components/TransactionRecords/WithdrawalRecordsTable.jsx +177 -0
- package/dist/components/TransactionRecords/index.d.ts +1 -0
- package/dist/components/TransactionRecords/index.js +1 -0
- package/dist/components/index.d.ts +18 -0
- package/dist/components/index.js +18 -0
- package/dist/constants/index.d.ts +10 -0
- package/dist/constants/index.js +64 -0
- package/dist/handlers.d.ts +4 -6
- package/dist/handlers.js +291 -303
- package/dist/hooks/useAccountQuery/getAccountQueryKey.d.ts +2 -0
- package/dist/hooks/useAccountQuery/getAccountQueryKey.js +1 -0
- package/dist/hooks/useAccountQuery/prefetchAccountQuery.d.ts +1 -0
- package/dist/hooks/useAccountQuery/prefetchAccountQuery.js +75 -0
- package/dist/hooks/useAccountQuery/useAccountQuery.d.ts +3 -0
- package/dist/hooks/useAccountQuery/useAccountQuery.js +88 -0
- package/dist/hooks/useAuthenticateMutation/getAuthenticateMutationKey.d.ts +2 -0
- package/dist/hooks/useAuthenticateMutation/getAuthenticateMutationKey.js +1 -0
- package/dist/hooks/useAuthenticateMutation/useAuthenticateMutation.d.ts +3 -0
- package/dist/hooks/useAuthenticateMutation/useAuthenticateMutation.js +70 -0
- package/dist/hooks/useAvailablePromosQuery/getAvailablePromosQueryKey.d.ts +3 -0
- package/dist/hooks/useAvailablePromosQuery/getAvailablePromosQueryKey.js +4 -0
- package/dist/hooks/useAvailablePromosQuery/prefetchAvailablePromosQuery.d.ts +2 -0
- package/dist/hooks/useAvailablePromosQuery/prefetchAvailablePromosQuery.js +75 -0
- package/dist/hooks/useAvailablePromosQuery/useAvailablePromosQuery.d.ts +3 -0
- package/dist/hooks/useAvailablePromosQuery/useAvailablePromosQuery.js +88 -0
- package/dist/hooks/useBetRecordsQuery/getBetRecordsQueryKey.d.ts +3 -0
- package/dist/hooks/useBetRecordsQuery/getBetRecordsQueryKey.js +4 -0
- package/dist/hooks/useBetRecordsQuery/prefetchBetRecordsQuery.d.ts +2 -0
- package/dist/hooks/useBetRecordsQuery/prefetchBetRecordsQuery.js +75 -0
- package/dist/hooks/useBetRecordsQuery/useBetRecordsQuery.d.ts +3 -0
- package/dist/hooks/useBetRecordsQuery/useBetRecordsQuery.js +91 -0
- package/dist/hooks/useCashbacksQuery/getCashbacksQueryKey.d.ts +2 -0
- package/dist/hooks/useCashbacksQuery/getCashbacksQueryKey.js +1 -0
- package/dist/hooks/useCashbacksQuery/prefetchCashbacksQuery.d.ts +1 -0
- package/dist/hooks/useCashbacksQuery/prefetchCashbacksQuery.js +67 -0
- package/dist/hooks/useCashbacksQuery/useCashbacksQuery.d.ts +3 -0
- package/dist/hooks/useCashbacksQuery/useCashbacksQuery.js +68 -0
- package/dist/hooks/useControllableState.d.ts +8 -0
- package/dist/hooks/useControllableState.js +47 -0
- package/dist/hooks/useCooldown.d.ts +43 -0
- package/dist/hooks/useCooldown.js +101 -0
- package/dist/hooks/useCreateGCashDepositMutation/getCreateGCashDepositMutationKey.d.ts +2 -0
- package/dist/hooks/useCreateGCashDepositMutation/getCreateGCashDepositMutationKey.js +3 -0
- package/dist/hooks/useCreateGCashDepositMutation/useCreateGCashDepositMutation.d.ts +4 -0
- package/dist/hooks/useCreateGCashDepositMutation/useCreateGCashDepositMutation.js +125 -0
- package/dist/hooks/useCreateGameSessionMutation/getCreateGameSessionMutationKey.d.ts +2 -0
- package/dist/hooks/useCreateGameSessionMutation/getCreateGameSessionMutationKey.js +3 -0
- package/dist/hooks/useCreateGameSessionMutation/useCreateGameSessionMutation.d.ts +3 -0
- package/dist/hooks/useCreateGameSessionMutation/useCreateGameSessionMutation.js +171 -0
- package/dist/hooks/useCreateMayaAppDepositMutation/getCreateMayaAppDepositMutationKey.d.ts +2 -0
- package/dist/hooks/useCreateMayaAppDepositMutation/getCreateMayaAppDepositMutationKey.js +3 -0
- package/dist/hooks/useCreateMayaAppDepositMutation/useCreateMayaAppDepositMutation.d.ts +4 -0
- package/dist/hooks/useCreateMayaAppDepositMutation/useCreateMayaAppDepositMutation.js +125 -0
- package/dist/hooks/useCreateMayaDepositMutation/getCreateMayaDepositMutationKey.d.ts +2 -0
- package/dist/hooks/useCreateMayaDepositMutation/getCreateMayaDepositMutationKey.js +3 -0
- package/dist/hooks/useCreateMayaDepositMutation/useCreateMayaDepositMutation.d.ts +4 -0
- package/dist/hooks/useCreateMayaDepositMutation/useCreateMayaDepositMutation.js +125 -0
- package/dist/hooks/useCreateOnlineBankDepositMutation/getCreateOnlineBankDepositMutationKey.d.ts +2 -0
- package/dist/hooks/useCreateOnlineBankDepositMutation/getCreateOnlineBankDepositMutationKey.js +3 -0
- package/dist/hooks/useCreateOnlineBankDepositMutation/useCreateOnlineBankDepositMutation.d.ts +4 -0
- package/dist/hooks/useCreateOnlineBankDepositMutation/useCreateOnlineBankDepositMutation.js +125 -0
- package/dist/hooks/useCreateQRPHDepositMutation/getCreateQRPHDepositMutationKey.d.ts +2 -0
- package/dist/hooks/useCreateQRPHDepositMutation/getCreateQRPHDepositMutationKey.js +3 -0
- package/dist/hooks/useCreateQRPHDepositMutation/useCreateQRPHDepositMutation.d.ts +4 -0
- package/dist/hooks/useCreateQRPHDepositMutation/useCreateQRPHDepositMutation.js +125 -0
- package/dist/hooks/useDepositQuery/getDepositQueryKey.d.ts +2 -0
- package/dist/hooks/useDepositQuery/getDepositQueryKey.js +4 -0
- package/dist/hooks/useDepositQuery/prefetchDepositQuery.d.ts +1 -0
- package/dist/hooks/useDepositQuery/prefetchDepositQuery.js +75 -0
- package/dist/hooks/useDepositQuery/useDepositQuery.d.ts +3 -0
- package/dist/hooks/useDepositQuery/useDepositQuery.js +88 -0
- package/dist/hooks/useDepositRecordsQuery/getDepositRecordsQueryKey.d.ts +3 -0
- package/dist/hooks/useDepositRecordsQuery/getDepositRecordsQueryKey.js +4 -0
- package/dist/hooks/useDepositRecordsQuery/prefetchDepositRecordsQuery.d.ts +2 -0
- package/dist/hooks/useDepositRecordsQuery/prefetchDepositRecordsQuery.js +75 -0
- package/dist/hooks/useDepositRecordsQuery/useDepositRecordsQuery.d.ts +3 -0
- package/dist/hooks/useDepositRecordsQuery/useDepositRecordsQuery.js +93 -0
- package/dist/hooks/useDepositsCountQuery/getDepositsCountQueryKey.d.ts +2 -0
- package/dist/hooks/useDepositsCountQuery/getDepositsCountQueryKey.js +3 -0
- package/dist/hooks/useDepositsCountQuery/prefetchDepositsCountQuery.d.ts +1 -0
- package/dist/hooks/useDepositsCountQuery/prefetchDepositsCountQuery.js +75 -0
- package/dist/hooks/useDepositsCountQuery/useDepositsCountQuery.d.ts +2 -0
- package/dist/hooks/useDepositsCountQuery/useDepositsCountQuery.js +88 -0
- package/dist/hooks/useDisclosure.d.ts +11 -0
- package/dist/hooks/useDisclosure.js +13 -0
- package/dist/hooks/useEndGameSessionMutation/getEndGameSessionMutationKey.d.ts +2 -0
- package/dist/hooks/useEndGameSessionMutation/getEndGameSessionMutationKey.js +3 -0
- package/dist/hooks/useEndGameSessionMutation/useEndGameSessionMutation.d.ts +6 -0
- package/dist/hooks/useEndGameSessionMutation/useEndGameSessionMutation.js +95 -0
- package/dist/hooks/useGamesQuery/getGamesQueryKey.d.ts +3 -0
- package/dist/hooks/useGamesQuery/getGamesQueryKey.js +1 -0
- package/dist/hooks/useGamesQuery/prefetchGamesQuery.d.ts +2 -0
- package/dist/hooks/useGamesQuery/prefetchGamesQuery.js +80 -0
- package/dist/hooks/useGamesQuery/useGamesQuery.d.ts +3 -0
- package/dist/hooks/useGamesQuery/useGamesQuery.js +33 -0
- package/dist/hooks/useGlobalStore.d.ts +42 -0
- package/dist/hooks/useGlobalStore.js +76 -0
- package/dist/hooks/useInfiniteQueryHelper.d.ts +31 -0
- package/dist/hooks/useInfiniteQueryHelper.js +121 -0
- package/dist/hooks/useInstapayBankListQuery/getInstapayBankListQueryKey.d.ts +2 -0
- package/dist/hooks/useInstapayBankListQuery/getInstapayBankListQueryKey.js +3 -0
- package/dist/hooks/useInstapayBankListQuery/prefetchInstapayBankListQuery.d.ts +1 -0
- package/dist/hooks/useInstapayBankListQuery/prefetchInstapayBankListQuery.js +75 -0
- package/dist/hooks/useInstapayBankListQuery/useInstapayBankListQuery.d.ts +3 -0
- package/dist/hooks/useInstapayBankListQuery/useInstapayBankListQuery.js +88 -0
- package/dist/hooks/useIsMayaSessionValidQuery/getIsMayaSessionValidQueryKey.d.ts +2 -0
- package/dist/hooks/useIsMayaSessionValidQuery/getIsMayaSessionValidQueryKey.js +3 -0
- package/dist/hooks/useIsMayaSessionValidQuery/prefetchIsMayaSessionValidQuery.d.ts +1 -0
- package/dist/hooks/useIsMayaSessionValidQuery/prefetchIsMayaSessionValidQuery.js +84 -0
- package/dist/hooks/useIsMayaSessionValidQuery/useIsMayaSessionValidQuery.d.ts +2 -0
- package/dist/hooks/useIsMayaSessionValidQuery/useIsMayaSessionValidQuery.js +97 -0
- package/dist/hooks/useJackpotsQuery/getJackpotsQueryKey.d.ts +3 -0
- package/dist/hooks/useJackpotsQuery/getJackpotsQueryKey.js +1 -0
- package/dist/hooks/useJackpotsQuery/prefetchJackpotsQuery.d.ts +2 -0
- package/dist/hooks/useJackpotsQuery/prefetchJackpotsQuery.js +68 -0
- package/dist/hooks/useJackpotsQuery/useJackpotsQuery.d.ts +3 -0
- package/dist/hooks/useJackpotsQuery/useJackpotsQuery.js +32 -0
- package/dist/hooks/useLocaleInfo.d.ts +1 -0
- package/dist/hooks/useLocaleInfo.js +7 -0
- package/dist/hooks/useMemberVerificationQuery/getMemberVerificationQueryKey.d.ts +2 -0
- package/dist/hooks/useMemberVerificationQuery/getMemberVerificationQueryKey.js +1 -0
- package/dist/hooks/useMemberVerificationQuery/prefetchMemberVerificationQuery.d.ts +1 -0
- package/dist/hooks/useMemberVerificationQuery/prefetchMemberVerificationQuery.js +75 -0
- package/dist/hooks/useMemberVerificationQuery/useMemberVerificationQuery.d.ts +3 -0
- package/dist/hooks/useMemberVerificationQuery/useMemberVerificationQuery.js +87 -0
- package/dist/hooks/useMobileNumberParser.d.ts +8 -0
- package/dist/hooks/useMobileNumberParser.js +63 -0
- package/dist/hooks/useOnMMA.d.ts +2 -0
- package/dist/hooks/useOnMMA.js +5 -0
- package/dist/hooks/usePaymentSettingsQuery/getPaymentSettingsQueryKey.d.ts +2 -0
- package/dist/hooks/usePaymentSettingsQuery/getPaymentSettingsQueryKey.js +3 -0
- package/dist/hooks/usePaymentSettingsQuery/prefetchPaymentSettingsQuery.d.ts +1 -0
- package/dist/hooks/usePaymentSettingsQuery/prefetchPaymentSettingsQuery.js +75 -0
- package/dist/hooks/usePaymentSettingsQuery/usePaymentSettingsQuery.d.ts +3 -0
- package/dist/hooks/usePaymentSettingsQuery/usePaymentSettingsQuery.js +88 -0
- package/dist/hooks/usePlatformQuery/getPlatformQueryKey.d.ts +2 -0
- package/dist/hooks/usePlatformQuery/getPlatformQueryKey.js +1 -0
- package/dist/hooks/usePlatformQuery/prefetchPlatformQuery.d.ts +1 -0
- package/dist/hooks/usePlatformQuery/prefetchPlatformQuery.js +70 -0
- package/dist/hooks/usePlatformQuery/usePlatformQuery.d.ts +3 -0
- package/dist/hooks/usePlatformQuery/usePlatformQuery.js +65 -0
- package/dist/hooks/usePromoQuery/getPromoQueryKey.d.ts +2 -0
- package/dist/hooks/usePromoQuery/getPromoQueryKey.js +1 -0
- package/dist/hooks/usePromoQuery/prefetchPromoQuery.d.ts +1 -0
- package/dist/hooks/usePromoQuery/prefetchPromoQuery.js +67 -0
- package/dist/hooks/usePromoQuery/usePromoQuery.d.ts +3 -0
- package/dist/hooks/usePromoQuery/usePromoQuery.js +68 -0
- package/dist/hooks/usePromosQuery/getPromosQueryKey.d.ts +2 -0
- package/dist/hooks/usePromosQuery/getPromosQueryKey.js +1 -0
- package/dist/hooks/usePromosQuery/prefetchPromosQuery.d.ts +1 -0
- package/dist/hooks/usePromosQuery/prefetchPromosQuery.js +67 -0
- package/dist/hooks/usePromosQuery/usePromosQuery.d.ts +3 -0
- package/dist/hooks/usePromosQuery/usePromosQuery.js +68 -0
- package/dist/hooks/useSendVerificationCodeMutation/getSendVerificationCodeMutationKey.d.ts +2 -0
- package/dist/hooks/useSendVerificationCodeMutation/getSendVerificationCodeMutationKey.js +3 -0
- package/dist/hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation.d.ts +3 -0
- package/dist/hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation.js +68 -0
- package/dist/hooks/useSessionQuery/getSessionQueryKey.d.ts +2 -0
- package/dist/hooks/useSessionQuery/getSessionQueryKey.js +1 -0
- package/dist/hooks/useSessionQuery/prefetchSessionQuery.d.ts +1 -0
- package/dist/hooks/useSessionQuery/prefetchSessionQuery.js +53 -0
- package/dist/hooks/useSessionQuery/useSessionQuery.d.ts +2 -0
- package/dist/hooks/useSessionQuery/useSessionQuery.js +60 -0
- package/dist/hooks/useSignOutMutation/getSignOutMutationKey.d.ts +2 -0
- package/dist/hooks/useSignOutMutation/getSignOutMutationKey.js +1 -0
- package/dist/hooks/useSignOutMutation/useSignOutMutation.d.ts +2 -0
- package/dist/hooks/useSignOutMutation/useSignOutMutation.js +69 -0
- package/dist/hooks/useSignUpMutation/getSignUpMutationKey.d.ts +2 -0
- package/dist/hooks/useSignUpMutation/getSignUpMutationKey.js +1 -0
- package/dist/hooks/useSignUpMutation/useSignUpMutation.d.ts +5 -0
- package/dist/hooks/useSignUpMutation/useSignUpMutation.js +65 -0
- package/dist/hooks/useSigninMutation/getSignInMutationKey.d.ts +2 -0
- package/dist/hooks/useSigninMutation/getSignInMutationKey.js +1 -0
- package/dist/hooks/useSigninMutation/useSignInMutation.d.ts +4 -0
- package/dist/hooks/useSigninMutation/useSignInMutation.js +73 -0
- package/dist/hooks/useSiteQuery/getSiteQueryKey.d.ts +2 -0
- package/dist/hooks/useSiteQuery/getSiteQueryKey.js +1 -0
- package/dist/hooks/useSiteQuery/prefetchSiteQuery.d.ts +1 -0
- package/dist/hooks/useSiteQuery/prefetchSiteQuery.js +70 -0
- package/dist/hooks/useSiteQuery/useSiteQuery.d.ts +3 -0
- package/dist/hooks/useSiteQuery/useSiteQuery.js +68 -0
- package/dist/hooks/useTopWinsQuery/getTopWinsQueryKey.d.ts +2 -0
- package/dist/hooks/useTopWinsQuery/getTopWinsQueryKey.js +1 -0
- package/dist/hooks/useTopWinsQuery/prefetchTopWinsQuery.d.ts +1 -0
- package/dist/hooks/useTopWinsQuery/prefetchTopWinsQuery.js +67 -0
- package/dist/hooks/useTopWinsQuery/useTopWinsQuery.d.ts +3 -0
- package/dist/hooks/useTopWinsQuery/useTopWinsQuery.js +66 -0
- package/dist/hooks/useTournamentsQuery/getTournamentsQueryKey.d.ts +3 -0
- package/dist/hooks/useTournamentsQuery/getTournamentsQueryKey.js +4 -0
- package/dist/hooks/useTournamentsQuery/prefetchTournamentsQuery.d.ts +2 -0
- package/dist/hooks/useTournamentsQuery/prefetchTournamentsQuery.js +68 -0
- package/dist/hooks/useTournamentsQuery/useTournamentsQuery.d.ts +3 -0
- package/dist/hooks/useTournamentsQuery/useTournamentsQuery.js +33 -0
- package/dist/hooks/useTransactionRecordsQuery/getTransactionRecordsQueryKey.d.ts +3 -0
- package/dist/hooks/useTransactionRecordsQuery/getTransactionRecordsQueryKey.js +4 -0
- package/dist/hooks/useTransactionRecordsQuery/prefetchTransactionRecordsQuery.d.ts +2 -0
- package/dist/hooks/useTransactionRecordsQuery/prefetchTransactionRecordsQuery.js +75 -0
- package/dist/hooks/useTransactionRecordsQuery/useTransactionRecordsQuery.d.ts +3 -0
- package/dist/hooks/useTransactionRecordsQuery/useTransactionRecordsQuery.js +93 -0
- package/dist/hooks/useWalletQuery/getWalletQueryKey.d.ts +2 -0
- package/dist/hooks/useWalletQuery/getWalletQueryKey.js +1 -0
- package/dist/hooks/useWalletQuery/prefetchWalletQuery.d.ts +1 -0
- package/dist/hooks/useWalletQuery/prefetchWalletQuery.js +75 -0
- package/dist/hooks/useWalletQuery/useWalletQuery.d.ts +3 -0
- package/dist/hooks/useWalletQuery/useWalletQuery.js +87 -0
- package/dist/hooks/useWithdrawalRecordsQuery/getWithdrawalRecordsQueryKey.d.ts +3 -0
- package/dist/hooks/useWithdrawalRecordsQuery/getWithdrawalRecordsQueryKey.js +4 -0
- package/dist/hooks/useWithdrawalRecordsQuery/prefetchWithdrawalRecordsQuery.d.ts +2 -0
- package/dist/hooks/useWithdrawalRecordsQuery/prefetchWithdrawalRecordsQuery.js +75 -0
- package/dist/hooks/useWithdrawalRecordsQuery/useWithdrawalRecordsQuery.d.ts +3 -0
- package/dist/hooks/useWithdrawalRecordsQuery/useWithdrawalRecordsQuery.js +94 -0
- package/dist/icons/AlertCircleIcon.d.ts +2 -0
- package/dist/icons/AlertCircleIcon.jsx +5 -0
- package/dist/icons/AlertTriangle.d.ts +2 -0
- package/dist/icons/AlertTriangle.jsx +5 -0
- package/dist/icons/ArrowLeftIcon.d.ts +2 -0
- package/dist/icons/ArrowLeftIcon.jsx +5 -0
- package/dist/icons/ArrowNarrowUpRightIcon.d.ts +2 -0
- package/dist/icons/ArrowNarrowUpRightIcon.jsx +5 -0
- package/dist/icons/ArrowRightIcon.d.ts +2 -0
- package/dist/icons/ArrowRightIcon.jsx +5 -0
- package/dist/icons/Award02Icon.d.ts +2 -0
- package/dist/icons/Award02Icon.jsx +5 -0
- package/dist/icons/BankIcon.d.ts +2 -0
- package/dist/icons/BankIcon.jsx +5 -0
- package/dist/icons/CheckCircleBrokenIcon.d.ts +2 -0
- package/dist/icons/CheckCircleBrokenIcon.jsx +5 -0
- package/dist/icons/CheckIcon.d.ts +2 -0
- package/dist/icons/CheckIcon.jsx +5 -0
- package/dist/icons/ChevronDownIcon.d.ts +2 -0
- package/dist/icons/ChevronDownIcon.jsx +5 -0
- package/dist/icons/ChevronLeftIcon.d.ts +2 -0
- package/dist/icons/ChevronLeftIcon.jsx +5 -0
- package/dist/icons/ChevronRightIcon.d.ts +2 -0
- package/dist/icons/ChevronRightIcon.jsx +5 -0
- package/dist/icons/ChevronUpIcon.d.ts +2 -0
- package/dist/icons/ChevronUpIcon.jsx +5 -0
- package/dist/icons/Expand03Icon.d.ts +2 -0
- package/dist/icons/Expand03Icon.jsx +5 -0
- package/dist/icons/FacebookIcon.d.ts +2 -0
- package/dist/icons/FacebookIcon.jsx +6 -0
- package/dist/icons/File02Icon.d.ts +2 -0
- package/dist/icons/File02Icon.jsx +5 -0
- package/dist/icons/Gift01Icon.d.ts +2 -0
- package/dist/icons/Gift01Icon.jsx +5 -0
- package/dist/icons/GoogleIcon.d.ts +2 -0
- package/dist/icons/GoogleIcon.jsx +9 -0
- package/dist/icons/Logout01Icon.d.ts +2 -0
- package/dist/icons/Logout01Icon.jsx +5 -0
- package/dist/icons/QrCode02Icon.d.ts +2 -0
- package/dist/icons/QrCode02Icon.jsx +5 -0
- package/dist/icons/SpinnerIcon.d.ts +2 -0
- package/dist/icons/SpinnerIcon.jsx +9 -0
- package/dist/icons/User01Icon.d.ts +2 -0
- package/dist/icons/User01Icon.jsx +5 -0
- package/dist/icons/Wallet02Icon.d.ts +2 -0
- package/dist/icons/Wallet02Icon.jsx +5 -0
- package/dist/icons/XIcon.d.ts +1 -0
- package/dist/icons/XIcon.jsx +5 -0
- package/dist/index.d.ts +1 -144
- package/dist/index.js +1 -7654
- package/dist/middleware.d.ts +2 -5
- package/dist/middleware.js +90 -90
- package/dist/services/client/authenticate.d.ts +2 -0
- package/dist/services/client/authenticate.js +76 -0
- package/dist/services/client/getSession.d.ts +2 -0
- package/dist/services/client/getSession.js +59 -0
- package/dist/services/client/signIn.d.ts +3 -0
- package/dist/services/client/signIn.js +77 -0
- package/dist/services/client/signOut.d.ts +1 -0
- package/dist/services/client/signOut.js +61 -0
- package/dist/services/server/authenticate.d.ts +2 -0
- package/dist/services/server/authenticate.js +69 -0
- package/dist/services/server/getSession.d.ts +2 -0
- package/dist/services/server/getSession.js +55 -0
- package/dist/services/server/signIn.d.ts +2 -0
- package/dist/services/server/signIn.js +74 -0
- package/dist/services/server/signOut.d.ts +1 -0
- package/dist/services/server/signOut.js +67 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/index.js +1 -0
- package/dist/ui/AlertDialog/AlertDialog.d.ts +508 -0
- package/dist/ui/AlertDialog/AlertDialog.jsx +17 -0
- package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +46 -0
- package/dist/ui/AlertDialog/alertDialog.recipe.js +17 -0
- package/dist/ui/AlertDialog/index.d.ts +1 -0
- package/dist/ui/AlertDialog/index.js +1 -0
- package/dist/ui/Avatar/Avatar.d.ts +68 -0
- package/dist/ui/Avatar/Avatar.jsx +9 -0
- package/dist/ui/Avatar/avatar.recipe.d.ts +22 -0
- package/dist/ui/Avatar/avatar.recipe.js +21 -0
- package/dist/ui/Avatar/index.d.ts +1 -0
- package/dist/ui/Avatar/index.js +1 -0
- package/dist/ui/Badge/Badge.d.ts +167 -0
- package/dist/ui/Badge/Badge.jsx +10 -0
- package/dist/ui/Badge/badge.anatomy.d.ts +1 -0
- package/dist/ui/Badge/badge.anatomy.js +2 -0
- package/dist/ui/Badge/badge.recipe.d.ts +52 -0
- package/dist/ui/Badge/badge.recipe.js +67 -0
- package/dist/ui/Badge/index.d.ts +1 -0
- package/dist/ui/Badge/index.js +1 -0
- package/dist/ui/Button/Button.d.ts +7 -0
- package/dist/ui/Button/Button.jsx +20 -0
- package/dist/ui/Button/button.recipe.d.ts +57 -0
- package/dist/ui/Button/button.recipe.js +46 -0
- package/dist/ui/Button/index.d.ts +1 -0
- package/dist/ui/Button/index.js +1 -0
- package/dist/ui/Checkbox/Checkbox.d.ts +286 -0
- package/dist/ui/Checkbox/Checkbox.jsx +13 -0
- package/dist/ui/Checkbox/checkbox.recipe.d.ts +40 -0
- package/dist/ui/Checkbox/checkbox.recipe.js +40 -0
- package/dist/ui/Checkbox/index.d.ts +1 -0
- package/dist/ui/Checkbox/index.js +1 -0
- package/dist/ui/Clipboard/Clipboard.d.ts +224 -0
- package/dist/ui/Clipboard/Clipboard.jsx +12 -0
- package/dist/ui/Clipboard/clipboard.recipe.d.ts +37 -0
- package/dist/ui/Clipboard/clipboard.recipe.js +38 -0
- package/dist/ui/Clipboard/index.d.ts +1 -0
- package/dist/ui/Clipboard/index.js +1 -0
- package/dist/ui/Combobox/Combobox.d.ts +1 -0
- package/dist/ui/Combobox/Combobox.jsx +2 -0
- package/dist/ui/Combobox/combobox.recipe.d.ts +0 -0
- package/dist/ui/Combobox/combobox.recipe.js +1 -0
- package/dist/ui/Combobox/index.d.ts +1 -0
- package/dist/ui/Combobox/index.js +1 -0
- package/dist/ui/DatePicker/DatePicker.d.ts +2114 -0
- package/dist/ui/DatePicker/DatePicker.jsx +30 -0
- package/dist/ui/DatePicker/datePicker.recipe.d.ts +88 -0
- package/dist/ui/DatePicker/datePicker.recipe.js +15 -0
- package/dist/ui/DatePicker/index.d.ts +1 -0
- package/dist/ui/DatePicker/index.js +1 -0
- package/dist/ui/Dialog/Dialog.d.ts +508 -0
- package/dist/ui/Dialog/Dialog.jsx +17 -0
- package/dist/ui/Dialog/dialog.recipe.d.ts +46 -0
- package/dist/ui/Dialog/dialog.recipe.js +12 -0
- package/dist/ui/Dialog/index.d.ts +1 -0
- package/dist/ui/Dialog/index.js +1 -0
- package/dist/ui/Drawer/Drawer.d.ts +310 -0
- package/dist/ui/Drawer/Drawer.jsx +17 -0
- package/dist/ui/Drawer/drawer.recipe.d.ts +28 -0
- package/dist/ui/Drawer/drawer.recipe.js +24 -0
- package/dist/ui/Drawer/index.d.ts +1 -0
- package/dist/ui/Drawer/index.js +1 -0
- package/dist/ui/Field/Field.d.ts +303 -0
- package/dist/ui/Field/Field.jsx +13 -0
- package/dist/ui/Field/field.recipe.d.ts +43 -0
- package/dist/ui/Field/field.recipe.js +47 -0
- package/dist/ui/Field/index.d.ts +1 -0
- package/dist/ui/Field/index.js +1 -0
- package/dist/ui/IconButton/IconButton.d.ts +7 -0
- package/dist/ui/IconButton/IconButton.jsx +20 -0
- package/dist/ui/IconButton/iconButton.recipe.d.ts +80 -0
- package/dist/ui/IconButton/iconButton.recipe.js +17 -0
- package/dist/ui/IconButton/index.d.ts +1 -0
- package/dist/ui/IconButton/index.js +1 -0
- package/dist/ui/Menu/Menu.d.ts +2 -0
- package/dist/ui/Menu/Menu.jsx +3 -0
- package/dist/ui/Menu/index.d.ts +1 -0
- package/dist/ui/Menu/index.js +1 -0
- package/dist/ui/Menu/menu.recipe.d.ts +0 -0
- package/dist/ui/Menu/menu.recipe.js +1 -0
- package/dist/ui/NumberInput/NumberInput.d.ts +202 -0
- package/dist/ui/NumberInput/NumberInput.jsx +14 -0
- package/dist/ui/NumberInput/index.d.ts +1 -0
- package/dist/ui/NumberInput/index.js +1 -0
- package/dist/ui/NumberInput/numberInput.recipe.d.ts +25 -0
- package/dist/ui/NumberInput/numberInput.recipe.js +24 -0
- package/dist/ui/PinInput/PinInput.d.ts +163 -0
- package/dist/ui/PinInput/PinInput.jsx +11 -0
- package/dist/ui/PinInput/index.d.ts +1 -0
- package/dist/ui/PinInput/index.js +1 -0
- package/dist/ui/PinInput/pinInput.recipe.d.ts +40 -0
- package/dist/ui/PinInput/pinInput.recipe.js +38 -0
- package/dist/ui/Popover/Popover.d.ts +508 -0
- package/dist/ui/Popover/Popover.jsx +17 -0
- package/dist/ui/Popover/index.d.ts +1 -0
- package/dist/ui/Popover/index.js +1 -0
- package/dist/ui/Popover/popover.recipe.d.ts +46 -0
- package/dist/ui/Popover/popover.recipe.js +9 -0
- package/dist/ui/Presence.d.ts +2 -0
- package/dist/ui/Presence.jsx +5 -0
- package/dist/ui/Progress/Progress.d.ts +1 -0
- package/dist/ui/Progress/Progress.jsx +2 -0
- package/dist/ui/Progress/index.d.ts +1 -0
- package/dist/ui/Progress/index.js +1 -0
- package/dist/ui/Progress/progress.recipe.d.ts +0 -0
- package/dist/ui/Progress/progress.recipe.js +1 -0
- package/dist/ui/SegmentGroup/SegmentGroup.d.ts +226 -0
- package/dist/ui/SegmentGroup/SegmentGroup.jsx +14 -0
- package/dist/ui/SegmentGroup/index.d.ts +1 -0
- package/dist/ui/SegmentGroup/index.js +1 -0
- package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +37 -0
- package/dist/ui/SegmentGroup/segmentGroup.recipe.js +33 -0
- package/dist/ui/Select/Select.d.ts +739 -0
- package/dist/ui/Select/Select.jsx +24 -0
- package/dist/ui/Select/index.d.ts +1 -0
- package/dist/ui/Select/index.js +1 -0
- package/dist/ui/Select/select.recipe.d.ts +49 -0
- package/dist/ui/Select/select.recipe.js +37 -0
- package/dist/ui/Table/Table.d.ts +301 -0
- package/dist/ui/Table/Table.jsx +12 -0
- package/dist/ui/Table/index.d.ts +1 -0
- package/dist/ui/Table/index.js +1 -0
- package/dist/ui/Table/table.anatomy.d.ts +1 -0
- package/dist/ui/Table/table.anatomy.js +2 -0
- package/dist/ui/Table/table.recipe.d.ts +43 -0
- package/dist/ui/Table/table.recipe.js +27 -0
- package/dist/ui/Tabs/Tabs.d.ts +187 -0
- package/dist/ui/Tabs/Tabs.jsx +11 -0
- package/dist/ui/Tabs/index.d.ts +1 -0
- package/dist/ui/Tabs/index.js +1 -0
- package/dist/ui/Tabs/tabs.recipe.d.ts +37 -0
- package/dist/ui/Tabs/tabs.recipe.js +33 -0
- package/dist/ui/Tooltip/Tooltip.d.ts +1 -0
- package/dist/ui/Tooltip/Tooltip.jsx +2 -0
- package/dist/ui/Tooltip/index.d.ts +1 -0
- package/dist/ui/Tooltip/index.js +1 -0
- package/dist/ui/Tooltip/tooltip.recipe.d.ts +0 -0
- package/dist/ui/Tooltip/tooltip.recipe.js +1 -0
- package/dist/ui/index.d.ts +23 -0
- package/dist/ui/index.js +23 -0
- package/dist/utils/anatomyToRecipeSlots.d.ts +6 -0
- package/dist/utils/anatomyToRecipeSlots.js +13 -0
- package/dist/utils/capitalize.d.ts +40 -0
- package/dist/utils/capitalize.js +47 -0
- package/dist/utils/createPoll.d.ts +28 -0
- package/dist/utils/createPoll.js +104 -0
- package/dist/utils/createRecipeContext.d.ts +15 -0
- package/dist/utils/createRecipeContext.jsx +71 -0
- package/dist/utils/createSplitProps.d.ts +3 -0
- package/dist/utils/createSplitProps.js +19 -0
- package/dist/utils/dataAttr.d.ts +1 -0
- package/dist/utils/dataAttr.js +3 -0
- package/dist/utils/formatNumber.d.ts +21 -0
- package/dist/utils/formatNumber.js +45 -0
- package/dist/utils/getGameImageUrl.d.ts +12 -0
- package/dist/utils/getGameImageUrl.js +10 -0
- package/dist/utils/getLocaleInfo.d.ts +79 -0
- package/dist/utils/getLocaleInfo.jsx +237 -0
- package/dist/utils/getQueryClient.d.ts +2 -0
- package/dist/utils/getQueryClient.js +26 -0
- package/dist/utils/isMobile.d.ts +5 -0
- package/dist/utils/isMobile.js +16 -0
- package/dist/utils/parseDecimal.d.ts +2 -0
- package/dist/utils/parseDecimal.js +18 -0
- package/dist/utils/toaster.d.ts +2 -0
- package/dist/utils/toaster.js +8 -0
- package/package.json +156 -13
- package/dist/JackpotCounter.module-5D2TMSET.module.css +0 -46
- package/dist/QRPh-LURVHEVK.png +0 -0
- package/dist/ball-TSKR3KCL.png +0 -0
- package/dist/card-DTJVRZI7.png +0 -0
- package/dist/chunk-CA3CKIFK.mjs +0 -74
- package/dist/chunk-CA3CKIFK.mjs.map +0 -1
- package/dist/chunk-J5LGTIGS.mjs +0 -10
- package/dist/chunk-J5LGTIGS.mjs.map +0 -1
- package/dist/chunk-WGWFJYET.mjs +0 -1229
- package/dist/chunk-WGWFJYET.mjs.map +0 -1
- package/dist/close-chest-T4YK5KYS.png +0 -0
- package/dist/gcash-3TV2ZD5Z.png +0 -0
- package/dist/handlers.d.mts +0 -43
- package/dist/handlers.js.map +0 -1
- package/dist/handlers.mjs +0 -267
- package/dist/handlers.mjs.map +0 -1
- package/dist/index.d.mts +0 -144
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -6422
- package/dist/index.mjs.map +0 -1
- package/dist/maya-2LESMCYJ.png +0 -0
- package/dist/middleware.d.mts +0 -8
- package/dist/middleware.js.map +0 -1
- package/dist/middleware.mjs +0 -45
- package/dist/middleware.mjs.map +0 -1
- package/dist/online-bank-ZRRABICE.png +0 -0
- package/dist/open-chest-XMGW5QZE.png +0 -0
- package/dist/pagcor-AFUY5PSY.png +0 -0
- package/dist/responsible-gaming-MQQBK5RV.png +0 -0
- package/dist/trophy-QC26LEAT.png +0 -0
- package/dist/ui.d.mts +0 -6904
- package/dist/ui.d.ts +0 -6904
- package/dist/ui.js +0 -1280
- package/dist/ui.js.map +0 -1
- package/dist/ui.mjs +0 -48
- package/dist/ui.mjs.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/index.ts","../src/lib/components/Account/Account.tsx","../src/lib/hooks/useAccountQuery/useAccountQuery.ts","../src/lib/constants/index.ts","../src/lib/services/client/getSession.ts","../src/lib/utils/getQueryClient.ts","../src/lib/hooks/useSessionQuery/getSessionQueryKey.ts","../src/lib/hooks/useSessionQuery/useSessionQuery.ts","../src/lib/hooks/useAccountQuery/getAccountQueryKey.ts","../src/lib/hooks/useGlobalStore.ts","../src/lib/utils/getLocaleInfo.tsx","../src/lib/hooks/usePlatformQuery/usePlatformQuery.ts","../src/lib/hooks/usePlatformQuery/getPlatformQueryKey.ts","../src/lib/hooks/useLocaleInfo.ts","../src/lib/hooks/useSignOutMutation/useSignOutMutation.ts","../src/lib/services/client/signOut.ts","../src/lib/hooks/useSignOutMutation/getSignOutMutationKey.ts","../src/lib/hooks/useWalletQuery/useWalletQuery.ts","../src/lib/hooks/useWalletQuery/getWalletQueryKey.ts","../src/lib/icons/ChevronRightIcon.tsx","../src/lib/icons/Logout01Icon.tsx","../src/lib/icons/User01Icon.tsx","../src/lib/ui/AlertDialog/AlertDialog.tsx","../src/lib/utils/createRecipeContext.tsx","../src/lib/utils/createSplitProps.ts","../src/lib/ui/AlertDialog/alertDialog.recipe.ts","../src/lib/utils/anatomyToRecipeSlots.ts","../src/lib/ui/Avatar/Avatar.tsx","../src/lib/ui/Avatar/avatar.recipe.ts","../src/lib/ui/Badge/Badge.tsx","../src/lib/ui/Badge/badge.anatomy.ts","../src/lib/ui/Badge/badge.recipe.ts","../src/lib/ui/Button/Button.tsx","../src/lib/utils/dataAttr.ts","../src/lib/ui/Button/button.recipe.ts","../src/lib/ui/Checkbox/Checkbox.tsx","../src/lib/ui/Checkbox/checkbox.recipe.ts","../src/lib/ui/Combobox/Combobox.tsx","../src/lib/ui/DatePicker/DatePicker.tsx","../src/lib/ui/DatePicker/datePicker.recipe.ts","../src/lib/ui/Dialog/Dialog.tsx","../src/lib/ui/Dialog/dialog.recipe.ts","../src/lib/ui/Drawer/Drawer.tsx","../src/lib/ui/Drawer/drawer.recipe.ts","../src/lib/ui/Field/Field.tsx","../src/lib/ui/Field/field.recipe.ts","../src/lib/ui/IconButton/IconButton.tsx","../src/lib/ui/IconButton/iconButton.recipe.ts","../src/lib/ui/Menu/Menu.tsx","../src/lib/ui/NumberInput/NumberInput.tsx","../src/lib/ui/NumberInput/numberInput.recipe.ts","../src/lib/ui/PinInput/PinInput.tsx","../src/lib/ui/PinInput/pinInput.recipe.ts","../src/lib/ui/Popover/Popover.tsx","../src/lib/ui/Popover/popover.recipe.ts","../src/lib/ui/Progress/Progress.tsx","../src/lib/ui/SegmentGroup/SegmentGroup.tsx","../src/lib/ui/SegmentGroup/segmentGroup.recipe.ts","../src/lib/ui/Select/Select.tsx","../src/lib/ui/Select/select.recipe.ts","../src/lib/ui/Table/Table.tsx","../src/lib/ui/Table/table.recipe.ts","../src/lib/ui/Table/table.anatomy.ts","../src/lib/ui/Tabs/Tabs.tsx","../src/lib/ui/Tabs/tabs.recipe.ts","../src/lib/ui/Tooltip/Tooltip.tsx","../src/lib/utils/parseDecimal.ts","../src/lib/utils/formatNumber.ts","../src/lib/components/Banner/Banner.tsx","../src/lib/components/BetRecords/BetRecordsContent.tsx","../src/lib/hooks/useBetRecordsQuery/useBetRecordsQuery.ts","../src/lib/hooks/useBetRecordsQuery/getBetRecordsQueryKey.ts","../src/lib/hooks/useInfiniteQueryHelper.ts","../src/lib/icons/CheckIcon.tsx","../src/lib/icons/ChevronDownIcon.tsx","../src/lib/icons/ChevronLeftIcon.tsx","../src/lib/icons/File02Icon.tsx","../src/lib/icons/SpinnerIcon.tsx","../src/lib/utils/capitalize.ts","../src/lib/components/Empty/CloudIcon.tsx","../src/lib/components/Empty/Empty.tsx","../src/lib/components/BetRecords/BetRecords.tsx","../src/lib/components/DepositWithdrawal/DepositWithdrawal.tsx","../src/lib/icons/Wallet02Icon.tsx","../src/lib/icons/XIcon.tsx","../src/lib/components/DepositWithdrawal/Deposit/Deposit.tsx","../src/lib/hooks/usePaymentSettingsQuery/usePaymentSettingsQuery.ts","../src/lib/hooks/usePaymentSettingsQuery/getPaymentSettingsQueryKey.ts","../src/lib/icons/AlertCircleIcon.tsx","../src/lib/utils/isMobile.ts","../src/lib/components/DepositWithdrawal/PaymentMethods.tsx","../src/lib/hooks/useControllableState.ts","../src/lib/components/DepositWithdrawal/utils.ts","../src/lib/components/DepositWithdrawal/Deposit/GCashDeposit.tsx","../src/lib/hooks/useAvailablePromosQuery/useAvailablePromosQuery.ts","../src/lib/hooks/useAvailablePromosQuery/getAvailablePromosQueryKey.ts","../src/lib/hooks/useCreateGCashDepositMutation/useCreateGCashDepositMutation.ts","../src/lib/utils/createPoll.ts","../src/lib/hooks/useCreateGCashDepositMutation/getCreateGCashDepositMutationKey.ts","../src/lib/hooks/useDepositsCountQuery/useDepositsCountQuery.ts","../src/lib/hooks/useDepositsCountQuery/getDepositsCountQueryKey.ts","../src/lib/hooks/useDisclosure.ts","../src/lib/icons/ChevronUpIcon.tsx","../src/lib/utils/toaster.ts","../src/lib/components/DepositWithdrawal/AmountChoices.tsx","../src/lib/components/DepositWithdrawal/AvailablePromos.tsx","../src/lib/components/DepositWithdrawal/Deposit/MayaAppDeposit.tsx","../src/lib/components/DepositWithdrawal/Deposit/MayaDeposit.tsx","../src/lib/hooks/useCreateMayaDepositMutation copy/useCreateMayaDepositMutation.ts","../src/lib/hooks/useCreateMayaDepositMutation copy/getCreateMayaDepositMutationKey.ts","../src/lib/components/DepositWithdrawal/Deposit/OnlineBankDeposit.tsx","../src/lib/components/DepositWithdrawal/Deposit/QRPHDeposit.tsx","../src/lib/components/DepositWithdrawal/Withdrawal/Withdrawal.tsx","../src/lib/components/Disclaimer/Disclaimer.tsx","../src/lib/components/Disclaimer/useDisclaimer.tsx","../src/lib/components/FeatureFlagProvider/FeatureFlagContext.tsx","../src/lib/components/FeatureFlagProvider/FeatureFlagProvider.tsx","../src/lib/components/FeatureFlagProvider/useFeatureFlag.ts","../src/lib/components/GameLaunch/GameLaunch.tsx","../src/lib/hooks/useEndGameSessionMutation/useEndGameSessionMutation.ts","../src/lib/hooks/useEndGameSessionMutation/getEndGameSessionMutationKey.ts","../src/lib/icons/Expand03Icon.tsx","../src/lib/components/GameLaunch/GameLaunchTrigger.tsx","../src/lib/hooks/useCreateGameSessionMutation/useCreateGameSessionMutation.ts","../src/lib/hooks/useCreateGameSessionMutation/getCreateGameSessionMutationKey.ts","../src/lib/hooks/useGamesQuery/prefetchGamesQuery.ts","../src/lib/hooks/useGamesQuery/getGamesQueryKey.ts","../src/lib/components/Games/GamesContent.tsx","../src/lib/hooks/useGamesQuery/useGamesQuery.ts","../src/lib/icons/ArrowLeftIcon.tsx","../src/lib/icons/ArrowRightIcon.tsx","../src/lib/components/Games/Games.tsx","../src/lib/components/JackpotCounter/JackpotCounterContent.tsx","../src/lib/hooks/useJackpotsQuery/useJackpotsQuery.ts","../src/lib/hooks/useJackpotsQuery/getJackpotsQueryKey.ts","../src/lib/components/JackpotCounter/JackpotCounterItem.tsx","../src/lib/icons/ArrowNarrowUpRightIcon.tsx","../src/lib/components/JackpotCounter/JackpotCounter.tsx","../src/lib/components/Marquee/Marquee.tsx","../src/lib/components/PortalProvider/PortalProvider.tsx","../src/lib/hooks/usePlatformQuery/prefetchPlatformQuery.ts","../src/lib/services/server/getSession.ts","../src/lib/hooks/useSessionQuery/prefetchSessionQuery.ts","../src/lib/hooks/useWalletQuery/prefetchWalletQuery.ts","../src/lib/components/PortalProvider/Providers.tsx","../src/lib/hooks/usePromosQuery/prefetchPromosQuery.ts","../src/lib/hooks/usePromosQuery/getPromosQueryKey.ts","../src/lib/components/Promos/PromosContent.tsx","../src/lib/hooks/usePromosQuery/usePromosQuery.ts","../src/lib/icons/Gift01Icon.tsx","../src/lib/components/Promos/PromoItem.tsx","../src/lib/components/Promos/Promos.tsx","../src/lib/components/Protected/Protected.tsx","../src/lib/components/SignIn/SignIn.tsx","../src/lib/components/SignIn/SignInForm.tsx","../src/lib/hooks/useCooldown.ts","../src/lib/hooks/useMobileNumberParser.ts","../src/lib/hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation.ts","../src/lib/hooks/useSendVerificationCodeMutation/getSendVerificationCodeMutationKey.ts","../src/lib/hooks/useSigninMutation/useSignInMutation.ts","../src/lib/services/client/signIn.ts","../src/lib/hooks/useSigninMutation/getSignInMutationKey.ts","../src/lib/icons/FacebookIcon.tsx","../src/lib/icons/GoogleIcon.tsx","../src/lib/components/SignUp/SignUp.tsx","../src/lib/components/SignUp/SignUpForm.tsx","../src/lib/hooks/useSignUpMutation/useSignUpMutation.ts","../src/lib/hooks/useSignUpMutation/getSignUpMutationKey.ts","../src/lib/components/TopWins/TopWinsContent.tsx","../src/lib/hooks/useTopWinsQuery/useTopWinsQuery.ts","../src/lib/hooks/useTopWinsQuery/getTopWinsQueryKey.ts","../src/lib/utils/getGameImageUrl.ts","../src/lib/components/TopWins/TopWins.tsx","../src/lib/components/TournamentCounter/TournamentCounterContent.tsx","../src/lib/hooks/useTournamentsQuery/useTournamentsQuery.ts","../src/lib/hooks/useTournamentsQuery/getTournamentsQueryKey.ts","../src/lib/components/TournamentCounter/TournamentCounterItem.tsx","../src/lib/icons/Award02Icon.tsx","../src/lib/components/TournamentCounter/TournamentCounter.tsx","../src/lib/components/TransactionRecords/DepositRecordsTable.tsx","../src/lib/hooks/useDepositRecordsQuery/useDepositRecordsQuery.ts","../src/lib/hooks/useDepositRecordsQuery/getDepositRecordsQueryKey.ts","../src/lib/components/TransactionRecords/TableFilters.tsx","../src/lib/components/TransactionRecords/TransactionRecordsTable.tsx","../src/lib/hooks/useTransactionRecordsQuery/useTransactionRecordsQuery.ts","../src/lib/hooks/useTransactionRecordsQuery/getTransactionRecordsQueryKey.ts","../src/lib/components/TransactionRecords/WithdrawalRecordsTable.tsx","../src/lib/hooks/useWithdrawalRecordsQuery/useWithdrawalRecordsQuery.ts","../src/lib/hooks/useWithdrawalRecordsQuery/getWithdrawalRecordsQueryKey.ts","../src/lib/components/TransactionRecords/TransactionRecords.tsx"],"sourcesContent":["export * from './components';\n","'use client';\r\n\r\nimport { Portal } from '@ark-ui/react';\r\nimport Link from 'next/link';\r\nimport type { ComponentProps, ComponentType, ReactNode } from 'react';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useAccountQuery } from '../../hooks/useAccountQuery/useAccountQuery';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useSignOutMutation } from '../../hooks/useSignOutMutation/useSignOutMutation';\r\nimport { useWalletQuery } from '../../hooks/useWalletQuery/useWalletQuery';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { Logout01Icon } from '../../icons/Logout01Icon';\r\nimport { User01Icon } from '../../icons/User01Icon';\r\nimport { Avatar, Button, Drawer, Popover } from '../../ui';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\n\r\ninterface AccountLink {\r\n icon: ComponentType<ComponentProps<'svg'>>;\r\n href: string;\r\n label: string;\r\n}\r\n\r\nexport interface AccountProps {\r\n links?: AccountLink[];\r\n children?: ReactNode;\r\n}\r\n\r\nexport function Account(props: AccountProps) {\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n profile: ctx.profile,\r\n mobileProfile: ctx.mobileProfile,\r\n })),\r\n );\r\n\r\n return (\r\n <>\r\n <Drawer.Root\r\n open={globalStore.profile.open}\r\n onOpenChange={(details) => {\r\n globalStore.profile.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n >\r\n <Drawer.Trigger asChild className=\"lg:hidden\">\r\n {props.children ?? (\r\n <button type=\"button\">\r\n <Avatar.Root>\r\n <Avatar.Fallback>\r\n <User01Icon />\r\n </Avatar.Fallback>\r\n </Avatar.Root>\r\n </button>\r\n )}\r\n </Drawer.Trigger>\r\n <Portal>\r\n <Drawer.Backdrop />\r\n <Drawer.Positioner>\r\n <Drawer.Content className=\"bg-gray-50 flex w-[316px] flex-col px-xl py-6\">\r\n <Profile />\r\n <Wallet />\r\n <Links links={props.links ?? []} />\r\n <div className=\"grow\" />\r\n <TradeMark />\r\n </Drawer.Content>\r\n </Drawer.Positioner>\r\n </Portal>\r\n </Drawer.Root>\r\n\r\n <Popover.Root\r\n open={globalStore.mobileProfile.open}\r\n onOpenChange={(details) => {\r\n globalStore.mobileProfile.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n positioning={{\r\n placement: 'bottom',\r\n }}\r\n >\r\n <Popover.Trigger className=\"hidden lg:flex\" asChild>\r\n {props.children ?? (\r\n <button type=\"button\">\r\n <Avatar.Root>\r\n <Avatar.Fallback>\r\n <User01Icon />\r\n </Avatar.Fallback>\r\n </Avatar.Root>\r\n </button>\r\n )}\r\n </Popover.Trigger>\r\n <Portal>\r\n <Popover.Positioner>\r\n <Popover.Content className=\"border-gray-200 z-popover w-[316px] rounded-xl border bg-white p-xl ui-open:animate-fade-in ui-closed:animate-fade-out\">\r\n <Profile />\r\n <Wallet />\r\n <Links links={props.links ?? []} />\r\n <TradeMark />\r\n </Popover.Content>\r\n </Popover.Positioner>\r\n </Portal>\r\n </Popover.Root>\r\n </>\r\n );\r\n}\r\n\r\nfunction TradeMark() {\r\n return (\r\n <div className=\"text-gray-400 mt-xl text-center text-2xs\">\r\n © 2025 HappyBingo All rights reserved\r\n </div>\r\n );\r\n}\r\n\r\nfunction Profile() {\r\n const accountQuery = useAccountQuery();\r\n\r\n return (\r\n <div className=\"flex items-center gap-3\">\r\n <Avatar.Root>\r\n <Avatar.Fallback>\r\n <User01Icon />\r\n </Avatar.Fallback>\r\n </Avatar.Root>\r\n <div>\r\n <p className=\"text-sm font-semibold\">{accountQuery.data?.name}</p>\r\n <p className=\"text-gray-400 text-xs\">\r\n {accountQuery.data?.nickName ??\r\n accountQuery.data?.emailAddress ??\r\n accountQuery.data?.realName}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\ninterface LinksProps {\r\n links: AccountLink[];\r\n}\r\n\r\nfunction Links(props: LinksProps) {\r\n const signOutMutation = useSignOutMutation();\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n profile: ctx.profile,\r\n mobileProfile: ctx.mobileProfile,\r\n })),\r\n );\r\n\r\n return (\r\n <nav className=\"mt-xl space-y-xl\">\r\n <ul>\r\n {props.links.map((link, index) => (\r\n <li\r\n key={link.href + index}\r\n className=\"border-gray-200 block border-x border-b bg-white first:rounded-t-xl first:border-t last:rounded-b-xl\"\r\n >\r\n <Link\r\n href={link.href}\r\n onClick={() => {\r\n globalStore.profile.setOpen(false);\r\n globalStore.mobileProfile.setOpen(false);\r\n }}\r\n className=\"flex w-full items-center gap-lg px-xl py-xl text-left text-sm font-semibold\"\r\n >\r\n <link.icon className=\"size-5\" />\r\n <span className=\"grow\">{link.label}</span>\r\n <ChevronRightIcon className=\"text-gray-400 size-5\" />\r\n </Link>\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n <ul>\r\n <li className=\"border-gray-200 block rounded-xl border bg-white\">\r\n <button\r\n type=\"button\"\r\n className=\"flex w-full items-center gap-lg px-xl py-xl text-left text-sm font-semibold\"\r\n disabled={signOutMutation.isPending}\r\n onClick={() => {\r\n signOutMutation.mutate();\r\n globalStore.profile.setOpen(false);\r\n globalStore.mobileProfile.setOpen(false);\r\n }}\r\n >\r\n <Logout01Icon className=\"size-5\" />\r\n <span className=\"grow\">Log Out</span>\r\n <ChevronRightIcon className=\"text-gray-400 size-5\" />\r\n </button>\r\n </li>\r\n </ul>\r\n </nav>\r\n );\r\n}\r\n\r\nfunction Wallet() {\r\n const localeInfo = useLocaleInfo();\r\n const walletQuery = useWalletQuery({\r\n refetchInterval: 1000,\r\n });\r\n\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n profile: ctx.profile,\r\n mobileProfile: ctx.mobileProfile,\r\n depositWithdrawal: ctx.depositWithdrawal,\r\n })),\r\n );\r\n\r\n return (\r\n <div className=\"border-gray-200 mt-3 rounded-lg border bg-white p-xl\">\r\n <div className=\"border-gray-200 bg-gray-50 text-gray-600 w-fit rounded-sm border px-1.5 py-0.5 text-xs font-medium\">\r\n Available Balance\r\n </div>\r\n <div className=\"mt-2 text-3xl font-semibold\">\r\n {formatNumber(walletQuery.data?.balance, {\r\n currency: localeInfo?.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </div>\r\n <div className=\"mt-3 flex gap-lg\">\r\n <Button\r\n size=\"xs\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => {\r\n globalStore.depositWithdrawal.setOpen(true);\r\n globalStore.depositWithdrawal.setTab('WITHDRAWAL');\r\n globalStore.profile.setOpen(false);\r\n globalStore.mobileProfile.setOpen(false);\r\n }}\r\n >\r\n Withdraw\r\n </Button>\r\n <Button\r\n size=\"xs\"\r\n onClick={() => {\r\n globalStore.depositWithdrawal.setOpen(true);\r\n globalStore.depositWithdrawal.setTab('DEPOSIT');\r\n globalStore.profile.setOpen(false);\r\n globalStore.mobileProfile.setOpen(false);\r\n }}\r\n >\r\n Deposit\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { getMemberAccount, type MemberAccount } from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Query } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getAccountQueryKey } from './getAccountQueryKey';\r\n\r\nexport const useAccountQuery: Query<MemberAccount> = (config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getAccountQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getMemberAccount({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { GameProvider } from '@opexa/portal-sdk-core';\r\nimport { z } from 'zod';\r\n\r\nexport const SITE_ID = z\r\n .string()\r\n .min(\r\n 1,\r\n 'Environment variable \"NEXT_PUBLIC_SITE_ID\" must be 1 or more characters',\r\n )\r\n .max(\r\n 32,\r\n 'Environment variable \"NEXT_PUBLIC_SITE_ID\" must not be more than 32 characters',\r\n )\r\n .trim()\r\n .parse(process.env.NEXT_PUBLIC_SITE_ID);\r\n\r\nexport const PLATFORM_ID = z\r\n .string()\r\n .min(\r\n 1,\r\n 'Environment variable \"NEXT_PUBLIC_PLATFORM_ID\" must be 1 or more characters',\r\n )\r\n .max(\r\n 32,\r\n 'Environment variable \"NEXT_PUBLIC_PLATFORM_ID\" must not be more than 32 characters',\r\n )\r\n .trim()\r\n .parse(process.env.NEXT_PUBLIC_PLATFORM_ID);\r\n\r\nexport const PLATFORM_CODE = z\r\n .string()\r\n .min(\r\n 4,\r\n 'Environment variable \"NEXT_PUBLIC_PLATFORM_CODE\" must be at least 4 characters',\r\n )\r\n .max(\r\n 8,\r\n 'Environment variable \"NEXT_PUBLIC_PLATFORM_CODE\" must not be more than 8 characters',\r\n )\r\n .trim()\r\n .parse(process.env.NEXT_PUBLIC_PLATFORM_CODE);\r\n\r\nexport const ENVIRONMENT = z\r\n .enum(['production', 'development'])\r\n .catch('development')\r\n .parse(process.env.NEXT_PUBLIC_ENVIRONMENT);\r\n\r\nexport const BYPASS_RECAPTCHA = z\r\n .any()\r\n .transform(Boolean)\r\n .catch(false)\r\n .parse(process.env.NEXT_PUBLIC_BYPASS_RECAPTCHA);\r\n\r\nexport const ACCESS_TOKEN_COOKIE_NAME: string = 'WebPortalAuthAccessToken';\r\nexport const REFRESH_TOKEN_COOKIE_NAME: string = 'WebPortalAuthRefreshToken';\r\n\r\nexport const LEGACY_GAME_PROVIDERS: GameProvider[] = [\r\n 'JILI',\r\n 'PGSOFT',\r\n 'FACHAI',\r\n 'BTI',\r\n 'DG',\r\n 'PLAYTECH',\r\n 'E2E',\r\n 'ONEAPI_EVOLUTION',\r\n 'CQ9',\r\n 'JDB',\r\n 'HABANERO',\r\n 'SPINIX',\r\n 'JOKER',\r\n 'HACKSAW',\r\n 'EVOLUTIONNETENT',\r\n 'JDBGTF',\r\n 'JDBSPRIBE',\r\n 'MICROGAMING',\r\n 'RELAXGAMING',\r\n 'EVOPLAY',\r\n 'BOOONGO',\r\n 'BGAMING',\r\n 'KINGMAKER',\r\n 'KINGMIDAS',\r\n 'YELLOWBAT',\r\n 'ETENGJUE',\r\n 'SABA',\r\n 'PRAGMATICPLAY',\r\n 'SPRIBE',\r\n 'EZUGI',\r\n 'ALIZE',\r\n];\r\n\r\nexport const RECAPTCHA_HEADER_KEY: string = 'Google-Recaptcha-Response';\r\n","import type { ApiResponse, Session } from '../../types';\r\n\r\nexport async function getSession(): Promise<Session> {\r\n const res = await fetch('/api/sessions', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n });\r\n\r\n const json = (await res.json()) as ApiResponse<Session>;\r\n const data: Session = json.ok ? json.data : { status: 'unauthenticated' };\r\n\r\n return data;\r\n}\r\n","import { QueryClient, isServer } from '@tanstack/react-query';\r\nimport { cache } from 'react';\r\n\r\nfunction createQueryClient() {\r\n return new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n staleTime: 1000 * 60 * 10, // 10mins\r\n gcTime: 1000 * 60 * 60 * 12, // 12hr\r\n refetchOnMount: true,\r\n refetchOnReconnect: true,\r\n refetchOnWindowFocus: true,\r\n networkMode: 'always',\r\n },\r\n },\r\n });\r\n}\r\n\r\nlet BROWSER_QUERY_CLIENT: QueryClient | undefined = undefined;\r\n\r\nexport const getQueryClient = cache(() => {\r\n if (isServer) {\r\n return createQueryClient();\r\n }\r\n\r\n if (!BROWSER_QUERY_CLIENT) {\r\n BROWSER_QUERY_CLIENT = createQueryClient();\r\n }\r\n\r\n return BROWSER_QUERY_CLIENT;\r\n});\r\n","import type { QueryKey } from '@tanstack/react-query';\n\nexport const getSessionQueryKey = (): QueryKey => ['queries/session'];\n","import { useQuery } from '@tanstack/react-query';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Query, Session } from '../../types';\r\nimport { getSessionQueryKey } from './getSessionQueryKey';\r\n\r\nexport const useSessionQuery: Query<Session> = (config) => {\r\n return useQuery({\r\n staleTime: 0,\r\n gcTime: 0,\r\n ...config,\r\n queryKey: getSessionQueryKey(),\r\n queryFn: async () => {\r\n return await getSession();\r\n },\r\n });\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\n\nexport const getAccountQueryKey = (): QueryKey => ['queries/account'];\n","import type { Game, GameSession } from '@opexa/portal-sdk-core';\r\nimport { create } from 'zustand';\r\n\r\ninterface Popup {\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n}\r\n\r\ntype GameLaunchDetails =\r\n | { status: 'WAITING'; game?: null; session?: null }\r\n | { status: 'LOADING'; game: Game; session?: GameSession | null }\r\n | { status: 'PLAYING'; game: Game; session: GameSession }\r\n | { status: 'FAILED'; game: Game; session?: null };\r\n\r\ninterface GameLaunch {\r\n details: GameLaunchDetails;\r\n setDetails: (details: GameLaunchDetails) => void;\r\n}\r\n\r\ntype DepositWithdrawalTab = 'DEPOSIT' | 'WITHDRAWAL';\r\n\r\ninterface DepositWithdrawalPopup extends Popup {\r\n tab: DepositWithdrawalTab;\r\n setTab: (tab: DepositWithdrawalTab) => void;\r\n}\r\n\r\ninterface GlobalStore {\r\n signUp: Popup;\r\n signIn: Popup;\r\n disclaimer: Popup;\r\n depositWithdrawal: DepositWithdrawalPopup;\r\n gameLaunch: GameLaunch;\r\n profile: Popup;\r\n mobileProfile: Popup;\r\n}\r\n\r\nexport const useGlobalStore = create<GlobalStore>((set, get) => ({\r\n signIn: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ signIn: { ...get().signIn, open } });\r\n },\r\n },\r\n signUp: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ signUp: { ...get().signUp, open } });\r\n },\r\n },\r\n disclaimer: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ disclaimer: { ...get().disclaimer, open } });\r\n },\r\n },\r\n depositWithdrawal: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ depositWithdrawal: { ...get().depositWithdrawal, open } });\r\n },\r\n tab: 'DEPOSIT',\r\n setTab(tab: DepositWithdrawalTab) {\r\n set({ depositWithdrawal: { ...get().depositWithdrawal, tab } });\r\n },\r\n },\r\n gameLaunch: {\r\n details: { status: 'WAITING' },\r\n setDetails(details: GameLaunchDetails) {\r\n set({ gameLaunch: { ...get().gameLaunch, details } });\r\n },\r\n },\r\n profile: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ profile: { ...get().profile, open } });\r\n },\r\n },\r\n mobileProfile: {\r\n open: false,\r\n setOpen(open: boolean) {\r\n set({ mobileProfile: { ...get().mobileProfile, open } });\r\n },\r\n },\r\n}));\r\n","import {\r\n cache,\r\n type ComponentProps,\r\n type ComponentPropsWithRef,\r\n type ComponentType,\r\n} from 'react';\r\n\r\nexport interface CountryInfo {\r\n /**\r\n * @description The country code\r\n * @example 'PHL'\r\n */\r\n code: 'IDN' | 'IND' | 'MYS' | 'PHL' | 'VNM';\r\n /**\r\n * @description The country name\r\n * @example 'Philippines'\r\n */\r\n name: string;\r\n /**\r\n * @description The country flag\r\n * @usage\r\n * ```tsx\r\n * const localeInfo = getLocaleInfo('Asia/Manila');\r\n * <localeInfo.country.flag />\r\n * ```\r\n */\r\n flag: ComponentType<ComponentProps<'svg'>>;\r\n}\r\n\r\nexport interface CurrencyInfo {\r\n /**\r\n * @description The currency code\r\n * @example 'PHP'\r\n */\r\n code: 'IDR' | 'INR' | 'MYR' | 'PHP' | 'USD' | 'VND';\r\n /**\r\n * @description The currency name\r\n * @example 'Philippine Peso'\r\n */\r\n name: string;\r\n /**\r\n * @description The currency symbol\r\n * @example '₱'\r\n */\r\n symbol: string;\r\n /**\r\n * Used in api\r\n * @example 'VIRTUAL'\r\n */\r\n externalCode:\r\n | 'IDR'\r\n | 'INR'\r\n | 'MYR'\r\n | 'PHP'\r\n | 'USD'\r\n | 'VIRTUAL'\r\n | (string & {});\r\n}\r\n\r\nexport interface MobileNumberInfo {\r\n /**\r\n * @description The mobile number area code\r\n * @example '+63'\r\n */\r\n areaCode: string;\r\n /**\r\n * @description The mobile number digits count\r\n * @example 10\r\n */\r\n numOfDigits: number;\r\n /**\r\n * @description pattern to validate mobile number\r\n * @usage\r\n * ```ts\r\n * const localeInfo = getLocaleInfo('Asia/Manila');\r\n * const isValid = localeInfo.mobileNumber.pattern.test('9190000000');\r\n * ```\r\n */\r\n pattern: RegExp;\r\n /**\r\n * @description The mobile number example\r\n * @example '9190000000'\r\n */\r\n example: string;\r\n}\r\n\r\nexport type Timezone =\r\n | 'Asia/Manila'\r\n | 'Asia/Kolkata'\r\n | 'Asia/Jakarta'\r\n | 'Asia/Makassar'\r\n | 'Asia/Jayapura'\r\n | 'Asia/Kuala_Lumpur'\r\n | 'Asia/Ho_Chi_Minh'\r\n | (string & {});\r\n\r\nexport interface LocaleInfo {\r\n locale: string;\r\n timezone: Timezone;\r\n country: CountryInfo;\r\n currency: CurrencyInfo;\r\n mobileNumber: MobileNumberInfo;\r\n}\r\n\r\nexport const getLocaleInfo = cache((timezone: Timezone): LocaleInfo => {\r\n switch (timezone.toLowerCase()) {\r\n case 'asia/jakarta':\r\n return {\r\n locale: 'id-ID',\r\n timezone: 'Asia/Jakarta',\r\n country: {\r\n name: 'Indonesia',\r\n code: 'IDN',\r\n flag: IndonesianFlag,\r\n },\r\n currency: {\r\n code: 'IDR',\r\n name: 'Indonesian Rupiah',\r\n symbol: 'Rp',\r\n externalCode: 'IDR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+62',\r\n numOfDigits: 10,\r\n example: '81' + ''.padStart(8, '0'),\r\n pattern: /^(\\+?62|0)?8\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/jayapura':\r\n return {\r\n locale: 'id-ID',\r\n timezone: 'Asia/Jayapura',\r\n country: {\r\n code: 'IDN',\r\n name: 'Indonesia',\r\n flag: IndonesianFlag,\r\n },\r\n currency: {\r\n code: 'IDR',\r\n name: 'Indonesian Rupiah',\r\n symbol: 'Rp',\r\n externalCode: 'IDR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+62',\r\n numOfDigits: 10,\r\n example: '81' + ''.padStart(8, '0'),\r\n pattern: /^(\\+?62|0)?8\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/makassar':\r\n return {\r\n locale: 'id-ID',\r\n timezone: 'Asia/Makassar',\r\n country: {\r\n code: 'IDN',\r\n name: 'Indonesia',\r\n flag: IndonesianFlag,\r\n },\r\n currency: {\r\n code: 'IDR',\r\n name: 'Indonesian Rupiah',\r\n symbol: 'Rp',\r\n externalCode: 'IDR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+62',\r\n numOfDigits: 10,\r\n example: '81' + ''.padStart(8, '0'),\r\n pattern: /^(\\+?62|0)?8\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/kuala_lumpur':\r\n return {\r\n locale: 'ms-MY',\r\n timezone: 'Asia/Kuala_Lumpur',\r\n country: {\r\n name: 'Malaysia',\r\n code: 'MYS',\r\n flag: MalaysianFlag,\r\n },\r\n currency: {\r\n code: 'MYR',\r\n name: 'Malaysian Ringgit',\r\n symbol: 'RM',\r\n externalCode: 'MYR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+60',\r\n numOfDigits: 9,\r\n example: '12' + ''.padStart(7, '0'),\r\n pattern: /^(\\+?60|0)?1[0-9]{1}\\d{7}$/,\r\n },\r\n };\r\n\r\n case 'asia/kolkata':\r\n return {\r\n locale: 'en-IN',\r\n timezone: 'Asia/Kolkata',\r\n country: {\r\n code: 'IND',\r\n name: 'India',\r\n flag: IndianFlag,\r\n },\r\n currency: {\r\n code: 'INR',\r\n name: 'Indian Rupee',\r\n symbol: '₹',\r\n externalCode: 'INR',\r\n },\r\n mobileNumber: {\r\n areaCode: '+91',\r\n numOfDigits: 10,\r\n example: '919' + ''.padStart(7, '0'),\r\n pattern: /^(\\+?91|0)?[789]\\d{9}$/,\r\n },\r\n };\r\n\r\n case 'asia/ho_chi_minh':\r\n return {\r\n locale: 'vi-VN',\r\n timezone: 'Asia/Ho_Chi_Minh',\r\n country: {\r\n code: 'VNM',\r\n name: 'Vietnam',\r\n flag: VietnameseFlag,\r\n },\r\n currency: {\r\n code: 'VND',\r\n name: 'Vietnamese Dong',\r\n symbol: '₫',\r\n externalCode: 'VIRTUAL',\r\n },\r\n mobileNumber: {\r\n areaCode: '+84',\r\n numOfDigits: 9,\r\n example: '849' + ''.padStart(7, '0'),\r\n pattern:\r\n /^(\\+?84|0)?(3[2-9]|5[6|8|9]|7[0|6-9]|8[1-6|8|9]|9[0-9])\\d{7}$/,\r\n },\r\n };\r\n\r\n default:\r\n return {\r\n locale: 'en-PH',\r\n timezone: 'Asia/Manila',\r\n country: {\r\n code: 'PHL',\r\n name: 'Philippines',\r\n flag: PhilippineFlag,\r\n },\r\n currency: {\r\n code: 'PHP',\r\n name: 'Philippine Peso',\r\n symbol: '₱',\r\n externalCode: 'PHP',\r\n },\r\n mobileNumber: {\r\n areaCode: '+63',\r\n numOfDigits: 10,\r\n example: '919' + ''.padStart(7, '0'),\r\n pattern: /^(\\+?63|0)?9\\d{9}$/,\r\n },\r\n };\r\n }\r\n});\r\n\r\nconst PhilippineFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27540)\">\r\n <path\r\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path\r\n d=\"M12.0004 0V12L3.51514 20.4853C5.68671 22.6568 8.68671 24 12.0004 24C18.6278 24 24.0004 18.6274 24.0004 12C24.0004 5.37262 12.0004 0 12.0004 0Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M12.0004 0C8.68671 0 5.68671 1.34316 3.51514 3.51469C6.45936 6.45891 7.50453 7.50412 12.0004 12H24.0004C24.0004 5.37262 18.6278 0 12.0004 0Z\"\r\n fill=\"#0052B4\"\r\n />\r\n <path\r\n d=\"M8.21723 11.9998L6.75173 11.3104L7.53215 9.89111L5.94074 10.1956L5.73909 8.58789L4.63059 9.77027L3.52213 8.58789L3.32043 10.1956L1.72907 9.89106L2.50949 11.3104L1.04395 11.9998L2.50949 12.6891L1.72907 14.1085L3.32057 13.8041L3.52209 15.4117L4.63059 14.2293L5.73909 15.4117L5.94074 13.8041L7.53205 14.1085L6.75168 12.6892L8.21723 11.9998Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M3.20082 4.69519L3.68851 5.37689L4.48749 5.12382L3.98977 5.79825L4.47746 6.47996L3.68218 6.21507L3.18451 6.88946L3.19074 6.05133L2.39551 5.78639L3.19463 5.53332L3.20082 4.69519Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M3.20082 17.1095L3.68851 17.7912L4.48749 17.5381L3.98977 18.2126L4.47746 18.8943L3.68218 18.6294L3.18451 19.3038L3.19074 18.4656L2.39551 18.2007L3.19463 17.9476L3.20082 17.1095Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M10.1563 10.9032L9.66866 11.5849L8.86963 11.3317L9.36735 12.0062L8.87966 12.688L9.67494 12.423L10.1727 13.0974L10.1664 12.2593L10.9616 11.9944L10.1625 11.7413L10.1563 10.9032Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27540\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst MalaysianFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27547)\">\r\n <path\r\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path\r\n d=\"M11.4783 12.0002H24C24 10.9171 23.8556 9.86791 23.5866 8.86975H11.4783V12.0002Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M11.4783 5.73873H22.2387C21.5041 4.54004 20.565 3.48053 19.4698 2.60828H11.4783V5.73873Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M12.0001 24.0002C14.8243 24.0002 17.4201 23.024 19.47 21.3915H4.53027C6.58016 23.024 9.17596 24.0002 12.0001 24.0002Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M1.76146 18.2601H22.2389C22.8286 17.2978 23.2859 16.2459 23.5868 15.1296H0.413574C0.714371 16.2459 1.17173 17.2978 1.76146 18.2601Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M12 12C12 5.37262 12 4.59131 12 0C5.37262 0 0 5.37262 0 12H12Z\"\r\n fill=\"#0052B4\"\r\n />\r\n <path\r\n d=\"M7.98001 10.2709C6.34117 10.2709 5.01263 8.94229 5.01263 7.30349C5.01263 5.6647 6.34121 4.33612 7.98001 4.33612C8.491 4.33612 8.97179 4.46535 9.39156 4.69279C8.73306 4.04887 7.8325 3.65137 6.8387 3.65137C4.82171 3.65137 3.18652 5.28651 3.18652 7.30354C3.18652 9.32057 4.82171 10.9557 6.8387 10.9557C7.8325 10.9557 8.73306 10.5582 9.39156 9.91429C8.97179 10.1416 8.49104 10.2709 7.98001 10.2709Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n <path\r\n d=\"M8.81671 5.21729L9.34354 6.31894L10.5333 6.04407L10.0005 7.14277L10.9573 7.90153L9.76602 8.17008L9.76935 9.39122L8.81671 8.62725L7.86402 9.39122L7.86731 8.17008L6.67603 7.90153L7.63284 7.14277L7.10001 6.04407L8.28984 6.31894L8.81671 5.21729Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27547\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst IndianFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27553)\">\r\n <path\r\n d=\"M1.19023 6.78213C0.427387 8.35976 -0.000488281 10.1296 -0.000488281 11.9995C-0.000488281 13.8694 0.427387 15.6393 1.19023 17.2169L11.9995 18.2604L22.8088 17.2169C23.5716 15.6393 23.9995 13.8694 23.9995 11.9995C23.9995 10.1296 23.5716 8.35976 22.8088 6.78213L11.9995 5.73865L1.19023 6.78213Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path\r\n d=\"M1.19092 17.2183C3.13182 21.2322 7.24225 24.0009 11.9998 24.0009C16.7573 24.0009 20.8677 21.2322 22.8086 17.2183H1.19092Z\"\r\n fill=\"#6DA544\"\r\n />\r\n <path\r\n d=\"M1.19092 6.78238H22.8086C20.8677 2.76843 16.7573 -0.000244141 11.9998 -0.000244141C7.24229 -0.000244141 3.13182 2.76843 1.19092 6.78238Z\"\r\n fill=\"#FF9811\"\r\n />\r\n <path\r\n d=\"M12.0001 16.1742C14.3052 16.1742 16.174 14.3055 16.174 12.0003C16.174 9.69513 14.3052 7.82642 12.0001 7.82642C9.69489 7.82642 7.82617 9.69513 7.82617 12.0003C7.82617 14.3055 9.69489 16.1742 12.0001 16.1742Z\"\r\n fill=\"#FF9811\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27553\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst IndonesianFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_4392_27559)\">\r\n <path\r\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n fill=\"#F0F0F0\"\r\n />\r\n <path\r\n d=\"M0 12C0 5.37262 5.37262 0 12 0C18.6274 0 24 5.37262 24 12\"\r\n fill=\"#A2001D\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4392_27559\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n\r\nconst VietnameseFlag = (props: ComponentPropsWithRef<'svg'>) => {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <g clipPath=\"url(#clip0_10544_106556)\">\r\n <path\r\n d=\"M10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20Z\"\r\n fill=\"#D80027\"\r\n />\r\n <path\r\n d=\"M10.0003 5.2168L11.0795 8.53825H14.5719L11.7464 10.591L12.8257 13.9125L10.0003 11.8597L7.17488 13.9125L8.2541 10.591L5.42871 8.53825H8.92105L10.0003 5.2168Z\"\r\n fill=\"#FFDA44\"\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_10544_106556\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n );\r\n};\r\n","import { getPlatform, type Platform } from '@opexa/portal-sdk-core';\nimport { useQuery } from '@tanstack/react-query';\nimport { PLATFORM_CODE } from '../../constants';\nimport type { Query } from '../../types';\nimport { getPlatformQueryKey } from './getPlatformQueryKey';\n\nexport const usePlatformQuery: Query<Platform> = (config) => {\n return useQuery({\n ...config,\n queryKey: getPlatformQueryKey(),\n queryFn: async () => {\n return await getPlatform({\n headers: {\n 'Platform-Code': PLATFORM_CODE,\n },\n });\n },\n });\n};\n","import type { QueryKey } from '@tanstack/react-query';\n\nexport const getPlatformQueryKey = (): QueryKey => ['queries/platform'];\n","import { getLocaleInfo } from '../utils/getLocaleInfo';\nimport { usePlatformQuery } from './usePlatformQuery/usePlatformQuery';\n\nexport const useLocaleInfo = () => {\n const query = usePlatformQuery();\n return getLocaleInfo(query.data?.timezone ?? 'Asia/Manila');\n};\n","import { useMutation } from '@tanstack/react-query';\nimport { signOut } from '../../services/client/signOut';\nimport type { Mutation } from '../../types/index';\nimport { getQueryClient } from '../../utils/getQueryClient';\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\nimport { getSignOutMutationKey } from './getSignOutMutationKey';\n\nexport const useSignOutMutation: Mutation = (config) => {\n const queryClient = getQueryClient();\n\n return useMutation({\n ...config,\n mutationKey: getSignOutMutationKey(),\n mutationFn: async () => {\n await signOut();\n await queryClient.invalidateQueries({ queryKey: getSessionQueryKey() });\n queryClient.clear();\n },\n });\n};\n","export async function signOut() {\n const res = await fetch('/api/sessions', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n });\n\n if (!res.ok) {\n const error = new Error();\n error.name = 'SignOutError';\n error.message = 'Failed to sign out';\n throw error;\n }\n}\n","import type { MutationKey } from '@tanstack/react-query';\n\nexport const getSignOutMutationKey = (): MutationKey => ['mutations/signOut'];\n","import { getWallet, type Wallet } from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Query } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getWalletQueryKey } from './getWalletQueryKey';\r\n\r\nexport const useWalletQuery: Query<Wallet | null> = (config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n return useQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getWalletQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getWallet({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\n\nexport const getWalletQueryKey = (): QueryKey => ['queries/wallet'];\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function ChevronRightIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M9 18L15 12L9 6\" />\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function Logout01Icon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M16 17L21 12M21 12L16 7M21 12H9M9 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21H9\" />\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function User01Icon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M20 21C20 19.6044 20 18.9067 19.8278 18.3389C19.44 17.0605 18.4395 16.06 17.1611 15.6722C16.5933 15.5 15.8956 15.5 14.5 15.5H9.5C8.10444 15.5 7.40665 15.5 6.83886 15.6722C5.56045 16.06 4.56004 17.0605 4.17224 18.3389C4 18.9067 4 19.6044 4 21M16.5 7.5C16.5 9.98528 14.4853 12 12 12C9.51472 12 7.5 9.98528 7.5 7.5C7.5 5.01472 9.51472 3 12 3C14.4853 3 16.5 5.01472 16.5 7.5Z\" />\r\n </svg>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { ark, Dialog } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { alertDialogRecipe } from './alertDialog.recipe';\r\n\r\nconst { withContext, withRootProvider } =\r\n createRecipeContext(alertDialogRecipe);\r\n\r\nexport const Root = withRootProvider(Dialog.Root);\r\nexport const Backdrop = withContext(Dialog.Backdrop, 'backdrop');\r\nexport const CloseTrigger = withContext(Dialog.CloseTrigger, 'closeTrigger');\r\nexport const Content = withContext(Dialog.Content, 'content');\r\nexport const Description = withContext(Dialog.Description, 'description');\r\nexport const Positioner = withContext(Dialog.Positioner, 'positioner');\r\nexport const Title = withContext(Dialog.Title, 'title');\r\nexport const Trigger = withContext(Dialog.Trigger, 'trigger');\r\nexport const Header = withContext(ark.section, 'header');\r\nexport const Body = withContext(ark.section, 'body');\r\nexport const Footer = withContext(ark.section, 'footer');\r\nexport const Context = Dialog.Context;\r\n","import type { Assign } from '@ark-ui/react';\r\nimport * as React from 'react';\r\nimport type { VariantProps } from 'tailwind-variants';\r\nimport { createSplitProps } from './createSplitProps';\r\n\r\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\r\ntype GenericProps = Record<string, any>;\r\ntype GenericRecipeEntries = Record<string, (props: GenericProps) => string>;\r\ntype GenericRecipe = {\r\n (props: GenericProps): GenericRecipeEntries;\r\n variantKeys: (string | number | never)[];\r\n};\r\n\r\nexport function createRecipeContext<\r\n Recipe extends GenericRecipe = GenericRecipe,\r\n RecipeProps extends GenericProps = VariantProps<Recipe>,\r\n RecipeEntries extends GenericRecipeEntries = ReturnType<Recipe>,\r\n RecipeEntry = keyof RecipeEntries,\r\n>(recipe: Recipe) {\r\n const RecipeContext = React.createContext<GenericRecipeEntries | null>(null);\r\n\r\n function useContext() {\r\n const context = React.useContext(RecipeContext);\r\n return context;\r\n }\r\n\r\n function withRootProvider<Props extends GenericProps>(Component: React.ComponentType<Props>) {\r\n const StyledComponent = (props: Props) => {\r\n const [recipeProps, localProps] = createSplitProps(recipe.variantKeys)(props);\r\n const context = recipe(recipeProps);\r\n\r\n return (\r\n <RecipeContext.Provider value={context}>\r\n <Component {...(localProps as Props)} />\r\n </RecipeContext.Provider>\r\n );\r\n };\r\n\r\n return StyledComponent as React.ComponentType<Assign<Props, RecipeProps>>;\r\n }\r\n\r\n function withProvider<Props extends GenericProps>(\r\n Component: React.ComponentType<Props>,\r\n slot: RecipeEntry,\r\n ) {\r\n const StyledComponent = (props: GenericProps) => {\r\n const [recipeProps, localProps] = createSplitProps(recipe.variantKeys)(props);\r\n const context = recipe(recipeProps);\r\n const slotName = slot as string;\r\n const getStyle = context[slotName];\r\n const userDefinedClassName =\r\n 'className' in localProps && typeof localProps.className === 'string'\r\n ? localProps.className\r\n : undefined;\r\n const className = !getStyle\r\n ? userDefinedClassName\r\n : getStyle({\r\n ...recipeProps,\r\n className: userDefinedClassName,\r\n });\r\n\r\n return (\r\n <RecipeContext.Provider value={context}>\r\n <Component {...(localProps as Props)} className={className} />\r\n </RecipeContext.Provider>\r\n );\r\n };\r\n\r\n StyledComponent.displayName = Component.displayName || Component.name;\r\n\r\n return StyledComponent as React.ComponentType<Assign<Props, RecipeProps>>;\r\n }\r\n\r\n function withContext<Props extends GenericProps>(\r\n Component: React.ComponentType<Props>,\r\n slot: RecipeEntry,\r\n ) {\r\n const StyledComponent = (props: GenericProps) => {\r\n const context = useContext();\r\n const [recipeProps, localProps] = createSplitProps(recipe.variantKeys)(props);\r\n const slotName = slot as string;\r\n const getStyle = !context ? recipe(recipeProps)[slotName] : context[slotName];\r\n const userDefinedClassName =\r\n 'className' in localProps && typeof localProps.className === 'string'\r\n ? localProps.className\r\n : undefined;\r\n const className = !getStyle\r\n ? userDefinedClassName\r\n : getStyle({\r\n ...recipeProps,\r\n className: userDefinedClassName,\r\n });\r\n\r\n return <Component {...(localProps as Props)} className={className} />;\r\n };\r\n\r\n StyledComponent.displayName = Component.displayName || Component.name;\r\n\r\n return StyledComponent as React.ComponentType<Assign<Props, RecipeProps>>;\r\n }\r\n\r\n return {\r\n withRootProvider,\r\n withProvider,\r\n withContext,\r\n };\r\n}\r\n","/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\r\ntype GenericProps = Record<string, any>;\r\n\r\nfunction splitProps<T extends GenericProps>(props: T, keys: (keyof T)[]) {\r\n const rest: GenericProps = {};\r\n const result: GenericProps = {};\r\n\r\n const keySet = new Set(keys);\r\n\r\n for (const key in props) {\r\n if (keySet.has(key)) {\r\n result[key] = props[key];\r\n } else {\r\n rest[key] = props[key];\r\n }\r\n }\r\n\r\n return [result, rest];\r\n}\r\n\r\nexport function createSplitProps<T extends GenericProps>(keys: (keyof T)[]) {\r\n return function split<Props extends T>(props: Props) {\r\n return splitProps(props, keys) as [T, Omit<Props, keyof T>];\r\n };\r\n}\r\n","import { dialogAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nconst anatomy = dialogAnatomy.extendWith('header', 'body', 'footer');\r\n\r\nexport const alertDialogRecipe = tv({\r\n slots: anatomyToRecipeSlots(anatomy, {\r\n backdrop:\r\n 'z-backdrop ui-open:animate-backdrop-in ui-closed:animate-backdrop-out fixed inset-0 bg-black/50',\r\n positioner: 'z-dialog fixed inset-0 flex items-center justify-center',\r\n content:\r\n 'ui-open:animate-alertdialog-in ui-closed:animate-alertdialog-out relative w-[400px] max-w-[90vw] rounded-xl bg-white p-3xl shadow-xl',\r\n header: 'flex items-start justify-between',\r\n body: 'mt-xl',\r\n title: 'text-lg font-semibold',\r\n description: 'text-gray-600 mt-xs text-sm',\r\n closeTrigger: 'text-gray-400 icon:size-6',\r\n footer: 'mt-4xl flex items-center justify-center gap-lg',\r\n }),\r\n});\r\n","import type { AnatomyInstance } from '@ark-ui/anatomy';\r\n\r\n/**\r\n * Converts a component anatomy into a valid tailwind variant slot recipe\r\n * and optionally, accepts initial base styles.\r\n */\r\nexport function anatomyToRecipeSlots<T extends string>(\r\n anatomy: AnatomyInstance<T>,\r\n baseStyles: Partial<Record<T, string | string[]>> = {},\r\n) {\r\n const styles = anatomy.keys().reduce<Partial<Record<T, string | string[]>>>((acc, key) => {\r\n acc[key] = baseStyles[key] ?? '';\r\n return acc;\r\n }, {});\r\n\r\n return styles as Record<T, string | string[]>;\r\n}\r\n","'use client';\r\n\r\nimport { Avatar } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { avatarRecipe } from './avatar.recipe';\r\n\r\nconst { withContext, withProvider } = createRecipeContext(avatarRecipe);\r\n\r\nexport const Root = withProvider(Avatar.Root, 'root');\r\nexport const Image = withContext(Avatar.Image, 'image');\r\nexport const Fallback = withContext(Avatar.Fallback, 'fallback');\r\nexport const Context = Avatar.Context;\r\n","import { avatarAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const avatarRecipe = tv({\r\n slots: anatomyToRecipeSlots(avatarAnatomy, {\r\n root: 'border-gray-200 bg-gray-50 flex items-center justify-center overflow-hidden rounded-full border',\r\n fallback:\r\n 'text-gray-600 icon:text-gray-500 flex size-full items-center justify-center',\r\n image: 'size-full object-cover',\r\n }),\r\n variants: {\r\n size: {\r\n md: {\r\n root: 'size-10',\r\n fallback: 'icon:size-6 text-sm font-semibold',\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { ark } from '@ark-ui/react';\r\nimport type { ComponentPropsWithRef } from 'react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { badgeAnatomy } from './badge.anatomy';\r\nimport { badgeRecipe } from './badge.recipe';\r\n\r\nconst { withProvider, withContext } = createRecipeContext(badgeRecipe);\r\nconst parts = badgeAnatomy.build();\r\n\r\ninterface BadgeProps extends ComponentPropsWithRef<'div'> {\r\n asChild?: boolean;\r\n}\r\n\r\nexport const Root = withProvider(\r\n (props: BadgeProps) => <ark.div {...parts.root.attrs} {...props} />,\r\n 'root',\r\n);\r\n\r\ninterface BadgeLabelProps extends ComponentPropsWithRef<'span'> {\r\n asChild?: boolean;\r\n}\r\n\r\nexport const Label = withContext(\r\n (props: BadgeLabelProps) => <ark.span {...parts.label.attrs} {...props} />,\r\n 'label',\r\n);\r\n\r\ninterface BadgeIndicatorProps extends ComponentPropsWithRef<'svg'> {\r\n asChild?: boolean;\r\n}\r\n\r\nexport const Indicator = withContext(\r\n (props: BadgeIndicatorProps) => (\r\n <ark.svg {...parts.indicator.attrs} asChild {...props} />\r\n ),\r\n 'indicator',\r\n);\r\n","import { createAnatomy } from '@ark-ui/anatomy';\r\n\r\nexport const badgeAnatomy = createAnatomy('badge').parts(\r\n 'root',\r\n 'label',\r\n 'indicator',\r\n);\r\n","import { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\nimport { badgeAnatomy } from './badge.anatomy';\r\n\r\nexport const badgeRecipe = tv({\r\n slots: anatomyToRecipeSlots(badgeAnatomy, {\r\n root: 'inline-flex items-center',\r\n label: '',\r\n indicator: '',\r\n }),\r\n variants: {\r\n size: {\r\n md: {\r\n root: 'gap-1 rounded-full px-2 py-0.5',\r\n label: 'text-xs font-medium leading-tight',\r\n },\r\n },\r\n variant: {\r\n subtle: {},\r\n },\r\n colorScheme: {\r\n gray: {},\r\n danger: {},\r\n success: {},\r\n warning: {},\r\n info: {},\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n variant: 'subtle',\r\n colorScheme: 'gray',\r\n className: {\r\n root: 'bg-gray-50 border-gray-200 border',\r\n label: 'text-gray-700',\r\n },\r\n },\r\n {\r\n variant: 'subtle',\r\n colorScheme: 'success',\r\n className: {\r\n root: 'bg-green-50 border-green-200 border',\r\n label: 'text-green-700',\r\n },\r\n },\r\n {\r\n variant: 'subtle',\r\n colorScheme: 'warning',\r\n className: {\r\n root: 'bg-amber-50 border-amber-200 border',\r\n label: 'text-amber-700',\r\n },\r\n },\r\n {\r\n variant: 'subtle',\r\n colorScheme: 'danger',\r\n className: {\r\n root: 'bg-red-50 border-red-200 border',\r\n label: 'text-red-700',\r\n },\r\n },\r\n ],\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'subtle',\r\n colorScheme: 'success',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { ark } from '@ark-ui/react';\r\nimport type { ComponentPropsWithRef } from 'react';\r\nimport type { Merge } from 'type-fest';\r\nimport { createSplitProps } from '../../utils/createSplitProps';\r\nimport { dataAttr } from '../../utils/dataAttr';\r\nimport { buttonRecipe, type ButtonRecipeProps } from './button.recipe';\r\n\r\nexport interface ButtonProps\r\n extends Merge<ComponentPropsWithRef<'button'>, ButtonRecipeProps> {\r\n asChild?: boolean;\r\n}\r\n\r\nexport function Button(props: ButtonProps) {\r\n const [recipeProps, localProps] = createSplitProps<ButtonRecipeProps>(\r\n buttonRecipe.variantKeys,\r\n )(props);\r\n\r\n return (\r\n <ark.button\r\n type=\"button\"\r\n {...localProps}\r\n className={buttonRecipe({\r\n ...recipeProps,\r\n className: localProps.className,\r\n })}\r\n data-disabled={dataAttr(localProps.disabled)}\r\n />\r\n );\r\n}\r\n","export function dataAttr(guard: boolean | undefined | null) {\n return guard ? '' : undefined;\n}\n","import { tv, type VariantProps } from 'tailwind-variants';\r\n\r\nexport const buttonRecipe = tv({\r\n base: 'shadow-xs inline-flex items-center justify-center rounded-md font-semibold disabled:shadow-none',\r\n variants: {\r\n size: {\r\n xs: 'h-9 gap-sm px-2.5 text-sm',\r\n sm: 'h-10 gap-md px-3',\r\n md: 'h-11 gap-lg px-3.5',\r\n },\r\n variant: {\r\n solid: '',\r\n outline: '',\r\n },\r\n colorScheme: {\r\n primary: '',\r\n danger: '',\r\n gray: '',\r\n },\r\n fullWidth: {\r\n true: 'flex w-full',\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n variant: 'solid',\r\n colorScheme: 'primary',\r\n class: 'bg-gray-900 text-white disabled:opacity-50',\r\n },\r\n {\r\n variant: 'solid',\r\n colorScheme: 'danger',\r\n class: 'bg-red-500 text-white disabled:opacity-50',\r\n },\r\n {\r\n variant: 'outline',\r\n colorScheme: 'gray',\r\n class: 'border-gray-200 border bg-transparent disabled:opacity-50',\r\n },\r\n ],\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'solid',\r\n colorScheme: 'primary',\r\n fullWidth: true,\r\n },\r\n});\r\n\r\nexport type ButtonRecipeProps = VariantProps<typeof buttonRecipe>;\r\n","'use client';\r\n\r\nimport { Checkbox } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { checkboxRecipe } from './checkbox.recipe';\r\n\r\nexport const { withContext, withProvider } =\r\n createRecipeContext(checkboxRecipe);\r\n\r\nexport const Root = withProvider(Checkbox.Root, 'root');\r\nexport const Control = withContext(Checkbox.Control, 'control');\r\nexport const Group = withContext(Checkbox.Group, 'group');\r\nexport const Indicator = withContext(Checkbox.Indicator, 'indicator');\r\nexport const Label = withContext(Checkbox.Label, 'label');\r\nexport const HiddenInput = Checkbox.HiddenInput;\r\nexport const Context = Checkbox.Context;\r\n","import { checkboxAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const checkboxRecipe = tv({\r\n slots: anatomyToRecipeSlots(checkboxAnatomy, {\r\n root: 'flex items-start gap-2',\r\n control: 'flex shrink-0 items-center justify-center rounded-md',\r\n label: 'text-checkbox-label-fg',\r\n }),\r\n variants: {\r\n size: {\r\n md: {\r\n control: 'size-4 rounded-[0.25rem]',\r\n indicator: 'size-3',\r\n },\r\n },\r\n variant: {\r\n outline: {},\r\n },\r\n colorScheme: {\r\n gray: {},\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n variant: 'outline',\r\n colorScheme: 'gray',\r\n className: {\r\n control: [\r\n 'border',\r\n 'shadow-xs',\r\n 'bg-transparent',\r\n 'border-gray-200',\r\n 'ui-invalid:border-red-400',\r\n 'ui-checked:bg-gray-900',\r\n 'ui-checked:border-gray-900',\r\n 'ui-readonly:opacity-50',\r\n 'ui-readonly:shadow-none',\r\n 'ui-disabled:opacity-50',\r\n 'ui-disabled:shadow-none',\r\n ],\r\n indicator: 'text-white',\r\n label: 'text-gray-600 text-xs leading-tight',\r\n },\r\n },\r\n ],\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'outline',\r\n colorScheme: 'gray',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { Combobox } from '@ark-ui/react';\r\n\r\nexport const Root = Combobox.Root;\r\n","'use client';\r\n\r\nimport { DatePicker } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { datePickerRecipe } from './datePicker.recipe';\r\n\r\nconst { withProvider, withContext } = createRecipeContext(datePickerRecipe);\r\n\r\nexport const Root = withProvider(DatePicker.Root, 'root');\r\nexport const ClearTrigger = withContext(\r\n DatePicker.ClearTrigger,\r\n 'clearTrigger',\r\n);\r\nexport const Content = withContext(DatePicker.Content, 'content');\r\nexport const Control = withContext(DatePicker.Control, 'control');\r\nexport const Input = withContext(DatePicker.Input, 'input');\r\nexport const Label = withContext(DatePicker.Label, 'label');\r\nexport const MonthSelect = withContext(DatePicker.MonthSelect, 'monthSelect');\r\nexport const NextTrigger = withContext(DatePicker.NextTrigger, 'nextTrigger');\r\nexport const Positioner = withContext(DatePicker.Positioner, 'positioner');\r\nexport const PresetTrigger = withContext(\r\n DatePicker.PresetTrigger,\r\n 'presetTrigger',\r\n);\r\nexport const PrevTrigger = withContext(DatePicker.PrevTrigger, 'prevTrigger');\r\nexport const RangeText = withContext(DatePicker.RangeText, 'rangeText');\r\nexport const Table = withContext(DatePicker.Table, 'table');\r\nexport const TableBody = withContext(DatePicker.TableBody, 'tableBody');\r\nexport const TableCell = withContext(DatePicker.TableCell, 'tableCell');\r\nexport const TableCellTrigger = withContext(\r\n DatePicker.TableCellTrigger,\r\n 'tableCellTrigger',\r\n);\r\nexport const TableHead = withContext(DatePicker.TableHead, 'tableHead');\r\nexport const TableHeader = withContext(DatePicker.TableHeader, 'tableHeader');\r\nexport const TableRow = withContext(DatePicker.TableRow, 'tableRow');\r\nexport const Trigger = withContext(DatePicker.Trigger, 'trigger');\r\nexport const View = withContext(DatePicker.View, 'view');\r\nexport const ViewControl = withContext(DatePicker.ViewControl, 'viewControl');\r\nexport const ViewTrigger = withContext(DatePicker.ViewTrigger, 'viewTrigger');\r\nexport const YearSelect = withContext(DatePicker.YearSelect, 'yearSelect');\r\nexport const Context = DatePicker.Context;\r\n","import { datePickerAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const datePickerRecipe = tv({\r\n slots: anatomyToRecipeSlots(datePickerAnatomy, {\r\n content:\r\n 'border-gray-200 text-gray-600 ui-placement-top:ui-open:animate-popover-in-top ui-placement-top-end:ui-open:animate-popover-in-top ui-placement-top-start:ui-open:animate-popover-in-top ui-placement-top:ui-closed:animate-popover-out-top ui-placement-top-end:ui-closed:animate-popover-out-top ui-placement-top-start:ui-closed:animate-popover-out-top ui-placement-bottom:ui-open:animate-popover-in-bottom ui-placement-bottom-start:ui-open:animate-popover-in-bottom ui-placement-bottom-end:ui-open:animate-popover-in-bottom ui-placement-bottom:ui-closed:animate-popover-out-bottom ui-placement-bottom-start:ui-closed:animate-popover-out-bottom ui-placement-bottom-end:ui-closed:animate-popover-out-bottom ui-placement-left:ui-open:animate-popover-in-left ui-placement-left-start:ui-open:animate-popover-in-left ui-placement-left-end:ui-open:animate-popover-in-left ui-placement-left:ui-closed:animate-popover-out-left ui-placement-left-start:ui-closed:animate-popover-out-left ui-placement-left-end:ui-closed:animate-popover-out-left ui-placement-right:ui-open:animate-popover-in-right ui-placement-right-start:ui-open:animate-popover-in-right ui-placement-right-end:ui-open:animate-popover-in-right ui-placement-right:ui-closed:animate-popover-out-right ui-placement-right-start:ui-closed:animate-popover-out-right ui-placement-right-end:ui-closed:animate-popover-out-right z-dropdown rounded-xl border bg-white p-4',\r\n table: 'mt-3 border-separate border-spacing-0.5',\r\n tableCellTrigger:\r\n 'text-gray-600 ui-disabled:text-gray-400 ui-selected:ui-not-disabled:bg-gray-900 ui-today:after:bg-gray-600 ui-in-range:ui-not-disabled:bg-gray-100 ui-in-range:ui-not-disabled:text-gray-900 ui-range-start:ui-not-disabled:bg-gray-900 ui-range-end:ui-not-disabled:bg-gray-900 relative flex size-10 cursor-pointer items-center justify-center text-sm ui-disabled:cursor-not-allowed ui-selected:ui-not-disabled:rounded-full ui-selected:ui-not-disabled:font-medium ui-selected:ui-not-disabled:text-white ui-today:after:absolute ui-today:after:bottom-0 ui-today:after:left-1/2 ui-today:after:mb-1 ui-today:after:size-1 ui-today:after:-translate-x-1/2 ui-today:after:rounded-full ui-in-range:ui-not-disabled:rounded-full ui-in-range:ui-not-disabled:font-medium ui-range-start:ui-not-disabled:rounded-full ui-range-start:ui-not-disabled:font-medium ui-range-start:ui-not-disabled:text-white ui-range-end:ui-not-disabled:rounded-full ui-range-end:ui-not-disabled:font-medium ui-range-end:ui-not-disabled:text-white',\r\n tableHeader: 'py-3 text-sm font-medium',\r\n viewControl: 'flex items-center justify-between',\r\n prevTrigger:\r\n 'bg-gray-50 icon:size-5 flex size-9 items-center justify-center rounded-full',\r\n nextTrigger:\r\n 'bg-gray-50 icon:size-5 flex size-9 items-center justify-center rounded-full',\r\n rangeText: 'text-gray-600 text-base font-semibold',\r\n }),\r\n});\r\n","'use client';\r\n\r\nimport { ark, Dialog } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { dialogRecipe } from './dialog.recipe';\r\n\r\nconst { withContext, withRootProvider } = createRecipeContext(dialogRecipe);\r\n\r\nexport const Root = withRootProvider(Dialog.Root);\r\nexport const Backdrop = withContext(Dialog.Backdrop, 'backdrop');\r\nexport const CloseTrigger = withContext(Dialog.CloseTrigger, 'closeTrigger');\r\nexport const Content = withContext(Dialog.Content, 'content');\r\nexport const Description = withContext(Dialog.Description, 'description');\r\nexport const Positioner = withContext(Dialog.Positioner, 'positioner');\r\nexport const Title = withContext(Dialog.Title, 'title');\r\nexport const Trigger = withContext(Dialog.Trigger, 'trigger');\r\nexport const Header = withContext(ark.section, 'header');\r\nexport const Body = withContext(ark.section, 'body');\r\nexport const Footer = withContext(ark.section, 'footer');\r\nexport const Context = Dialog.Context;\r\n","import { dialogAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nconst anatomy = dialogAnatomy.extendWith('header', 'body', 'footer');\r\n\r\nexport const dialogRecipe = tv({\r\n slots: anatomyToRecipeSlots(anatomy, {\r\n backdrop:\r\n 'z-backdrop ui-open:animate-backdrop-in ui-closed:animate-backdrop-out fixed inset-0 bg-black/60',\r\n positioner: 'z-dialog fixed inset-0 overflow-y-auto lg:py-16',\r\n content: 'ui-open:animate-dialog-in ui-closed:animate-dialog-out relative',\r\n closeTrigger:\r\n 'icon:size-6 text-gray-400 absolute right-2.5 top-2.5 flex size-11 items-center justify-center',\r\n }),\r\n});\r\n","'use client';\r\n\r\nimport { ark, Dialog } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { drawerRecipe } from './drawer.recipe';\r\n\r\nconst { withContext, withRootProvider } = createRecipeContext(drawerRecipe);\r\n\r\nexport const Root = withRootProvider(Dialog.Root);\r\nexport const Backdrop = withContext(Dialog.Backdrop, 'backdrop');\r\nexport const CloseTrigger = withContext(Dialog.CloseTrigger, 'closeTrigger');\r\nexport const Content = withContext(Dialog.Content, 'content');\r\nexport const Description = withContext(Dialog.Description, 'description');\r\nexport const Positioner = withContext(Dialog.Positioner, 'positioner');\r\nexport const Title = withContext(Dialog.Title, 'title');\r\nexport const Trigger = withContext(Dialog.Trigger, 'trigger');\r\nexport const Header = withContext(ark.section, 'header');\r\nexport const Body = withContext(ark.section, 'body');\r\nexport const Footer = withContext(ark.section, 'footer');\r\nexport const Context = Dialog.Context;\r\n","import { dialogAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nconst anatomy = dialogAnatomy.extendWith('header', 'body', 'footer');\r\n\r\nexport const drawerRecipe = tv({\r\n slots: anatomyToRecipeSlots(anatomy, {\r\n backdrop:\r\n 'z-backdrop ui-open:animate-backdrop-in ui-closed:animate-backdrop-out fixed inset-0 bg-black/60',\r\n positioner:\r\n 'z-drawer fixed inset-0 overflow-hidden overflow-y-auto lg:py-16',\r\n content: 'absolute top-0 h-full w-full bg-white lg:w-[400px]',\r\n }),\r\n variants: {\r\n placement: {\r\n left: {\r\n content:\r\n 'ui-open:animate-drawer-in-left ui-closed:animate-drawer-out-left left-0',\r\n },\r\n right: {\r\n content:\r\n 'ui-open:animate-drawer-in-right ui-closed:animate-drawer-out-right right-0',\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n placement: 'right',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { Field } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { fieldRecipe } from './field.recipe';\r\n\r\nconst { withContext, withProvider } = createRecipeContext(fieldRecipe);\r\n\r\nexport const Root = withProvider(Field.Root, 'root');\r\nexport const Label = withContext(Field.Label, 'label');\r\nexport const Input = withContext(Field.Input, 'input');\r\nexport const HelperText = withContext(Field.HelperText, 'helperText');\r\nexport const ErrorText = withContext(Field.ErrorText, 'errorText');\r\nexport const Select = withContext(Field.Select, 'select');\r\nexport const Textarea = withContext(Field.Textarea, 'textarea');\r\nexport const Context = Field.Context;\r\n","import { fieldAnatomy } from '@ark-ui/react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nconst outlineGrayInputStyle = twMerge(\r\n 'border',\r\n 'shadow-xs',\r\n 'bg-input-outline-gray-bg',\r\n 'text-input-outline-gray-fg',\r\n 'border-gray-200',\r\n 'placeholder:text-gray-400',\r\n 'ui-invalid:border-red-400',\r\n 'disabled:opacity-50',\r\n 'disabled:shadow-none',\r\n 'read-only:opacity-50',\r\n 'read-only:shadow-none',\r\n);\r\n\r\nexport const fieldRecipe = tv({\r\n slots: anatomyToRecipeSlots(fieldAnatomy, {\r\n input:\r\n 'outer-spin:appearance-none inner-spin:appearance-none block w-full rounded-md outline-none',\r\n select: 'block w-full rounded-md outline-none',\r\n textarea: 'block w-full rounded-md outline-none',\r\n label: 'text-gray-600 mb-sm inline-block text-sm font-medium',\r\n errorText: 'text-red-600 mt-sm inline-block text-sm',\r\n helperText: 'text-gray-500',\r\n requiredIndicator: 'text-red-500 text-sm',\r\n }),\r\n variants: {\r\n size: {\r\n md: {\r\n input: 'h-11 px-3.5',\r\n select: 'h-11 px-3.5',\r\n textarea: 'px-3.5 py-2.5',\r\n },\r\n },\r\n variant: {\r\n outline: {},\r\n },\r\n colorScheme: {\r\n gray: {},\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n variant: 'outline',\r\n colorScheme: 'gray',\r\n className: {\r\n input: outlineGrayInputStyle,\r\n select: outlineGrayInputStyle,\r\n textarea: outlineGrayInputStyle,\r\n },\r\n },\r\n ],\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'outline',\r\n colorScheme: 'gray',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { ark } from '@ark-ui/react';\r\nimport type { ComponentPropsWithRef } from 'react';\r\nimport type { Merge } from 'type-fest';\r\nimport { createSplitProps } from '../../utils/createSplitProps';\r\nimport { dataAttr } from '../../utils/dataAttr';\r\nimport {\r\n iconButtonRecipe,\r\n type IconButtonRecipeProps,\r\n} from './iconButton.recipe';\r\n\r\nexport interface IconButtonProps\r\n extends Merge<ComponentPropsWithRef<'button'>, IconButtonRecipeProps> {\r\n asChild?: boolean;\r\n}\r\n\r\nexport function IconButton(props: IconButtonProps) {\r\n const [recipeProps, localProps] = createSplitProps<IconButtonRecipeProps>(\r\n iconButtonRecipe.variantKeys,\r\n )(props);\r\n\r\n return (\r\n <ark.button\r\n type=\"button\"\r\n {...localProps}\r\n className={iconButtonRecipe({\r\n ...recipeProps,\r\n className: localProps.className,\r\n })}\r\n data-disabled={dataAttr(localProps.disabled)}\r\n />\r\n );\r\n}\r\n","import { tv, type VariantProps } from 'tailwind-variants';\r\nimport { buttonRecipe } from '../Button/button.recipe';\r\n\r\nexport const iconButtonRecipe = tv({\r\n extend: buttonRecipe,\r\n variants: {\r\n size: {\r\n sm: 'h-10 min-w-10 px-0',\r\n md: 'h-11 min-w-11 px-0',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'solid',\r\n colorScheme: 'primary',\r\n fullWidth: false,\r\n },\r\n});\r\n\r\nexport type IconButtonRecipeProps = VariantProps<typeof iconButtonRecipe>;\r\n","'use client';\r\n\r\nimport { Menu } from '@ark-ui/react';\r\n\r\nexport const Root = Menu.Root;\r\n","'use client';\r\n\r\nimport { NumberInput } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { numberInputRecipe } from './numberInput.recipe';\r\n\r\nconst { withContext, withProvider } = createRecipeContext(numberInputRecipe);\r\n\r\nexport const Root = withProvider(NumberInput.Root, 'root');\r\nexport const Control = withContext(NumberInput.Control, 'control');\r\nexport const DecrementTrigger = withContext(\r\n NumberInput.DecrementTrigger,\r\n 'decrementTrigger',\r\n);\r\nexport const IncrementTrigger = withContext(\r\n NumberInput.IncrementTrigger,\r\n 'incrementTrigger',\r\n);\r\nexport const Input = withContext(NumberInput.Input, 'input');\r\nexport const Label = withContext(NumberInput.Label, 'label');\r\nexport const Scrubber = withContext(NumberInput.Scrubber, 'scrubber');\r\nexport const ValueText = withContext(NumberInput.ValueText, 'valueText');\r\nexport const Context = NumberInput.Context;\r\n","import { numberInputAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const numberInputRecipe = tv({\r\n slots: anatomyToRecipeSlots(numberInputAnatomy, {\r\n control:\r\n 'border-gray-200 ui-invalid:border-red-400 grid grid-cols-[1fr_32px] grid-rows-[1fr_1fr] overflow-hidden rounded-lg border bg-transparent ui-disabled:opacity-50 ui-readonly:cursor-default ui-readonly:opacity-50',\r\n input:\r\n 'placeholder:text-gray-400 row-[span_2/span_2] w-full border-0 bg-transparent outline-none disabled:cursor-not-allowed',\r\n label: 'text-gray-600 mb-sm inline-block text-sm font-medium',\r\n decrementTrigger:\r\n 'border-gray-200 icon:text-gray-600 inline-flex cursor-pointer items-center justify-center border-l border-t ui-disabled:cursor-not-allowed',\r\n incrementTrigger:\r\n 'border-gray-200 icon:text-gray-600 inline-flex cursor-pointer items-center justify-center border-l ui-disabled:cursor-not-allowed',\r\n }),\r\n variants: {\r\n size: {\r\n md: {\r\n control: 'h-11 pl-3.5 text-base',\r\n incrementTrigger: 'icon:size-5',\r\n decrementTrigger: 'icon:size-5',\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { PinInput } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { pinInputRecipe } from './pinInput.recipe';\r\n\r\nconst { withContext, withProvider } = createRecipeContext(pinInputRecipe);\r\n\r\nexport const Root = withProvider(PinInput.Root, 'root');\r\nexport const Label = withContext(PinInput.Label, 'label');\r\nexport const Control = withContext(PinInput.Control, 'control');\r\nexport const Input = withContext(PinInput.Input, 'input');\r\nexport const HiddenInput = PinInput.HiddenInput;\r\nexport const Context = PinInput.Context;\r\n","import { pinInputAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const pinInputRecipe = tv({\r\n slots: anatomyToRecipeSlots(pinInputAnatomy, {\r\n control: 'grid grid-cols-6',\r\n input: 'aspect-[10/11] w-full rounded-md outline-none',\r\n label: 'text-input-label-fg mb-sm inline-block text-sm font-medium',\r\n }),\r\n variants: {\r\n size: {\r\n md: {\r\n input: 'text-center text-2xl font-medium',\r\n control: 'gap-2',\r\n },\r\n },\r\n variant: {\r\n outline: {},\r\n },\r\n colorScheme: {\r\n gray: {},\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n variant: 'outline',\r\n colorScheme: 'gray',\r\n className: {\r\n input:\r\n 'shadow-xs border-gray-200 placeholder:text-gray-400 ui-invalid:border-red-400 border read-only:opacity-50 read-only:shadow-none disabled:opacity-50 disabled:shadow-none',\r\n },\r\n },\r\n ],\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'outline',\r\n colorScheme: 'gray',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { Popover } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { popoverRecipe } from './popover.recipe';\r\n\r\nconst { withRootProvider, withContext } = createRecipeContext(popoverRecipe);\r\n\r\nexport const Root = withRootProvider(Popover.Root);\r\nexport const Anchor = withContext(Popover.Anchor, 'anchor');\r\nexport const Arrow = withContext(Popover.Arrow, 'arrow');\r\nexport const ArrowTip = withContext(Popover.ArrowTip, 'arrowTip');\r\nexport const CloseTrigger = withContext(Popover.CloseTrigger, 'closeTrigger');\r\nexport const Content = withContext(Popover.Content, 'content');\r\nexport const Description = withContext(Popover.Description, 'description');\r\nexport const Indicator = withContext(Popover.Indicator, 'indicator');\r\nexport const Positioner = withContext(Popover.Positioner, 'positioner');\r\nexport const Title = withContext(Popover.Title, 'title');\r\nexport const Trigger = withContext(Popover.Trigger, 'trigger');\r\nexport const Context = Popover.Context;\r\n","import { popoverAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const popoverRecipe = tv({\r\n slots: anatomyToRecipeSlots(popoverAnatomy, {\r\n content:\r\n 'ui-placement-top:ui-open:animate-popover-in-top ui-placement-top-end:ui-open:animate-popover-in-top ui-placement-top-start:ui-open:animate-popover-in-top ui-placement-top:ui-closed:animate-popover-out-top ui-placement-top-end:ui-closed:animate-popover-out-top ui-placement-top-start:ui-closed:animate-popover-out-top ui-placement-bottom:ui-open:animate-popover-in-bottom ui-placement-bottom-start:ui-open:animate-popover-in-bottom ui-placement-bottom-end:ui-open:animate-popover-in-bottom ui-placement-bottom:ui-closed:animate-popover-out-bottom ui-placement-bottom-start:ui-closed:animate-popover-out-bottom ui-placement-bottom-end:ui-closed:animate-popover-out-bottom ui-placement-left:ui-open:animate-popover-in-left ui-placement-left-start:ui-open:animate-popover-in-left ui-placement-left-end:ui-open:animate-popover-in-left ui-placement-left:ui-closed:animate-popover-out-left ui-placement-left-start:ui-closed:animate-popover-out-left ui-placement-left-end:ui-closed:animate-popover-out-left ui-placement-right:ui-open:animate-popover-in-right ui-placement-right-start:ui-open:animate-popover-in-right ui-placement-right-end:ui-open:animate-popover-in-right ui-placement-right:ui-closed:animate-popover-out-right ui-placement-right-start:ui-closed:animate-popover-out-right ui-placement-right-end:ui-closed:animate-popover-out-right',\r\n positioner: 'z-popover',\r\n }),\r\n});\r\n","'use client';\r\n\r\nimport { Progress } from '@ark-ui/react';\r\n\r\nexport const Root = Progress.Root;\r\n","'use client';\r\n\r\nimport { SegmentGroup } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { segmentGroupRecipe } from './segmentGroup.recipe';\r\n\r\nconst { withProvider, withContext } = createRecipeContext(segmentGroupRecipe);\r\n\r\nexport const Root = withProvider(SegmentGroup.Root, 'root');\r\nexport const Indicator = withContext(SegmentGroup.Indicator, 'indicator');\r\nexport const Item = withContext(SegmentGroup.Item, 'item');\r\nexport const ItemControl = withContext(SegmentGroup.ItemControl, 'itemControl');\r\nexport const ItemText = withContext(SegmentGroup.ItemText, 'itemText');\r\nexport const Label = withContext(SegmentGroup.Label, 'label');\r\nexport const Context = SegmentGroup.Context;\r\nexport const ItemContext = SegmentGroup.ItemContext;\r\nexport const ItemHiddenInput = SegmentGroup.ItemHiddenInput;\r\n","import { segmentGroupAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const segmentGroupRecipe = tv({\r\n slots: anatomyToRecipeSlots(segmentGroupAnatomy),\r\n variants: {\r\n size: {\r\n md: {},\r\n },\r\n variant: {\r\n unstyled: {},\r\n default: {\r\n root: 'bg-gray-50 border-gray-200 relative flex w-fit gap-md rounded-md border p-1',\r\n item: 'z-1 text-gray-600 ui-checked:text-gray-800 relative cursor-pointer transition-all duration-200',\r\n indicator:\r\n 'left-[var(--left)] top-[var(--top)] h-[var(--height)] w-[var(--width)] bg-white',\r\n },\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n size: 'md',\r\n variant: 'default',\r\n className: {\r\n item: 'px-lg py-md text-sm font-semibold',\r\n indicator: 'rounded-sm shadow-sm',\r\n },\r\n },\r\n ],\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'default',\r\n },\r\n});\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n'use client';\r\n\r\nimport { Select } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { selectRecipe } from './select.recipe';\r\n\r\nconst { withProvider, withContext } = createRecipeContext(selectRecipe);\r\n\r\nexport const Root = withProvider(Select.Root<any>, 'root');\r\nexport const ClearTrigger = withContext(Select.ClearTrigger, 'clearTrigger');\r\nexport const Content = withContext(Select.Content, 'content');\r\nexport const Control = withContext(Select.Control, 'control');\r\nexport const Indicator = withContext(Select.Indicator, 'indicator');\r\nexport const Item = withContext(Select.Item, 'item');\r\nexport const ItemGroup = withContext(Select.ItemGroup, 'itemGroup');\r\nexport const ItemGroupLabel = withContext(\r\n Select.ItemGroupLabel,\r\n 'itemGroupLabel',\r\n);\r\nexport const ItemIndicator = withContext(Select.ItemIndicator, 'itemIndicator');\r\nexport const ItemText = withContext(Select.ItemText, 'itemText');\r\nexport const Label = withContext(Select.Label, 'label');\r\nexport const List = withContext(Select.List, 'list');\r\nexport const Positioner = withContext(Select.Positioner, 'positioner');\r\nexport const Trigger = withContext(Select.Trigger, 'trigger');\r\nexport const ValueText = withContext(Select.ValueText, 'valueText');\r\nexport const Context = Select.Context;\r\nexport const HiddenSelect = Select.HiddenSelect;\r\nexport const ItemContext = Select.ItemContext;\r\n","import { selectAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const selectRecipe = tv({\r\n slots: anatomyToRecipeSlots(selectAnatomy, {\r\n indicator:\r\n 'text-gray-500 transition-transform duration-200 ui-open:rotate-180 ui-closed:rotate-0',\r\n positioner: 'z-dropdown',\r\n content:\r\n 'border-gray-200 ui-placement-top:ui-open:animate-popover-in-top ui-placement-top-end:ui-open:animate-popover-in-top ui-placement-top-start:ui-open:animate-popover-in-top ui-placement-top:ui-closed:animate-popover-out-top ui-placement-top-end:ui-closed:animate-popover-out-top ui-placement-top-start:ui-closed:animate-popover-out-top ui-placement-bottom:ui-open:animate-popover-in-bottom ui-placement-bottom-start:ui-open:animate-popover-in-bottom ui-placement-bottom-end:ui-open:animate-popover-in-bottom ui-placement-bottom:ui-closed:animate-popover-out-bottom ui-placement-bottom-start:ui-closed:animate-popover-out-bottom ui-placement-bottom-end:ui-closed:animate-popover-out-bottom ui-placement-left:ui-open:animate-popover-in-left ui-placement-left-start:ui-open:animate-popover-in-left ui-placement-left-end:ui-open:animate-popover-in-left ui-placement-left:ui-closed:animate-popover-out-left ui-placement-left-start:ui-closed:animate-popover-out-left ui-placement-left-end:ui-closed:animate-popover-out-left ui-placement-right:ui-open:animate-popover-in-right ui-placement-right-start:ui-open:animate-popover-in-right ui-placement-right-end:ui-open:animate-popover-in-right ui-placement-right:ui-closed:animate-popover-out-right ui-placement-right-start:ui-closed:animate-popover-out-right ui-placement-right-end:ui-closed:animate-popover-out-right z-dropdown rounded-md border bg-white p-1',\r\n item: 'ui-highlighted:bg-gray-50 flex cursor-pointer items-center gap-2 rounded-sm px-2.5 py-1',\r\n itemText: 'grow',\r\n itemIndicator: 'text-green-500 size-4',\r\n }),\r\n variants: {\r\n size: {\r\n sm: {\r\n trigger: 'h-10 gap-md px-3',\r\n indicator: 'size-5',\r\n },\r\n md: {\r\n trigger: 'h-11 gap-lg px-3.5',\r\n indicator: 'size-5',\r\n },\r\n },\r\n variant: {\r\n outline: {\r\n trigger:\r\n 'shadow-xs border-gray-200 ui-placeholder-shown:text-gray-500 flex items-center rounded-md border text-left',\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'outline',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { ark } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { tableRecipe } from './table.recipe';\r\n\r\nconst { withProvider, withContext } = createRecipeContext(tableRecipe);\r\n\r\nexport const Root = withProvider(ark.table, 'root');\r\nexport const Header = withContext(ark.thead, 'header');\r\nexport const Body = withContext(ark.tbody, 'body');\r\nexport const Footer = withContext(ark.tfoot, 'footer');\r\nexport const Row = withContext(ark.tr, 'row');\r\nexport const Heading = withContext(ark.th, 'heading');\r\nexport const Cell = withContext(ark.td, 'cell');\r\n","import { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\nimport { tableAnatomy } from './table.anatomy';\r\n\r\nexport const tableRecipe = tv({\r\n slots: anatomyToRecipeSlots(tableAnatomy, {\r\n root: 'w-full whitespace-nowrap',\r\n }),\r\n variants: {\r\n size: {\r\n md: {\r\n root: 'border-gray-200 border',\r\n heading: 'px-3xl py-lg text-left text-xs font-medium',\r\n cell: 'px-3xl py-xl text-sm',\r\n },\r\n },\r\n variant: {\r\n outline: {\r\n header: 'tr:bg-white tr:border-b tr:border-gray-200',\r\n body: 'tr:odd:bg-gray-50 tr:border-gray-200 tr:border-b tr:last:border-b-0 tr:even:bg-white',\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'outline',\r\n },\r\n});\r\n","import { createAnatomy } from '@ark-ui/anatomy';\r\n\r\nexport const tableAnatomy = createAnatomy('table').parts(\r\n 'root',\r\n 'header',\r\n 'body',\r\n 'footer',\r\n 'row',\r\n 'cell',\r\n 'heading',\r\n);\r\n","'use client';\r\n\r\nimport { Tabs } from '@ark-ui/react';\r\nimport { createRecipeContext } from '../../utils/createRecipeContext';\r\nimport { tabsRecipe } from './tabs.recipe';\r\n\r\nconst { withContext, withProvider } = createRecipeContext(tabsRecipe);\r\n\r\nexport const Root = withProvider(Tabs.Root, 'root');\r\nexport const Content = withContext(Tabs.Content, 'content');\r\nexport const Indicator = withContext(Tabs.Indicator, 'indicator');\r\nexport const List = withContext(Tabs.List, 'list');\r\nexport const Trigger = withContext(Tabs.Trigger, 'trigger');\r\nexport const Context = Tabs.Context;\r\n","import { tabsAnatomy } from '@ark-ui/react';\r\nimport { tv } from 'tailwind-variants';\r\nimport { anatomyToRecipeSlots } from '../../utils/anatomyToRecipeSlots';\r\n\r\nexport const tabsRecipe = tv({\r\n slots: anatomyToRecipeSlots(tabsAnatomy),\r\n variants: {\r\n size: {\r\n md: {},\r\n },\r\n variant: {\r\n unstyled: {},\r\n default: {\r\n list: 'border-gray-200 bg-gray-50 relative flex w-fit gap-md rounded-md border p-1',\r\n indicator: 'h-[var(--height)] w-[var(--width)] bg-white',\r\n trigger:\r\n 'z-1 text-gray-600 ui-selected:text-gray-800 relative transition-all duration-200',\r\n },\r\n },\r\n },\r\n compoundVariants: [\r\n {\r\n size: 'md',\r\n variant: 'default',\r\n className: {\r\n indicator: 'rounded-sm shadow-sm',\r\n trigger: 'px-lg py-md text-sm font-semibold',\r\n },\r\n },\r\n ],\r\n defaultVariants: {\r\n size: 'md',\r\n variant: 'default',\r\n },\r\n});\r\n","'use client';\r\n\r\nimport { Tooltip } from '@ark-ui/react';\r\n\r\nexport const Root = Tooltip.Root;\r\n","import { z } from 'zod';\n\nconst definition = z\n .union([\n z.number(),\n z.string().transform((val) => {\n const parsed = parseFloat(val);\n return isNaN(parsed) ? null : parsed;\n }),\n ])\n .nullable()\n .optional()\n .default(null)\n .catch(null);\n\nexport function parseDecimal(value: unknown): number | null;\nexport function parseDecimal(value: unknown, fallback: number): number;\nexport function parseDecimal(value: unknown, fallback: number | null = null) {\n return definition.parse(value) ?? fallback;\n}\n","import { parseDecimal } from './parseDecimal';\n\ninterface FormatNumberConfig {\n /** @default \"en-US\" */\n locale?: string;\n compact?: boolean;\n currency?: string;\n /** @default 0 */\n minDecimalPlaces?: number;\n /** @default 2 */\n maxDecimalPlaces?: number;\n}\n\nconst defaultConfig = {\n locale: 'en-US',\n compact: false,\n minDecimalPlaces: 0,\n maxDecimalPlaces: 2,\n} satisfies FormatNumberConfig;\n\n/**\n * @example\n * ```ts\n * numberFormatter.format(1234567.89) // \"1,234,567.89\"\n * numberFormatter.format(1234567.89, { locale: 'de-DE' }) // \"1.234.567,89\"\n * numberFormatter.format(1234567.89, { compact: true }) // \"1M\"\n * numberFormatter.format(1234567.89, { currency: 'USD' }) // \"$1,234,567.89\"\n * ```\n */\nexport function formatNumber(value: unknown, config?: FormatNumberConfig) {\n const {\n /**/\n locale,\n compact,\n currency,\n minDecimalPlaces,\n maxDecimalPlaces,\n } = Object.assign({}, defaultConfig, config);\n\n const formatter = new Intl.NumberFormat(locale, {\n minimumFractionDigits: minDecimalPlaces,\n maximumFractionDigits: maxDecimalPlaces,\n\n ...(typeof currency === 'string'\n ? {\n style: 'currency',\n currency,\n }\n : {}),\n\n ...(compact\n ? {\n notation: 'compact',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n }\n : {}),\n });\n\n return formatter.format(parseDecimal(value, 0));\n}\n","'use client';\r\n\r\nimport emblaCarouselAutoplay from 'embla-carousel-autoplay';\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from 'embla-carousel-react';\r\nimport type { ImageProps } from 'next/image';\r\nimport Image from 'next/image';\r\nimport Link from 'next/link';\r\nimport { Fragment, useEffect, useState } from 'react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { dataAttr } from '../../utils/dataAttr';\r\n\r\ninterface Banner {\r\n src: ImageProps['src'];\r\n redirectUrl?: string;\r\n}\r\n\r\nexport interface BannerProps {\r\n banners: Banner[];\r\n className?: string;\r\n}\r\n\r\nexport function Banner(props: BannerProps) {\r\n const [emblaRef, emblaApi] = useEmblaCarousel(\r\n {\r\n loop: true,\r\n align: 'start',\r\n },\r\n [\r\n emblaCarouselAutoplay({\r\n playOnInit: true,\r\n delay: 5000,\r\n }),\r\n ],\r\n );\r\n\r\n const [currentIndex, setCurrentIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n function handler(detail: UseEmblaCarouselType[1]) {\r\n setCurrentIndex(detail?.selectedScrollSnap() ?? 0);\r\n }\r\n\r\n emblaApi?.on('scroll', handler);\r\n emblaApi?.on('init', handler);\r\n\r\n return () => {\r\n emblaApi?.on('init', handler);\r\n emblaApi?.off('scroll', handler);\r\n };\r\n }, [emblaApi]);\r\n\r\n return (\r\n <div className={twMerge('relative', props.className)}>\r\n <div ref={emblaRef} className=\"overflow-hidden\">\r\n <div className=\"flex gap-2\">\r\n {props.banners.map((banner, index) => {\r\n const img = (\r\n <Image\r\n src={banner.src}\r\n alt=\"\"\r\n width={1200} /* ✏️ TODO: must be 400 on mobile */\r\n height={300} /* ✏️ TODO: must be 225 on mobile */\r\n className=\"block h-auto w-full rounded-xl\"\r\n priority={index === 0}\r\n />\r\n );\r\n\r\n return (\r\n <Fragment key={index}>\r\n {!banner.redirectUrl ? (\r\n <div className=\"w-full shrink-0\">{img}</div>\r\n ) : (\r\n <Link\r\n href={banner.redirectUrl}\r\n className=\"block w-full shrink-0\"\r\n >\r\n {img}\r\n </Link>\r\n )}\r\n </Fragment>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n\r\n <div className=\"absolute bottom-lg left-1/2 flex w-fit -translate-x-1/2 gap-2\">\r\n {props.banners.map((_, index) => (\r\n <button\r\n key={index}\r\n type=\"button\"\r\n className=\"border-gray-200 ui-active:bg-gray-800 bg-gray-400 size-3 shrink-0 rounded-full border transition-all duration-300 ui-active:w-9\"\r\n onClick={() => {\r\n emblaApi?.scrollTo(index);\r\n }}\r\n aria-label={`Go to slide ${index + 1}`}\r\n data-active={dataAttr(index === currentIndex)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { createListCollection, parseDate, Portal } from '@ark-ui/react';\r\nimport { tz, TZDateMini } from '@date-fns/tz';\r\nimport type {\r\n BetRecordStatus,\r\n GameProvider,\r\n GameType,\r\n} from '@opexa/portal-sdk-core';\r\nimport { endOfDay, format, startOfDay } from 'date-fns';\r\nimport { useReducer, useState } from 'react';\r\nimport { z } from 'zod';\r\nimport { useBetRecordsQuery } from '../../hooks/useBetRecordsQuery/useBetRecordsQuery';\r\nimport { useInfiniteQueryHelper } from '../../hooks/useInfiniteQueryHelper';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport { ChevronDownIcon } from '../../icons/ChevronDownIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { File02Icon } from '../../icons/File02Icon';\r\nimport { SpinnerIcon } from '../../icons/SpinnerIcon';\r\nimport type { DateRange } from '../../types';\r\nimport { DatePicker, IconButton, SegmentGroup, Select, Table } from '../../ui';\r\nimport { capitalize } from '../../utils/capitalize';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport { Empty } from '../Empty';\r\nimport type { BetRecordsProps } from './BetRecords';\r\n\r\ninterface PageState {\r\n page: number;\r\n pageSize: number;\r\n type?: GameType | null;\r\n timestamp?: Partial<DateRange> | null;\r\n provider?: GameProvider | null;\r\n status?: BetRecordStatus | null;\r\n}\r\n\r\nexport function BetRecordsContent(props: BetRecordsProps) {\r\n const [tab, setTab] = useState<z.infer<typeof TabDefinition>>('all');\r\n\r\n const [state, setState] = useReducer(\r\n (prev: PageState, next: Partial<PageState>) => ({\r\n ...prev,\r\n ...next,\r\n }),\r\n {\r\n page: 1,\r\n pageSize: 10,\r\n type: props.gameTypes[0],\r\n },\r\n );\r\n\r\n const localeInfo = useLocaleInfo();\r\n\r\n const providerCollection = createListCollection({\r\n items: props.gameProviders,\r\n itemToValue: (item) => item,\r\n itemToString: (item) =>\r\n capitalize(item, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n }),\r\n });\r\n\r\n const {\r\n page,\r\n pageSize,\r\n hasNextPage,\r\n hasPrevPage,\r\n next,\r\n prev,\r\n rows,\r\n setPageSize,\r\n totalPages,\r\n loading,\r\n firstPage,\r\n } = useInfiniteQueryHelper(useBetRecordsQuery, {\r\n filter: {\r\n ...(state.type && {\r\n game__type: {\r\n equal: state.type,\r\n },\r\n }),\r\n ...(state.provider && {\r\n game__provider: {\r\n equal: state.provider,\r\n },\r\n }),\r\n ...(state.status && {\r\n status: {\r\n equal: state.status,\r\n },\r\n }),\r\n ...(state.timestamp && {\r\n dateTimeCreated: {\r\n ...(state.timestamp.start && {\r\n greaterThanOrEqual: new TZDateMini(\r\n startOfDay(state.timestamp.start),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n ...(state.timestamp.end && {\r\n lesserThanOrEqual: new TZDateMini(\r\n endOfDay(state.timestamp.end),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n },\r\n }),\r\n },\r\n });\r\n\r\n return (\r\n <div className={props.className}>\r\n <h2 className=\"text-lg font-semibold\">Bet Records</h2>\r\n <p className=\"text-gray-600 mt-xs text-xs\">View your bet records</p>\r\n\r\n <div className=\"mt-2xl pb-2xl\">\r\n <SegmentGroup.Root\r\n value={state.type}\r\n onValueChange={(details) => {\r\n firstPage();\r\n setState({\r\n type:\r\n z\r\n .enum((props.gameTypes ?? []) as [GameType])\r\n .safeParse(details.value).data ?? null,\r\n });\r\n }}\r\n >\r\n {props.gameTypes.map((type) => (\r\n <SegmentGroup.Item key={type} value={type}>\r\n <SegmentGroup.ItemText>\r\n {capitalize(type, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </SegmentGroup.ItemText>\r\n <SegmentGroup.ItemControl />\r\n <SegmentGroup.ItemHiddenInput />\r\n </SegmentGroup.Item>\r\n ))}\r\n\r\n <SegmentGroup.Indicator />\r\n </SegmentGroup.Root>\r\n </div>\r\n\r\n <div className=\"mt-4xl\">\r\n <div className=\"flex items-center gap-lg\">\r\n <DatePicker.Root\r\n lazyMount\r\n unmountOnExit\r\n value={[state.timestamp?.start, state.timestamp?.end]\r\n .filter(Boolean)\r\n .map((d) => parseDate(d))}\r\n onValueChange={(details) => {\r\n firstPage();\r\n setState({\r\n timestamp: {\r\n start: details.value.at(0)?.toDate(DEVICE_TIMEZONE),\r\n end: details.value.at(1)?.toDate(DEVICE_TIMEZONE),\r\n },\r\n });\r\n }}\r\n onOpenChange={(details) => {\r\n if (details.open) return;\r\n if (state.timestamp) return;\r\n setTab('all');\r\n }}\r\n selectionMode=\"range\"\r\n closeOnSelect={false}\r\n positioning={{\r\n gutter: 20,\r\n placement: 'bottom',\r\n }}\r\n >\r\n <SegmentGroup.Root\r\n value={tab}\r\n onValueChange={(details) => {\r\n const value = TabDefinition.parse(details.value);\r\n\r\n if (value === 'today') {\r\n const now = new Date();\r\n\r\n setState({\r\n timestamp: {\r\n start: startOfDay(now),\r\n end: endOfDay(now),\r\n },\r\n });\r\n } else {\r\n setState({\r\n timestamp: null,\r\n });\r\n }\r\n\r\n firstPage();\r\n setTab(value);\r\n }}\r\n >\r\n <SegmentGroup.Item value=\"all\">\r\n <SegmentGroup.ItemText>All</SegmentGroup.ItemText>\r\n <SegmentGroup.ItemControl />\r\n <SegmentGroup.ItemHiddenInput />\r\n </SegmentGroup.Item>\r\n <SegmentGroup.Item value=\"today\">\r\n <SegmentGroup.ItemText>Today</SegmentGroup.ItemText>\r\n <SegmentGroup.ItemControl />\r\n <SegmentGroup.ItemHiddenInput />\r\n </SegmentGroup.Item>\r\n\r\n <DatePicker.Context>\r\n {(api) => (\r\n <SegmentGroup.Item\r\n value=\"custom\"\r\n onClick={() => api.setOpen(true)}\r\n >\r\n <DatePicker.Control>\r\n <SegmentGroup.ItemText>Custom</SegmentGroup.ItemText>\r\n <SegmentGroup.ItemControl />\r\n <SegmentGroup.ItemHiddenInput />\r\n </DatePicker.Control>\r\n </SegmentGroup.Item>\r\n )}\r\n </DatePicker.Context>\r\n\r\n <SegmentGroup.Indicator />\r\n </SegmentGroup.Root>\r\n <Portal>\r\n <DatePicker.Positioner>\r\n <DatePicker.Content>\r\n <DatePicker.View view=\"day\">\r\n <DatePicker.Context>\r\n {(api) => (\r\n <>\r\n <DatePicker.ViewControl>\r\n <DatePicker.PrevTrigger>\r\n <ChevronLeftIcon />\r\n </DatePicker.PrevTrigger>\r\n <DatePicker.ViewTrigger>\r\n <DatePicker.RangeText />\r\n </DatePicker.ViewTrigger>\r\n <DatePicker.NextTrigger>\r\n <ChevronRightIcon />\r\n </DatePicker.NextTrigger>\r\n </DatePicker.ViewControl>\r\n <DatePicker.Table>\r\n <DatePicker.TableHead>\r\n <DatePicker.TableRow>\r\n {api.weekDays.map((weekDay, id) => (\r\n <DatePicker.TableHeader key={id}>\r\n {weekDay.short.substring(0, 2)}\r\n </DatePicker.TableHeader>\r\n ))}\r\n </DatePicker.TableRow>\r\n </DatePicker.TableHead>\r\n <DatePicker.TableBody>\r\n {api.weeks.map((week, id) => (\r\n <DatePicker.TableRow key={id}>\r\n {week.map((day, id) => (\r\n <DatePicker.TableCell key={id} value={day}>\r\n <DatePicker.TableCellTrigger>\r\n {day.day}\r\n </DatePicker.TableCellTrigger>\r\n </DatePicker.TableCell>\r\n ))}\r\n </DatePicker.TableRow>\r\n ))}\r\n </DatePicker.TableBody>\r\n </DatePicker.Table>\r\n </>\r\n )}\r\n </DatePicker.Context>\r\n </DatePicker.View>\r\n </DatePicker.Content>\r\n </DatePicker.Positioner>\r\n </Portal>\r\n </DatePicker.Root>\r\n\r\n <div className=\"grow\" />\r\n\r\n <Select.Root\r\n collection={providerCollection}\r\n value={state.provider ? [state.provider] : []}\r\n onValueChange={(details) => {\r\n const value = z\r\n .enum((props.gameProviders ?? []) as [GameProvider])\r\n .safeParse(details.value.at(0)).data;\r\n\r\n firstPage();\r\n setState({\r\n provider: value ?? null,\r\n });\r\n }}\r\n lazyMount\r\n deselectable\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Game Vendor\" />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n </Select.Trigger>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n <Select.ItemGroup>\r\n {providerCollection.items.map((provider) => (\r\n <Select.Item key={provider} item={provider}>\r\n <Select.ItemText>\r\n {capitalize(provider, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Select.ItemText>\r\n <Select.ItemIndicator asChild>\r\n <CheckIcon />\r\n </Select.ItemIndicator>\r\n </Select.Item>\r\n ))}\r\n </Select.ItemGroup>\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n\r\n <Select.Root\r\n collection={statusCollection}\r\n value={state.status ? [state.status] : []}\r\n onValueChange={(details) => {\r\n const value = z\r\n .enum(BET_RECORD_STATUSES)\r\n .safeParse(details.value.at(0)).data;\r\n\r\n firstPage();\r\n setState({\r\n status: value ?? null,\r\n });\r\n }}\r\n lazyMount\r\n deselectable\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Status\" />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n </Select.Trigger>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n <Select.ItemGroup>\r\n {statusCollection.items.map((status) => (\r\n <Select.Item key={status} item={status}>\r\n <Select.ItemText>\r\n {capitalize(status, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Select.ItemText>\r\n <Select.ItemIndicator asChild>\r\n <CheckIcon />\r\n </Select.ItemIndicator>\r\n </Select.Item>\r\n ))}\r\n </Select.ItemGroup>\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n </div>\r\n\r\n {rows.length <= 0 && (\r\n <Empty\r\n icon={loading ? SpinnerIcon : File02Icon}\r\n title={loading ? 'Just a moment' : 'No data'}\r\n message={\r\n loading\r\n ? 'Fetching latest bet records...'\r\n : 'No data is currently available.'\r\n }\r\n className=\"mt-8 lg:mt-16\"\r\n />\r\n )}\r\n\r\n {rows.length >= 1 && (\r\n <div className=\"border-gray-200 mt-lg rounded-xl border\">\r\n <div className=\"border-gray-200 overflow-hidden overflow-x-auto rounded-xl border-b\">\r\n <Table.Root className=\"border-0\">\r\n <Table.Header>\r\n <Table.Row>\r\n <Table.Heading>Bet Time</Table.Heading>\r\n <Table.Heading>Settlement Time</Table.Heading>\r\n <Table.Heading>Bet Content</Table.Heading>\r\n <Table.Heading>Odds</Table.Heading>\r\n <Table.Heading>Bet Amount</Table.Heading>\r\n <Table.Heading>Valid Bet</Table.Heading>\r\n <Table.Heading>Settled Amount</Table.Heading>\r\n <Table.Heading>Jackpot Contribution</Table.Heading>\r\n <Table.Heading>Jackpot Payout</Table.Heading>\r\n <Table.Heading>Bet Status</Table.Heading>\r\n <Table.Heading>Game Name</Table.Heading>\r\n <Table.Heading>Vendor Round ID</Table.Heading>\r\n </Table.Row>\r\n </Table.Header>\r\n <Table.Body>\r\n {rows.map((data) => (\r\n <Table.Row key={data.id}>\r\n <Table.Cell>\r\n {format(data.dateTimeCreated, 'yyyy MMM dd hh:mma', {\r\n in: tz(localeInfo.timezone),\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {!!data.dateTimeSettled &&\r\n format(data.dateTimeSettled, 'yyyy MMM dd hh:mma', {\r\n in: tz(localeInfo.timezone),\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>{data?.betContent}</Table.Cell>\r\n <Table.Cell>{data.metadata?.odds}</Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.bet, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>{data.validBet}</Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.payout, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.jackpotContribution, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.jackpotPayout, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>{data.status}</Table.Cell>\r\n <Table.Cell>{data.game.name}</Table.Cell>\r\n <Table.Cell>{data.vendorRoundId}</Table.Cell>\r\n </Table.Row>\r\n ))}\r\n </Table.Body>\r\n </Table.Root>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-lg px-4 py-3\">\r\n <p>\r\n Page {page} of {totalPages}\r\n </p>\r\n <div className=\"grow\"></div>\r\n <Select.Root\r\n size=\"sm\"\r\n value={[pageSize.toString()]}\r\n onValueChange={(details) => {\r\n const n = parseInt(details.value[0]);\r\n const v = isNaN(n) ? 10 : n;\r\n\r\n setPageSize(v);\r\n }}\r\n collection={pageSizeCollection}\r\n lazyMount\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {pageSizeCollection.items.map((item) => (\r\n <Select.Item key={item} item={item}>\r\n {pageSizeCollection.stringifyItem(item)}\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Trigger>\r\n </Select.Root>\r\n <div>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n disabled={!hasPrevPage || loading}\r\n onClick={() => prev()}\r\n >\r\n <ChevronLeftIcon className=\"size-5\" />\r\n </IconButton>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n disabled={!hasNextPage || loading}\r\n onClick={() => next()}\r\n >\r\n <ChevronRightIcon className=\"size-5\" />\r\n </IconButton>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst BET_RECORD_STATUSES = [\r\n 'CANCELLED',\r\n 'SETTLED',\r\n 'STARTED',\r\n] as const satisfies BetRecordStatus[];\r\n\r\nconst pageSizeCollection = createListCollection({\r\n items: useInfiniteQueryHelper.config.pageSizes,\r\n itemToValue: (item) => item.toString(),\r\n itemToString: (item) => `${item} items per page`,\r\n});\r\n\r\nconst statusCollection = createListCollection({\r\n items: BET_RECORD_STATUSES,\r\n itemToValue: (item) => item,\r\n itemToString: (item) =>\r\n capitalize(item, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n }),\r\n});\r\n\r\nconst TabDefinition = z.enum(['all', 'today', 'custom']);\r\n\r\nconst DEVICE_TIMEZONE = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n","import {\r\n type BetRecord,\r\n type BetRecordsInput,\r\n getBetRecords,\r\n type PaginatedQueryResult,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getBetRecordsQueryKey } from './getBetRecordsQueryKey';\r\n\r\nexport const useBetRecordsQuery: InfiniteQuery<\r\n PaginatedQueryResult<BetRecord>,\r\n BetRecordsInput\r\n> = (input, config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useInfiniteQuery({\r\n enabled: sessionQuery.data?.status === 'authenticated',\r\n ...config,\r\n queryKey: getBetRecordsQueryKey(input),\r\n queryFn: async ({ pageParam, signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getBetRecords(\r\n { ...input, after: pageParam },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo?.hasNextPage) {\r\n return lastPage?.pageInfo?.endCursor;\r\n }\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { BetRecordsInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getBetRecordsQueryKey = (input?: BetRecordsInput): QueryKey => [\n 'queries/betRecords',\n input,\n];\n","import type { PaginatedQueryResult } from '@opexa/portal-sdk-core';\r\nimport { chunk } from 'lodash-es';\r\nimport { useState } from 'react';\r\nimport type { InfiniteQuery } from '../types';\r\n\r\ntype KnownVariables = {\r\n first?: number;\r\n after?: string | null;\r\n [x: string]: unknown;\r\n};\r\n\r\ninterface UseInfiniteQueryHelperReturn<\r\n T extends PaginatedQueryResult<unknown>,\r\n> {\r\n rows: Array<T['edges'][0]['node']>;\r\n page: number;\r\n setPage: (page: number) => void;\r\n next: () => Promise<void>;\r\n prev: () => Promise<void>;\r\n pageSize: number;\r\n setPageSize: (size: number) => void;\r\n totalRows: number;\r\n totalPages: number;\r\n hasNextPage: boolean;\r\n hasPrevPage: boolean;\r\n loading: boolean;\r\n firstPage: () => void;\r\n}\r\n\r\nexport function useInfiniteQueryHelper<\r\n QueryData extends PaginatedQueryResult<unknown>,\r\n QueryVariables extends KnownVariables,\r\n>(\r\n useQuery: InfiniteQuery<QueryData, QueryVariables>,\r\n variables: QueryVariables,\r\n): UseInfiniteQueryHelperReturn<QueryData> {\r\n const [page, setPage] = useState(1);\r\n const [pageSize, setPageSize_] = useState(10);\r\n\r\n const setPageSize = (size: number) => {\r\n setPage(1);\r\n setPageSize_(size);\r\n };\r\n\r\n const query = useQuery({\r\n first: pageSize,\r\n after: null,\r\n ...variables,\r\n });\r\n\r\n const rowsLoaded =\r\n query.data?.pages\r\n .map((page) => page.edges.map((edge) => edge.node))\r\n .flat() ?? [];\r\n\r\n const pagesLoaded = chunk(rowsLoaded, pageSize);\r\n const totalPagesLoaded = Math.ceil(rowsLoaded.length / pageSize);\r\n\r\n const rows = pagesLoaded.at(page - 1) ?? [];\r\n const totalRows = query.data?.pages.at(-1)?.totalCount ?? 0;\r\n const totalPages = Math.ceil(totalRows / pageSize);\r\n const hasNextPage = page < totalPages;\r\n const hasPrevPage = page > 1;\r\n\r\n const next = async () => {\r\n if (!hasNextPage) {\r\n return;\r\n }\r\n\r\n const nextPage = page + 1;\r\n\r\n if (totalPagesLoaded < nextPage) {\r\n await query.fetchNextPage();\r\n }\r\n\r\n setPage((prev) => prev + 1);\r\n };\r\n\r\n const prev = async () => {\r\n if (!hasPrevPage) {\r\n return;\r\n }\r\n\r\n setPage((prev) => prev - 1);\r\n };\r\n\r\n const firstPage = () => {\r\n setPage(1);\r\n };\r\n\r\n const loading = query.isLoading || query.isFetchingNextPage;\r\n\r\n return {\r\n rows,\r\n page,\r\n setPage,\r\n next,\r\n prev,\r\n pageSize,\r\n setPageSize,\r\n totalRows,\r\n totalPages,\r\n hasNextPage,\r\n hasPrevPage,\r\n loading,\r\n firstPage,\r\n };\r\n}\r\n\r\nuseInfiniteQueryHelper.config = {\r\n pageSizes: [10, 25, 50, 100],\r\n defaultPageSize: 10,\r\n defaultPage: 1,\r\n};\r\n","import type { ComponentPropsWithRef } from 'react';\n\nexport function CheckIcon(props: ComponentPropsWithRef<'svg'>) {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M20 6L9 17L4 12\" />\n </svg>\n );\n}\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function ChevronDownIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M6 9L12 15L18 9\" />\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function ChevronLeftIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M15 18L9 12L15 6\" />\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function File02Icon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M14 11H8M10 15H8M16 7H8M20 6.8V17.2C20 18.8802 20 19.7202 19.673 20.362C19.3854 20.9265 18.9265 21.3854 18.362 21.673C17.7202 22 16.8802 22 15.2 22H8.8C7.11984 22 6.27976 22 5.63803 21.673C5.07354 21.3854 4.6146 20.9265 4.32698 20.362C4 19.7202 4 18.8802 4 17.2V6.8C4 5.11984 4 4.27976 4.32698 3.63803C4.6146 3.07354 5.07354 2.6146 5.63803 2.32698C6.27976 2 7.11984 2 8.8 2H15.2C16.8802 2 17.7202 2 18.362 2.32698C18.9265 2.6146 19.3854 3.07354 19.673 3.63803C20 4.27976 20 5.11984 20 6.8Z\" />\r\n </svg>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function SpinnerIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 24 24\"\r\n {...props}\r\n >\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\r\n opacity=\".25\"\r\n />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z\"\r\n >\r\n <animateTransform\r\n attributeName=\"transform\"\r\n dur=\"0.75s\"\r\n repeatCount=\"indefinite\"\r\n type=\"rotate\"\r\n values=\"0 12 12;360 12 12\"\r\n />\r\n </path>\r\n </svg>\r\n );\r\n}\r\n","interface CapitalizeConfig {\n /**\n * @description The delimiter used to split the string into words.\n * @default ' '\n */\n delimiter?: string | RegExp;\n /**\n * @description Whether to convert the string to lowercase before capitalizing.\n * @default true\n */\n lower?: boolean;\n /**\n * @description Whether to trim the string before capitalizing.\n * @default true\n */\n trim?: boolean;\n}\n\nconst SPACE = /\\s/g;\nconst UNDERSCORE = /_/g;\nconst DASH = /-/g;\nconst PASCAL = /(?=[A-Z])/;\n\n/**\n * @example\n * ```ts\n * capitalize('foo bar baz') // 'Foo Bar Baz'\n * capitalize('foo_bar_baz', { delimiter: capitalize.delimiters.UNDERSCORE }) // 'Foo Bar Baz'\n * ```\n */\nexport function capitalize(subject: string, config?: CapitalizeConfig) {\n const trim = config?.trim ?? true;\n const lower = config?.lower ?? true;\n const delimiter = config?.delimiter ?? SPACE;\n\n if (trim) subject = subject.trim();\n\n if (subject.length < 2) {\n return subject.toUpperCase();\n }\n\n if (delimiter instanceof RegExp) {\n delimiter.lastIndex = 0;\n }\n\n return subject\n .split(delimiter)\n .map((word) => {\n if (word.length < 2) return word.toUpperCase();\n\n const firstChar = word.charAt(0).toUpperCase();\n const otherChars = lower ? word.substring(1).toLowerCase() : word.substring(1);\n\n return firstChar.concat(otherChars);\n })\n .join(' ');\n}\n\ncapitalize.delimiters = {\n SPACE,\n UNDERSCORE,\n DASH,\n /**\n * ```\n * SpotBonus => Spot Bonus\n * GenericPromo => Generic Promo\n * ```\n */\n PASCAL,\n};\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function CloudIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 152 104\"\r\n fill=\"none\"\r\n {...props}\r\n >\r\n <g filter=\"url(#filter0_dd_2719_19242)\">\r\n <path\r\n d=\"M77.6 0C66.8273 0 57.2978 5.32329 51.4987 13.4829C49.605 13.0363 47.6301 12.8 45.6 12.8C31.4615 12.8 20 24.2615 20 38.4C20 52.5385 31.4615 64 45.6 64L109.6 64C121.971 64 132 53.9712 132 41.6C132 29.2288 121.971 19.2 109.6 19.2C108.721 19.2 107.854 19.2506 107.002 19.349C102.098 7.9677 90.7797 0 77.6 0Z\"\r\n fill=\"#F9FAFB\"\r\n />\r\n <ellipse\r\n cx=\"45.6\"\r\n cy=\"38.4008\"\r\n rx=\"25.6\"\r\n ry=\"25.6\"\r\n fill=\"url(#paint0_linear_2719_19242)\"\r\n />\r\n <circle\r\n cx=\"77.6\"\r\n cy=\"32\"\r\n r=\"32\"\r\n fill=\"url(#paint1_linear_2719_19242)\"\r\n />\r\n <ellipse\r\n cx=\"109.6\"\r\n cy=\"41.5992\"\r\n rx=\"22.4\"\r\n ry=\"22.4\"\r\n fill=\"url(#paint2_linear_2719_19242)\"\r\n />\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_dd_2719_19242\"\r\n x=\"0\"\r\n y=\"0\"\r\n width=\"152\"\r\n height=\"104\"\r\n filterUnits=\"userSpaceOnUse\"\r\n colorInterpolationFilters=\"sRGB\"\r\n >\r\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"4\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect1_dropShadow_2719_19242\"\r\n />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.03 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2719_19242\"\r\n />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"4\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect2_dropShadow_2719_19242\"\r\n />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.08 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"effect1_dropShadow_2719_19242\"\r\n result=\"effect2_dropShadow_2719_19242\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect2_dropShadow_2719_19242\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <linearGradient\r\n id=\"paint0_linear_2719_19242\"\r\n x1=\"25.9429\"\r\n y1=\"21.4865\"\r\n x2=\"71.2\"\r\n y2=\"64.0007\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stopColor=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stopColor=\"white\" stopOpacity=\"0\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"paint1_linear_2719_19242\"\r\n x1=\"53.0286\"\r\n y1=\"10.8571\"\r\n x2=\"109.6\"\r\n y2=\"64\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stopColor=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stopColor=\"white\" stopOpacity=\"0\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"paint2_linear_2719_19242\"\r\n x1=\"92.4\"\r\n y1=\"26.7992\"\r\n x2=\"132\"\r\n y2=\"63.9992\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stopColor=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stopColor=\"white\" stopOpacity=\"0\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n );\r\n}\r\n","import type { ComponentProps, ComponentType } from 'react';\r\nimport { CloudIcon } from './CloudIcon';\r\n\r\ninterface EmptyProps {\r\n icon: ComponentType<ComponentProps<'svg'>>;\r\n title: string;\r\n message: string;\r\n className?: string;\r\n}\r\n\r\nexport function Empty(props: EmptyProps) {\r\n return (\r\n <div role=\"alert\" aria-live=\"polite\" className={props.className}>\r\n <div className=\"relative mx-auto w-[9.5rem] pt-4\">\r\n <div className=\"bg-gray-100 absolute left-1/2 top-0 size-[6.5rem] -translate-x-1/2 rounded-full\" />\r\n <CloudIcon className=\"relative h-auto w-full shrink-0\" />\r\n <div className=\"bg-gray-600/25 absolute bottom-2 left-1/2 flex size-9 -translate-x-1/2 items-center justify-center rounded-full backdrop-blur-sm\">\r\n <props.icon className=\"size-6 text-white\" />\r\n </div>\r\n </div>\r\n <h2 className=\"mt-xl text-center font-semibold\">{props.title}</h2>\r\n <p className=\"text-gray-500 mx-auto mt-xs max-w-[25rem] text-center text-sm\">\r\n {props.message}\r\n </p>\r\n </div>\r\n );\r\n}\r\n","import type { GameProvider, GameType } from '@opexa/portal-sdk-core';\r\nimport { BetRecordsContent } from './BetRecordsContent';\r\n\r\nexport interface BetRecordsProps {\r\n gameTypes: GameType[];\r\n gameProviders: GameProvider[];\r\n className?: string;\r\n}\r\n\r\nexport function BetRecords(props: BetRecordsProps) {\r\n return <BetRecordsContent {...props} />;\r\n}\r\n","'use client';\r\n\r\nimport { Portal } from '@ark-ui/react';\r\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { z } from 'zod';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useWalletQuery } from '../../hooks/useWalletQuery/useWalletQuery';\r\nimport { Wallet02Icon } from '../../icons/Wallet02Icon';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { Dialog, Tabs } from '../../ui';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport { Deposit } from './Deposit/Deposit';\r\nimport { Withdrawal } from './Withdrawal/Withdrawal';\r\n\r\ninterface DepositWithdrawalProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport function DepositWithdrawal(props: DepositWithdrawalProps) {\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n depositWithdrawal: ctx.depositWithdrawal,\r\n })),\r\n );\r\n\r\n const localeInfo = useLocaleInfo();\r\n const walletQuery = useWalletQuery({\r\n refetchInterval: 5000,\r\n });\r\n\r\n return (\r\n <Dialog.Root\r\n lazyMount\r\n unmountOnExit\r\n open={globalStore.depositWithdrawal.open}\r\n onOpenChange={(details) => {\r\n globalStore.depositWithdrawal.setOpen(details.open);\r\n }}\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Dialog.Trigger asChild>\r\n {props.children ?? <DefaulTrigger />}\r\n </Dialog.Trigger>\r\n <Portal>\r\n <Dialog.Backdrop className=\"!z-[calc(var(--z-dialog)+1)]\" />\r\n <Dialog.Positioner className=\"!z-[calc(var(--z-dialog)+2)]\">\r\n <Dialog.Content className=\"mx-auto h-full w-full bg-white p-3xl shadow-xl lg:h-auto lg:w-[640px] lg:rounded-xl\">\r\n <Dialog.CloseTrigger>\r\n <XIcon />\r\n </Dialog.CloseTrigger>\r\n <Dialog.Header className=\"flex items-center gap-xl\">\r\n <div className=\"border-gray-200 shadow-xs text-gray-700 flex size-12 items-center justify-center rounded-lg border\">\r\n <Wallet02Icon />\r\n </div>\r\n <Dialog.Title className=\"grow text-lg font-semibold\">\r\n Wallet\r\n </Dialog.Title>\r\n </Dialog.Header>\r\n\r\n <Dialog.Body className=\"mt-5\">\r\n <p className=\"text-gray-500 text-center text-sm font-medium leading-tight\">\r\n Available Balance\r\n </p>\r\n <p className=\"mt-lg text-center text-4xl font-semibold leading-tight tracking-tight\">\r\n {formatNumber(walletQuery.data?.balance, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </p>\r\n\r\n <Tabs.Root\r\n value={globalStore.depositWithdrawal.tab}\r\n onValueChange={(details) => {\r\n globalStore.depositWithdrawal.setTab(\r\n z.enum(['DEPOSIT', 'WITHDRAWAL']).parse(details.value),\r\n );\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n className=\"mt-4xl space-y-4xl\"\r\n >\r\n <Tabs.List className=\"w-full\">\r\n <Tabs.Trigger value=\"DEPOSIT\" className=\"grow\">\r\n Deposit\r\n </Tabs.Trigger>\r\n <Tabs.Trigger value=\"WITHDRAWAL\" className=\"grow\">\r\n Withdrawal\r\n </Tabs.Trigger>\r\n <Tabs.Indicator />\r\n </Tabs.List>\r\n\r\n <Tabs.Content value=\"DEPOSIT\" className=\"space-y-4xl\">\r\n <Deposit />\r\n </Tabs.Content>\r\n <Tabs.Content value=\"WITHDRAWAL\" className=\"space-y-4xl\">\r\n <Withdrawal />\r\n </Tabs.Content>\r\n </Tabs.Root>\r\n </Dialog.Body>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n\r\nfunction DefaulTrigger(props: ComponentPropsWithRef<'button'>) {\r\n const localeInfo = useLocaleInfo();\r\n const walletQuery = useWalletQuery({\r\n refetchInterval: 5000,\r\n });\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n {...props}\r\n className={twMerge('flex', props.className)}\r\n >\r\n <div className=\"border-gray-200 flex h-11 items-center rounded-l-md border border-r-0 px-3.5 font-medium\">\r\n {formatNumber(walletQuery.data?.balance, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </div>\r\n <div className=\"bg-gray-900 flex h-11 items-center gap-1.5 rounded-r-md px-3.5 font-semibold text-white\">\r\n <Wallet02Icon className=\"size-5\" />\r\n Wallet\r\n </div>\r\n </button>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function Wallet02Icon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M16 7.99983V4.50048C16 3.66874 16 3.25287 15.8248 2.9973C15.6717 2.77401 15.4346 2.62232 15.1678 2.57691C14.8623 2.52493 14.4847 2.6992 13.7295 3.04775L4.85901 7.14182C4.18551 7.45267 3.84875 7.6081 3.60211 7.84915C3.38406 8.06225 3.21762 8.32238 3.1155 8.60966C3 8.93462 3 9.30551 3 10.0473V14.9998M16.5 14.4998H16.51M3 11.1998L3 17.7998C3 18.9199 3 19.48 3.21799 19.9078C3.40973 20.2841 3.71569 20.5901 4.09202 20.7818C4.51984 20.9998 5.07989 20.9998 6.2 20.9998H17.8C18.9201 20.9998 19.4802 20.9998 19.908 20.7818C20.2843 20.5901 20.5903 20.2841 20.782 19.9078C21 19.48 21 18.9199 21 17.7998V11.1998C21 10.0797 21 9.51967 20.782 9.09185C20.5903 8.71552 20.2843 8.40956 19.908 8.21782C19.4802 7.99983 18.9201 7.99983 17.8 7.99983L6.2 7.99983C5.0799 7.99983 4.51984 7.99983 4.09202 8.21781C3.7157 8.40956 3.40973 8.71552 3.21799 9.09185C3 9.51967 3 10.0797 3 11.1998ZM17 14.4998C17 14.776 16.7761 14.9998 16.5 14.9998C16.2239 14.9998 16 14.776 16 14.4998C16 14.2237 16.2239 13.9998 16.5 13.9998C16.7761 13.9998 17 14.2237 17 14.4998Z\" />\r\n </svg>\r\n );\r\n}\r\n","export function XIcon(props: React.ComponentPropsWithRef<'svg'>) {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M18 6L6 18M6 6L18 18\" />\n </svg>\n );\n}\n","import { useEffect, useState } from 'react';\r\nimport { usePaymentSettingsQuery } from '../../../hooks/usePaymentSettingsQuery/usePaymentSettingsQuery';\r\nimport { AlertCircleIcon } from '../../../icons/AlertCircleIcon';\r\nimport { SpinnerIcon } from '../../../icons/SpinnerIcon';\r\nimport { onMobileDevice } from '../../../utils/isMobile';\r\nimport { PaymentMethods } from '../PaymentMethods';\r\nimport type { PaymentMethod } from '../utils';\r\nimport { GCashDeposit } from './GCashDeposit';\r\nimport { MayaAppDeposit } from './MayaAppDeposit';\r\nimport { MayaDeposit } from './MayaDeposit';\r\nimport { OnlineBankDeposit } from './OnlineBankDeposit';\r\nimport { QRPHDeposit } from './QRPHDeposit';\r\n\r\nexport function Deposit() {\r\n const paymentSettingsQuery = usePaymentSettingsQuery();\r\n const paymentSettings = paymentSettingsQuery.data;\r\n\r\n const enabledPaymentMethods = (() => {\r\n const l: PaymentMethod[] = [];\r\n\r\n if (onMobileDevice()) {\r\n if (paymentSettings?.gcashDepositGatewaySettings?.mobileWebEnabled)\r\n l.push('GCASH');\r\n if (paymentSettings?.mayaDepositGatewaySettings?.mobileWebEnabled)\r\n l.push('MAYA');\r\n if (paymentSettings?.mayaAppDepositGatewaySettings?.mobileWebEnabled)\r\n l.push('MAYA_APP');\r\n if (paymentSettings?.qrphDepositGatewaySettings?.mobileWebEnabled)\r\n l.push('QRPH');\r\n if (paymentSettings?.onlineBankDepositGatewaySettings?.mobileWebEnabled)\r\n l.push('ONLINE_BANK');\r\n } else {\r\n if (paymentSettings?.gcashDepositGatewaySettings?.webEnabled)\r\n l.push('GCASH');\r\n if (paymentSettings?.mayaDepositGatewaySettings?.webEnabled)\r\n l.push('MAYA');\r\n if (paymentSettings?.mayaAppDepositGatewaySettings?.webEnabled)\r\n l.push('MAYA_APP');\r\n if (paymentSettings?.qrphDepositGatewaySettings?.webEnabled)\r\n l.push('QRPH');\r\n if (paymentSettings?.onlineBankDepositGatewaySettings?.webEnabled)\r\n l.push('ONLINE_BANK');\r\n }\r\n\r\n return l;\r\n })();\r\n\r\n const [paymentMethod, setPaymentMethod] = useState<PaymentMethod>();\r\n\r\n useEffect(() => {\r\n if (enabledPaymentMethods.length > 0 && !paymentMethod) {\r\n setPaymentMethod(enabledPaymentMethods[0]);\r\n }\r\n }, [enabledPaymentMethods, paymentMethod]);\r\n\r\n if (paymentSettingsQuery.isLoading) {\r\n return <SpinnerIcon className=\"mx-auto size-6\" />;\r\n }\r\n\r\n if (enabledPaymentMethods.length <= 0) {\r\n /* TODO: Empty state */\r\n return (\r\n <div className=\"border-amber-200 text-amber-700 bg-amber-50 flex items-center gap-1.5 rounded-sm border px-3 py-2.5 text-sm\">\r\n <AlertCircleIcon className=\"size-4\" />\r\n No available payment methods\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <PaymentMethods\r\n value={paymentMethod}\r\n onChange={setPaymentMethod}\r\n options={enabledPaymentMethods}\r\n />\r\n\r\n {paymentMethod === 'QRPH' && <QRPHDeposit />}\r\n {paymentMethod === 'GCASH' && <GCashDeposit />}\r\n {paymentMethod === 'MAYA' && <MayaDeposit />}\r\n {paymentMethod === 'MAYA_APP' && <MayaAppDeposit />}\r\n {paymentMethod === 'ONLINE_BANK' && <OnlineBankDeposit />}\r\n </>\r\n );\r\n}\r\n","import {\r\n getPaymentSettings,\r\n type PaymentSettings,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Query } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getPaymentSettingsQueryKey } from './getPaymentSettingsQueryKey';\r\n\r\nexport const usePaymentSettingsQuery: Query<PaymentSettings> = (config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getPaymentSettingsQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getPaymentSettings({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\r\n\r\nexport const getPaymentSettingsQueryKey = (): QueryKey => [\r\n 'queries/paymentSettings',\r\n];\r\n","import type { ComponentPropsWithRef } from 'react';\n\nexport function AlertCircleIcon(props: ComponentPropsWithRef<'svg'>) {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M12 8V12M12 16H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" />\n </svg>\n );\n}\n","import { type IsMobileOptions, isMobile } from 'is-mobile';\r\nimport { cache } from 'react';\r\n\r\ninterface OnMobileOptions extends IsMobileOptions {}\r\n\r\nexport const onMobileDevice = cache((opts?: OnMobileOptions) => {\r\n return isMobile({\r\n tablet: true,\r\n featureDetect: typeof window !== 'undefined',\r\n ...opts,\r\n });\r\n});\r\n","import type { ImageProps } from 'next/image';\r\nimport Image from 'next/image';\r\nimport { useControllableState } from '../../hooks/useControllableState';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport qrph from '../../images/QRPh.png';\r\nimport gcash from '../../images/gcash.png';\r\nimport maya from '../../images/maya.png';\r\nimport onlineBank from '../../images/online-bank.png';\r\nimport { Checkbox, Field } from '../../ui';\r\nimport { PaymentMethodDefinition, type PaymentMethod } from './utils';\r\n\r\nconst OPTIONS: {\r\n value: PaymentMethod;\r\n label: string;\r\n image: ImageProps['src'];\r\n}[] = [\r\n {\r\n value: 'GCASH',\r\n label: 'GCash',\r\n image: gcash,\r\n },\r\n {\r\n value: 'MAYA_APP',\r\n label: 'Maya App',\r\n image: maya,\r\n },\r\n {\r\n value: 'MAYA',\r\n label: 'Maya',\r\n image: maya,\r\n },\r\n {\r\n value: 'QRPH',\r\n label: 'QRPH',\r\n image: qrph,\r\n },\r\n {\r\n value: 'ONLINE_BANK',\r\n label: 'Online Bank',\r\n image: onlineBank,\r\n },\r\n];\r\n\r\ninterface PaymentMethodsProps {\r\n value?: PaymentMethod;\r\n onChange?: (value: PaymentMethod) => void;\r\n defaultValue?: PaymentMethod;\r\n options?: PaymentMethod[];\r\n className?: string;\r\n}\r\n\r\nexport function PaymentMethods(props: PaymentMethodsProps) {\r\n const options = props.options?.length\r\n ? OPTIONS.filter((option) => props.options?.includes(option.value))\r\n : OPTIONS;\r\n\r\n const [value, setValue] = useControllableState({\r\n value: props.value,\r\n defaultValue: props.defaultValue ?? options[0].value,\r\n onChange: props.onChange,\r\n });\r\n\r\n return (\r\n <div className={props.className}>\r\n <Field.Label asChild>\r\n <div>Select your payment method</div>\r\n </Field.Label>\r\n <Checkbox.Group\r\n value={[value]}\r\n onValueChange={(newValue) => {\r\n const lastValue = newValue.at(-1);\r\n if (!lastValue) return;\r\n setValue(PaymentMethodDefinition.parse(lastValue));\r\n }}\r\n className=\"grid grid-cols-2 gap-x-4 gap-y-3\"\r\n >\r\n {options.map((option) => (\r\n <Checkbox.Root\r\n key={option.value}\r\n value={option.value}\r\n className=\"border-gray-200 ui-checked:border-gray-900 ui-checked:outline-solid ui-checked:outline-gray-900 flex cursor-pointer rounded-xl border p-xl ui-checked:outline\"\r\n >\r\n <div className=\"grow\">\r\n <Image\r\n src={option.image}\r\n alt=\"\"\r\n width={200}\r\n height={40}\r\n className=\"h-5 w-auto lg:h-8\"\r\n draggable={false}\r\n />\r\n </div>\r\n <Checkbox.Control className=\"shrink-0\">\r\n <Checkbox.Indicator asChild>\r\n <CheckIcon />\r\n </Checkbox.Indicator>\r\n </Checkbox.Control>\r\n <Checkbox.HiddenInput />\r\n </Checkbox.Root>\r\n ))}\r\n </Checkbox.Group>\r\n </div>\r\n );\r\n}\r\n","import * as React from 'react';\r\n\r\nfunction useCallbackRef<Args extends unknown[], Return>(\r\n callback: ((...args: Args) => Return) | undefined,\r\n deps: React.DependencyList = [],\r\n) {\r\n const callbackRef = React.useRef<typeof callback>(() => {\r\n throw new Error('Cannot call an event handler while rendering.');\r\n });\r\n\r\n React.useInsertionEffect(() => {\r\n callbackRef.current = callback;\r\n });\r\n\r\n return React.useCallback(\r\n (...args: Args) => callbackRef.current?.(...args),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n deps,\r\n );\r\n}\r\n\r\ninterface UseControllableStateProps<T> {\r\n value?: T;\r\n onChange?: (value: T) => void;\r\n defaultValue?: T | (() => T);\r\n}\r\n\r\nexport function useControllableState<T>(\r\n props: UseControllableStateProps<T>,\r\n): [T, React.Dispatch<React.SetStateAction<T>>] {\r\n const { value: userDefinedValue, defaultValue, onChange } = props;\r\n\r\n const onChangeProp = useCallbackRef(onChange);\r\n const shouldUpdateProp = useCallbackRef((prev, next) => prev !== next);\r\n\r\n const [uncontrolledState, setUncontrolledState] = React.useState(\r\n defaultValue as T,\r\n );\r\n const controlled = userDefinedValue !== undefined;\r\n const value = controlled ? userDefinedValue : uncontrolledState;\r\n\r\n const setValue = useCallbackRef(\r\n (next: React.SetStateAction<T>) => {\r\n const setter = next as (prevState?: T) => T;\r\n const nextValue = typeof next === 'function' ? setter(value) : next;\r\n\r\n if (!shouldUpdateProp(value, nextValue)) return;\r\n\r\n if (!controlled) setUncontrolledState(nextValue);\r\n\r\n onChangeProp(nextValue);\r\n },\r\n [controlled, onChangeProp, value, shouldUpdateProp],\r\n );\r\n\r\n return [value, setValue];\r\n}\r\n","import { z } from 'zod';\r\n\r\nexport const PaymentMethodDefinition = z.enum([\r\n 'GCASH',\r\n 'MAYA_APP',\r\n 'MAYA',\r\n 'ONLINE_BANK',\r\n 'QRPH',\r\n]);\r\n\r\nexport type PaymentMethod = z.infer<typeof PaymentMethodDefinition>;\r\n","import { Portal } from '@ark-ui/react';\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useEffect } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\nimport { z } from 'zod';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useAvailablePromosQuery } from '../../../hooks/useAvailablePromosQuery/useAvailablePromosQuery';\r\nimport { useCreateGCashDepositMutation } from '../../../hooks/useCreateGCashDepositMutation/useCreateGCashDepositMutation';\r\nimport { useDepositsCountQuery } from '../../../hooks/useDepositsCountQuery/useDepositsCountQuery';\r\nimport { useDisclosure } from '../../../hooks/useDisclosure';\r\nimport { useGlobalStore } from '../../../hooks/useGlobalStore';\r\nimport { usePaymentSettingsQuery } from '../../../hooks/usePaymentSettingsQuery/usePaymentSettingsQuery';\r\nimport { AlertCircleIcon } from '../../../icons/AlertCircleIcon';\r\nimport { ChevronDownIcon } from '../../../icons/ChevronDownIcon';\r\nimport { ChevronUpIcon } from '../../../icons/ChevronUpIcon';\r\nimport { SpinnerIcon } from '../../../icons/SpinnerIcon';\r\nimport { XIcon } from '../../../icons/XIcon';\r\nimport { AlertDialog, Button, Field, NumberInput } from '../../../ui';\r\nimport { parseDecimal } from '../../../utils/parseDecimal';\r\nimport { toaster } from '../../../utils/toaster';\r\nimport { AmountChoices } from '../AmountChoices';\r\nimport { AvailablePromos } from '../AvailablePromos';\r\n\r\nexport function GCashDeposit() {\r\n const disclosure = useDisclosure();\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n depositWithdrawal: ctx.depositWithdrawal,\r\n })),\r\n );\r\n\r\n const createDepositMutation = useCreateGCashDepositMutation({\r\n onSuccess(data) {\r\n if (!data.checkoutUrl) return;\r\n window.open(data.checkoutUrl, '_blank', 'noopener,noreferrer');\r\n form.reset();\r\n globalStore.depositWithdrawal.setOpen(false);\r\n },\r\n onError(error) {\r\n toaster.error({\r\n description: error.message,\r\n });\r\n },\r\n });\r\n\r\n const depositsCountQuery = useDepositsCountQuery();\r\n const depositsCount = depositsCountQuery.data ?? 0;\r\n const paymentSettingsQuery = usePaymentSettingsQuery();\r\n const paymentSettings = paymentSettingsQuery.data;\r\n const gatewaySettings = paymentSettings?.gcashDepositGatewaySettings;\r\n const maximumAmount = parseDecimal(gatewaySettings?.maximumAmount, 0);\r\n const minimumAmount =\r\n depositsCount <= 0\r\n ? parseDecimal(paymentSettingsQuery.data?.minimumFirstDepositAmount, 0)\r\n : parseDecimal(gatewaySettings?.minimumAmount, 0);\r\n\r\n const promosQuery = useAvailablePromosQuery();\r\n const promos = promosQuery.data ?? [];\r\n\r\n const definition = z\r\n .object({\r\n amount: z.string().superRefine((val, ctx) => {\r\n const n = parseDecimal(val, 0);\r\n if (n < minimumAmount) {\r\n ctx.addIssue({\r\n type: 'number',\r\n code: z.ZodIssueCode.too_small,\r\n inclusive: true,\r\n minimum: minimumAmount,\r\n message: `Minimum amount is ${minimumAmount.toLocaleString()}`,\r\n });\r\n }\r\n\r\n if (n > maximumAmount) {\r\n ctx.addIssue({\r\n type: 'number',\r\n code: z.ZodIssueCode.too_big,\r\n inclusive: true,\r\n maximum: maximumAmount,\r\n message: `Maximum amount is ${maximumAmount.toLocaleString()}`,\r\n });\r\n }\r\n }),\r\n promo: z.string().optional().nullable(),\r\n })\r\n .superRefine((value, ctx) => {\r\n const promo = promos.find((o) => o.id === value.promo);\r\n const promoMinAmount = parseDecimal(promo?.minimumDepositAmount, 0);\r\n const promoMaxAmount = parseDecimal(promo?.maximumDepositAmount, 0);\r\n const amount = parseDecimal(value.amount, 0);\r\n\r\n if (promo && amount < promoMinAmount) {\r\n ctx.addIssue({\r\n path: ['amount'],\r\n code: z.ZodIssueCode.custom,\r\n message: `Minimum amount for this promo is ${promoMinAmount.toLocaleString()}`,\r\n });\r\n }\r\n\r\n if (promo && amount > promoMaxAmount) {\r\n ctx.addIssue({\r\n path: ['amount'],\r\n code: z.ZodIssueCode.custom,\r\n message: `Maximum amount for this promo is ${promoMaxAmount}`,\r\n });\r\n }\r\n });\r\n\r\n const form = useForm({\r\n mode: 'all',\r\n resolver: zodResolver(definition),\r\n defaultValues: {\r\n amount: '0',\r\n promo: null,\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (minimumAmount) {\r\n form.reset({\r\n amount: minimumAmount.toString(),\r\n promo: null,\r\n });\r\n }\r\n }, [form, minimumAmount]);\r\n\r\n const handleSubmit = form.handleSubmit(async (data) => {\r\n createDepositMutation.mutate({\r\n amount: data.amount.toString(),\r\n promo: data.promo ?? undefined,\r\n });\r\n });\r\n\r\n return (\r\n <form onSubmit={handleSubmit} noValidate>\r\n <Controller\r\n control={form.control}\r\n name=\"amount\"\r\n render={(o) => (\r\n <Field.Root invalid={!!form.formState.errors.amount}>\r\n <NumberInput.Root\r\n min={0}\r\n step={1}\r\n value={o.field.value}\r\n onValueChange={(details) => {\r\n o.field.onChange(details.value);\r\n }}\r\n formatOptions={{\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n }}\r\n allowMouseWheel\r\n >\r\n <NumberInput.Label>\r\n Enter amount you want to deposit\r\n </NumberInput.Label>\r\n <NumberInput.Control>\r\n <NumberInput.Input />\r\n <NumberInput.IncrementTrigger>\r\n <ChevronUpIcon />\r\n </NumberInput.IncrementTrigger>\r\n <NumberInput.DecrementTrigger>\r\n <ChevronDownIcon />\r\n </NumberInput.DecrementTrigger>\r\n </NumberInput.Control>\r\n </NumberInput.Root>\r\n <Field.ErrorText>\r\n {form.formState.errors.amount?.message}\r\n </Field.ErrorText>\r\n </Field.Root>\r\n )}\r\n />\r\n\r\n <AmountChoices\r\n value={parseDecimal(form.watch('amount'), 0)}\r\n onChange={(value) => {\r\n form.setValue('amount', value.toString(), {\r\n shouldTouch: true,\r\n shouldDirty: true,\r\n shouldValidate: true,\r\n });\r\n }}\r\n min={minimumAmount}\r\n max={maximumAmount}\r\n className=\"mt-xl\"\r\n />\r\n\r\n <Controller\r\n control={form.control}\r\n name=\"promo\"\r\n render={(o) => (\r\n <AvailablePromos\r\n className=\"mt-4xl\"\r\n value={o.field.value}\r\n onChange={o.field.onChange}\r\n />\r\n )}\r\n />\r\n\r\n <p className=\"mt-4xl text-xs\">\r\n Upon clicking the deposit button, you agree to the{' '}\r\n <button type=\"button\" className=\"underline underline-offset-2\">\r\n Terms of Use and Privacy Policy\r\n </button>\r\n .\r\n </p>\r\n <Button\r\n type=\"submit\"\r\n className=\"mt-4.5\"\r\n disabled={createDepositMutation.isPending}\r\n onClick={async (e) => {\r\n const ok = await form.trigger('amount');\r\n if (!ok) return;\r\n if (promos.length <= 0) return;\r\n if (form.getValues('promo')) return;\r\n e.preventDefault();\r\n disclosure.setOpen(true);\r\n }}\r\n >\r\n {createDepositMutation.isPending ? (\r\n <>\r\n <SpinnerIcon />\r\n Processing...\r\n </>\r\n ) : (\r\n 'Deposit'\r\n )}\r\n </Button>\r\n\r\n <AlertDialog.Root\r\n role=\"alertdialog\"\r\n open={disclosure.open}\r\n onOpenChange={(details) => {\r\n disclosure.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Portal>\r\n <AlertDialog.Backdrop className=\"!z-[calc(var(--z-dialog)+10)]\" />\r\n <AlertDialog.Positioner className=\"!z-[calc(var(--z-dialog)+25)]\">\r\n <AlertDialog.Content>\r\n <AlertDialog.Header>\r\n <div className=\"flex size-12 items-center justify-center rounded-full bg-[#FEE4E2] text-[#D92D20]\">\r\n <AlertCircleIcon />\r\n </div>\r\n <AlertDialog.CloseTrigger>\r\n <XIcon />\r\n </AlertDialog.CloseTrigger>\r\n </AlertDialog.Header>\r\n <AlertDialog.Body>\r\n <AlertDialog.Title>\r\n Submit deposit request without promo?\r\n </AlertDialog.Title>\r\n <AlertDialog.Description>\r\n You haven’t selected a promo. Are you sure you want to\r\n proceed without one?\r\n </AlertDialog.Description>\r\n </AlertDialog.Body>\r\n <AlertDialog.Footer>\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => {\r\n disclosure.setOpen(false);\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n onClick={() => {\r\n handleSubmit();\r\n disclosure.setOpen(false);\r\n }}\r\n >\r\n Proceed\r\n </Button>\r\n </AlertDialog.Footer>\r\n </AlertDialog.Content>\r\n </AlertDialog.Positioner>\r\n </Portal>\r\n </AlertDialog.Root>\r\n </form>\r\n );\r\n}\r\n","import {\r\n getAvailablePromos,\r\n type AvailablePromosInput,\r\n type Promo,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Query } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getAvailablePromosQueryKey } from './getAvailablePromosQueryKey';\r\n\r\nexport const useAvailablePromosQuery: Query<Promo[], AvailablePromosInput> = (\r\n input,\r\n config,\r\n) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getAvailablePromosQueryKey(input),\r\n queryFn: async ({ signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getAvailablePromos(input, {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { AvailablePromosInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getAvailablePromosQueryKey = (input?: AvailablePromosInput): QueryKey => [\n 'queries/availablePromos',\n input,\n];\n","import {\r\n createGCashDeposit,\r\n getDeposit,\r\n type CreateGCashDepositInput,\r\n type Deposit,\r\n} from '@opexa/portal-sdk-core';\r\nimport { ObjectId, ObjectType } from '@opexa/portal-sdk-core/object-id';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Mutation } from '../../types';\r\nimport { createPoll } from '../../utils/createPoll';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { getCreateGCashDepositMutationKey } from './getCreateGCashDepositMutationKey';\r\n\r\nexport const useCreateGCashDepositMutation: Mutation<\r\n Deposit,\r\n Omit<CreateGCashDepositInput, 'id'>\r\n> = (config) => {\r\n const queryClient = getQueryClient();\r\n\r\n const mutation = useMutation({\r\n ...config,\r\n mutationKey: getCreateGCashDepositMutationKey(),\r\n mutationFn: async (input) => {\r\n const id = ObjectId.generate(ObjectType.Deposit).toString();\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n await createGCashDeposit(\r\n {\r\n id,\r\n ...input,\r\n },\r\n {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n\r\n const poll = createPoll(\r\n async () => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getDeposit(id, {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n {\r\n until(res) {\r\n return !!res?.checkoutUrl;\r\n },\r\n interval: 1000,\r\n maxAttempt: 5,\r\n },\r\n );\r\n\r\n const res = await poll();\r\n\r\n if (!res?.checkoutUrl) {\r\n const error = new Error();\r\n error.name = 'GCashDepositError';\r\n error.message = 'Failed to process GCash deposit';\r\n throw error;\r\n }\r\n\r\n return res;\r\n },\r\n });\r\n\r\n return mutation;\r\n};\r\n","interface CreatePollConfig<T = unknown> {\r\n until(response: T): boolean | Promise<boolean>;\r\n /**\r\n * @default 1000\r\n */\r\n interval?: number;\r\n /**\r\n * @default 3\r\n */\r\n maxAttempt?: number;\r\n}\r\n\r\nconst defaultConfig = {\r\n interval: 1000,\r\n maxAttempt: 3,\r\n} satisfies Partial<CreatePollConfig>;\r\n\r\n/**\r\n * @example\r\n * ```ts\r\n * const poll = createPoll(\r\n * fn,\r\n * {\r\n * until: (r) => r.ok,\r\n * interval: 1000,\r\n * maxAttempt: 5,\r\n * }\r\n * );\r\n *\r\n * poll()\r\n * ```\r\n */\r\nexport function createPoll<Return, Args = never>(\r\n func: (...args: Args[]) => Promise<Return>,\r\n config: CreatePollConfig<Return>,\r\n) {\r\n const { until, interval, maxAttempt } = Object.assign(defaultConfig, config);\r\n\r\n async function repeater(args: Args[], max?: number) {\r\n const remainingAttempts = max ?? maxAttempt;\r\n const result = await func(...args);\r\n const shouldStop = await until(result);\r\n\r\n if (shouldStop) return result;\r\n\r\n const retryCount = maxAttempt + 1 - remainingAttempts;\r\n const maxJitter = interval * 2 ** retryCount; /* Exponential backoff */\r\n const jitter = Math.random() * maxJitter;\r\n\r\n if (remainingAttempts > 1) {\r\n await sleep(jitter);\r\n return repeater(args, remainingAttempts - 1);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n return async (...args: Args[]): Promise<Return> => {\r\n return await repeater(args);\r\n };\r\n}\r\n\r\nfunction sleep(ms: number) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n","import type { MutationKey } from '@tanstack/react-query';\r\n\r\nexport const getCreateGCashDepositMutationKey = (): MutationKey => [\r\n 'mutations/createGCashDeposit',\r\n];\r\n","import { getDepositsCount } from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Query } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getDepositsCountQueryKey } from './getDepositsCountQueryKey';\r\n\r\nexport const useDepositsCountQuery: Query<number> = (config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getDepositsCountQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getDepositsCount({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\r\n\r\nexport const getDepositsCountQueryKey = (): QueryKey => [\r\n 'queries/depositsCount',\r\n];\r\n","import type { Dispatch, SetStateAction } from 'react';\r\nimport { useControllableState } from './useControllableState';\r\n\r\nexport interface UseDisclosureReturn {\r\n open: boolean;\r\n setOpen: Dispatch<SetStateAction<boolean>>;\r\n}\r\n\r\nexport interface UseDisclosureProps {\r\n open?: boolean;\r\n defaultOpen?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n}\r\n\r\nexport function useDisclosure(props?: UseDisclosureProps): UseDisclosureReturn {\r\n const [open, setOpen] = useControllableState({\r\n value: props?.open,\r\n defaultValue: props?.defaultOpen ?? false,\r\n onChange: props?.onOpenChange,\r\n });\r\n\r\n return {\r\n open,\r\n setOpen,\r\n };\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function ChevronUpIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M18 15L12 9L6 15\" />\r\n </svg>\r\n );\r\n}\r\n","import { createToaster, type CreateToasterReturn } from '@ark-ui/react/toast';\n\nexport const toaster: CreateToasterReturn = createToaster({\n placement: 'top',\n duration: 5000,\n max: 5,\n overlap: true,\n gap: 8,\n});\n","import { twMerge } from 'tailwind-merge';\r\nimport { useControllableState } from '../../hooks/useControllableState';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { Button } from '../../ui';\r\nimport { dataAttr } from '../../utils/dataAttr';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\n\r\ninterface AmountChoicesProps {\r\n value?: number;\r\n defaultValue?: number;\r\n onChange?: (value: number) => void;\r\n options?: number[];\r\n className?: string;\r\n min?: number;\r\n max?: number;\r\n}\r\n\r\nexport function AmountChoices(props: AmountChoicesProps) {\r\n const min = props.min ?? 0;\r\n const max = props.max ?? 9999999;\r\n\r\n const localeInfo = useLocaleInfo();\r\n\r\n const options = props.options?.length\r\n ? props.options\r\n : [500, 750, 1000, 2000];\r\n\r\n const [value, setValue] = useControllableState({\r\n value: props.value,\r\n defaultValue: props.defaultValue ?? options[0],\r\n onChange: props.onChange,\r\n });\r\n\r\n return (\r\n <div className={twMerge('grid grid-cols-4 gap-2', props.className)}>\r\n {options.map((option) => (\r\n <Button\r\n key={option}\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => {\r\n setValue(option);\r\n }}\r\n disabled={min > option || max < option}\r\n data-selected={dataAttr(value === option)}\r\n >\r\n {formatNumber(option, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 0,\r\n maxDecimalPlaces: 0,\r\n })}\r\n </Button>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import { Carousel } from '@ark-ui/react';\r\nimport Image from 'next/image';\r\nimport Link from 'next/link';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useAvailablePromosQuery } from '../../hooks/useAvailablePromosQuery/useAvailablePromosQuery';\r\nimport { useControllableState } from '../../hooks/useControllableState';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { Checkbox, IconButton } from '../../ui';\r\n\r\ninterface AvailablePromosProps {\r\n value?: string | null;\r\n defaultValue?: string | null;\r\n onChange?: (value: string | null) => void;\r\n className?: string;\r\n}\r\n\r\nexport function AvailablePromos(props: AvailablePromosProps) {\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n depositWithdrawal: ctx.depositWithdrawal,\r\n })),\r\n );\r\n\r\n const query = useAvailablePromosQuery();\r\n const promos = query.data ?? [];\r\n\r\n const [value, setValue] = useControllableState({\r\n value: props.value,\r\n defaultValue: props.defaultValue ?? null,\r\n onChange: props.onChange,\r\n });\r\n\r\n return (\r\n <Carousel.Root\r\n slideCount={promos.length}\r\n className={props.className}\r\n spacing=\"16px\"\r\n slidesPerPage={2}\r\n >\r\n <div className=\"flex items-center gap-xl\">\r\n <div className=\"grow\">\r\n <h2 className=\"text-lg font-semibold leading-tight\">\r\n Available Promotions\r\n </h2>\r\n <p className=\"text-gray-500 mt-1 text-sm leading-tight\">\r\n Select a promotion with your deposit. Only one can be active at a\r\n time.\r\n </p>\r\n </div>\r\n\r\n <Carousel.Control>\r\n <Carousel.PrevTrigger asChild>\r\n <IconButton\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n >\r\n <ChevronLeftIcon />\r\n </IconButton>\r\n </Carousel.PrevTrigger>\r\n <Carousel.NextTrigger asChild>\r\n <IconButton\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n >\r\n <ChevronRightIcon />\r\n </IconButton>\r\n </Carousel.NextTrigger>\r\n </Carousel.Control>\r\n </div>\r\n\r\n <Carousel.ItemGroup className=\"mt-3xl\">\r\n {promos.map((promo, index) => (\r\n <Carousel.Item key={promo.id} index={index}>\r\n <div className=\"relative select-none p-0.5\">\r\n <div\r\n className={twMerge(\r\n 'block rounded-lg',\r\n promo.id === value && 'ring-gray-500/25 ring-2',\r\n )}\r\n >\r\n {promo.banner.url && (\r\n <Image\r\n src={promo.banner.url}\r\n alt=\"\"\r\n width={288}\r\n height={184}\r\n className=\"rounded-lg\"\r\n />\r\n )}\r\n </div>\r\n\r\n <Checkbox.Root\r\n checked={promo.id === value}\r\n onCheckedChange={(details) => {\r\n setValue(details.checked ? promo.id : null);\r\n }}\r\n className=\"absolute right-3 top-3 rounded-md border border-white/50 bg-white/60 p-lg backdrop-blur-sm\"\r\n >\r\n <Checkbox.Control className=\"bg-white\">\r\n <Checkbox.Indicator asChild>\r\n <CheckIcon />\r\n </Checkbox.Indicator>\r\n </Checkbox.Control>\r\n <Checkbox.HiddenInput />\r\n </Checkbox.Root>\r\n\r\n <Link\r\n href={`/promos/${promo.id}`}\r\n className=\"absolute bottom-3 right-3 rounded-md border border-white/50 bg-white/60 px-lg py-md text-sm font-semibold backdrop-blur-sm\"\r\n onClick={() => {\r\n globalStore.depositWithdrawal.setOpen(false);\r\n }}\r\n >\r\n Promo Details\r\n </Link>\r\n </div>\r\n </Carousel.Item>\r\n ))}\r\n </Carousel.ItemGroup>\r\n </Carousel.Root>\r\n );\r\n}\r\n","export function MayaAppDeposit() {\r\n return null;\r\n}\r\n","import { Portal } from '@ark-ui/react';\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useEffect } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\nimport { z } from 'zod';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useAvailablePromosQuery } from '../../../hooks/useAvailablePromosQuery/useAvailablePromosQuery';\r\nimport { useCreateMayaDepositMutation } from '../../../hooks/useCreateMayaDepositMutation copy/useCreateMayaDepositMutation';\r\nimport { useDepositsCountQuery } from '../../../hooks/useDepositsCountQuery/useDepositsCountQuery';\r\nimport { useDisclosure } from '../../../hooks/useDisclosure';\r\nimport { useGlobalStore } from '../../../hooks/useGlobalStore';\r\nimport { usePaymentSettingsQuery } from '../../../hooks/usePaymentSettingsQuery/usePaymentSettingsQuery';\r\nimport { AlertCircleIcon } from '../../../icons/AlertCircleIcon';\r\nimport { ChevronDownIcon } from '../../../icons/ChevronDownIcon';\r\nimport { ChevronUpIcon } from '../../../icons/ChevronUpIcon';\r\nimport { SpinnerIcon } from '../../../icons/SpinnerIcon';\r\nimport { XIcon } from '../../../icons/XIcon';\r\nimport { AlertDialog, Button, Field, NumberInput } from '../../../ui';\r\nimport { parseDecimal } from '../../../utils/parseDecimal';\r\nimport { toaster } from '../../../utils/toaster';\r\nimport { AmountChoices } from '../AmountChoices';\r\nimport { AvailablePromos } from '../AvailablePromos';\r\n\r\nexport function MayaDeposit() {\r\n const disclosure = useDisclosure();\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n depositWithdrawal: ctx.depositWithdrawal,\r\n })),\r\n );\r\n\r\n const createDepositMutation = useCreateMayaDepositMutation({\r\n onSuccess(data) {\r\n if (!data.checkoutUrl) return;\r\n window.open(data.checkoutUrl, '_blank', 'noopener,noreferrer');\r\n form.reset();\r\n globalStore.depositWithdrawal.setOpen(false);\r\n },\r\n onError(error) {\r\n toaster.error({\r\n description: error.message,\r\n });\r\n },\r\n });\r\n\r\n const depositsCountQuery = useDepositsCountQuery();\r\n const depositsCount = depositsCountQuery.data ?? 0;\r\n const paymentSettingsQuery = usePaymentSettingsQuery();\r\n const paymentSettings = paymentSettingsQuery.data;\r\n const gatewaySettings = paymentSettings?.mayaDepositGatewaySettings;\r\n const maximumAmount = parseDecimal(gatewaySettings?.maximumAmount, 0);\r\n const minimumAmount =\r\n depositsCount <= 0\r\n ? parseDecimal(paymentSettingsQuery.data?.minimumFirstDepositAmount, 0)\r\n : parseDecimal(gatewaySettings?.minimumAmount, 0);\r\n\r\n const promosQuery = useAvailablePromosQuery();\r\n const promos = promosQuery.data ?? [];\r\n\r\n const definition = z\r\n .object({\r\n amount: z.string().superRefine((val, ctx) => {\r\n const n = parseDecimal(val, 0);\r\n if (n < minimumAmount) {\r\n ctx.addIssue({\r\n type: 'number',\r\n code: z.ZodIssueCode.too_small,\r\n inclusive: true,\r\n minimum: minimumAmount,\r\n message: `Minimum amount is ${minimumAmount.toLocaleString()}`,\r\n });\r\n }\r\n\r\n if (n > maximumAmount) {\r\n ctx.addIssue({\r\n type: 'number',\r\n code: z.ZodIssueCode.too_big,\r\n inclusive: true,\r\n maximum: maximumAmount,\r\n message: `Maximum amount is ${maximumAmount.toLocaleString()}`,\r\n });\r\n }\r\n }),\r\n promo: z.string().optional().nullable(),\r\n })\r\n .superRefine((value, ctx) => {\r\n const promo = promos.find((o) => o.id === value.promo);\r\n const promoMinAmount = parseDecimal(promo?.minimumDepositAmount, 0);\r\n const promoMaxAmount = parseDecimal(promo?.maximumDepositAmount, 0);\r\n const amount = parseDecimal(value.amount, 0);\r\n\r\n if (promo && amount < promoMinAmount) {\r\n ctx.addIssue({\r\n path: ['amount'],\r\n code: z.ZodIssueCode.custom,\r\n message: `Minimum amount for this promo is ${promoMinAmount.toLocaleString()}`,\r\n });\r\n }\r\n\r\n if (promo && amount > promoMaxAmount) {\r\n ctx.addIssue({\r\n path: ['amount'],\r\n code: z.ZodIssueCode.custom,\r\n message: `Maximum amount for this promo is ${promoMaxAmount}`,\r\n });\r\n }\r\n });\r\n\r\n const form = useForm({\r\n mode: 'all',\r\n resolver: zodResolver(definition),\r\n defaultValues: {\r\n amount: '0',\r\n promo: null,\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (minimumAmount) {\r\n form.reset({\r\n amount: minimumAmount.toString(),\r\n promo: null,\r\n });\r\n }\r\n }, [form, minimumAmount]);\r\n\r\n const handleSubmit = form.handleSubmit(async (data) => {\r\n createDepositMutation.mutate({\r\n amount: data.amount.toString(),\r\n promo: data.promo ?? undefined,\r\n });\r\n });\r\n\r\n return (\r\n <form onSubmit={handleSubmit} noValidate>\r\n <Controller\r\n control={form.control}\r\n name=\"amount\"\r\n render={(o) => (\r\n <Field.Root invalid={!!form.formState.errors.amount}>\r\n <NumberInput.Root\r\n min={0}\r\n step={1}\r\n value={o.field.value}\r\n onValueChange={(details) => {\r\n o.field.onChange(details.value);\r\n }}\r\n formatOptions={{\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 0,\r\n }}\r\n allowMouseWheel\r\n >\r\n <NumberInput.Label>\r\n Enter amount you want to deposit\r\n </NumberInput.Label>\r\n <NumberInput.Control>\r\n <NumberInput.Input />\r\n <NumberInput.IncrementTrigger>\r\n <ChevronUpIcon />\r\n </NumberInput.IncrementTrigger>\r\n <NumberInput.DecrementTrigger>\r\n <ChevronDownIcon />\r\n </NumberInput.DecrementTrigger>\r\n </NumberInput.Control>\r\n </NumberInput.Root>\r\n <Field.ErrorText>\r\n {form.formState.errors.amount?.message}\r\n </Field.ErrorText>\r\n </Field.Root>\r\n )}\r\n />\r\n\r\n <AmountChoices\r\n value={parseDecimal(form.watch('amount'), 0)}\r\n onChange={(value) => {\r\n form.setValue('amount', value.toString(), {\r\n shouldTouch: true,\r\n shouldDirty: true,\r\n shouldValidate: true,\r\n });\r\n }}\r\n min={minimumAmount}\r\n max={maximumAmount}\r\n className=\"mt-xl\"\r\n />\r\n\r\n <Controller\r\n control={form.control}\r\n name=\"promo\"\r\n render={(o) => (\r\n <AvailablePromos\r\n className=\"mt-4xl\"\r\n value={o.field.value}\r\n onChange={o.field.onChange}\r\n />\r\n )}\r\n />\r\n\r\n <p className=\"mt-4xl text-xs\">\r\n Upon clicking the deposit button, you agree to the{' '}\r\n <button type=\"button\" className=\"underline underline-offset-2\">\r\n Terms of Use and Privacy Policy\r\n </button>\r\n .\r\n </p>\r\n <Button\r\n type=\"submit\"\r\n className=\"mt-4.5\"\r\n disabled={createDepositMutation.isPending}\r\n onClick={async (e) => {\r\n const ok = await form.trigger('amount');\r\n if (!ok) return;\r\n if (promos.length <= 0) return;\r\n if (form.getValues('promo')) return;\r\n e.preventDefault();\r\n disclosure.setOpen(true);\r\n }}\r\n >\r\n {createDepositMutation.isPending ? (\r\n <>\r\n <SpinnerIcon />\r\n Processing...\r\n </>\r\n ) : (\r\n 'Deposit'\r\n )}\r\n </Button>\r\n\r\n <AlertDialog.Root\r\n role=\"alertdialog\"\r\n open={disclosure.open}\r\n onOpenChange={(details) => {\r\n disclosure.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Portal>\r\n <AlertDialog.Backdrop className=\"!z-[calc(var(--z-dialog)+10)]\" />\r\n <AlertDialog.Positioner className=\"!z-[calc(var(--z-dialog)+25)]\">\r\n <AlertDialog.Content>\r\n <AlertDialog.Header>\r\n <div className=\"flex size-12 items-center justify-center rounded-full bg-[#FEE4E2] text-[#D92D20]\">\r\n <AlertCircleIcon />\r\n </div>\r\n <AlertDialog.CloseTrigger>\r\n <XIcon />\r\n </AlertDialog.CloseTrigger>\r\n </AlertDialog.Header>\r\n <AlertDialog.Body>\r\n <AlertDialog.Title>\r\n Submit deposit request without promo?\r\n </AlertDialog.Title>\r\n <AlertDialog.Description>\r\n You haven’t selected a promo. Are you sure you want to\r\n proceed without one?\r\n </AlertDialog.Description>\r\n </AlertDialog.Body>\r\n <AlertDialog.Footer>\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => {\r\n disclosure.setOpen(false);\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n onClick={() => {\r\n handleSubmit();\r\n disclosure.setOpen(false);\r\n }}\r\n >\r\n Proceed\r\n </Button>\r\n </AlertDialog.Footer>\r\n </AlertDialog.Content>\r\n </AlertDialog.Positioner>\r\n </Portal>\r\n </AlertDialog.Root>\r\n </form>\r\n );\r\n}\r\n","import {\r\n createMayaDeposit,\r\n getDeposit,\r\n type CreateGCashDepositInput,\r\n type Deposit,\r\n} from '@opexa/portal-sdk-core';\r\nimport { ObjectId, ObjectType } from '@opexa/portal-sdk-core/object-id';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Mutation } from '../../types';\r\nimport { createPoll } from '../../utils/createPoll';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { getCreateMayaDepositMutationKey } from './getCreateMayaDepositMutationKey';\r\n\r\nexport const useCreateMayaDepositMutation: Mutation<\r\n Deposit,\r\n Omit<CreateGCashDepositInput, 'id'>\r\n> = (config) => {\r\n const queryClient = getQueryClient();\r\n\r\n const mutation = useMutation({\r\n ...config,\r\n mutationKey: getCreateMayaDepositMutationKey(),\r\n mutationFn: async (input) => {\r\n const id = ObjectId.generate(ObjectType.Deposit).toString();\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n await createMayaDeposit(\r\n {\r\n id,\r\n ...input,\r\n },\r\n {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n\r\n const poll = createPoll(\r\n async () => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getDeposit(id, {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n {\r\n until(res) {\r\n return !!res?.checkoutUrl;\r\n },\r\n interval: 1000,\r\n maxAttempt: 5,\r\n },\r\n );\r\n\r\n const res = await poll();\r\n\r\n if (!res?.checkoutUrl) {\r\n const error = new Error();\r\n error.name = 'MayaDepositError';\r\n error.message = 'Failed to process GCash deposit';\r\n throw error;\r\n }\r\n\r\n return res;\r\n },\r\n });\r\n\r\n return mutation;\r\n};\r\n","import type { MutationKey } from '@tanstack/react-query';\r\n\r\nexport const getCreateMayaDepositMutationKey = (): MutationKey => [\r\n 'mutations/createMayaDeposit',\r\n];\r\n","export function OnlineBankDeposit() {\r\n return null;\r\n}\r\n","export function QRPHDeposit() {\r\n return null;\r\n}\r\n","export function Withdrawal() {\r\n return null;\r\n}\r\n","'use client';\r\n\r\nimport { Portal } from '@ark-ui/react';\r\nimport type { ImageProps } from 'next/image';\r\nimport Image from 'next/image';\r\nimport { useRef } from 'react';\r\nimport pagcorLogo from '../../images/pagcor.png';\r\nimport responsibleGamingLogo from '../../images/responsible-gaming.png';\r\nimport { Button, Dialog } from '../../ui';\r\nimport { useDisclaimer } from './useDisclaimer';\r\n\r\nexport interface DisclaimerProps {\r\n logo: ImageProps['src'];\r\n}\r\n\r\nexport function Disclaimer(props: DisclaimerProps) {\r\n const disclaimer = useDisclaimer();\r\n const acceptTriggerRef = useRef<HTMLButtonElement>(null);\r\n\r\n return (\r\n <Dialog.Root\r\n open={disclaimer.open}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n initialFocusEl={() => acceptTriggerRef.current}\r\n >\r\n <Portal>\r\n <Dialog.Backdrop />\r\n <Dialog.Positioner>\r\n <Dialog.Content className=\"flex h-full w-full flex-col items-start bg-white p-3xl lg:mx-auto lg:h-auto lg:w-[400px] lg:rounded-xl\">\r\n <Image\r\n src={props.logo}\r\n alt=\"\"\r\n width={200}\r\n height={100}\r\n className=\"mx-auto h-auto w-[120px]\"\r\n draggable={false}\r\n />\r\n\r\n <div className=\"w-full grow\">\r\n <Dialog.Title className=\"mt-3xl text-center text-lg font-semibold\">\r\n Age Verification\r\n </Dialog.Title>\r\n <Dialog.Description className=\"text-gray-600 mt-xs text-center text-sm\">\r\n By entering this website I acknowledge and confirmI am 21 years\r\n of age and I agree with the{' '}\r\n <button\r\n type=\"button\"\r\n className=\"text-accent-700 underline underline-offset-2\"\r\n >\r\n Terms and Conditions.\r\n </button>\r\n </Dialog.Description>\r\n\r\n <div className=\"mt-5 flex items-center justify-center gap-3xl\">\r\n <Image\r\n src={pagcorLogo}\r\n alt=\"\"\r\n className=\"h-[88px] w-auto shrink-0\"\r\n draggable={false}\r\n />\r\n\r\n <Image\r\n src={responsibleGamingLogo}\r\n alt=\"\"\r\n className=\"h-[62px] w-auto shrink-0\"\r\n draggable={false}\r\n />\r\n </div>\r\n </div>\r\n\r\n <Button\r\n ref={acceptTriggerRef}\r\n type=\"button\"\r\n className=\"mt-4xl\"\r\n onClick={disclaimer.close}\r\n >\r\n Accept\r\n </Button>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n","import { addMinutes } from 'date-fns';\r\nimport { clamp } from 'lodash-es';\r\nimport { useLocalStorage, useTimeout } from 'usehooks-ts';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { useSessionQuery } from '../../hooks/useSessionQuery/useSessionQuery';\r\n\r\nexport function useDisclaimer() {\r\n 'use no memo';\r\n\r\n const sessionQuery = useSessionQuery();\r\n const disclaimerStore = useGlobalStore(\r\n useShallow((state) => state.disclaimer),\r\n );\r\n\r\n const [refreshPausedUntil, setRefreshPausedUntil] =\r\n useLocalStorage<Date | null>(\r\n 'WebPortalDisclaimerRefreshPausedUntil',\r\n null,\r\n {\r\n serializer(v) {\r\n return v?.toISOString() ?? '';\r\n },\r\n deserializer(v) {\r\n return v ? new Date(v) : null;\r\n },\r\n },\r\n );\r\n\r\n const now = new Date();\r\n\r\n const refetchPausedUntilInMs = refreshPausedUntil\r\n ? clamp(refreshPausedUntil.getTime() - now.getTime(), 0, Infinity)\r\n : /* set to zero to trigger timeout function */ 0;\r\n\r\n useTimeout(() => {\r\n disclaimerStore.setOpen(true);\r\n }, refetchPausedUntilInMs);\r\n\r\n return {\r\n open: sessionQuery.isLoading\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated'\r\n ? false\r\n : disclaimerStore.open,\r\n close: () => {\r\n disclaimerStore.setOpen(false);\r\n setRefreshPausedUntil(addMinutes(new Date(), 30));\r\n },\r\n };\r\n}\r\n","import { createContext, useContext } from 'react';\r\nimport invariant from 'tiny-invariant';\r\nimport type { UseFeatureFlagReturn } from './useFeatureFlag';\r\n\r\nexport const FeatureFlagContext = createContext<UseFeatureFlagReturn | null>(\r\n null,\r\n);\r\n\r\nexport const useFeatureFlagContext = () => {\r\n const context = useContext(FeatureFlagContext);\r\n invariant(context);\r\n return context;\r\n};\r\n","import { Portal, Presence } from '@ark-ui/react';\r\nimport type { ReactNode } from 'react';\r\nimport { FeatureFlagContext } from './FeatureFlagContext';\r\nimport { useFeatureFlag } from './useFeatureFlag';\r\n\r\ninterface FeatureFlagProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nexport function FeatureFlagProvider(props: FeatureFlagProviderProps) {\r\n const context = useFeatureFlag();\r\n\r\n return (\r\n <FeatureFlagContext value={context}>\r\n {props.children}\r\n\r\n <Portal>\r\n <Presence\r\n lazyMount\r\n unmountOnExit\r\n present={context.enabled}\r\n className=\"fixed bottom-2 left-1/2 z-toast flex -translate-x-1/2 gap-1 rounded-full bg-black/50 px-1.5 py-0.5 text-2xs leading-tight text-white backdrop-blur-sm ui-open:animate-fade-in ui-closed:animate-fade-out\"\r\n suppressHydrationWarning\r\n >\r\n Experimental features are enabled.{' '}\r\n <button\r\n type=\"button\"\r\n onClick={context.disable}\r\n className=\"underline underline-offset-2\"\r\n >\r\n Disable\r\n </button>\r\n </Presence>\r\n </Portal>\r\n </FeatureFlagContext>\r\n );\r\n}\r\n","import { usePathname, useRouter, useSearchParams } from 'next/navigation';\r\nimport { useEffect } from 'react';\r\nimport { useLocalStorage } from 'usehooks-ts';\r\n\r\nexport interface UseFeatureFlagReturn {\r\n enabled: boolean;\r\n disable: () => void;\r\n}\r\n\r\nexport function useFeatureFlag() {\r\n const [enabled, setEnabled] = useLocalStorage(\r\n 'WebPortalFeatureFlagEnabled',\r\n false,\r\n );\r\n\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n\r\n const disable = async () => {\r\n router.push(pathname);\r\n setTimeout(() => {\r\n setEnabled(false);\r\n }, 250);\r\n };\r\n\r\n useEffect(() => {\r\n if (enabled) return;\r\n if (!searchParams.has('future')) return;\r\n setEnabled(true);\r\n }, [enabled, searchParams, setEnabled]);\r\n\r\n return {\r\n enabled,\r\n disable,\r\n };\r\n}\r\n","'use client';\r\n\r\nimport { Dialog, Portal, Presence } from '@ark-ui/react';\r\nimport type { ImageProps } from 'next/image';\r\nimport Image from 'next/image';\r\nimport { useRef } from 'react';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useDisclosure } from '../../hooks/useDisclosure';\r\nimport { useEndGameSessionMutation } from '../../hooks/useEndGameSessionMutation/useEndGameSessionMutation';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { AlertCircleIcon } from '../../icons/AlertCircleIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { Expand03Icon } from '../../icons/Expand03Icon';\r\nimport { SpinnerIcon } from '../../icons/SpinnerIcon';\r\nimport { Wallet02Icon } from '../../icons/Wallet02Icon';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { AlertDialog, Button, IconButton } from '../../ui';\r\n\r\nexport interface GameLaunchProps {\r\n logo: ImageProps['src'];\r\n}\r\n\r\nexport function GameLaunch(props: GameLaunchProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n\r\n const maximizeDisclosure = useDisclosure({\r\n defaultOpen: true,\r\n onOpenChange(open) {\r\n if (!open) {\r\n setTimeout(() => {\r\n ref.current?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n });\r\n }, 25);\r\n }\r\n },\r\n });\r\n\r\n const cancelDisclosure = useDisclosure();\r\n const endGameSessionMutation = useEndGameSessionMutation();\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n gameLaunch: ctx.gameLaunch,\r\n depositWithdrawal: ctx.depositWithdrawal,\r\n })),\r\n );\r\n\r\n async function endGameSession() {\r\n if (globalStore.gameLaunch.details.status === 'PLAYING') {\r\n await endGameSessionMutation.mutateAsync({\r\n game: globalStore.gameLaunch.details.game,\r\n session: globalStore.gameLaunch.details.session,\r\n });\r\n }\r\n\r\n maximizeDisclosure.setOpen(true);\r\n\r\n globalStore.gameLaunch.setDetails({\r\n status: 'WAITING',\r\n session: null,\r\n game: null,\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n <Presence\r\n ref={ref}\r\n present={\r\n globalStore.gameLaunch.details.status !== 'WAITING' &&\r\n !maximizeDisclosure.open\r\n }\r\n lazyMount\r\n unmountOnExit={globalStore.gameLaunch.details.status === 'WAITING'}\r\n className=\"border-gray-200 w-full overflow-hidden rounded-lg border ui-open:animate-fade-in ui-closed:animate-fade-out\"\r\n >\r\n <section className=\"aspect-[960/540] w-full\">\r\n {globalStore.gameLaunch.details.status === 'LOADING' && (\r\n <div className=\"flex size-full items-center justify-center\">\r\n <SpinnerIcon className=\"size-8\" />\r\n </div>\r\n )}\r\n\r\n {globalStore.gameLaunch.details.status === 'FAILED' && (\r\n <div>{/* TODO */}</div>\r\n )}\r\n\r\n {globalStore.gameLaunch.details.status === 'PLAYING' && (\r\n <iframe\r\n src={globalStore.gameLaunch.details.session?.launchUrl ?? ''}\r\n className=\"size-full\"\r\n />\r\n )}\r\n </section>\r\n <section className=\"border-gray-200 flex justify-end gap-lg border-t p-2\">\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => {\r\n if (globalStore.gameLaunch.details.status !== 'PLAYING') {\r\n endGameSession();\r\n return;\r\n }\r\n\r\n cancelDisclosure.setOpen(true);\r\n }}\r\n disabled={globalStore.gameLaunch.details.status === 'LOADING'}\r\n aria-label=\"Quit Game\"\r\n title=\"Quit\"\r\n >\r\n <XIcon className=\"size-5\" />\r\n </IconButton>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => maximizeDisclosure.setOpen(true)}\r\n title=\"Maximize\"\r\n aria-label=\"Maximize\"\r\n >\r\n <Expand03Icon className=\"size-5\" />\r\n </IconButton>\r\n </section>\r\n </Presence>\r\n\r\n <Dialog.Root\r\n open={\r\n globalStore.gameLaunch.details.status !== 'WAITING' &&\r\n maximizeDisclosure.open &&\r\n !cancelDisclosure.open\r\n }\r\n lazyMount\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Portal>\r\n <Dialog.Positioner className=\"z-dialog fixed inset-0\">\r\n <Dialog.Content className=\"ui-open:animate-dialog-in ui-closed:animate-dialog-out flex size-full flex-col bg-white\">\r\n <section className=\"grid grid-cols-[22rem_auto_22rem] items-center px-4 py-2\">\r\n <div className=\"flex items-center justify-start gap-2\">\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => {\r\n if (globalStore.gameLaunch.details.status !== 'PLAYING') {\r\n endGameSession();\r\n return;\r\n }\r\n\r\n cancelDisclosure.setOpen(true);\r\n }}\r\n disabled={\r\n globalStore.gameLaunch.details.status === 'LOADING'\r\n }\r\n title=\"Quit\"\r\n aria-label=\"Quit Game\"\r\n >\r\n <ChevronLeftIcon className=\"size-5\" />\r\n </IconButton>\r\n </div>\r\n <div className=\"flex items-center justify-center\">\r\n {!!props.logo && (\r\n <Image\r\n src={props.logo}\r\n height={40}\r\n width={80}\r\n alt=\"\"\r\n className=\"h-9 w-auto shrink-0\"\r\n />\r\n )}\r\n </div>\r\n <div className=\"flex justify-end gap-2\">\r\n <Button\r\n size=\"sm\"\r\n fullWidth={false}\r\n onClick={() => {\r\n globalStore.depositWithdrawal.setOpen(true);\r\n }}\r\n >\r\n <Wallet02Icon className=\"size-5\" />\r\n Wallet\r\n </Button>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => maximizeDisclosure.setOpen(false)}\r\n title=\"Minimize\"\r\n aria-label=\"Minimize\"\r\n >\r\n <Expand03Icon className=\"size-5\" />\r\n </IconButton>\r\n </div>\r\n </section>\r\n <section className=\"grow\">\r\n {globalStore.gameLaunch.details.status === 'LOADING' && (\r\n <div className=\"flex size-full items-center justify-center\">\r\n <SpinnerIcon className=\"size-8\" />\r\n </div>\r\n )}\r\n\r\n {globalStore.gameLaunch.details.status === 'FAILED' && (\r\n <div>{/* TODO: Error */}</div>\r\n )}\r\n\r\n {globalStore.gameLaunch.details.status === 'PLAYING' && (\r\n <iframe\r\n src={globalStore.gameLaunch.details.session.launchUrl ?? ''}\r\n className=\"size-full\"\r\n />\r\n )}\r\n </section>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n\r\n <AlertDialog.Root\r\n role=\"alertdialog\"\r\n open={cancelDisclosure.open}\r\n onOpenChange={(details) => {\r\n cancelDisclosure.setOpen(details.open);\r\n }}\r\n lazyMount\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Portal>\r\n <AlertDialog.Backdrop />\r\n <AlertDialog.Positioner>\r\n <AlertDialog.Content>\r\n <AlertDialog.Header>\r\n <div className=\"flex size-12 items-center justify-center rounded-full bg-[#FEE4E2] text-[#D92D20]\">\r\n <AlertCircleIcon />\r\n </div>\r\n <AlertDialog.CloseTrigger>\r\n <XIcon />\r\n </AlertDialog.CloseTrigger>\r\n </AlertDialog.Header>\r\n <AlertDialog.Body>\r\n <AlertDialog.Title>Quit Game</AlertDialog.Title>\r\n <AlertDialog.Description>\r\n Are you sure you want to quit?\r\n </AlertDialog.Description>\r\n </AlertDialog.Body>\r\n <AlertDialog.Context>\r\n {(api) => (\r\n <AlertDialog.Footer>\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n disabled={endGameSessionMutation.isPending}\r\n onClick={() => {\r\n api.setOpen(false);\r\n }}\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n colorScheme=\"danger\"\r\n disabled={endGameSessionMutation.isPending}\r\n onClick={async () => {\r\n await endGameSession();\r\n api.setOpen(false);\r\n }}\r\n >\r\n Proceed\r\n </Button>\r\n </AlertDialog.Footer>\r\n )}\r\n </AlertDialog.Context>\r\n </AlertDialog.Content>\r\n </AlertDialog.Positioner>\r\n </Portal>\r\n </AlertDialog.Root>\r\n </>\r\n );\r\n}\r\n","import {\r\n endGameSession,\r\n endGameSession__legacy,\r\n type Game,\r\n type GameSession,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport {\r\n ENVIRONMENT,\r\n LEGACY_GAME_PROVIDERS,\r\n PLATFORM_CODE,\r\n} from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Mutation } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { getEndGameSessionMutationKey } from './getEndGameSessionMutationKey';\r\n\r\nexport const useEndGameSessionMutation: Mutation<\r\n void,\r\n {\r\n game: Game;\r\n session: GameSession;\r\n }\r\n> = (config) => {\r\n const queryClient = getQueryClient();\r\n\r\n return useMutation({\r\n ...config,\r\n mutationKey: getEndGameSessionMutationKey(),\r\n mutationFn: async (input) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n if (LEGACY_GAME_PROVIDERS.includes(input.game.provider)) {\r\n await endGameSession__legacy(input.session.id, {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n } else {\r\n await endGameSession(input.session.id, {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n }\r\n },\r\n });\r\n};\r\n","import type { MutationKey } from '@tanstack/react-query';\r\n\r\nexport const getEndGameSessionMutationKey = (): MutationKey => [\r\n 'mutations/endGameSession',\r\n];\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function Expand03Icon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M21 14V16.2C21 17.8802 21 18.7202 20.673 19.362C20.3854 19.9265 19.9265 20.3854 19.362 20.673C18.7202 21 17.8802 21 16.2 21H14M10 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V10M15 9L21 3M21 3H15M21 3V9M9 15L3 21M3 21H9M3 21L3 15\" />\r\n </svg>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { ark, type HTMLArkProps } from '@ark-ui/react';\r\nimport type { Game } from '@opexa/portal-sdk-core';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useCreateGameSessionMutation } from '../../hooks/useCreateGameSessionMutation/useCreateGameSessionMutation';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { useSessionQuery } from '../../hooks/useSessionQuery/useSessionQuery';\r\nimport { dataAttr } from '../../utils/dataAttr';\r\nimport { toaster } from '../../utils/toaster';\r\n\r\nexport interface GameLaunchTriggerProps extends HTMLArkProps<'button'> {\r\n game: Game;\r\n}\r\n\r\nexport function GameLaunchTrigger(props: GameLaunchTriggerProps) {\r\n const sessionQuery = useSessionQuery();\r\n const createGameSessionMutation = useCreateGameSessionMutation();\r\n const globalStore = useGlobalStore(\r\n useShallow((ctx) => ({\r\n signIn: ctx.signIn,\r\n gameLaunch: ctx.gameLaunch,\r\n })),\r\n );\r\n\r\n const disabled =\r\n sessionQuery.data?.status === 'unauthenticated'\r\n ? false\r\n : globalStore.gameLaunch.details.status !== 'WAITING'\r\n ? true\r\n : props.disabled;\r\n\r\n return (\r\n <ark.button\r\n type=\"button\"\r\n {...props}\r\n onClick={async (e) => {\r\n props.onClick?.(e);\r\n\r\n if (sessionQuery.data?.status === 'unauthenticated') {\r\n return globalStore.signIn.setOpen(true);\r\n }\r\n\r\n globalStore.gameLaunch.setDetails({\r\n game: props.game,\r\n status: 'LOADING',\r\n session: null,\r\n });\r\n\r\n try {\r\n const session = await createGameSessionMutation.mutateAsync(\r\n props.game,\r\n );\r\n\r\n globalStore.gameLaunch.setDetails({\r\n game: props.game,\r\n session,\r\n status: 'PLAYING',\r\n });\r\n } catch (error) {\r\n globalStore.gameLaunch.setDetails({\r\n game: props.game,\r\n session: null,\r\n status: 'FAILED',\r\n });\r\n\r\n toaster.error({\r\n description:\r\n error instanceof Error ? error.message : 'Failed to launch game',\r\n });\r\n }\r\n }}\r\n disabled={disabled}\r\n data-disabled={dataAttr(disabled)}\r\n data-state={\r\n sessionQuery.data?.status === 'unauthenticated'\r\n ? globalStore.signIn.open\r\n ? 'open'\r\n : 'closed'\r\n : globalStore.gameLaunch.details.status === 'WAITING'\r\n ? 'closed'\r\n : 'open'\r\n }\r\n />\r\n );\r\n}\r\n","import {\r\n createGameSession,\r\n createGameSession__legacy,\r\n getGameSession,\r\n getGameSession__legacy,\r\n type Game,\r\n type GameSession,\r\n} from '@opexa/portal-sdk-core';\r\nimport { ObjectId, ObjectType } from '@opexa/portal-sdk-core/object-id';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport {\r\n ENVIRONMENT,\r\n LEGACY_GAME_PROVIDERS,\r\n PLATFORM_CODE,\r\n} from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { Mutation } from '../../types';\r\nimport { createPoll } from '../../utils/createPoll';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { getCreateGameSessionMutationKey } from './getCreateGameSessionMutationKey';\r\n\r\nexport const useCreateGameSessionMutation: Mutation<GameSession, Game> = (\r\n config,\r\n) => {\r\n const queryClient = getQueryClient();\r\n\r\n return useMutation({\r\n ...config,\r\n mutationKey: getCreateGameSessionMutationKey(),\r\n mutationFn: async (game) => {\r\n const id = ObjectId.generate(ObjectType.GameSession).toString();\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n if (LEGACY_GAME_PROVIDERS.includes(game.provider)) {\r\n await createGameSession__legacy(\r\n {\r\n id,\r\n game: game.reference,\r\n },\r\n {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n\r\n const data = await createPoll(\r\n async () => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getGameSession__legacy(id, {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n {\r\n until: (r) => !!r?.launchUrl,\r\n interval: 1000,\r\n maxAttempt: 5,\r\n },\r\n )();\r\n\r\n if (!data?.launchUrl) {\r\n const error = new Error();\r\n error.name = 'GameSessionError';\r\n error.message = 'Failed to launch game';\r\n throw error;\r\n }\r\n\r\n return data;\r\n } else {\r\n await createGameSession(\r\n {\r\n id,\r\n game: game.reference,\r\n },\r\n {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n\r\n const data = await createPoll(\r\n async () => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getGameSession(id, {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n {\r\n until: (r) => !!r?.launchUrl,\r\n interval: 1000,\r\n maxAttempt: 5,\r\n },\r\n )();\r\n\r\n if (!data?.launchUrl) {\r\n const error = new Error();\r\n error.name = 'GameSessionError';\r\n error.message = 'Failed to launch game';\r\n throw error;\r\n }\r\n\r\n return data;\r\n }\r\n },\r\n });\r\n};\r\n","import type { MutationKey } from '@tanstack/react-query';\r\n\r\nexport const getCreateGameSessionMutationKey = (): MutationKey => [\r\n 'mutations/createGameSession',\r\n];\r\n","import { type GamesInput, getGames } from '@opexa/portal-sdk-core';\r\nimport { ENVIRONMENT, PLATFORM_ID, SITE_ID } from '../../constants';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getGamesQueryKey } from './getGamesQueryKey';\r\n\r\nexport const prefetchGamesQuery = async (input?: GamesInput) => {\r\n await getQueryClient().prefetchInfiniteQuery({\r\n queryKey: getGamesQueryKey(input),\r\n queryFn: async ({ pageParam, signal }) => {\r\n return await getGames(\r\n {\r\n ...input,\r\n after: pageParam,\r\n },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Site-ID': SITE_ID,\r\n 'Platform-ID': PLATFORM_ID,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n });\r\n};\r\n","import type { GamesInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getGamesQueryKey = (input?: GamesInput): QueryKey => ['queries/games', input];\n","'use client';\r\n\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from 'embla-carousel-react';\r\nimport Image from 'next/image';\r\nimport Link from 'next/link';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { useGamesQuery } from '../../hooks/useGamesQuery/useGamesQuery';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { ArrowRightIcon } from '../../icons/ArrowRightIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { SpinnerIcon } from '../../icons/SpinnerIcon';\r\nimport { Button } from '../../ui';\r\nimport { GameLaunchTrigger } from '../GameLaunch';\r\nimport type { GamesProps } from './Games';\r\n\r\nexport function GamesContent(props: GamesProps) {\r\n const numOfRows = props.numOfRows ?? 1;\r\n\r\n const gamesQuery = useGamesQuery({\r\n first: (numOfRows + 1) * 6,\r\n filter: props.filter,\r\n });\r\n\r\n const games =\r\n gamesQuery.data?.pages\r\n .map((page) => page.edges.map((edge) => edge.node))\r\n .flat() ?? [];\r\n\r\n const [emblaRef, emblaApi] = useEmblaCarousel({\r\n align: 'start',\r\n slidesToScroll: 3,\r\n breakpoints: {\r\n '(min-width: 1024px)': {\r\n slidesToScroll: 6,\r\n },\r\n },\r\n });\r\n\r\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true);\r\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true);\r\n\r\n const onPrevButtonClick = useCallback(\r\n () => emblaApi?.scrollPrev(),\r\n [emblaApi],\r\n );\r\n const onNextButtonClick = useCallback(async () => {\r\n if (!emblaApi?.canScrollNext() && gamesQuery.hasNextPage) {\r\n await gamesQuery.fetchNextPage();\r\n emblaApi?.reInit();\r\n await new Promise((resolve) => setTimeout(resolve, 1));\r\n }\r\n\r\n emblaApi?.scrollNext();\r\n }, [emblaApi, gamesQuery]);\r\n\r\n const onSelect = useCallback((emblaApi: UseEmblaCarouselType[1]) => {\r\n setPrevBtnDisabled(!emblaApi?.canScrollPrev());\r\n setNextBtnDisabled(!emblaApi?.canScrollNext());\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!emblaApi) return;\r\n onSelect(emblaApi);\r\n emblaApi.on('reInit', onSelect).on('select', onSelect);\r\n }, [emblaApi, onSelect]);\r\n\r\n return (\r\n <div className={props.className}>\r\n <div className=\"flex items-center\">\r\n <h2 className=\"text-lg font-semibold\">{props.heading}</h2>\r\n <div className=\"grow\" />\r\n <div className=\"flex items-center justify-center gap-xl\">\r\n <Link\r\n href={props.seeAllUrl}\r\n className=\"flex gap-sm text-sm font-semibold\"\r\n >\r\n See All\r\n <ChevronRightIcon className=\"size-5 lg:hidden\" />\r\n </Link>\r\n <div className=\"hidden lg:flex\">\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n onClick={onPrevButtonClick}\r\n disabled={prevBtnDisabled}\r\n aria-label=\"Previous\"\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n onClick={onNextButtonClick}\r\n disabled={\r\n nextBtnDisabled && !gamesQuery.hasNextPage\r\n ? true\r\n : gamesQuery.isFetchingNextPage\r\n }\r\n aria-label=\"Next\"\r\n >\r\n {gamesQuery.isFetchingNextPage ? (\r\n <SpinnerIcon className=\"size-5\" />\r\n ) : (\r\n <ArrowRightIcon className=\"size-5\" />\r\n )}\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div ref={emblaRef} className=\"relative mt-lg lg:overflow-hidden\">\r\n <div\r\n className={twMerge(\r\n 'grid auto-cols-[calc((100%-(0.375rem*2))/3)] grid-flow-col gap-sm lg:auto-cols-[calc((100%-(0.5rem*5))/6)] lg:gap-md',\r\n numOfRows === 3\r\n ? 'grid-rows-3'\r\n : numOfRows === 2\r\n ? 'grid-rows-2'\r\n : 'grid-rows-1',\r\n )}\r\n >\r\n {games.map((game) => (\r\n <GameLaunchTrigger\r\n key={game.id}\r\n game={game}\r\n className=\"block w-full\"\r\n >\r\n <Image\r\n src={game.image}\r\n alt=\"\"\r\n width={200}\r\n height={200}\r\n priority\r\n className=\"aspect-square w-full rounded-t-md object-cover\"\r\n />\r\n\r\n <span className=\"bg-gray-50 block w-full truncate rounded-b-md px-2 py-2.5 text-center text-xs font-semibold\">\r\n {game.name}\r\n </span>\r\n </GameLaunchTrigger>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n type Game,\r\n type GamesInput,\r\n type PaginatedQueryResult,\r\n getGames,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport { ENVIRONMENT, PLATFORM_ID, SITE_ID } from '../../constants';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getGamesQueryKey } from './getGamesQueryKey';\r\n\r\nexport const useGamesQuery: InfiniteQuery<\r\n PaginatedQueryResult<Game>,\r\n GamesInput\r\n> = (input, config) => {\r\n return useInfiniteQuery({\r\n refetchOnMount: false,\r\n refetchOnReconnect: false,\r\n refetchOnWindowFocus: false,\r\n ...config,\r\n queryKey: getGamesQueryKey(input),\r\n queryFn: ({ pageParam, signal }) => {\r\n return getGames(\r\n {\r\n ...input,\r\n after: pageParam,\r\n },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Site-ID': SITE_ID,\r\n 'Platform-ID': PLATFORM_ID,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo?.hasNextPage) {\r\n return lastPage?.pageInfo?.endCursor;\r\n }\r\n },\r\n });\r\n};\r\n","import type { ComponentPropsWithRef } from 'react';\n\nexport function ArrowLeftIcon(props: ComponentPropsWithRef<'svg'>) {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M19 12H5M5 12L12 19M5 12L12 5\" />\n </svg>\n );\n}\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function ArrowRightIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M5 12H19M19 12L12 5M19 12L12 19\" />\r\n </svg>\r\n );\r\n}\r\n","import type { GamesInput } from '@opexa/portal-sdk-core';\r\nimport { prefetchGamesQuery } from '../../hooks/useGamesQuery/prefetchGamesQuery';\r\nimport { GamesContent } from './GamesContent';\r\n\r\nexport interface GamesProps {\r\n heading: string;\r\n seeAllUrl: string;\r\n /** @default 1 */\r\n numOfRows?: 1 | 2 | 3;\r\n className?: string;\r\n filter?: GamesInput['filter'];\r\n}\r\n\r\nexport async function Games(props: GamesProps) {\r\n const numOfRows = props.numOfRows ?? 1;\r\n\r\n await prefetchGamesQuery({\r\n first: (numOfRows + 1) * 6,\r\n filter: props.filter,\r\n });\r\n\r\n return <GamesContent {...props} />;\r\n}\r\n","'use client';\r\n\r\nimport useEmblaCarousel from 'embla-carousel-react';\r\nimport Link from 'next/link';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { useJackpotsQuery } from '../../hooks/useJackpotsQuery/useJackpotsQuery';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { ArrowRightIcon } from '../../icons/ArrowRightIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { Button } from '../../ui';\r\nimport type { JackpotCounterProps } from './JackpotCounter';\r\nimport { JackpotCounterItem } from './JackpotCounterItem';\r\n\r\nexport function JackpotCounterContent(props: JackpotCounterProps) {\r\n const [emblaRef, emblaApi] = useEmblaCarousel({\r\n align: 'start',\r\n slidesToScroll: 1,\r\n });\r\n\r\n const scrollPrev = useCallback(() => {\r\n if (emblaApi) emblaApi.scrollPrev();\r\n }, [emblaApi]);\r\n\r\n const scrollNext = useCallback(() => {\r\n if (emblaApi) emblaApi.scrollNext();\r\n }, [emblaApi]);\r\n\r\n const [canScrollPrev, setCanScrollPrev] = useState(false);\r\n const [canScrollNext, setCanScrollNext] = useState(false);\r\n\r\n const onSelect = useCallback(() => {\r\n if (!emblaApi) return;\r\n setCanScrollPrev(emblaApi.canScrollPrev());\r\n setCanScrollNext(emblaApi.canScrollNext());\r\n }, [emblaApi]);\r\n\r\n useEffect(() => {\r\n if (!emblaApi) return;\r\n onSelect();\r\n emblaApi.on('select', onSelect);\r\n emblaApi.on('reInit', onSelect);\r\n }, [emblaApi, onSelect]);\r\n\r\n const jackpotsQuery = useJackpotsQuery({\r\n first: 100,\r\n filter: {\r\n status: {\r\n equal: 'ACTIVE',\r\n },\r\n deleted: {\r\n equal: false,\r\n },\r\n },\r\n sort: {\r\n cursor: 'POOL',\r\n order: 'DESC',\r\n },\r\n });\r\n\r\n const jackpots =\r\n jackpotsQuery.data?.pages[0].edges.map((edge) => edge.node) ?? [];\r\n\r\n if (jackpots.length <= 0) return null;\r\n\r\n return (\r\n <div className={props.className}>\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"text-lg font-semibold\">{props.heading}</div>\r\n <div className=\"flex items-center md:gap-3xl\">\r\n <Link\r\n href={props.seeAllUrl}\r\n className=\"flex gap-sm text-sm font-semibold\"\r\n >\r\n See All\r\n <ChevronRightIcon className=\"size-5 lg:hidden\" />\r\n </Link>\r\n\r\n <div className=\"hidden lg:flex\">\r\n <Button\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n aria-label=\"Previous\"\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n </Button>\r\n <Button\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n aria-label=\"Next\"\r\n >\r\n <span className=\"sr-only\">Next</span>\r\n <ArrowRightIcon className=\"size-5\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"relative mt-lg lg:overflow-hidden\" ref={emblaRef}>\r\n <div className=\"flex gap-2.5\">\r\n {jackpots.map((jackpot) => (\r\n <JackpotCounterItem\r\n key={jackpot.id}\r\n jackpot={jackpot}\r\n className={\r\n jackpots.length < 2\r\n ? 'w-full'\r\n : 'w-full lg:w-[calc((100%-0.75rem)/2)]'\r\n }\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n getJackpots,\r\n type Jackpot,\r\n type JackpotsInput,\r\n type PaginatedQueryResult,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getJackpotsQueryKey } from './getJackpotsQueryKey';\r\n\r\nexport const useJackpotsQuery: InfiniteQuery<\r\n PaginatedQueryResult<Jackpot>,\r\n JackpotsInput\r\n> = (input, config) => {\r\n const query = useInfiniteQuery({\r\n ...config,\r\n queryKey: getJackpotsQueryKey(input),\r\n queryFn: ({ pageParam, signal }) => {\r\n return getJackpots(\r\n { ...input, after: pageParam },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo.hasNextPage) {\r\n return lastPage.pageInfo.endCursor;\r\n }\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { JackpotsInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getJackpotsQueryKey = (input?: JackpotsInput): QueryKey => ['queries/jackpots', input];\n","'use client';\r\n\r\nimport { Progress } from '@ark-ui/react';\r\nimport type { Jackpot } from '@opexa/portal-sdk-core';\r\nimport Image from 'next/image';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { ArrowNarrowUpRightIcon } from '../../icons/ArrowNarrowUpRightIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport closeChest from '../../images/close-chest.png';\r\nimport openChest from '../../images/open-chest.png';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport styles from './JackpotCounter.module.css';\r\n\r\nexport interface JackpotCounterCardProps {\r\n jackpot: Jackpot;\r\n className?: string;\r\n}\r\n\r\nexport function JackpotCounterItem({\r\n jackpot,\r\n className,\r\n}: JackpotCounterCardProps) {\r\n const localeInfo = useLocaleInfo();\r\n\r\n const isPayingOut = jackpot.drawing;\r\n const jackpotAmount = isPayingOut\r\n ? jackpot.maximumJackpotPoolLimit\r\n : jackpot.pool;\r\n\r\n return (\r\n <div\r\n className={twMerge(\r\n 'bg-gray-50 border-gray-200 flex shrink-0 flex-col space-y-2 rounded-sm border p-3 text-center',\r\n className,\r\n )}\r\n >\r\n <div className=\"flex w-full justify-between\">\r\n <div className=\"flex flex-col gap-1\">\r\n {isPayingOut ? (\r\n <div className=\"border-gray-700 bg-gray-300 flex w-fit items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium\">\r\n <span className=\"full bg-gray-900 size-1.5 animate-pulse rounded\" />\r\n Paying Out\r\n </div>\r\n ) : (\r\n <div className=\"border-gray-700 bg-gray-300 flex w-fit items-center rounded-full border px-2 py-0.5 text-xs font-medium\">\r\n <ArrowNarrowUpRightIcon className=\"size-3.5\" />\r\n Accumulating\r\n </div>\r\n )}\r\n\r\n <div className=\"text-left text-lg font-medium\">{jackpot.name}</div>\r\n <div className=\"bg-gray-950 text-gray-300 w-fit rounded-md px-2 py-1 text-2xl font-bold\">\r\n {formatNumber(jackpotAmount, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n maxDecimalPlaces: 2,\r\n })}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <Image\r\n width={100}\r\n height={100}\r\n src={isPayingOut ? openChest : closeChest}\r\n alt=\"closeChest\"\r\n quality={100}\r\n className=\"h-25 w-25 size-full\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex justify-between\">\r\n <div className=\"text-xs font-medium\">\r\n {formatNumber(0, {\r\n currency: localeInfo.currency.code,\r\n compact: true,\r\n })}\r\n </div>\r\n\r\n <div className=\"relative flex items-center justify-end gap-1.5\">\r\n {isPayingOut ? (\r\n <div className=\"flex w-6 items-center\">\r\n <div\r\n className={twMerge(\r\n 'absolute left-0',\r\n styles['animate-arrow-red-flash-1'],\r\n )}\r\n >\r\n <ChevronLeftIcon className=\"size-4.5\" />\r\n </div>\r\n <div\r\n className={twMerge(\r\n 'absolute left-1.5',\r\n styles['animate-arrow-red-flash-2'],\r\n )}\r\n >\r\n <ChevronLeftIcon className=\"size-4.5\" />\r\n </div>\r\n <div\r\n className={twMerge(\r\n 'absolute left-3',\r\n styles['animate-arrow-red-flash-3'],\r\n )}\r\n >\r\n <ChevronLeftIcon className=\"size-4.5\" />\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\"flex w-6 items-center\">\r\n <div\r\n className={twMerge(\r\n 'absolute left-0',\r\n styles['animate-arrow-green-flash-1'],\r\n )}\r\n >\r\n <ChevronRightIcon className=\"size-4.5\" />\r\n </div>\r\n <div\r\n className={twMerge(\r\n 'absolute left-1.5',\r\n styles['animate-arrow-green-flash-2'],\r\n )}\r\n >\r\n <ChevronRightIcon className=\"size-4.5\" />\r\n </div>\r\n <div\r\n className={twMerge(\r\n 'absolute left-3',\r\n styles['animate-arrow-green-flash-3'],\r\n )}\r\n >\r\n <ChevronRightIcon className=\"size-4.5\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div className=\"text-xs font-medium\">\r\n {formatNumber(jackpot?.maximumJackpotPoolLimit, {\r\n currency: localeInfo.currency.code,\r\n compact: true,\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <Progress.Root\r\n className=\"bg-gray-200 h-2 w-full rounded-full\"\r\n max={100}\r\n value={33}\r\n >\r\n <Progress.Track className=\"bg-gray-950 h-full rounded-full\">\r\n <Progress.Range className=\"bg-gray-300 h-full rounded-full\" />\r\n </Progress.Track>\r\n </Progress.Root>\r\n\r\n <div className=\"mt-1 text-start text-[10px]\">\r\n {isPayingOut\r\n ? `The pot has hit ${formatNumber(jackpot?.maximumJackpotPoolLimit, {\r\n currency: localeInfo.currency.code,\r\n compact: true,\r\n })} Play now for your chance to win big! 🔥`\r\n : getAccumulatingJackpotDescription(\r\n Number(jackpot?.pool) ?? 0,\r\n Number(jackpot?.maximumJackpotPoolLimit) ?? 0,\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst getAccumulatingJackpotDescription = (\r\n part: number,\r\n total: number,\r\n): string => {\r\n const percentage = total === 0 ? 0 : (part / total) * 100;\r\n\r\n return percentage <= 90\r\n ? 'The jackpot is heating up! Keep playing to stay in the action and watch it grow!'\r\n : '🔥 It’s about to pop! Stay in the game for your shot at the prize!';\r\n};\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function ArrowNarrowUpRightIcon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M6 18L18 6M18 6H10M18 6V14\" />\r\n </svg>\r\n );\r\n}\r\n","import { JackpotCounterContent } from './JackpotCounterContent';\r\n\r\nexport interface JackpotCounterProps {\r\n heading: string;\r\n seeAllUrl: string;\r\n className?: string;\r\n}\r\n\r\nexport async function JackpotCounter(props: JackpotCounterProps) {\r\n /*\r\n await prefetchJackpotsQuery({\r\n first: 100,\r\n filter: {\r\n status: {\r\n equal: 'ACTIVE',\r\n },\r\n deleted: {\r\n equal: false,\r\n },\r\n },\r\n sort: {\r\n cursor: 'POOL',\r\n order: 'DESC',\r\n },\r\n });\r\n */\r\n\r\n return <JackpotCounterContent {...props} />;\r\n}\r\n","import Primitive from 'react-fast-marquee';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\nexport interface MarqueeProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function Marquee(props: MarqueeProps) {\r\n return (\r\n <div\r\n className={twMerge(\r\n 'border-gray-200 text-gray-700 flex gap-lg rounded-lg border p-1 pr-2.5 text-sm font-medium',\r\n props.className,\r\n )}\r\n >\r\n <div className=\"border-gray-200 flex shrink-0 items-center gap-sm rounded-sm border px-2 py-0.5\">\r\n <span className=\"bg-green-400 outline-green-400/20 size-2 rounded-full outline-4\" />\r\n <span>What's new</span>\r\n </div>\r\n <Primitive className=\"grow\">\r\n {props.children}\r\n \r\n </Primitive>\r\n </div>\r\n );\r\n}\r\n","import { dehydrate, HydrationBoundary } from '@tanstack/react-query';\r\nimport type { PropsWithChildren } from 'react';\r\nimport { prefetchPlatformQuery } from '../../hooks/usePlatformQuery/prefetchPlatformQuery';\r\nimport { prefetchSessionQuery } from '../../hooks/useSessionQuery/prefetchSessionQuery';\r\nimport { prefetchWalletQuery } from '../../hooks/useWalletQuery/prefetchWalletQuery';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { FeatureFlagProvider } from '../FeatureFlagProvider';\r\nimport { Providers } from './Providers';\r\n\r\nexport async function PortalProvider({ children }: PropsWithChildren) {\r\n const queryClient = getQueryClient();\r\n\r\n await Promise.all([\r\n prefetchSessionQuery(),\r\n prefetchPlatformQuery(),\r\n prefetchWalletQuery(),\r\n ]);\r\n\r\n return (\r\n <Providers>\r\n <HydrationBoundary state={dehydrate(queryClient)}>\r\n <FeatureFlagProvider>{children}</FeatureFlagProvider>\r\n </HydrationBoundary>\r\n </Providers>\r\n );\r\n}\r\n","import { getPlatform } from '@opexa/portal-sdk-core';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getPlatformQueryKey } from './getPlatformQueryKey';\r\n\r\nexport async function prefetchPlatformQuery() {\r\n await getQueryClient().prefetchQuery({\r\n queryKey: getPlatformQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n return await getPlatform({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n });\r\n },\r\n });\r\n}\r\n","import { cookies } from 'next/headers';\nimport { ACCESS_TOKEN_COOKIE_NAME } from '../../constants';\nimport type { Session } from '../../types';\n\nexport async function getSession(): Promise<Session> {\n const Cookies = await cookies();\n const accessToken = Cookies.get(ACCESS_TOKEN_COOKIE_NAME)?.value;\n\n return accessToken\n ? { status: 'authenticated', token: accessToken }\n : { status: 'unauthenticated' };\n}\n","import { getSession } from '../../services/server/getSession';\nimport { getQueryClient } from '../../utils/getQueryClient';\nimport { getSessionQueryKey } from './getSessionQueryKey';\n\nexport function prefetchSessionQuery() {\n return getQueryClient().prefetchQuery({\n queryKey: getSessionQueryKey(),\n queryFn: async () => {\n return await getSession();\n },\n });\n}\n","import { getWallet } from '@opexa/portal-sdk-core';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/server/getSession';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getWalletQueryKey } from './getWalletQueryKey';\r\n\r\nexport const prefetchWalletQuery = async () => {\r\n const session = await getSession();\r\n\r\n if (session.status === 'unauthenticated') return;\r\n\r\n await getQueryClient().prefetchQuery({\r\n queryKey: getWalletQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n return await getWallet({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","'use client';\r\n\r\nimport { Toast, Toaster } from '@ark-ui/react';\r\nimport { QueryClientProvider } from '@tanstack/react-query';\r\n\r\nimport type { PropsWithChildren } from 'react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { AlertCircleIcon } from '../../icons/AlertCircleIcon';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { toaster } from '../../utils/toaster';\r\n\r\nexport function Providers({ children }: PropsWithChildren) {\r\n const queryClient = getQueryClient();\r\n\r\n return (\r\n <QueryClientProvider client={queryClient}>\r\n {children}\r\n\r\n <Toaster toaster={toaster}>\r\n {(toast) => (\r\n <Toast.Root\r\n key={toast.id}\r\n className=\"shadow-xs border-gray-300 group z-[var(--z-index)] flex h-[var(--height)] w-[860px] max-w-full scale-[var(--scale)] items-center gap-lg rounded-xl border bg-white p-xl opacity-[var(--opacity)] transition-all duration-300 [translate:var(--x)_var(--y)_0]\"\r\n >\r\n <div\r\n className={twMerge(\r\n 'flex size-9.5 items-center justify-center rounded-full border-2',\r\n toast.type === 'error'\r\n ? 'border-red-500/15'\r\n : 'border-green-500/15',\r\n )}\r\n >\r\n <div\r\n className={twMerge(\r\n 'flex size-7 items-center justify-center rounded-full border-2',\r\n toast.type === 'error'\r\n ? 'border-red-500/35'\r\n : 'border-green-500/35',\r\n )}\r\n >\r\n <AlertCircleIcon\r\n className={twMerge(\r\n 'size-5',\r\n toast.type === 'error' ? 'text-red-500' : 'text-green-500',\r\n )}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"grow text-sm leading-none\">\r\n <Toast.Title className=\"font-semibold\">\r\n {toast.title\r\n ? toast.title\r\n : toast.type === 'error'\r\n ? 'Error'\r\n : 'Success'}\r\n </Toast.Title>\r\n <Toast.Description className=\"text-gray-700 mt-1\">\r\n {toast.description\r\n ? toast.description\r\n : toast.type === 'error'\r\n ? 'Something went wrong.'\r\n : 'Operation completed successfully.'}\r\n </Toast.Description>\r\n </div>\r\n <Toast.CloseTrigger className=\"text-gray-400 hover:text-gray-500 self-start\">\r\n <XIcon className=\"size-5\" />\r\n </Toast.CloseTrigger>\r\n </Toast.Root>\r\n )}\r\n </Toaster>\r\n </QueryClientProvider>\r\n );\r\n}\r\n","import { getPromos } from '@opexa/portal-sdk-core';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getPromosQueryKey } from './getPromosQueryKey';\r\n\r\nexport const prefetchPromosQuery = async () => {\r\n await getQueryClient().prefetchQuery({\r\n queryKey: getPromosQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n return await getPromos({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\n\nexport const getPromosQueryKey = (): QueryKey => ['queries/promos'];\n","'use client';\r\n\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from 'embla-carousel-react';\r\nimport Link from 'next/link';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { usePromosQuery } from '../../hooks/usePromosQuery/usePromosQuery';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { ArrowRightIcon } from '../../icons/ArrowRightIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { Gift01Icon } from '../../icons/Gift01Icon';\r\nimport { Button } from '../../ui';\r\nimport { Empty } from '../Empty';\r\nimport { PromosItem } from './PromoItem';\r\nimport type { PromoProps } from './Promos';\r\n\r\nexport function PromosContent(props: PromoProps) {\r\n const promosQuery = usePromosQuery({});\r\n\r\n const promos = promosQuery.data || [];\r\n\r\n const [emblaRef, emblaApi] = useEmblaCarousel({\r\n align: 'start',\r\n slidesToScroll: 1,\r\n breakpoints: {\r\n '(min-width: 1024px)': {\r\n slidesToScroll: 3,\r\n },\r\n },\r\n });\r\n\r\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true);\r\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true);\r\n\r\n const onPrevButtonClick = useCallback(\r\n () => emblaApi?.scrollPrev(),\r\n [emblaApi],\r\n );\r\n\r\n const onNextButtonClick = useCallback(async () => {\r\n emblaApi?.scrollNext();\r\n }, [emblaApi]);\r\n\r\n const onSelect = useCallback((emblaApi: UseEmblaCarouselType[1]) => {\r\n setPrevBtnDisabled(!emblaApi?.canScrollPrev());\r\n setNextBtnDisabled(!emblaApi?.canScrollNext());\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!emblaApi) return;\r\n onSelect(emblaApi);\r\n emblaApi.on('reInit', onSelect).on('select', onSelect);\r\n }, [emblaApi, onSelect]);\r\n\r\n return (\r\n <div className={props.className}>\r\n <div className=\"flex items-center\">\r\n <h2 className=\"text-lg font-semibold\">{props.heading}</h2>\r\n <div className=\"grow\" />\r\n <div className=\"flex items-center justify-center gap-xl\">\r\n <Link\r\n href={props.seeAllUrl}\r\n className=\"flex gap-sm text-sm font-semibold\"\r\n >\r\n See All\r\n <ChevronRightIcon className=\"size-5 lg:hidden\" />\r\n </Link>\r\n <div className=\"hidden lg:flex\">\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n onClick={onPrevButtonClick}\r\n disabled={prevBtnDisabled}\r\n aria-label=\"Previous\"\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n onClick={onNextButtonClick}\r\n disabled={nextBtnDisabled}\r\n aria-label=\"Next\"\r\n >\r\n <ArrowRightIcon className=\"size-5\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {promos.length <= 0 && (\r\n <Empty\r\n icon={Gift01Icon}\r\n title=\"No Promos\"\r\n message=\"No promo is currently available.\"\r\n className=\"mt-lg\"\r\n />\r\n )}\r\n\r\n {promos.length >= 1 && (\r\n <div ref={emblaRef} className=\"relative mt-lg lg:overflow-hidden\">\r\n <div\r\n className={twMerge(\r\n 'grid auto-cols-[calc((100%-(0.375rem*2))/1)] grid-flow-col gap-sm lg:auto-cols-[calc((100%-(0.5rem*5))/3)] lg:gap-md',\r\n )}\r\n >\r\n {promos.map((promo) => (\r\n <PromosItem\r\n key={promo.id}\r\n promo={promo}\r\n shouldShowDescription={props.shouldShowDescription}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { getPromos, type Promo } from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport type { Query } from '../../types';\r\nimport { getPromosQueryKey } from './getPromosQueryKey';\r\n\r\nexport const usePromosQuery: Query<Promo[]> = (config) => {\r\n return useQuery({\r\n ...config,\r\n queryKey: getPromosQueryKey(),\r\n queryFn: async ({ signal }) => {\r\n return await getPromos({\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function Gift01Icon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M12 6V22M12 6H8.46429C7.94332 6 7.4437 5.78929 7.07533 5.41421C6.70695 5.03914 6.5 4.53043 6.5 4C6.5 3.46957 6.70695 2.96086 7.07533 2.58579C7.4437 2.21071 7.94332 2 8.46429 2C11.2143 2 12 6 12 6ZM12 6H15.5357C16.0567 6 16.5563 5.78929 16.9247 5.41421C17.293 5.03914 17.5 4.53043 17.5 4C17.5 3.46957 17.293 2.96086 16.9247 2.58579C16.5563 2.21071 16.0567 2 15.5357 2C12.7857 2 12 6 12 6ZM20 11V18.8C20 19.9201 20 20.4802 19.782 20.908C19.5903 21.2843 19.2843 21.5903 18.908 21.782C18.4802 22 17.9201 22 16.8 22L7.2 22C6.07989 22 5.51984 22 5.09202 21.782C4.71569 21.5903 4.40973 21.2843 4.21799 20.908C4 20.4802 4 19.9201 4 18.8V11M2 7.6L2 9.4C2 9.96005 2 10.2401 2.10899 10.454C2.20487 10.6422 2.35785 10.7951 2.54601 10.891C2.75992 11 3.03995 11 3.6 11L20.4 11C20.9601 11 21.2401 11 21.454 10.891C21.6422 10.7951 21.7951 10.6422 21.891 10.454C22 10.2401 22 9.96005 22 9.4V7.6C22 7.03995 22 6.75992 21.891 6.54601C21.7951 6.35785 21.6422 6.20487 21.454 6.10899C21.2401 6 20.9601 6 20.4 6L3.6 6C3.03995 6 2.75992 6 2.54601 6.10899C2.35785 6.20487 2.20487 6.35785 2.10899 6.54601C2 6.75992 2 7.03995 2 7.6Z\" />\r\n </svg>\r\n );\r\n}\r\n","import type { Promo } from '@opexa/portal-sdk-core';\r\nimport Image from 'next/image';\r\nimport { useRouter } from 'next/navigation';\r\nimport { twJoin } from 'tailwind-merge';\r\nimport { Button } from '../../ui';\r\n\r\ninterface PromosItemProps {\r\n promo: Promo;\r\n shouldShowDescription?: boolean;\r\n}\r\n\r\nexport function PromosItem(props: PromosItemProps) {\r\n const { promo } = props;\r\n const router = useRouter();\r\n\r\n return (\r\n <div\r\n key={promo.id}\r\n className=\"border-gray-50 bg-accent-50 relative flex h-full flex-col rounded-md border\"\r\n >\r\n {promo.banner.url && (\r\n <Image\r\n src={promo.banner.url}\r\n alt={promo.name}\r\n width={1200}\r\n height={500}\r\n priority\r\n className=\"aspect-[1200/500] w-full rounded-t-md object-cover\"\r\n />\r\n )}\r\n <div className=\"flex flex-grow flex-col p-4\">\r\n <p\r\n className={twJoin(\r\n 'w-full text-xl font-bold',\r\n props.shouldShowDescription ? 'text-start' : 'text-center',\r\n )}\r\n >\r\n {promo.name}\r\n </p>\r\n\r\n {props.shouldShowDescription && promo.description && (\r\n <p\r\n className=\"text-gray-600 mb-2 line-clamp-2 w-full overflow-hidden text-start text-sm\"\r\n dangerouslySetInnerHTML={{ __html: promo.description }}\r\n />\r\n )}\r\n\r\n <div className=\"mt-auto pt-4\">\r\n <Button\r\n className=\"w-full\"\r\n variant=\"outline\"\r\n onClick={() => router.push(`/promos/${promo.id}`)}\r\n >\r\n Read More\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { prefetchPromosQuery } from '../../hooks/usePromosQuery/prefetchPromosQuery';\r\nimport { PromosContent } from './PromosContent';\r\n\r\nexport interface PromoProps {\r\n heading: string;\r\n seeAllUrl: string;\r\n /** @default true */\r\n shouldShowDescription?: boolean;\r\n /** @default 1 */\r\n numOfRows?: 1 | 2 | 3;\r\n className?: string;\r\n}\r\n\r\nexport async function Promos(props: PromoProps) {\r\n await prefetchPromosQuery();\r\n\r\n return <PromosContent {...props} />;\r\n}\r\n","'use client';\r\n\r\nimport { useSessionQuery } from '../../hooks/useSessionQuery/useSessionQuery';\r\n\r\ninterface ProtectedProps {\r\n children: React.ReactNode;\r\n fallback?: React.ReactNode;\r\n}\r\n\r\nexport function Protected(props: ProtectedProps) {\r\n const query = useSessionQuery();\r\n return query.data?.status === 'authenticated'\r\n ? props.children\r\n : (props.fallback ?? null);\r\n}\r\n","'use client';\r\n\r\nimport { Portal } from '@ark-ui/react';\r\nimport Image, { type ImageProps } from 'next/image';\r\nimport type { ReactNode } from 'react';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { Dialog } from '../../ui';\r\nimport { SignInForm } from './SignInForm';\r\n\r\nexport interface SignInProps {\r\n logo: ImageProps['src'];\r\n banner: ImageProps['src'];\r\n children?: ReactNode;\r\n}\r\n\r\nexport function SignIn(props: SignInProps) {\r\n const signInStore = useGlobalStore(useShallow((popups) => popups.signIn));\r\n\r\n return (\r\n <Dialog.Root\r\n open={signInStore.open}\r\n onOpenChange={(details) => {\r\n signInStore.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Dialog.Trigger asChild>\r\n {props.children ?? (\r\n <button type=\"button\" className=\"px-3.5 font-semibold\">\r\n Login\r\n </button>\r\n )}\r\n </Dialog.Trigger>\r\n <Portal>\r\n <Dialog.Backdrop />\r\n <Dialog.Positioner>\r\n <Dialog.Content className=\"mx-auto flex h-full w-full items-start lg:h-auto lg:w-fit\">\r\n <Image\r\n src={props.banner}\r\n alt=\"h-auto w-[400px]\"\r\n width={400}\r\n height={800}\r\n className=\"hidden rounded-l-xl lg:block\"\r\n />\r\n\r\n <div className=\"relative flex w-full flex-col items-start self-stretch bg-white p-3xl lg:w-[400px] lg:rounded-r-xl\">\r\n <Dialog.CloseTrigger>\r\n <XIcon />\r\n </Dialog.CloseTrigger>\r\n\r\n <Image\r\n src={props.logo}\r\n alt=\"\"\r\n width={200}\r\n height={100}\r\n className=\"mx-auto h-auto w-[120px]\"\r\n draggable={false}\r\n />\r\n\r\n <SignInForm />\r\n </div>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useDialogContext } from '@ark-ui/react';\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useState } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\nimport { z } from 'zod';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useCooldown } from '../../hooks/useCooldown';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useMobileNumberParser } from '../../hooks/useMobileNumberParser';\r\nimport { useSendVerificationCodeMutation } from '../../hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation';\r\nimport { useSignInMutation } from '../../hooks/useSigninMutation/useSignInMutation';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport { FacebookIcon } from '../../icons/FacebookIcon';\r\nimport { GoogleIcon } from '../../icons/GoogleIcon';\r\nimport { Button, Checkbox, Field, PinInput } from '../../ui';\r\nimport { toaster } from '../../utils/toaster';\r\n\r\nexport function SignInForm() {\r\n const [step, setStep] = useState<1 | 2>(1);\r\n\r\n const dialog = useDialogContext();\r\n const signUpStore = useGlobalStore(useShallow((popups) => popups.signUp));\r\n const signInMutation = useSignInMutation();\r\n const sendVerificationCodeMutation = useSendVerificationCodeMutation();\r\n\r\n const localeInfo = useLocaleInfo();\r\n const mobileNumberParser = useMobileNumberParser();\r\n\r\n const Step1Definition = z.object({\r\n mobileNumber: z.string().superRefine((v, ctx) => {\r\n if (!mobileNumberParser.validate(v)) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'Invalid mobile number',\r\n });\r\n }\r\n }),\r\n termsAccepted: z.boolean().superRefine((v, ctx) => {\r\n if (!v) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'You must accept the terms and conditions',\r\n });\r\n }\r\n }),\r\n });\r\n\r\n const Step2Definition = z.object({\r\n verificationCode: z.array(z.string().min(1).max(1).trim()).min(6).max(6),\r\n });\r\n\r\n const step1Form = useForm({\r\n resolver: zodResolver(Step1Definition),\r\n defaultValues: {\r\n mobileNumber: '',\r\n termsAccepted: false,\r\n },\r\n });\r\n\r\n const step2Form = useForm({\r\n resolver: zodResolver(Step2Definition),\r\n defaultValues: {\r\n verificationCode: Array.from<string>({ length: 6 }).fill(''),\r\n },\r\n });\r\n\r\n const cooldown = useCooldown({\r\n max: 60,\r\n duration: 1000 * 60,\r\n });\r\n\r\n return (\r\n <>\r\n {step === 1 && (\r\n <>\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">\r\n Log in to your account\r\n </h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n Welcome back! Please enter your details.\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step1Form.handleSubmit(async (data) => {\r\n try {\r\n await sendVerificationCodeMutation.mutateAsync({\r\n channel: 'SMS',\r\n recipient: mobileNumberParser.format(data.mobileNumber),\r\n strict: true,\r\n });\r\n\r\n setStep(2);\r\n cooldown.start();\r\n } catch (e) {\r\n toaster.error({\r\n description:\r\n e instanceof Error\r\n ? e.message\r\n : 'Failed to send verification code',\r\n });\r\n }\r\n })}\r\n >\r\n <Field.Root invalid={!!step1Form.formState.errors.mobileNumber}>\r\n <Field.Label>Mobile Number</Field.Label>\r\n <div className=\"relative\">\r\n <localeInfo.country.flag className=\"absolute left-3.5 top-1/2 size-5 shrink-0 -translate-y-1/2\" />\r\n <Field.Input\r\n className=\"pl-11\"\r\n placeholder={`${localeInfo.mobileNumber.areaCode}${localeInfo.mobileNumber.example}`}\r\n {...step1Form.register('mobileNumber')}\r\n />\r\n </div>\r\n <Field.ErrorText>\r\n {step1Form.formState.errors.mobileNumber?.message}\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <Button\r\n type=\"submit\"\r\n className=\"mt-xl\"\r\n disabled={step1Form.formState.isSubmitting}\r\n >\r\n Log In\r\n </Button>\r\n\r\n <Controller\r\n control={step1Form.control}\r\n name=\"termsAccepted\"\r\n render={(o) => (\r\n <Checkbox.Root\r\n className=\"mt-xl\"\r\n invalid={o.fieldState.invalid}\r\n checked={o.field.value}\r\n onCheckedChange={(details) => {\r\n o.field.onChange(details.checked);\r\n }}\r\n >\r\n <Checkbox.Control>\r\n <Checkbox.Indicator asChild>\r\n <CheckIcon />\r\n </Checkbox.Indicator>\r\n </Checkbox.Control>\r\n <Checkbox.Label>\r\n I confirm that I am at least 21 years old, not listed in\r\n the PAGCOR NDRP, not a GEL license holder, government\r\n employee, or member of the Armed Forces of the\r\n Philippines. I am not playing in a public space and agree\r\n to the Terms of Use and Privacy Policy. Ineligible\r\n accounts will have their funds forfeited to the\r\n government.\r\n </Checkbox.Label>\r\n <Checkbox.HiddenInput />\r\n </Checkbox.Root>\r\n )}\r\n />\r\n </form>\r\n\r\n <div className=\"relative mt-5 text-center\">\r\n <hr className=\"-translte-y-1/2 text-gray-200 absolute top-1/2 w-full\" />\r\n <span className=\"text-gray-500 relative bg-white px-md text-center text-sm font-semibold\">\r\n OR\r\n </span>\r\n </div>\r\n\r\n <div className=\"mt-5\">\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n }}\r\n >\r\n <GoogleIcon className=\"size-6\" />\r\n Continue with Google\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"mt-lg\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n }}\r\n >\r\n <FacebookIcon className=\"size-6\" />\r\n Continue with Facebook\r\n </Button>\r\n </div>\r\n </div>\r\n <div className=\"flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">Don't have an account?</span>\r\n <button\r\n type=\"submit\"\r\n className=\"text-accent-700 font-semibold\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n signUpStore.setOpen(true);\r\n }}\r\n >\r\n Sign up\r\n </button>\r\n </div>\r\n </>\r\n )}\r\n\r\n {step === 2 && (\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">\r\n Check your Phone\r\n </h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n We’ve sent a verification code to your mobile number{' '}\r\n <span className=\"font-semibold\">\r\n {mobileNumberParser.format(step1Form.getValues('mobileNumber'))}\r\n </span>{' '}\r\n via text\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step2Form.handleSubmit(async ({ verificationCode }) => {\r\n const { mobileNumber } = step1Form.getValues();\r\n\r\n try {\r\n await signInMutation.mutateAsync({\r\n type: 'MOBILE_NUMBER',\r\n mobileNumber: mobileNumberParser.format(mobileNumber),\r\n verificationCode: verificationCode.join(''),\r\n });\r\n\r\n dialog.setOpen(false);\r\n step1Form.reset();\r\n step2Form.reset();\r\n setStep(1);\r\n } catch {\r\n toaster.error({\r\n description: 'Invalid Verification Code',\r\n });\r\n }\r\n })}\r\n >\r\n <Controller\r\n name=\"verificationCode\"\r\n control={step2Form.control}\r\n render={(o) => (\r\n <PinInput.Root\r\n placeholder=\"0\"\r\n invalid={o.fieldState.invalid}\r\n value={o.field.value}\r\n onValueChange={(details) => {\r\n o.field.onChange(details.value);\r\n }}\r\n >\r\n <PinInput.Control>\r\n <PinInput.Input index={0} />\r\n <PinInput.Input index={1} />\r\n <PinInput.Input index={2} />\r\n <PinInput.Input index={3} />\r\n <PinInput.Input index={4} />\r\n <PinInput.Input index={5} />\r\n </PinInput.Control>\r\n <PinInput.HiddenInput />\r\n </PinInput.Root>\r\n )}\r\n />\r\n\r\n <Button\r\n type=\"submit\"\r\n className=\"mt-5\"\r\n disabled={step2Form.formState.isSubmitting}\r\n >\r\n Verify and Play\r\n </Button>\r\n\r\n <div className=\"mt-5 flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">\r\n Didn't recieve the code?\r\n </span>\r\n <button\r\n type=\"button\"\r\n className=\"text-accent-700 font-semibold\"\r\n disabled={cooldown.cooling}\r\n onClick={async () => {\r\n await sendVerificationCodeMutation.mutateAsync({\r\n channel: 'SMS',\r\n recipient: mobileNumberParser.format(\r\n step1Form.getValues('mobileNumber'),\r\n ),\r\n });\r\n\r\n cooldown.start();\r\n }}\r\n >\r\n {cooldown.cooling\r\n ? `Resend in ${cooldown.countdown}s`\r\n : 'Resend'}\r\n </button>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n className=\"text-gray-600 mx-auto mt-5 flex w-fit items-center gap-1 text-sm font-semibold\"\r\n onClick={() => {\r\n setStep(1);\r\n step2Form.reset();\r\n cooldown.stop();\r\n }}\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n Back\r\n </button>\r\n </form>\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n","import { clamp, noop } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\n\ninterface UseCooldownOptions {\n /** @default 0 */\n min?: number;\n /** @default 10 */\n max?: number;\n /**\n * The duration of the cooldown in milliseconds.\n * @default 10000\n */\n duration?: number;\n /** @default false */\n autoplay?: boolean;\n /** @default false */\n allowPause?: boolean;\n onCooldown?: () => void;\n}\n\ninterface UseCooldownReturn {\n /** Starts or pauses the cooldown */\n start: () => void;\n /** Restarts the cooldown */\n restart: () => void;\n /** Stops the cooldown */\n stop: () => void;\n /** The current countdown value */\n countdown: number;\n /** Whether the cooldown has started */\n cooling: boolean;\n /** Whether the cooldown is paused */\n paused: boolean;\n}\n\n/**\n * @example\n * ```ts\n * const cooldown = useCooldown({\n * max: 60,\n * duration: 1000 * 60,\n * autoplay: false,\n * allowPause: false,\n * });\n *\n */\nexport function useCooldown(opts?: UseCooldownOptions): UseCooldownReturn {\n 'use no memo';\n\n const min = opts?.min ?? 0;\n const max = opts?.max ?? 10;\n const duration = opts?.duration ?? 10000;\n const autoplay = opts?.autoplay ?? false;\n const allowPause = opts?.allowPause ?? false;\n const onCooldown = opts?.onCooldown ?? noop;\n\n const [paused, setPaused] = useState(false);\n const [cooling, setCooling] = useState(false);\n const [countdown, setCountdown] = useState(min);\n const [autoPlayed, setAutoplayed] = useState(false);\n\n const start = useCallback(() => {\n /* is it paused? */\n if (paused) {\n setPaused(false);\n return;\n }\n\n /* is it still cooling down? */\n if (cooling) {\n /* do we allow pause? */\n if (allowPause) {\n setPaused(true);\n }\n\n return;\n }\n\n setCooling(true);\n setCountdown(max - 1);\n }, [allowPause, cooling, max, paused]);\n\n function stop() {\n setPaused(false);\n setCooling(false);\n setCountdown(min);\n }\n\n function restart() {\n stop();\n start();\n }\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (cooling && !paused) {\n timer = setInterval(() => {\n setCountdown(round(clamp(countdown - 1, min, max)));\n\n if (countdown <= min) {\n clearInterval(timer);\n setCountdown(min);\n setCooling(false);\n onCooldown();\n }\n }, duration / max);\n }\n\n return () => {\n if (timer) {\n clearInterval(timer);\n }\n };\n });\n\n useEffect(() => {\n if (cooling) return;\n if (autoPlayed) return;\n if (!autoplay) return;\n start();\n setAutoplayed(true);\n }, [autoPlayed, autoplay, cooling, start]);\n\n useEffect(() => {\n return () => {\n setCooling(false);\n setPaused(false);\n setCountdown(min);\n setAutoplayed(false);\n };\n }, [min]);\n\n return {\n start,\n restart,\n stop,\n paused,\n cooling,\n countdown,\n };\n}\n\nfunction round(n: number) {\n return Math.round((n + Number.EPSILON) * 100) / 100;\n}\n","import { useLocaleInfo } from './useLocaleInfo';\n\nexport function useMobileNumberParser() {\n const localeInfo = useLocaleInfo();\n\n /**\n * Formats a mobile number based on the current locale information.\n * Adds the area code if it is not present and ensures the number is in the correct format.\n * @example\n * ```ts\n * format('9190000001'); // '+639190000001'\n * format('09190000001'); // '+639190000001'\n * format('639190000001'); // '+639190000001'\n * format('+639190000001'); // '+639190000001'\n * ```\n */\n const format = (value: string) => {\n if (value.startsWith(localeInfo.mobileNumber.areaCode)) {\n return value;\n }\n\n if (value.startsWith('0')) {\n return localeInfo.mobileNumber.areaCode + value.substring(1);\n }\n\n if (value.startsWith(localeInfo.mobileNumber.areaCode.substring(1))) {\n return '+' + value;\n }\n\n return localeInfo.mobileNumber.areaCode + value;\n };\n\n /**\n * Parses a mobile number based on the current locale information.\n * Returns the area code and the mobile number as separate values.\n * @example\n * ```ts\n * parse('+639190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\n * parse('639190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\n * parse('09190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\n * parse('9190000001'); // { mobileNumber: '9190000001', areaCode: '+63' }\n * ```\n */\n const parse = (value: string) => {\n const mobileNumber = format(value).replace(localeInfo.mobileNumber.areaCode, '');\n\n return {\n mobileNumber: mobileNumber,\n areaCode: localeInfo.mobileNumber.areaCode,\n };\n };\n\n /**\n * Validates a mobile number based on the current locale information.\n * @example\n * ```ts\n * validate('9190000001'); // true\n * validate('09190000001'); // true\n * validate('639190000001'); // true\n * validate('+639190000001'); // true\n * ```\n */\n const validate = (value: unknown): value is string => {\n return typeof value === 'string' && localeInfo.mobileNumber.pattern.test(value);\n };\n\n return {\n validate,\n format,\n parse,\n };\n}\n","import {\r\n sendVerificationCode,\r\n type SendVerificationCodeInput,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport type { Mutation } from '../../types';\r\nimport { getSendVerificationCodeMutationKey } from './getSendVerificationCodeMutationKey';\r\n\r\nexport const useSendVerificationCodeMutation: Mutation<\r\n void,\r\n SendVerificationCodeInput\r\n> = (config) => {\r\n return useMutation({\r\n ...config,\r\n mutationKey: getSendVerificationCodeMutationKey(),\r\n mutationFn: async (input) => {\r\n await sendVerificationCode(input, {\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","import type { MutationKey } from '@tanstack/react-query';\n\nexport const getSendVerificationCodeMutationKey = (): MutationKey => [\n 'mutations/sendVerificationCode',\n];\n","import type { Authenticator } from '@opexa/portal-sdk-core';\nimport { useMutation } from '@tanstack/react-query';\nimport { signIn, type SignInInput } from '../../services/client/signIn';\nimport type { Mutation } from '../../types';\nimport { getQueryClient } from '../../utils/getQueryClient';\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\nimport { getSignInMutationKey } from './getSignInMutationKey';\n\nexport const useSignInMutation: Mutation<Authenticator | null, SignInInput> = (config) => {\n const queryClient = getQueryClient();\n\n return useMutation({\n ...config,\n mutationKey: getSignInMutationKey(),\n mutationFn: async (input) => {\n const authenticator = await signIn(input);\n\n if (!authenticator) {\n await queryClient.invalidateQueries({\n queryKey: getSessionQueryKey(),\n });\n }\n\n return authenticator;\n },\n });\n};\n","import type { Authenticator, CreateSessionInput } from '@opexa/portal-sdk-core';\r\nimport { BYPASS_RECAPTCHA } from '../../constants';\r\nimport type { ApiResponse } from '../../types';\r\n\r\nexport type SignInInput = CreateSessionInput;\r\n\r\nexport async function signIn(\r\n input: SignInInput,\r\n): Promise<Authenticator | null> {\r\n const res = await fetch('/api/sessions', {\r\n body: JSON.stringify(input),\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n ...(BYPASS_RECAPTCHA && {\r\n 'Test-Pass': '',\r\n }),\r\n },\r\n });\r\n\r\n const json = (await res.json()) as ApiResponse<Authenticator | null>;\r\n\r\n if (!json.ok) {\r\n const error = new Error();\r\n error.name = 'SignInError';\r\n error.message = 'Failed to sign in';\r\n throw error;\r\n }\r\n\r\n return json.data ?? null;\r\n}\r\n","import type { MutationKey } from '@tanstack/react-query';\n\nexport const getSignInMutationKey = (): MutationKey => ['mutations/signIn'];\n","import type { ComponentPropsWithRef } from 'react';\n\nexport function FacebookIcon(props: ComponentPropsWithRef<'svg'>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 256 256\"\n {...props}\n >\n <path\n fill=\"#1877F2\"\n d=\"M256 128C256 57.308 198.692 0 128 0S0 57.308 0 128c0 63.888 46.808 116.843 108 126.445V165H75.5v-37H108V99.8c0-32.08 19.11-49.8 48.348-49.8C170.352 50 185 52.5 185 52.5V84h-16.14C152.959 84 148 93.867 148 103.99V128h35.5l-5.675 37H148v89.445c61.192-9.602 108-62.556 108-126.445\"\n />\n <path\n fill=\"#FFF\"\n d=\"m177.825 165l5.675-37H148v-24.01C148 93.866 152.959 84 168.86 84H185V52.5S170.352 50 156.347 50C127.11 50 108 67.72 108 99.8V128H75.5v37H108v89.445A129 129 0 0 0 128 256a129 129 0 0 0 20-1.555V165z\"\n />\n </svg>\n );\n}\n","import type { ComponentPropsWithRef } from 'react';\n\nexport function GoogleIcon(props: ComponentPropsWithRef<'svg'>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 128 128\"\n {...props}\n >\n <path\n fill=\"#fff\"\n d=\"M44.59 4.21a63.28 63.28 0 0 0 4.33 120.9a67.6 67.6 0 0 0 32.36.35a57.13 57.13 0 0 0 25.9-13.46a57.44 57.44 0 0 0 16-26.26a74.3 74.3 0 0 0 1.61-33.58H65.27v24.69h34.47a29.72 29.72 0 0 1-12.66 19.52a36.2 36.2 0 0 1-13.93 5.5a41.3 41.3 0 0 1-15.1 0A37.2 37.2 0 0 1 44 95.74a39.3 39.3 0 0 1-14.5-19.42a38.3 38.3 0 0 1 0-24.63a39.25 39.25 0 0 1 9.18-14.91A37.17 37.17 0 0 1 76.13 27a34.3 34.3 0 0 1 13.64 8q5.83-5.8 11.64-11.63c2-2.09 4.18-4.08 6.15-6.22A61.2 61.2 0 0 0 87.2 4.59a64 64 0 0 0-42.61-.38\"\n />\n <path\n fill=\"#e33629\"\n d=\"M44.59 4.21a64 64 0 0 1 42.61.37a61.2 61.2 0 0 1 20.35 12.62c-2 2.14-4.11 4.14-6.15 6.22Q95.58 29.23 89.77 35a34.3 34.3 0 0 0-13.64-8a37.17 37.17 0 0 0-37.46 9.74a39.25 39.25 0 0 0-9.18 14.91L8.76 35.6A63.53 63.53 0 0 1 44.59 4.21\"\n />\n <path\n fill=\"#f8bd00\"\n d=\"M3.26 51.5a63 63 0 0 1 5.5-15.9l20.73 16.09a38.3 38.3 0 0 0 0 24.63q-10.36 8-20.73 16.08a63.33 63.33 0 0 1-5.5-40.9\"\n />\n <path\n fill=\"#587dbd\"\n d=\"M65.27 52.15h59.52a74.3 74.3 0 0 1-1.61 33.58a57.44 57.44 0 0 1-16 26.26c-6.69-5.22-13.41-10.4-20.1-15.62a29.72 29.72 0 0 0 12.66-19.54H65.27c-.01-8.22 0-16.45 0-24.68\"\n />\n <path\n fill=\"#319f43\"\n d=\"M8.75 92.4q10.37-8 20.73-16.08A39.3 39.3 0 0 0 44 95.74a37.2 37.2 0 0 0 14.08 6.08a41.3 41.3 0 0 0 15.1 0a36.2 36.2 0 0 0 13.93-5.5c6.69 5.22 13.41 10.4 20.1 15.62a57.13 57.13 0 0 1-25.9 13.47a67.6 67.6 0 0 1-32.36-.35a63 63 0 0 1-23-11.59A63.7 63.7 0 0 1 8.75 92.4\"\n />\n </svg>\n );\n}\n","'use client';\r\n\r\nimport { Portal } from '@ark-ui/react';\r\nimport Image, { type ImageProps } from 'next/image';\r\nimport type { ReactNode } from 'react';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { XIcon } from '../../icons/XIcon';\r\nimport { Button, Dialog } from '../../ui';\r\nimport { SignUpForm } from './SignUpForm';\r\n\r\nexport interface SignUpProps {\r\n logo: ImageProps['src'];\r\n banner: ImageProps['src'];\r\n children?: ReactNode;\r\n}\r\n\r\nexport function SignUp(props: SignUpProps) {\r\n const signUpStore = useGlobalStore(useShallow((popups) => popups.signUp));\r\n\r\n return (\r\n <Dialog.Root\r\n open={signUpStore.open}\r\n onOpenChange={(details) => {\r\n signUpStore.setOpen(details.open);\r\n }}\r\n lazyMount\r\n unmountOnExit\r\n closeOnEscape={false}\r\n closeOnInteractOutside={false}\r\n >\r\n <Dialog.Trigger asChild>\r\n {props.children ?? <Button>Sign up</Button>}\r\n </Dialog.Trigger>\r\n <Portal>\r\n <Dialog.Backdrop />\r\n <Dialog.Positioner>\r\n <Dialog.Content className=\"mx-auto flex h-full w-full items-start lg:h-auto lg:w-fit\">\r\n <Image\r\n src={props.banner}\r\n alt=\"h-auto w-[400px]\"\r\n width={400}\r\n height={800}\r\n className=\"hidden rounded-l-xl lg:block\"\r\n />\r\n\r\n <div className=\"relative flex w-full flex-col items-start self-stretch bg-white p-3xl lg:w-[400px] lg:rounded-r-xl\">\r\n <Dialog.CloseTrigger>\r\n <XIcon />\r\n </Dialog.CloseTrigger>\r\n\r\n <Image\r\n src={props.logo}\r\n alt=\"\"\r\n width={200}\r\n height={100}\r\n className=\"mx-auto h-auto w-[120px]\"\r\n draggable={false}\r\n />\r\n\r\n <SignUpForm />\r\n </div>\r\n </Dialog.Content>\r\n </Dialog.Positioner>\r\n </Portal>\r\n </Dialog.Root>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { useDialogContext } from '@ark-ui/react';\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { ObjectId, ObjectType } from '@opexa/portal-sdk-core/object-id';\r\nimport { useSearchParams } from 'next/navigation';\r\nimport { useState } from 'react';\r\nimport { Controller, useForm } from 'react-hook-form';\r\nimport { z } from 'zod';\r\nimport { useShallow } from 'zustand/shallow';\r\nimport { useCooldown } from '../../hooks/useCooldown';\r\nimport { useGlobalStore } from '../../hooks/useGlobalStore';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useMobileNumberParser } from '../../hooks/useMobileNumberParser';\r\nimport { useSendVerificationCodeMutation } from '../../hooks/useSendVerificationCodeMutation/useSendVerificationCodeMutation';\r\nimport { useSignInMutation } from '../../hooks/useSigninMutation/useSignInMutation';\r\nimport { useSignUpMutation } from '../../hooks/useSignUpMutation/useSignUpMutation';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport { Button, Checkbox, Field, PinInput } from '../../ui';\r\nimport { toaster } from '../../utils/toaster';\r\n\r\nexport function SignUpForm() {\r\n const [step, setStep] = useState<1 | 2>(1);\r\n\r\n const dialog = useDialogContext();\r\n const search = useSearchParams();\r\n const signInStore = useGlobalStore(useShallow((popups) => popups.signIn));\r\n const signUpMutation = useSignUpMutation();\r\n const signInMutation = useSignInMutation();\r\n const sendVerificationCodeMutation = useSendVerificationCodeMutation();\r\n\r\n const localeInfo = useLocaleInfo();\r\n const mobileNumberParser = useMobileNumberParser();\r\n\r\n const Step1Definition = z.object({\r\n mobileNumber: z.string().superRefine((v, ctx) => {\r\n if (!mobileNumberParser.validate(v)) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'Invalid mobile number',\r\n });\r\n }\r\n }),\r\n termsAccepted: z.boolean().superRefine((v, ctx) => {\r\n if (!v) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: 'You must accept the terms and conditions',\r\n });\r\n }\r\n }),\r\n });\r\n\r\n const Step2Definition = z.object({\r\n verificationCode: z.array(z.string().min(1).max(1).trim()).min(6).max(6),\r\n });\r\n\r\n const step1Form = useForm({\r\n resolver: zodResolver(Step1Definition),\r\n defaultValues: {\r\n mobileNumber: '',\r\n termsAccepted: false,\r\n },\r\n });\r\n\r\n const step2Form = useForm({\r\n resolver: zodResolver(Step2Definition),\r\n defaultValues: {\r\n verificationCode: Array.from<string>({ length: 6 }).fill(''),\r\n },\r\n });\r\n\r\n const cooldown = useCooldown({\r\n max: 60,\r\n duration: 1000 * 60,\r\n });\r\n\r\n return (\r\n <>\r\n {step === 1 && (\r\n <>\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">\r\n Create an account\r\n </h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n Register instantly and start playing!\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step1Form.handleSubmit(async (data) => {\r\n try {\r\n await sendVerificationCodeMutation.mutateAsync({\r\n channel: 'SMS',\r\n recipient: mobileNumberParser.format(data.mobileNumber),\r\n });\r\n\r\n setStep(2);\r\n cooldown.start();\r\n } catch (e) {\r\n toaster.error({\r\n description:\r\n e instanceof Error\r\n ? e.message\r\n : 'Failed to send verification code',\r\n });\r\n }\r\n })}\r\n >\r\n <Field.Root invalid={!!step1Form.formState.errors.mobileNumber}>\r\n <Field.Label>Mobile Number</Field.Label>\r\n <div className=\"relative\">\r\n <localeInfo.country.flag className=\"absolute left-3.5 top-1/2 size-5 shrink-0 -translate-y-1/2\" />\r\n <Field.Input\r\n className=\"pl-11\"\r\n {...step1Form.register('mobileNumber')}\r\n />\r\n </div>\r\n <Field.ErrorText>\r\n {step1Form.formState.errors.mobileNumber?.message}\r\n </Field.ErrorText>\r\n </Field.Root>\r\n\r\n <Button\r\n type=\"submit\"\r\n className=\"mt-5\"\r\n disabled={step1Form.formState.isSubmitting}\r\n >\r\n Create Account\r\n </Button>\r\n\r\n <Controller\r\n control={step1Form.control}\r\n name=\"termsAccepted\"\r\n render={(o) => (\r\n <Checkbox.Root\r\n className=\"mt-xl\"\r\n invalid={o.fieldState.invalid}\r\n checked={o.field.value}\r\n onCheckedChange={(details) => {\r\n o.field.onChange(details.checked);\r\n }}\r\n >\r\n <Checkbox.Control>\r\n <Checkbox.Indicator asChild>\r\n <CheckIcon />\r\n </Checkbox.Indicator>\r\n </Checkbox.Control>\r\n <Checkbox.Label>\r\n I confirm that I am at least 21 years old, not listed in\r\n the PAGCOR NDRP, not a GEL license holder, government\r\n employee, or member of the Armed Forces of the\r\n Philippines. I am not playing in a public space and agree\r\n to the Terms of Use and Privacy Policy. Ineligible\r\n accounts will have their funds forfeited to the\r\n government.\r\n </Checkbox.Label>\r\n <Checkbox.HiddenInput />\r\n </Checkbox.Root>\r\n )}\r\n />\r\n </form>\r\n </div>\r\n\r\n <div className=\"flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">Don't have an account?</span>\r\n <button\r\n type=\"submit\"\r\n className=\"text-accent-700 font-semibold\"\r\n onClick={() => {\r\n dialog.setOpen(false);\r\n signInStore.setOpen(true);\r\n }}\r\n >\r\n Log In\r\n </button>\r\n </div>\r\n </>\r\n )}\r\n\r\n {step === 2 && (\r\n <div className=\"w-full grow\">\r\n <h2 className=\"mt-xl text-center text-lg font-semibold\">\r\n Check your Phone\r\n </h2>\r\n <p className=\"text-gray-600 mt-xs text-center text-sm\">\r\n We’ve sent a verification code to your mobile number{' '}\r\n <span className=\"font-semibold\">\r\n {mobileNumberParser.format(step1Form.getValues('mobileNumber'))}\r\n </span>{' '}\r\n via text\r\n </p>\r\n\r\n <form\r\n className=\"mt-5\"\r\n onSubmit={step2Form.handleSubmit(async ({ verificationCode }) => {\r\n const id = ObjectId.generate(ObjectType.MemberAccount).toString();\r\n const { mobileNumber } = step1Form.getValues();\r\n\r\n try {\r\n await signUpMutation.mutateAsync({\r\n id,\r\n mobileNumber: mobileNumberParser.format(mobileNumber),\r\n verificationCode: verificationCode.join(''),\r\n referralCode: search.get('referralCode') ?? undefined,\r\n domain: search.get('domain') ?? undefined,\r\n btag: search.get('btag') ?? undefined,\r\n });\r\n\r\n const name = mobileNumberParser.format(mobileNumber);\r\n const password = `${name}${id}`;\r\n\r\n try {\r\n await signInMutation.mutateAsync({\r\n type: 'NAME_AND_PASSWORD',\r\n name: mobileNumberParser.format(mobileNumber),\r\n password,\r\n });\r\n } catch {\r\n signInStore.setOpen(true);\r\n }\r\n\r\n dialog.setOpen(false);\r\n step1Form.reset();\r\n step2Form.reset();\r\n setStep(1);\r\n } catch {\r\n toaster.error({\r\n title: 'Invalid Verification Code',\r\n });\r\n }\r\n })}\r\n >\r\n <Controller\r\n name=\"verificationCode\"\r\n control={step2Form.control}\r\n render={(o) => (\r\n <PinInput.Root\r\n placeholder=\"0\"\r\n invalid={o.fieldState.invalid}\r\n value={o.field.value}\r\n onValueChange={(details) => {\r\n o.field.onChange(details.value);\r\n }}\r\n >\r\n <PinInput.Control>\r\n <PinInput.Input index={0} />\r\n <PinInput.Input index={1} />\r\n <PinInput.Input index={2} />\r\n <PinInput.Input index={3} />\r\n <PinInput.Input index={4} />\r\n <PinInput.Input index={5} />\r\n </PinInput.Control>\r\n <PinInput.HiddenInput />\r\n </PinInput.Root>\r\n )}\r\n />\r\n\r\n <Button\r\n type=\"submit\"\r\n className=\"mt-5\"\r\n disabled={step2Form.formState.isSubmitting}\r\n >\r\n Verify and Play\r\n </Button>\r\n\r\n <div className=\"mt-5 flex w-full items-center justify-center gap-xs text-sm\">\r\n <span className=\"text-gray-500\">\r\n Didn't recieve the code?\r\n </span>\r\n <button\r\n type=\"button\"\r\n className=\"text-accent-700 font-semibold disabled:cursor-not-allowed disabled:opacity-75\"\r\n disabled={cooldown.cooling}\r\n onClick={async () => {\r\n await sendVerificationCodeMutation.mutateAsync({\r\n channel: 'SMS',\r\n recipient: mobileNumberParser.format(\r\n step1Form.getValues('mobileNumber'),\r\n ),\r\n });\r\n\r\n cooldown.start();\r\n }}\r\n >\r\n {cooldown.cooling\r\n ? `Resend in ${cooldown.countdown}s`\r\n : 'Resend'}\r\n </button>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n className=\"text-gray-600 mx-auto mt-5 flex w-fit items-center gap-1 text-sm font-semibold\"\r\n onClick={() => {\r\n setStep(1);\r\n step2Form.reset();\r\n cooldown.stop();\r\n }}\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n Back\r\n </button>\r\n </form>\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n","import {\r\n registerMemberAccountViaMobile,\r\n type RegisterMemberAccountViaMobileInput,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useMutation } from '@tanstack/react-query';\r\nimport { BYPASS_RECAPTCHA, ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport type { Mutation } from '../../types';\r\nimport { getSignUpMutationKey } from './getSignUpMutationKey';\r\n\r\nexport interface SignUpMutationInput\r\n extends RegisterMemberAccountViaMobileInput {}\r\n\r\nexport const useSignUpMutation: Mutation<void, SignUpMutationInput> = (\r\n config,\r\n) => {\r\n return useMutation({\r\n ...config,\r\n mutationKey: getSignUpMutationKey(),\r\n mutationFn: async (input) => {\r\n return await registerMemberAccountViaMobile(input, {\r\n headers: {\r\n environment: ENVIRONMENT,\r\n 'Platform-Code': PLATFORM_CODE,\r\n ...(BYPASS_RECAPTCHA && {\r\n 'Test-Pass': '',\r\n }),\r\n },\r\n });\r\n },\r\n });\r\n};\r\n","import type { MutationKey } from '@tanstack/react-query';\n\nexport const getSignUpMutationKey = (): MutationKey => ['mutations/signUp'];\n","'use client';\r\n\r\nimport useEmblaCarousel from 'embla-carousel-react';\r\nimport Image from 'next/image';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useTopWinsQuery } from '../../hooks/useTopWinsQuery/useTopWinsQuery';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport { getGameImageUrl } from '../../utils/getGameImageUrl';\r\nimport type { TopWinsProps } from './TopWins';\r\n\r\nexport function TopWinsContent(props: TopWinsProps) {\r\n const localeInfo = useLocaleInfo();\r\n const topWinsQuery = useTopWinsQuery();\r\n const topWins = topWinsQuery.data ?? [];\r\n\r\n const [emblaRef] = useEmblaCarousel({\r\n align: 'start',\r\n slidesToScroll: 1,\r\n });\r\n\r\n if (!topWins?.length) return null;\r\n\r\n return (\r\n <div className={props.className}>\r\n <div className=\"text-gray-600 mb-3 text-lg font-semibold md:mb-4\">\r\n {props.heading}\r\n </div>\r\n\r\n <div ref={emblaRef} className=\"relative lg:overflow-hidden\">\r\n <div className=\"flex gap-sm lg:gap-md\">\r\n {topWins.map((topWin) => (\r\n <div\r\n key={topWin.id}\r\n className=\"bg-gray-50 border-gray-200 flex w-[calc((100%-(0.375rem*2))/3)] shrink-0 flex-col space-y-2 rounded-sm border p-2 text-center lg:w-[calc((100%-(0.5rem*5))/6)] xl:w-[calc((100%-(0.5rem*9))/10)]\"\r\n >\r\n <div className=\"mx-auto aspect-square w-full\">\r\n {topWin.game && (\r\n <Image\r\n width={100}\r\n height={100}\r\n src={getGameImageUrl(topWin.game)}\r\n alt=\"\"\r\n className=\"size-full rounded-sm object-cover\"\r\n />\r\n )}\r\n </div>\r\n\r\n <div className=\"space-y-0.5\">\r\n <div className=\"text-gray-600 text-xs\">\r\n {topWin.member.name}\r\n </div>\r\n <div className=\"text-gray-800 text-sm font-semibold\">\r\n {formatNumber(topWin.payout, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </div>\r\n <div className=\"text-gray-600 text-xs\">\r\n {formatNumber(topWin.multiplier, {\r\n minDecimalPlaces: 2,\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { getTopWins, type TopWin } from '@opexa/portal-sdk-core';\r\nimport { useQuery } from '@tanstack/react-query';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport type { Query } from '../../types';\r\nimport { getTopWinsQueryKey } from './getTopWinsQueryKey';\r\n\r\nexport const useTopWinsQuery: Query<TopWin[]> = (config) => {\r\n return useQuery({\r\n ...config,\r\n queryKey: getTopWinsQueryKey(),\r\n queryFn: async () => {\r\n return await getTopWins({\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n environment: ENVIRONMENT,\r\n });\r\n },\r\n });\r\n};\r\n","import type { QueryKey } from '@tanstack/react-query';\n\nexport const getTopWinsQueryKey = (): QueryKey => ['queries/topWins'];\n","import type { GameProvider } from '@opexa/portal-sdk-core';\r\nimport { ENVIRONMENT } from '../constants';\r\n\r\nconst VERSION = '1';\r\nconst ORIGIN =\r\n ENVIRONMENT === 'development'\r\n ? 'https://static.development.opexa.io/images'\r\n : 'https://static.opexa.io/images';\r\n\r\ntype Args =\r\n | {\r\n id: string;\r\n reference?: never;\r\n provider: GameProvider;\r\n }\r\n | {\r\n id?: never;\r\n reference: string;\r\n provider: GameProvider;\r\n };\r\n\r\nexport function getGameImageUrl<T extends Args>(args: T) {\r\n const id = args.id ?? args.reference;\r\n return `${ORIGIN}/${args.provider.toLocaleLowerCase()}/thumbnail-${id}.webp?version=${VERSION}`;\r\n}\r\n","import { TopWinsContent } from './TopWinsContent';\r\n\r\nexport interface TopWinsProps {\r\n heading: string;\r\n className?: string;\r\n}\r\n\r\nexport async function TopWins(props: TopWinsProps) {\r\n /* await prefetchTopWinsQuery(); */\r\n\r\n return <TopWinsContent {...props} />;\r\n}\r\n","'use client';\r\n\r\nimport useEmblaCarousel from 'embla-carousel-react';\r\nimport Link from 'next/link';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { useTournamentsQuery } from '../../hooks/useTournamentsQuery/useTournamentsQuery';\r\nimport { ArrowLeftIcon } from '../../icons/ArrowLeftIcon';\r\nimport { ArrowRightIcon } from '../../icons/ArrowRightIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { Button } from '../../ui';\r\nimport type { TournamentCounterProps } from './TournamentCounter';\r\nimport { TournamentCounterItem } from './TournamentCounterItem';\r\n\r\nexport function TournamentCounterContent(props: TournamentCounterProps) {\r\n const [emblaRef, emblaApi] = useEmblaCarousel({\r\n align: 'start',\r\n slidesToScroll: 1,\r\n });\r\n\r\n const scrollPrev = useCallback(() => {\r\n if (emblaApi) emblaApi.scrollPrev();\r\n }, [emblaApi]);\r\n\r\n const scrollNext = useCallback(() => {\r\n if (emblaApi) emblaApi.scrollNext();\r\n }, [emblaApi]);\r\n\r\n const [canScrollPrev, setCanScrollPrev] = useState(false);\r\n const [canScrollNext, setCanScrollNext] = useState(false);\r\n\r\n const onSelect = useCallback(() => {\r\n if (!emblaApi) return;\r\n setCanScrollPrev(emblaApi.canScrollPrev());\r\n setCanScrollNext(emblaApi.canScrollNext());\r\n }, [emblaApi]);\r\n\r\n useEffect(() => {\r\n if (!emblaApi) return;\r\n onSelect(); // set initial state\r\n emblaApi.on('select', onSelect);\r\n emblaApi.on('reInit', onSelect); // handles responsive changes\r\n }, [emblaApi, onSelect]);\r\n\r\n const tournamentsQuery = useTournamentsQuery({\r\n first: 100,\r\n filter: {\r\n status: {\r\n equal: 'ACTIVE',\r\n },\r\n },\r\n });\r\n\r\n const tournaments =\r\n tournamentsQuery.data?.pages[0].edges.map((edge) => edge.node) ?? [];\r\n\r\n if (tournaments.length <= 0) return null;\r\n\r\n return (\r\n <div className={props.className}>\r\n <div className=\"mb-3 flex items-center justify-between md:mb-4\">\r\n <div className=\"text-lg font-semibold\">{props.heading}</div>\r\n <div className=\"flex items-center md:gap-3xl\">\r\n <Link\r\n href={props.seeAllUrl}\r\n className=\"flex gap-sm text-sm font-semibold\"\r\n >\r\n See All\r\n <ChevronRightIcon className=\"size-5 lg:hidden\" />\r\n </Link>\r\n\r\n <div className=\"hidden lg:flex\">\r\n <Button\r\n disabled={!canScrollPrev}\r\n onClick={scrollPrev}\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n aria-label=\"Previous\"\r\n >\r\n <ArrowLeftIcon className=\"size-5\" />\r\n </Button>\r\n <Button\r\n disabled={!canScrollNext}\r\n onClick={scrollNext}\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n aria-label=\"Next\"\r\n >\r\n <ArrowRightIcon className=\"size-5\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"w-full overflow-hidden\" ref={emblaRef}>\r\n <div className=\"flex gap-2.5\">\r\n {tournaments.map((tournament, index) => (\r\n <TournamentCounterItem\r\n key={tournament.id}\r\n index={index}\r\n tournament={tournament}\r\n className={\r\n tournaments.length < 2\r\n ? 'w-full'\r\n : 'w-full lg:w-[calc((100%-0.75rem)/2)]'\r\n }\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n getTournaments,\r\n type PaginatedQueryResult,\r\n type Tournament,\r\n type TournamentsInput,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getTournamentsQueryKey } from './getTournamentsQueryKey';\r\n\r\nexport const useTournamentsQuery: InfiniteQuery<\r\n PaginatedQueryResult<Tournament>,\r\n TournamentsInput\r\n> = (input, config) => {\r\n const query = useInfiniteQuery({\r\n ...config,\r\n queryKey: getTournamentsQueryKey(input),\r\n queryFn: ({ pageParam, signal }) => {\r\n return getTournaments(\r\n { ...input, after: pageParam },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo?.hasNextPage) {\r\n return lastPage?.pageInfo?.endCursor;\r\n }\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { TournamentsInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getTournamentsQueryKey = (input?: TournamentsInput): QueryKey => [\n 'queries/tournaments',\n input,\n];\n","'use client';\r\n\r\nimport type { Tournament } from '@opexa/portal-sdk-core';\r\nimport { map, pick, sum } from 'lodash-es';\r\nimport Image from 'next/image';\r\nimport React, { useEffect, useMemo, useState } from 'react';\r\nimport { twMerge } from 'tailwind-merge';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { Award02Icon } from '../../icons/Award02Icon';\r\nimport ball from '../../images/ball.png';\r\nimport card from '../../images/card.png';\r\nimport trophy from '../../images/trophy.png';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\n\r\nexport interface JackpotCounterCardProps {\r\n tournament: Tournament;\r\n className?: string;\r\n index: number;\r\n}\r\n\r\nexport function TournamentCounterItem({\r\n tournament,\r\n className,\r\n index,\r\n}: JackpotCounterCardProps) {\r\n const localeInfo = useLocaleInfo();\r\n\r\n const tournamentReward = sum(map(tournament.rewardSettings, Number));\r\n\r\n const [timeRemaining, setTimeRemaining] = useState({\r\n days: 0,\r\n hours: 0,\r\n minutes: 0,\r\n isPast: false,\r\n });\r\n\r\n const activationEndDateTime = useMemo(\r\n () => new Date(tournament.activationEndDateTime),\r\n [tournament.activationEndDateTime],\r\n );\r\n\r\n const calculateRemainingTime = React.useCallback(() => {\r\n const now = new Date();\r\n const diffMs = activationEndDateTime.getTime() - now.getTime();\r\n\r\n if (diffMs <= 0) {\r\n setTimeRemaining({ days: 0, hours: 0, minutes: 0, isPast: true });\r\n return;\r\n }\r\n\r\n const diffSeconds = Math.floor(diffMs / 1000);\r\n\r\n const days = Math.floor(diffSeconds / (3600 * 24));\r\n const hours = Math.floor((diffSeconds % (3600 * 24)) / 3600);\r\n const minutes = Math.floor((diffSeconds % 3600) / 60);\r\n\r\n const updated = pick({ days, hours, minutes, isPast: false }, [\r\n 'days',\r\n 'hours',\r\n 'minutes',\r\n 'isPast',\r\n ]);\r\n setTimeRemaining(updated);\r\n }, [activationEndDateTime]);\r\n\r\n useEffect(() => {\r\n calculateRemainingTime();\r\n const interval = setInterval(calculateRemainingTime, 60 * 1000);\r\n return () => clearInterval(interval);\r\n }, [activationEndDateTime, calculateRemainingTime]);\r\n\r\n const timeParts = [\r\n { label: 'Day', value: timeRemaining.days },\r\n { label: 'Hour', value: timeRemaining.hours },\r\n { label: 'Min', value: timeRemaining.minutes },\r\n ];\r\n\r\n const tournamentImage = [\r\n {\r\n image: trophy,\r\n },\r\n {\r\n image: card,\r\n },\r\n {\r\n image: ball,\r\n },\r\n ];\r\n\r\n return (\r\n <div\r\n className={twMerge(\r\n 'bg-gray-50 border-gray-200 flex shrink-0 flex-col space-y-2 rounded-sm border p-3 text-center',\r\n className,\r\n )}\r\n >\r\n <div className=\"flex h-full w-full justify-between\">\r\n <div className=\"border-gray-700 bg-gray-300 flex h-fit w-fit items-center rounded-full border px-2 py-0.5 text-xs font-medium\">\r\n <Award02Icon className=\"size-3.5\" />\r\n Multiplier\r\n </div>\r\n\r\n <div className=\"flex h-fit\">\r\n {timeParts.map((part, idx) => (\r\n <React.Fragment key={part.label}>\r\n <div\r\n className={twMerge(\r\n 'rounded-xs bg-gray-600 text-gray-50 flex h-fit w-8 flex-col items-center pb-1.5',\r\n )}\r\n >\r\n <span className=\"text-base font-medium\">\r\n {String(part.value).padStart(2, '0')}\r\n </span>\r\n <span className=\"text-[8px]\">{part.label}</span>\r\n </div>\r\n\r\n {idx < timeParts.length - 1 && (\r\n <div className=\"flex flex-col justify-center gap-[6px] px-[6px]\">\r\n <div className=\"h-1 w-1 rounded-full bg-[#09232E]\" />\r\n <div className=\"h-1 w-1 rounded-full bg-[#09232E]\" />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex justify-between\">\r\n <div className=\"flex h-fit flex-col justify-between text-left\">\r\n <div>\r\n <div className=\"text-lg font-semibold\">{tournament.name}</div>\r\n\r\n <div className=\"bg-gray-950 text-gray-300 w-fit rounded-md px-2 py-1 text-2xl font-bold\">\r\n {formatNumber(tournamentReward, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n maxDecimalPlaces: 2,\r\n })}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-4 text-base font-medium\">Play and Win!</div>\r\n </div>\r\n\r\n <div className=\"flex h-full items-end\">\r\n <div className=\"h-24 w-auto shrink-0\">\r\n <Image\r\n quality={100}\r\n width={100}\r\n height={100}\r\n src={tournamentImage[index % 3].image}\r\n alt=\"\"\r\n className=\"h-full w-auto\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import type { ComponentPropsWithRef } from 'react';\r\n\r\nexport function Award02Icon(props: ComponentPropsWithRef<'svg'>) {\r\n return (\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n {...props}\r\n >\r\n <path d=\"M7 15.0903V22L11.7029 20.1188C11.8126 20.0749 11.8675 20.053 11.9242 20.0443C11.9744 20.0366 12.0256 20.0366 12.0758 20.0443C12.1325 20.053 12.1874 20.0749 12.2971 20.1188L17 22V15.0903M19.5 9.5C19.5 13.6421 16.1421 17 12 17C7.85786 17 4.5 13.6421 4.5 9.5C4.5 5.35786 7.85786 2 12 2C16.1421 2 19.5 5.35786 19.5 9.5Z\" />\r\n </svg>\r\n );\r\n}\r\n","import { TournamentCounterContent } from './TournamentCounterContent';\r\n\r\nexport interface TournamentCounterProps {\r\n className?: string;\r\n heading: string;\r\n seeAllUrl: string;\r\n}\r\n\r\nexport async function TournamentCounter(props: TournamentCounterProps) {\r\n /*\r\n await prefetchTournamentsQuery({\r\n first: 100,\r\n filter: {\r\n status: {\r\n equal: 'ACTIVE',\r\n },\r\n },\r\n });\r\n */\r\n\r\n return <TournamentCounterContent {...props} />;\r\n}\r\n","'use client';\r\n\r\nimport { createListCollection, Portal } from '@ark-ui/react';\r\nimport { tz, TZDateMini } from '@date-fns/tz';\r\nimport { type DepositStatus } from '@opexa/portal-sdk-core';\r\nimport { endOfDay, format, startOfDay } from 'date-fns';\r\nimport { useState } from 'react';\r\nimport { useDepositRecordsQuery } from '../../hooks/useDepositRecordsQuery/useDepositRecordsQuery';\r\nimport { useInfiniteQueryHelper } from '../../hooks/useInfiniteQueryHelper';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { ChevronDownIcon } from '../../icons/ChevronDownIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { File02Icon } from '../../icons/File02Icon';\r\nimport { SpinnerIcon } from '../../icons/SpinnerIcon';\r\nimport type { DateRange } from '../../types';\r\nimport { Badge, IconButton, Select, Table } from '../../ui';\r\nimport { capitalize } from '../../utils/capitalize';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport { Empty } from '../Empty';\r\nimport { TableFilters } from './TableFilters';\r\n\r\nexport function DepositRecordsTable() {\r\n const [timestamp, setTimestamp] = useState<Partial<DateRange> | null>();\r\n const [depositStatus, setDepositStatus] = useState<DepositStatus | null>();\r\n\r\n const localeInfo = useLocaleInfo();\r\n\r\n const {\r\n page,\r\n pageSize,\r\n hasNextPage,\r\n hasPrevPage,\r\n next,\r\n prev,\r\n rows,\r\n setPageSize,\r\n totalPages,\r\n loading,\r\n firstPage,\r\n } = useInfiniteQueryHelper(useDepositRecordsQuery, {\r\n filter: {\r\n ...(depositStatus && {\r\n status: {\r\n equal: depositStatus,\r\n },\r\n }),\r\n ...(timestamp && {\r\n dateTimeCreated: {\r\n ...(timestamp.start && {\r\n greaterThanOrEqual: new TZDateMini(\r\n startOfDay(timestamp.start),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n ...(timestamp.end && {\r\n lesserThanOrEqual: new TZDateMini(\r\n endOfDay(timestamp.end),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n },\r\n }),\r\n },\r\n });\r\n\r\n return (\r\n <>\r\n <TableFilters\r\n enabledFilters={{\r\n depositStatus: true,\r\n }}\r\n value={{\r\n timestamp,\r\n depositStatus,\r\n }}\r\n onChange={(value) => {\r\n firstPage();\r\n setTimestamp(value.timestamp);\r\n setDepositStatus(value.depositStatus);\r\n }}\r\n />\r\n\r\n {rows.length <= 0 && (\r\n <Empty\r\n icon={loading ? SpinnerIcon : File02Icon}\r\n title={loading ? 'Just a moment' : 'No data'}\r\n message={\r\n loading\r\n ? 'Fetching latest deposit records...'\r\n : 'No data is currently available.'\r\n }\r\n className=\"mt-8 lg:mt-16\"\r\n />\r\n )}\r\n\r\n {rows.length >= 1 && (\r\n <div className=\"border-gray-200 mt-lg rounded-xl border\">\r\n <div className=\"border-gray-200 overflow-hidden overflow-x-auto rounded-xl border-b\">\r\n <Table.Root className=\"border-0\">\r\n <Table.Header>\r\n <Table.Row>\r\n <Table.Heading>Deposit No.</Table.Heading>\r\n <Table.Heading>Reference</Table.Heading>\r\n <Table.Heading>Deposit Method</Table.Heading>\r\n <Table.Heading>Applied Amount</Table.Heading>\r\n <Table.Heading>Recieved Amount</Table.Heading>\r\n <Table.Heading>Transaction Fee</Table.Heading>\r\n <Table.Heading>Deposit Time</Table.Heading>\r\n <Table.Heading>Recieved Time</Table.Heading>\r\n <Table.Heading>Status</Table.Heading>\r\n </Table.Row>\r\n </Table.Header>\r\n\r\n <Table.Body>\r\n {rows.map((data) => (\r\n <Table.Row key={data.id}>\r\n <Table.Cell>{data.depositNumber}</Table.Cell>\r\n <Table.Cell>{data.reference}</Table.Cell>\r\n <Table.Cell>\r\n {capitalize(data.type, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.amount, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.netAmount, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.fee, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {format(data.dateTimeCreated, 'yyyy MMM dd hh:mma', {\r\n in: tz(localeInfo.timezone),\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {(data.status === 'CONFIRMED' ||\r\n data.status === 'APPROVED') &&\r\n format(data.dateTimeLastUpdated, 'yyyy MMM dd hh:mma', {\r\n in: tz(localeInfo.timezone),\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n <Badge.Root\r\n variant=\"subtle\"\r\n colorScheme={\r\n data.status === 'FAILED' ||\r\n data.status === 'REJECTED' ||\r\n data.status === 'CANCELLED'\r\n ? 'danger'\r\n : data.status === 'PENDING'\r\n ? 'warning'\r\n : 'success'\r\n }\r\n >\r\n <Badge.Label>\r\n {capitalize(data.status, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Badge.Label>\r\n </Badge.Root>\r\n </Table.Cell>\r\n </Table.Row>\r\n ))}\r\n </Table.Body>\r\n </Table.Root>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-lg px-4 py-3\">\r\n <p>\r\n Page {page} of {totalPages}\r\n </p>\r\n <div className=\"grow\"></div>\r\n <Select.Root\r\n size=\"sm\"\r\n value={[pageSize.toString()]}\r\n onValueChange={(details) => {\r\n const n = parseInt(details.value[0]);\r\n const v = isNaN(n) ? 10 : n;\r\n\r\n setPageSize(v);\r\n }}\r\n collection={pageSizeCollection}\r\n lazyMount\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {pageSizeCollection.items.map((item) => (\r\n <Select.Item key={item} item={item}>\r\n {pageSizeCollection.stringifyItem(item)}\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Trigger>\r\n </Select.Root>\r\n <div>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n disabled={!hasPrevPage || loading}\r\n onClick={() => prev()}\r\n >\r\n <ChevronLeftIcon className=\"size-5\" />\r\n </IconButton>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n disabled={!hasNextPage || loading}\r\n onClick={() => next()}\r\n >\r\n <ChevronRightIcon className=\"size-5\" />\r\n </IconButton>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nconst pageSizeCollection = createListCollection({\r\n items: useInfiniteQueryHelper.config.pageSizes,\r\n itemToValue: (item) => item.toString(),\r\n itemToString: (item) => `${item} items per page`,\r\n});\r\n","import {\r\n type DepositRecord,\r\n type DepositRecordsInput,\r\n getDepositRecords,\r\n type PaginatedQueryResult,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getDepositRecordsQueryKey } from './getDepositRecordsQueryKey';\r\n\r\nexport const useDepositRecordsQuery: InfiniteQuery<\r\n PaginatedQueryResult<DepositRecord>,\r\n DepositRecordsInput\r\n> = (input, config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useInfiniteQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getDepositRecordsQueryKey(input),\r\n queryFn: async ({ pageParam, signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getDepositRecords(\r\n { ...input, after: pageParam },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo?.hasNextPage) {\r\n return lastPage?.pageInfo?.endCursor;\r\n }\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { DepositRecordsInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getDepositRecordsQueryKey = (input?: DepositRecordsInput): QueryKey => [\n 'queries/depositRecords',\n input,\n];\n","import { createListCollection, parseDate, Portal } from '@ark-ui/react';\r\nimport type {\r\n DepositStatus,\r\n GameProvider,\r\n GameType,\r\n WithdrawalStatus,\r\n} from '@opexa/portal-sdk-core';\r\nimport { endOfDay, startOfDay } from 'date-fns';\r\nimport { useState } from 'react';\r\nimport { z } from 'zod';\r\nimport { useControllableState } from '../../hooks/useControllableState';\r\nimport { CheckIcon } from '../../icons/CheckIcon';\r\nimport { ChevronDownIcon } from '../../icons/ChevronDownIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport type { DateRange } from '../../types';\r\nimport { DatePicker, SegmentGroup, Select } from '../../ui';\r\nimport { capitalize } from '../../utils/capitalize';\r\n\r\nconst TabDefinition = z.enum(['all', 'today', 'custom']).catch('all');\r\ntype Tab = z.infer<typeof TabDefinition>;\r\n\r\ninterface EnabledFilters {\r\n timestamp?: boolean;\r\n gameType?: boolean;\r\n gameProvider?: boolean;\r\n depositStatus?: boolean;\r\n withdrawalStatus?: boolean;\r\n}\r\n\r\ninterface Value {\r\n timestamp?: Partial<DateRange> | null;\r\n gameType?: GameType | null;\r\n gameProvider?: GameProvider | null;\r\n depositStatus?: DepositStatus | null;\r\n withdrawalStatus?: WithdrawalStatus | null;\r\n}\r\n\r\ninterface TableFiltersProps {\r\n value?: Value;\r\n defaultValue?: Value;\r\n onChange?: (value: Value) => void;\r\n enabledFilters?: EnabledFilters;\r\n gameTypeOptions?: GameType[];\r\n gameProviderOptions?: GameProvider[];\r\n}\r\n\r\nconst DEPOSIT_STATUSES = [\r\n 'ACCEPTED',\r\n 'APPROVED',\r\n 'CANCELLED',\r\n 'CONFIRMED',\r\n 'FAILED',\r\n 'PENDING',\r\n 'REJECTED',\r\n] as const satisfies DepositStatus[];\r\n\r\nconst WITHDRAWAL_STATUSES = [\r\n 'ACCEPTED',\r\n 'APPROVED',\r\n 'CANCELLED',\r\n 'CONFIRMED',\r\n 'FAILED',\r\n 'PENDING',\r\n 'REJECTED',\r\n] as const satisfies WithdrawalStatus[];\r\n\r\nconst deviceTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\nexport function TableFilters(props: TableFiltersProps) {\r\n const gameTypeCollection = createListCollection({\r\n items: props.gameTypeOptions ?? [],\r\n itemToValue: (item) => item,\r\n itemToString: (item) =>\r\n capitalize(item, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n }),\r\n });\r\n\r\n const gameProviderCollection = createListCollection({\r\n items: props.gameProviderOptions ?? [],\r\n itemToValue: (item) => item,\r\n itemToString: (item) =>\r\n capitalize(item, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n }),\r\n });\r\n\r\n const depositStatusCollection = createListCollection({\r\n items: DEPOSIT_STATUSES,\r\n itemToValue: (item) => item,\r\n itemToString: (item) =>\r\n capitalize(item, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n }),\r\n });\r\n\r\n const withdrawalStatusCollection = createListCollection({\r\n items: WITHDRAWAL_STATUSES,\r\n itemToValue: (item) => item,\r\n itemToString: (item) =>\r\n capitalize(item, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n }),\r\n });\r\n\r\n const [tab, setTab] = useState<Tab>('all');\r\n\r\n const handleChange = (next: Value) => {\r\n const prev = {\r\n timestamp,\r\n gameType,\r\n gameProvider,\r\n depositStatus,\r\n withdrawalStatus,\r\n };\r\n\r\n props.onChange?.({\r\n ...prev,\r\n ...next,\r\n });\r\n };\r\n\r\n const [timestamp, setTimestamp] = useControllableState({\r\n value: props.value?.timestamp,\r\n defaultValue: props.defaultValue?.timestamp ?? null,\r\n onChange(timestamp) {\r\n handleChange({ timestamp });\r\n },\r\n });\r\n\r\n const [gameType, setGameType] = useControllableState({\r\n value: props.value?.gameType,\r\n defaultValue: props.defaultValue?.gameType ?? null,\r\n onChange(gameType) {\r\n handleChange({ gameType });\r\n },\r\n });\r\n\r\n const [gameProvider, setGameProvider] = useControllableState({\r\n value: props.value?.gameProvider,\r\n defaultValue: props.defaultValue?.gameProvider ?? null,\r\n onChange(gameProvider) {\r\n handleChange({ gameProvider });\r\n },\r\n });\r\n\r\n const [depositStatus, setDepositStatus] = useControllableState({\r\n value: props.value?.depositStatus,\r\n defaultValue: props.defaultValue?.depositStatus ?? null,\r\n onChange(depositStatus) {\r\n handleChange({ depositStatus });\r\n },\r\n });\r\n\r\n const [withdrawalStatus, setWithdrawalStatus] = useControllableState({\r\n value: props.value?.withdrawalStatus,\r\n defaultValue: props.defaultValue?.withdrawalStatus ?? null,\r\n onChange(withdrawalStatus) {\r\n handleChange({ withdrawalStatus });\r\n },\r\n });\r\n\r\n return (\r\n <div className=\"flex items-center gap-lg\">\r\n <DatePicker.Root\r\n lazyMount\r\n unmountOnExit\r\n value={[timestamp?.start, timestamp?.end]\r\n .filter(Boolean)\r\n .map((d) => parseDate(d))}\r\n onValueChange={(details) => {\r\n setTimestamp({\r\n start: details.value.at(0)?.toDate(deviceTimezone),\r\n end: details.value.at(1)?.toDate(deviceTimezone),\r\n });\r\n }}\r\n onOpenChange={(details) => {\r\n if (details.open) return;\r\n if (timestamp) return;\r\n setTab('all');\r\n }}\r\n selectionMode=\"range\"\r\n closeOnSelect={false}\r\n positioning={{\r\n gutter: 20,\r\n placement: 'bottom',\r\n }}\r\n >\r\n <SegmentGroup.Root\r\n value={tab}\r\n onValueChange={(details) => {\r\n const value = TabDefinition.parse(details.value);\r\n\r\n if (value === 'today') {\r\n const now = new Date();\r\n\r\n setTimestamp({\r\n start: startOfDay(now),\r\n end: endOfDay(now),\r\n });\r\n } else {\r\n setTimestamp(null);\r\n }\r\n\r\n setTab(value);\r\n }}\r\n >\r\n <SegmentGroup.Item value=\"all\">\r\n <SegmentGroup.ItemText>All</SegmentGroup.ItemText>\r\n <SegmentGroup.ItemControl />\r\n <SegmentGroup.ItemHiddenInput />\r\n </SegmentGroup.Item>\r\n <SegmentGroup.Item value=\"today\">\r\n <SegmentGroup.ItemText>Today</SegmentGroup.ItemText>\r\n <SegmentGroup.ItemControl />\r\n <SegmentGroup.ItemHiddenInput />\r\n </SegmentGroup.Item>\r\n\r\n <DatePicker.Context>\r\n {(api) => (\r\n <SegmentGroup.Item\r\n value=\"custom\"\r\n onClick={() => api.setOpen(true)}\r\n >\r\n <DatePicker.Control>\r\n <SegmentGroup.ItemText>Custom</SegmentGroup.ItemText>\r\n <SegmentGroup.ItemControl />\r\n <SegmentGroup.ItemHiddenInput />\r\n </DatePicker.Control>\r\n </SegmentGroup.Item>\r\n )}\r\n </DatePicker.Context>\r\n\r\n <SegmentGroup.Indicator />\r\n </SegmentGroup.Root>\r\n <Portal>\r\n <DatePicker.Positioner>\r\n <DatePicker.Content>\r\n <DatePicker.View view=\"day\">\r\n <DatePicker.Context>\r\n {(api) => (\r\n <>\r\n <DatePicker.ViewControl>\r\n <DatePicker.PrevTrigger>\r\n <ChevronLeftIcon />\r\n </DatePicker.PrevTrigger>\r\n <DatePicker.ViewTrigger>\r\n <DatePicker.RangeText />\r\n </DatePicker.ViewTrigger>\r\n <DatePicker.NextTrigger>\r\n <ChevronRightIcon />\r\n </DatePicker.NextTrigger>\r\n </DatePicker.ViewControl>\r\n <DatePicker.Table>\r\n <DatePicker.TableHead>\r\n <DatePicker.TableRow>\r\n {api.weekDays.map((weekDay, id) => (\r\n <DatePicker.TableHeader key={id}>\r\n {weekDay.short.substring(0, 2)}\r\n </DatePicker.TableHeader>\r\n ))}\r\n </DatePicker.TableRow>\r\n </DatePicker.TableHead>\r\n <DatePicker.TableBody>\r\n {api.weeks.map((week, id) => (\r\n <DatePicker.TableRow key={id}>\r\n {week.map((day, id) => (\r\n <DatePicker.TableCell key={id} value={day}>\r\n <DatePicker.TableCellTrigger>\r\n {day.day}\r\n </DatePicker.TableCellTrigger>\r\n </DatePicker.TableCell>\r\n ))}\r\n </DatePicker.TableRow>\r\n ))}\r\n </DatePicker.TableBody>\r\n </DatePicker.Table>\r\n </>\r\n )}\r\n </DatePicker.Context>\r\n </DatePicker.View>\r\n </DatePicker.Content>\r\n </DatePicker.Positioner>\r\n </Portal>\r\n </DatePicker.Root>\r\n\r\n <div className=\"grow\" />\r\n\r\n {props.enabledFilters?.gameType && (\r\n <Select.Root\r\n collection={gameTypeCollection}\r\n value={gameType ? [gameType] : []}\r\n onValueChange={(details) => {\r\n const value = z\r\n .enum((props.gameTypeOptions ?? []) as [GameType])\r\n .safeParse(details.value.at(0)).data;\r\n setGameType(value ?? null);\r\n }}\r\n lazyMount\r\n deselectable\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Game Type\" />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n </Select.Trigger>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n <Select.ItemGroup>\r\n {gameTypeCollection.items.map((type) => (\r\n <Select.Item key={type} item={type}>\r\n <Select.ItemText>\r\n {capitalize(type, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Select.ItemText>\r\n <Select.ItemIndicator asChild>\r\n <CheckIcon />\r\n </Select.ItemIndicator>\r\n </Select.Item>\r\n ))}\r\n </Select.ItemGroup>\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n )}\r\n\r\n {props.enabledFilters?.gameProvider && (\r\n <Select.Root\r\n collection={gameProviderCollection}\r\n value={gameProvider ? [gameProvider] : []}\r\n onValueChange={(details) => {\r\n const value = z\r\n .enum((props.gameProviderOptions ?? []) as [GameProvider])\r\n .safeParse(details.value.at(0)).data;\r\n setGameProvider(value ?? null);\r\n }}\r\n lazyMount\r\n deselectable\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Game Vendor\" />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n </Select.Trigger>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n <Select.ItemGroup>\r\n {gameProviderCollection.items.map((provider) => (\r\n <Select.Item key={provider} item={provider}>\r\n <Select.ItemText>\r\n {capitalize(provider, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Select.ItemText>\r\n <Select.ItemIndicator asChild>\r\n <CheckIcon />\r\n </Select.ItemIndicator>\r\n </Select.Item>\r\n ))}\r\n </Select.ItemGroup>\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n )}\r\n\r\n {props.enabledFilters?.depositStatus && (\r\n <Select.Root\r\n collection={depositStatusCollection}\r\n value={depositStatus ? [depositStatus] : []}\r\n onValueChange={(details) => {\r\n const value = z\r\n .enum(DEPOSIT_STATUSES)\r\n .safeParse(details.value.at(0)).data;\r\n setDepositStatus(value ?? null);\r\n }}\r\n lazyMount\r\n deselectable\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Status\" />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n </Select.Trigger>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n <Select.ItemGroup>\r\n {withdrawalStatusCollection.items.map((status) => (\r\n <Select.Item key={status} item={status}>\r\n <Select.ItemText>\r\n {capitalize(status, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Select.ItemText>\r\n <Select.ItemIndicator asChild>\r\n <CheckIcon />\r\n </Select.ItemIndicator>\r\n </Select.Item>\r\n ))}\r\n </Select.ItemGroup>\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n )}\r\n\r\n {props.enabledFilters?.withdrawalStatus && (\r\n <Select.Root\r\n collection={withdrawalStatusCollection}\r\n value={withdrawalStatus ? [withdrawalStatus] : []}\r\n onValueChange={(details) => {\r\n const value = z\r\n .enum(WITHDRAWAL_STATUSES)\r\n .safeParse(details.value.at(0)).data;\r\n setWithdrawalStatus(value ?? null);\r\n }}\r\n lazyMount\r\n deselectable\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText placeholder=\"Status\" />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n </Select.Trigger>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n <Select.ItemGroup>\r\n {depositStatusCollection.items.map((status) => (\r\n <Select.Item key={status} item={status}>\r\n <Select.ItemText>\r\n {capitalize(status, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Select.ItemText>\r\n <Select.ItemIndicator asChild>\r\n <CheckIcon />\r\n </Select.ItemIndicator>\r\n </Select.Item>\r\n ))}\r\n </Select.ItemGroup>\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Root>\r\n )}\r\n </div>\r\n );\r\n}\r\n","'use client';\r\n\r\nimport { createListCollection, Portal } from '@ark-ui/react';\r\nimport { tz, TZDateMini } from '@date-fns/tz';\r\nimport { endOfDay, format, startOfDay } from 'date-fns';\r\nimport { useState } from 'react';\r\nimport { useInfiniteQueryHelper } from '../../hooks/useInfiniteQueryHelper';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useTransactionRecordsQuery } from '../../hooks/useTransactionRecordsQuery/useTransactionRecordsQuery';\r\nimport { ChevronDownIcon } from '../../icons/ChevronDownIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { File02Icon } from '../../icons/File02Icon';\r\nimport { SpinnerIcon } from '../../icons/SpinnerIcon';\r\nimport type { DateRange } from '../../types';\r\nimport { IconButton, Select, Table } from '../../ui';\r\nimport { capitalize } from '../../utils/capitalize';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport { Empty } from '../Empty';\r\nimport { TableFilters } from './TableFilters';\r\n\r\nexport function TransactionRecordsTable() {\r\n const [timestamp, setTimestamp] = useState<Partial<DateRange> | null>();\r\n\r\n const localeInfo = useLocaleInfo();\r\n\r\n const {\r\n page,\r\n pageSize,\r\n hasNextPage,\r\n hasPrevPage,\r\n next,\r\n prev,\r\n rows,\r\n setPageSize,\r\n totalPages,\r\n loading,\r\n firstPage,\r\n } = useInfiniteQueryHelper(useTransactionRecordsQuery, {\r\n filter: {\r\n ...(timestamp && {\r\n dateTimeCreated: {\r\n ...(timestamp.start && {\r\n greaterThanOrEqual: new TZDateMini(\r\n startOfDay(timestamp.start),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n ...(timestamp.end && {\r\n lesserThanOrEqual: new TZDateMini(\r\n endOfDay(timestamp.end),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n },\r\n }),\r\n },\r\n });\r\n\r\n return (\r\n <>\r\n <TableFilters\r\n value={{\r\n timestamp,\r\n }}\r\n onChange={(value) => {\r\n setTimestamp(value.timestamp);\r\n firstPage();\r\n }}\r\n />\r\n\r\n {rows.length <= 0 && (\r\n <Empty\r\n icon={loading ? SpinnerIcon : File02Icon}\r\n title={loading ? 'Just a moment' : 'No data'}\r\n message={\r\n loading\r\n ? 'Fetching latest transaction records...'\r\n : 'No data is currently available.'\r\n }\r\n className=\"mt-8 lg:mt-16\"\r\n />\r\n )}\r\n\r\n {rows.length >= 1 && (\r\n <div className=\"border-gray-200 mt-lg rounded-xl border\">\r\n <div className=\"border-gray-200 overflow-hidden overflow-x-auto rounded-xl border-b\">\r\n <Table.Root className=\"border-0\">\r\n <Table.Header>\r\n <Table.Row>\r\n <Table.Heading>Transaction Type</Table.Heading>\r\n <Table.Heading>Transaction Time</Table.Heading>\r\n <Table.Heading>Amount</Table.Heading>\r\n <Table.Heading>Current Balance</Table.Heading>\r\n <Table.Heading>Reference Number</Table.Heading>\r\n <Table.Heading>Content</Table.Heading>\r\n </Table.Row>\r\n </Table.Header>\r\n\r\n <Table.Body>\r\n {rows.map((data) => (\r\n <Table.Row key={data.id}>\r\n <Table.Cell>\r\n {capitalize(data.type, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {format(data.dateTimeCreated, 'yyyy MMM dd hh:mma', {\r\n in: tz(localeInfo.timezone),\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.amount, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.currentBalance, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>{data.referenceNumber}</Table.Cell>\r\n <Table.Cell>{data.content}</Table.Cell>\r\n </Table.Row>\r\n ))}\r\n </Table.Body>\r\n </Table.Root>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-lg px-4 py-3\">\r\n <p>\r\n Page {page} of {totalPages}\r\n </p>\r\n <div className=\"grow\"></div>\r\n <Select.Root\r\n size=\"sm\"\r\n value={[pageSize.toString()]}\r\n onValueChange={(details) => {\r\n const n = parseInt(details.value[0]);\r\n const v = isNaN(n) ? 10 : n;\r\n\r\n setPageSize(v);\r\n }}\r\n collection={pageSizeCollection}\r\n lazyMount\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {pageSizeCollection.items.map((item) => (\r\n <Select.Item key={item} item={item}>\r\n {pageSizeCollection.stringifyItem(item)}\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Trigger>\r\n </Select.Root>\r\n <div>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n disabled={!hasPrevPage || loading}\r\n onClick={() => prev()}\r\n >\r\n <ChevronLeftIcon className=\"size-5\" />\r\n </IconButton>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n disabled={!hasNextPage || loading}\r\n onClick={() => next()}\r\n >\r\n <ChevronRightIcon className=\"size-5\" />\r\n </IconButton>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nconst pageSizeCollection = createListCollection({\r\n items: useInfiniteQueryHelper.config.pageSizes,\r\n itemToValue: (item) => item.toString(),\r\n itemToString: (item) => `${item} items per page`,\r\n});\r\n","import {\r\n getTransactionRecords,\r\n type PaginatedQueryResult,\r\n type TransactionRecord,\r\n type TransactionRecordsInput,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getTransactionRecordsQueryKey } from './getTransactionRecordsQueryKey';\r\n\r\nexport const useTransactionRecordsQuery: InfiniteQuery<\r\n PaginatedQueryResult<TransactionRecord>,\r\n TransactionRecordsInput\r\n> = (input, config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useInfiniteQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getTransactionRecordsQueryKey(input),\r\n queryFn: async ({ pageParam, signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return getTransactionRecords(\r\n { ...input, after: pageParam },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo?.hasNextPage) {\r\n return lastPage?.pageInfo?.endCursor;\r\n }\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { TransactionRecordsInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getTransactionRecordsQueryKey = (input?: TransactionRecordsInput): QueryKey => [\n 'queries/transactionRecords',\n input,\n];\n","'use client';\r\n\r\nimport { createListCollection, Portal } from '@ark-ui/react';\r\nimport { tz, TZDateMini } from '@date-fns/tz';\r\nimport type { WithdrawalStatus } from '@opexa/portal-sdk-core';\r\nimport { endOfDay, format, startOfDay } from 'date-fns';\r\nimport { useState } from 'react';\r\nimport { useInfiniteQueryHelper } from '../../hooks/useInfiniteQueryHelper';\r\nimport { useLocaleInfo } from '../../hooks/useLocaleInfo';\r\nimport { useWithdrawalRecordsQuery } from '../../hooks/useWithdrawalRecordsQuery/useWithdrawalRecordsQuery';\r\nimport { ChevronDownIcon } from '../../icons/ChevronDownIcon';\r\nimport { ChevronLeftIcon } from '../../icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../icons/ChevronRightIcon';\r\nimport { File02Icon } from '../../icons/File02Icon';\r\nimport { SpinnerIcon } from '../../icons/SpinnerIcon';\r\nimport type { DateRange } from '../../types';\r\nimport { Badge, IconButton, Select, Table } from '../../ui';\r\nimport { capitalize } from '../../utils/capitalize';\r\nimport { formatNumber } from '../../utils/formatNumber';\r\nimport { Empty } from '../Empty';\r\nimport { TableFilters } from './TableFilters';\r\n\r\nexport function WithdrawalRecordsTable() {\r\n const [timestamp, setTimestamp] = useState<Partial<DateRange> | null>();\r\n const [withdrawalStatus, setWithdrawalStatus] =\r\n useState<WithdrawalStatus | null>();\r\n\r\n const localeInfo = useLocaleInfo();\r\n\r\n const {\r\n page,\r\n pageSize,\r\n hasNextPage,\r\n hasPrevPage,\r\n next,\r\n prev,\r\n rows,\r\n setPageSize,\r\n totalPages,\r\n loading,\r\n firstPage,\r\n } = useInfiniteQueryHelper(useWithdrawalRecordsQuery, {\r\n filter: {\r\n ...(withdrawalStatus && {\r\n status: {\r\n equal: withdrawalStatus,\r\n },\r\n }),\r\n ...(timestamp && {\r\n dateTimeCreated: {\r\n ...(timestamp.start && {\r\n greaterThanOrEqual: new TZDateMini(\r\n startOfDay(timestamp.start),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n ...(timestamp.end && {\r\n lesserThanOrEqual: new TZDateMini(\r\n endOfDay(timestamp.end),\r\n localeInfo.timezone,\r\n ).toISOString(),\r\n }),\r\n },\r\n }),\r\n },\r\n });\r\n\r\n return (\r\n <>\r\n <TableFilters\r\n enabledFilters={{\r\n withdrawalStatus: true,\r\n }}\r\n value={{\r\n timestamp,\r\n withdrawalStatus,\r\n }}\r\n onChange={(value) => {\r\n firstPage();\r\n setTimestamp(value.timestamp);\r\n setWithdrawalStatus(value.withdrawalStatus);\r\n }}\r\n />\r\n\r\n {rows.length <= 0 && (\r\n <Empty\r\n icon={loading ? SpinnerIcon : File02Icon}\r\n title={loading ? 'Just a moment' : 'No data'}\r\n message={\r\n loading\r\n ? 'Fetching latest withdrawal records...'\r\n : 'No data is currently available.'\r\n }\r\n className=\"mt-8 lg:mt-16\"\r\n />\r\n )}\r\n\r\n {rows.length >= 1 && (\r\n <div className=\"border-gray-200 mt-lg rounded-xl border\">\r\n <div className=\"border-gray-200 overflow-hidden overflow-x-auto rounded-xl border-b\">\r\n <Table.Root className=\"border-0\">\r\n <Table.Header>\r\n <Table.Row>\r\n <Table.Heading>Withdrawal No.</Table.Heading>\r\n <Table.Heading>Reference</Table.Heading>\r\n <Table.Heading>Withdrawal Method</Table.Heading>\r\n <Table.Heading>Mobile Number</Table.Heading>\r\n <Table.Heading>Withdrawal Amount</Table.Heading>\r\n <Table.Heading>Net Amount</Table.Heading>\r\n <Table.Heading>Transaction Fee</Table.Heading>\r\n <Table.Heading>Bank Name</Table.Heading>\r\n <Table.Heading>Withdrawal Time</Table.Heading>\r\n <Table.Heading>Status</Table.Heading>\r\n </Table.Row>\r\n </Table.Header>\r\n\r\n <Table.Body>\r\n {rows.map((data) => (\r\n <Table.Row key={data.id}>\r\n <Table.Cell>{data.withdrawalNumber}</Table.Cell>\r\n <Table.Cell>{data.reference}</Table.Cell>\r\n <Table.Cell>\r\n {capitalize(data.type, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>{data.recipientMobileNumber}</Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.amount, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.netAmount, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n {formatNumber(data.fee, {\r\n currency: localeInfo.currency.code,\r\n minDecimalPlaces: 2,\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>{data.bank}</Table.Cell>\r\n <Table.Cell>\r\n {format(data.dateTimeCreated, 'yyyy MMM dd hh:mma', {\r\n in: tz(localeInfo.timezone),\r\n })}\r\n </Table.Cell>\r\n <Table.Cell>\r\n <Badge.Root\r\n variant=\"subtle\"\r\n colorScheme={\r\n data.status === 'FAILED' ||\r\n data.status === 'REJECTED' ||\r\n data.status === 'CANCELLED'\r\n ? 'danger'\r\n : data.status === 'PENDING'\r\n ? 'warning'\r\n : 'success'\r\n }\r\n >\r\n <Badge.Label>\r\n {capitalize(data.status, {\r\n delimiter: capitalize.delimiters.UNDERSCORE,\r\n })}\r\n </Badge.Label>\r\n </Badge.Root>\r\n </Table.Cell>\r\n </Table.Row>\r\n ))}\r\n </Table.Body>\r\n </Table.Root>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-lg px-4 py-3\">\r\n <p>\r\n Page {page} of {totalPages}\r\n </p>\r\n <div className=\"grow\"></div>\r\n <Select.Root\r\n size=\"sm\"\r\n value={[pageSize.toString()]}\r\n onValueChange={(details) => {\r\n const n = parseInt(details.value[0]);\r\n const v = isNaN(n) ? 10 : n;\r\n\r\n setPageSize(v);\r\n }}\r\n collection={pageSizeCollection}\r\n lazyMount\r\n >\r\n <Select.Trigger>\r\n <Select.ValueText />\r\n <Select.Indicator asChild>\r\n <ChevronDownIcon />\r\n </Select.Indicator>\r\n <Portal>\r\n <Select.Positioner>\r\n <Select.Content>\r\n {pageSizeCollection.items.map((item) => (\r\n <Select.Item key={item} item={item}>\r\n {pageSizeCollection.stringifyItem(item)}\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Positioner>\r\n </Portal>\r\n </Select.Trigger>\r\n </Select.Root>\r\n <div>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-r-none border-r-0\"\r\n disabled={!hasPrevPage || loading}\r\n onClick={() => prev()}\r\n >\r\n <ChevronLeftIcon className=\"size-5\" />\r\n </IconButton>\r\n <IconButton\r\n size=\"sm\"\r\n variant=\"outline\"\r\n colorScheme=\"gray\"\r\n className=\"rounded-l-none\"\r\n disabled={!hasNextPage || loading}\r\n onClick={() => next()}\r\n >\r\n <ChevronRightIcon className=\"size-5\" />\r\n </IconButton>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nconst pageSizeCollection = createListCollection({\r\n items: useInfiniteQueryHelper.config.pageSizes,\r\n itemToValue: (item) => item.toString(),\r\n itemToString: (item) => `${item} items per page`,\r\n});\r\n","import {\r\n getWithdrawalRecords,\r\n type PaginatedQueryResult,\r\n type WithdrawalRecord,\r\n type WithdrawalRecordsInput,\r\n} from '@opexa/portal-sdk-core';\r\nimport { useInfiniteQuery } from '@tanstack/react-query';\r\nimport invariant from 'tiny-invariant';\r\nimport { ENVIRONMENT, PLATFORM_CODE } from '../../constants';\r\nimport { getSession } from '../../services/client/getSession';\r\nimport type { InfiniteQuery } from '../../types';\r\nimport { getQueryClient } from '../../utils/getQueryClient';\r\nimport { getSessionQueryKey } from '../useSessionQuery/getSessionQueryKey';\r\nimport { useSessionQuery } from '../useSessionQuery/useSessionQuery';\r\nimport { getWithdrawalRecordsQueryKey } from './getWithdrawalRecordsQueryKey';\r\n\r\nexport const useWithdrawalRecordsQuery: InfiniteQuery<\r\n PaginatedQueryResult<WithdrawalRecord>,\r\n WithdrawalRecordsInput\r\n> = (input, config) => {\r\n const queryClient = getQueryClient();\r\n const sessionQuery = useSessionQuery();\r\n\r\n const query = useInfiniteQuery({\r\n ...config,\r\n enabled:\r\n config?.enabled === false\r\n ? false\r\n : sessionQuery.data?.status === 'authenticated',\r\n queryKey: getWithdrawalRecordsQueryKey(input),\r\n queryFn: async ({ pageParam, signal }) => {\r\n const session = await queryClient.fetchQuery({\r\n queryKey: getSessionQueryKey(),\r\n queryFn: () => getSession(),\r\n });\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n invariant(session.status === 'authenticated');\r\n\r\n return await getWithdrawalRecords(\r\n { ...input, after: pageParam },\r\n {\r\n signal,\r\n environment: ENVIRONMENT,\r\n headers: {\r\n 'Platform-Code': PLATFORM_CODE,\r\n Authorization: `Bearer ${session.token}`,\r\n },\r\n },\r\n );\r\n },\r\n initialPageParam: undefined,\r\n getNextPageParam(lastPage) {\r\n if (lastPage?.pageInfo?.hasNextPage) {\r\n return lastPage?.pageInfo?.endCursor;\r\n }\r\n },\r\n });\r\n\r\n return query;\r\n};\r\n","import type { WithdrawalRecordsInput } from '@opexa/portal-sdk-core';\nimport type { QueryKey } from '@tanstack/react-query';\n\nexport const getWithdrawalRecordsQueryKey = (input?: WithdrawalRecordsInput): QueryKey => [\n 'queries/withdrawalRecords',\n input,\n];\n","import type { GameProvider, GameType } from '@opexa/portal-sdk-core';\r\nimport { Tabs } from '../../ui';\r\nimport { DepositRecordsTable } from './DepositRecordsTable';\r\nimport { TransactionRecordsTable } from './TransactionRecordsTable';\r\nimport { WithdrawalRecordsTable } from './WithdrawalRecordsTable';\r\n\r\nexport interface TransactionRecordsProps {\r\n gameTypes: GameType[];\r\n gameProviders: GameProvider[];\r\n className?: string;\r\n}\r\n\r\nexport function TransactionRecords(props: TransactionRecordsProps) {\r\n return (\r\n <div className={props.className}>\r\n <h2 className=\"text-lg font-semibold\">Transaction Records</h2>\r\n <p className=\"text-gray-600 mt-xs text-xs\">\r\n View your transaction records\r\n </p>\r\n\r\n <Tabs.Root\r\n className=\"mt-2xl\"\r\n defaultValue=\"transactions\"\r\n lazyMount\r\n unmountOnExit\r\n >\r\n <div className=\"pb-2xl\">\r\n <Tabs.List>\r\n <Tabs.Trigger value=\"transactions\">Transactions</Tabs.Trigger>\r\n <Tabs.Trigger value=\"deposits\">Deposits</Tabs.Trigger>\r\n <Tabs.Trigger value=\"withdrawals\">Withdrawals</Tabs.Trigger>\r\n <Tabs.Indicator />\r\n </Tabs.List>\r\n </div>\r\n\r\n <Tabs.Content value=\"transactions\" className=\"mt-4xl\">\r\n <TransactionRecordsTable />\r\n </Tabs.Content>\r\n <Tabs.Content value=\"deposits\" className=\"mt-4xl\">\r\n <DepositRecordsTable />\r\n </Tabs.Content>\r\n <Tabs.Content value=\"withdrawals\" className=\"mt-4xl\">\r\n <WithdrawalRecordsTable />\r\n </Tabs.Content>\r\n </Tabs.Root>\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,IAAAA,iBAAuB;AACvB,kBAAiB;AAEjB,qBAA2B;;;ACL3B,6BAAqD;AACrD,IAAAC,sBAAyB;AACzB,4BAAsB;;;ACDtB,iBAAkB;AAEX,IAAM,UAAU,aACpB,OAAO,EACP;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC,KAAK,EACL,MAAM,QAAQ,IAAI,mBAAmB;AAEjC,IAAM,cAAc,aACxB,OAAO,EACP;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC,KAAK,EACL,MAAM,QAAQ,IAAI,uBAAuB;AAErC,IAAM,gBAAgB,aAC1B,OAAO,EACP;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC,KAAK,EACL,MAAM,QAAQ,IAAI,yBAAyB;AAEvC,IAAM,cAAc,aACxB,KAAK,CAAC,cAAc,aAAa,CAAC,EAClC,MAAM,aAAa,EACnB,MAAM,QAAQ,IAAI,uBAAuB;AAErC,IAAM,mBAAmB,aAC7B,IAAI,EACJ,UAAU,OAAO,EACjB,MAAM,KAAK,EACX,MAAM,QAAQ,IAAI,4BAA4B;AAE1C,IAAM,2BAAmC;AAGzC,IAAM,wBAAwC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACtFA,eAAsB,aAA+B;AACnD,QAAM,MAAM,MAAM,MAAM,iBAAiB;AAAA,IACvC,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,QAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,QAAM,OAAQ,MAAM,IAAI,KAAK;AAC7B,QAAM,OAAgB,KAAK,KAAK,KAAK,OAAO,EAAE,QAAQ,kBAAkB;AAExE,SAAO;AACT;;;ACfA,yBAAsC;AACtC,mBAAsB;AAEtB,SAAS,oBAAoB;AAC3B,SAAO,IAAI,+BAAY;AAAA,IACrB,gBAAgB;AAAA,MACd,SAAS;AAAA,QACP,WAAW,MAAO,KAAK;AAAA;AAAA,QACvB,QAAQ,MAAO,KAAK,KAAK;AAAA;AAAA,QACzB,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,QACpB,sBAAsB;AAAA,QACtB,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAI,uBAAgD;AAE7C,IAAM,qBAAiB,oBAAM,MAAM;AACxC,MAAI,6BAAU;AACZ,WAAO,kBAAkB;AAAA,EAC3B;AAEA,MAAI,CAAC,sBAAsB;AACzB,2BAAuB,kBAAkB;AAAA,EAC3C;AAEA,SAAO;AACT,CAAC;;;AC5BM,IAAM,qBAAqB,MAAgB,CAAC,iBAAiB;;;ACFpE,IAAAC,sBAAyB;AAKlB,IAAM,kBAAkC,CAAC,WAAW;AACzD,aAAO,8BAAS;AAAA,IACd,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,GAAG;AAAA,IACH,UAAU,mBAAmB;AAAA,IAC7B,SAAS,YAAY;AACnB,aAAO,MAAM,WAAW;AAAA,IAC1B;AAAA,EACF,CAAC;AACH;;;ACbO,IAAM,qBAAqB,MAAgB,CAAC,iBAAiB;;;ANS7D,IAAM,kBAAwC,CAAC,WAAW;AAXjE;AAYE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,8BAAS;AAAA,IACrB,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,mBAAmB;AAAA,IAC7B,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,gCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM,yCAAiB;AAAA,QAC5B;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,UACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AOzCA,qBAAuB;AAmChB,IAAM,qBAAiB,uBAAoB,CAAC,KAAK,SAAS;AAAA,EAC/D,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,MAAe;AACrB,UAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,QAAQ,KAAK,EAAE,CAAC;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,MAAe;AACrB,UAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,QAAQ,KAAK,EAAE,CAAC;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,QAAQ,MAAe;AACrB,UAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,YAAY,KAAK,EAAE,CAAC;AAAA,IACnD;AAAA,EACF;AAAA,EACA,mBAAmB;AAAA,IACjB,MAAM;AAAA,IACN,QAAQ,MAAe;AACrB,UAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,mBAAmB,KAAK,EAAE,CAAC;AAAA,IACjE;AAAA,IACA,KAAK;AAAA,IACL,OAAO,KAA2B;AAChC,UAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,mBAAmB,IAAI,EAAE,CAAC;AAAA,IAChE;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,SAAS,EAAE,QAAQ,UAAU;AAAA,IAC7B,WAAW,SAA4B;AACrC,UAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,YAAY,QAAQ,EAAE,CAAC;AAAA,IACtD;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,QAAQ,MAAe;AACrB,UAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,SAAS,KAAK,EAAE,CAAC;AAAA,IAC7C;AAAA,EACF;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,QAAQ,MAAe;AACrB,UAAI,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,eAAe,KAAK,EAAE,CAAC;AAAA,IACzD;AAAA,EACF;AACF,EAAE;;;ACnFF,IAAAC,gBAKO;AAmGA,IAAM,oBAAgB,qBAAM,CAAC,aAAmC;AACrE,UAAQ,SAAS,YAAY,GAAG;AAAA,IAC9B,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,aAAa;AAAA,UACb,SAAS,OAAO,GAAG,SAAS,GAAG,GAAG;AAAA,UAClC,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,aAAa;AAAA,UACb,SAAS,OAAO,GAAG,SAAS,GAAG,GAAG;AAAA,UAClC,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,aAAa;AAAA,UACb,SAAS,OAAO,GAAG,SAAS,GAAG,GAAG;AAAA,UAClC,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,aAAa;AAAA,UACb,SAAS,OAAO,GAAG,SAAS,GAAG,GAAG;AAAA,UAClC,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,aAAa;AAAA,UACb,SAAS,QAAQ,GAAG,SAAS,GAAG,GAAG;AAAA,UACnC,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,aAAa;AAAA,UACb,SAAS,QAAQ,GAAG,SAAS,GAAG,GAAG;AAAA,UACnC,SACE;AAAA,QACJ;AAAA,MACF;AAAA,IAEF;AACE,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,UACP,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,cAAc;AAAA,QAChB;AAAA,QACA,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,aAAa;AAAA,UACb,SAAS,QAAQ,GAAG,SAAS,GAAG,GAAG;AAAA,UACnC,SAAS;AAAA,QACX;AAAA,MACF;AAAA,EACJ;AACF,CAAC;AAED,IAAM,iBAAiB,CAAC,UAAwC;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACL,GAAG;AAAA;AAAA,IAEJ,oCAAC,OAAE,UAAS,4BACV;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,CACF;AAAA,IACA,oCAAC,cACC,oCAAC,cAAS,IAAG,sBACX,oCAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,CAC5C,CACF;AAAA,EACF;AAEJ;AAEA,IAAM,gBAAgB,CAAC,UAAwC;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACL,GAAG;AAAA;AAAA,IAEJ,oCAAC,OAAE,UAAS,4BACV;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,CACF;AAAA,IACA,oCAAC,cACC,oCAAC,cAAS,IAAG,sBACX,oCAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,CAC5C,CACF;AAAA,EACF;AAEJ;AAEA,IAAM,aAAa,CAAC,UAAwC;AAC1D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACL,GAAG;AAAA;AAAA,IAEJ,oCAAC,OAAE,UAAS,4BACV;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,CACF;AAAA,IACA,oCAAC,cACC,oCAAC,cAAS,IAAG,sBACX,oCAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,CAC5C,CACF;AAAA,EACF;AAEJ;AAEA,IAAM,iBAAiB,CAAC,UAAwC;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACL,GAAG;AAAA;AAAA,IAEJ,oCAAC,OAAE,UAAS,4BACV;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,CACF;AAAA,IACA,oCAAC,cACC,oCAAC,cAAS,IAAG,sBACX,oCAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,CAC5C,CACF;AAAA,EACF;AAEJ;AAEA,IAAM,iBAAiB,CAAC,UAAwC;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACL,GAAG;AAAA;AAAA,IAEJ,oCAAC,OAAE,UAAS,8BACV;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,CACF;AAAA,IACA,oCAAC,cACC,oCAAC,cAAS,IAAG,wBACX,oCAAC,UAAK,OAAM,MAAK,QAAO,MAAK,MAAK,SAAQ,CAC5C,CACF;AAAA,EACF;AAEJ;;;ACjdA,IAAAC,0BAA2C;AAC3C,IAAAC,sBAAyB;;;ACClB,IAAM,sBAAsB,MAAgB,CAAC,kBAAkB;;;ADI/D,IAAM,mBAAoC,CAAC,WAAW;AAC3D,aAAO,8BAAS;AAAA,IACd,GAAG;AAAA,IACH,UAAU,oBAAoB;AAAA,IAC9B,SAAS,YAAY;AACnB,aAAO,UAAM,qCAAY;AAAA,QACvB,SAAS;AAAA,UACP,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AEfO,IAAM,gBAAgB,MAAM;AAHnC;AAIE,QAAM,QAAQ,iBAAiB;AAC/B,SAAO,gBAAc,WAAM,SAAN,mBAAY,aAAY,aAAa;AAC5D;;;ACNA,IAAAC,sBAA4B;;;ACA5B,eAAsB,UAAU;AAC9B,QAAM,MAAM,MAAM,MAAM,iBAAiB;AAAA,IACvC,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,QAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,QAAQ,IAAI,MAAM;AACxB,UAAM,OAAO;AACb,UAAM,UAAU;AAChB,UAAM;AAAA,EACR;AACF;;;ACbO,IAAM,wBAAwB,MAAmB,CAAC,mBAAmB;;;AFKrE,IAAM,qBAA+B,CAAC,WAAW;AACtD,QAAM,cAAc,eAAe;AAEnC,aAAO,iCAAY;AAAA,IACjB,GAAG;AAAA,IACH,aAAa,sBAAsB;AAAA,IACnC,YAAY,YAAY;AACtB,YAAM,QAAQ;AACd,YAAM,YAAY,kBAAkB,EAAE,UAAU,mBAAmB,EAAE,CAAC;AACtE,kBAAY,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;;;AGnBA,IAAAC,0BAAuC;AACvC,IAAAC,sBAAyB;AACzB,IAAAC,yBAAsB;;;ACAf,IAAM,oBAAoB,MAAgB,CAAC,gBAAgB;;;ADS3D,IAAM,iBAAuC,CAAC,WAAW;AAXhE;AAYE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,aAAO,8BAAS;AAAA,IACd,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,kBAAkB;AAAA,IAC5B,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,iCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM,mCAAU;AAAA,QACrB;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,UACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AEtCO,SAAS,iBAAiB,OAAqC;AACpE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,mBAAkB;AAAA,EAC5B;AAEJ;;;ACjBO,SAAS,aAAa,OAAqC;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,4QAA2Q;AAAA,EACrR;AAEJ;;;ACjBO,SAAS,WAAW,OAAqC;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,uXAAsX;AAAA,EAChY;AAEJ;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAAC,gBAA4B;;;ACD5B,IAAAC,SAAuB;;;ACEvB,SAAS,WAAmC,OAAU,MAAmB;AACvE,QAAM,OAAqB,CAAC;AAC5B,QAAM,SAAuB,CAAC;AAE9B,QAAM,SAAS,IAAI,IAAI,IAAI;AAE3B,aAAW,OAAO,OAAO;AACvB,QAAI,OAAO,IAAI,GAAG,GAAG;AACnB,aAAO,GAAG,IAAI,MAAM,GAAG;AAAA,IACzB,OAAO;AACL,WAAK,GAAG,IAAI,MAAM,GAAG;AAAA,IACvB;AAAA,EACF;AAEA,SAAO,CAAC,QAAQ,IAAI;AACtB;AAEO,SAAS,iBAAyC,MAAmB;AAC1E,SAAO,SAAS,MAAuB,OAAc;AACnD,WAAO,WAAW,OAAO,IAAI;AAAA,EAC/B;AACF;;;ADXO,SAAS,oBAKd,QAAgB;AAChB,QAAM,gBAAsB,qBAA2C,IAAI;AAE3E,WAASC,cAAa;AACpB,UAAM,UAAgB,kBAAW,aAAa;AAC9C,WAAO;AAAA,EACT;AAEA,WAASC,kBAA6C,WAAuC;AAC3F,UAAM,kBAAkB,CAAC,UAAiB;AACxC,YAAM,CAAC,aAAa,UAAU,IAAI,iBAAiB,OAAO,WAAW,EAAE,KAAK;AAC5E,YAAM,UAAU,OAAO,WAAW;AAElC,aACE,qCAAC,cAAc,UAAd,EAAuB,OAAO,WAC7B,qCAAC,aAAW,GAAI,YAAsB,CACxC;AAAA,IAEJ;AAEA,WAAO;AAAA,EACT;AAEA,WAASC,eACP,WACA,MACA;AACA,UAAM,kBAAkB,CAAC,UAAwB;AAC/C,YAAM,CAAC,aAAa,UAAU,IAAI,iBAAiB,OAAO,WAAW,EAAE,KAAK;AAC5E,YAAM,UAAU,OAAO,WAAW;AAClC,YAAM,WAAW;AACjB,YAAM,WAAW,QAAQ,QAAQ;AACjC,YAAM,uBACJ,eAAe,cAAc,OAAO,WAAW,cAAc,WACzD,WAAW,YACX;AACN,YAAM,YAAY,CAAC,WACf,uBACA,SAAS;AAAA,QACP,GAAG;AAAA,QACH,WAAW;AAAA,MACb,CAAC;AAEL,aACE,qCAAC,cAAc,UAAd,EAAuB,OAAO,WAC7B,qCAAC,aAAW,GAAI,YAAsB,WAAsB,CAC9D;AAAA,IAEJ;AAEA,oBAAgB,cAAc,UAAU,eAAe,UAAU;AAEjE,WAAO;AAAA,EACT;AAEA,WAASC,cACP,WACA,MACA;AACA,UAAM,kBAAkB,CAAC,UAAwB;AAC/C,YAAM,UAAUH,YAAW;AAC3B,YAAM,CAAC,aAAa,UAAU,IAAI,iBAAiB,OAAO,WAAW,EAAE,KAAK;AAC5E,YAAM,WAAW;AACjB,YAAM,WAAW,CAAC,UAAU,OAAO,WAAW,EAAE,QAAQ,IAAI,QAAQ,QAAQ;AAC5E,YAAM,uBACJ,eAAe,cAAc,OAAO,WAAW,cAAc,WACzD,WAAW,YACX;AACN,YAAM,YAAY,CAAC,WACf,uBACA,SAAS;AAAA,QACP,GAAG;AAAA,QACH,WAAW;AAAA,MACb,CAAC;AAEL,aAAO,qCAAC,aAAW,GAAI,YAAsB,WAAsB;AAAA,IACrE;AAEA,oBAAgB,cAAc,UAAU,eAAe,UAAU;AAEjE,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,kBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,aAAAC;AAAA,EACF;AACF;;;AE1GA,IAAAC,gBAA8B;AAC9B,+BAAmB;;;ACKZ,SAAS,qBACdC,UACA,aAAoD,CAAC,GACrD;AACA,QAAMC,UAASD,SAAQ,KAAK,EAAE,OAA8C,CAAC,KAAK,QAAQ;AACxF,QAAI,GAAG,IAAI,WAAW,GAAG,KAAK;AAC9B,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAOC;AACT;;;ADZA,IAAM,UAAU,4BAAc,WAAW,UAAU,QAAQ,QAAQ;AAE5D,IAAM,wBAAoB,6BAAG;AAAA,EAClC,OAAO,qBAAqB,SAAS;AAAA,IACnC,UACE;AAAA,IACF,YAAY;AAAA,IACZ,SACE;AAAA,IACF,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa;AAAA,IACb,cAAc;AAAA,IACd,QAAQ;AAAA,EACV,CAAC;AACH,CAAC;;;AHdD,IAAM,EAAE,aAAa,iBAAiB,IACpC,oBAAoB,iBAAiB;AAEhC,IAAM,OAAO,iBAAiB,qBAAO,IAAI;AACzC,IAAM,WAAW,YAAY,qBAAO,UAAU,UAAU;AACxD,IAAM,eAAe,YAAY,qBAAO,cAAc,cAAc;AACpE,IAAM,UAAU,YAAY,qBAAO,SAAS,SAAS;AACrD,IAAM,cAAc,YAAY,qBAAO,aAAa,aAAa;AACjE,IAAM,aAAa,YAAY,qBAAO,YAAY,YAAY;AAC9D,IAAM,QAAQ,YAAY,qBAAO,OAAO,OAAO;AAC/C,IAAM,UAAU,YAAY,qBAAO,SAAS,SAAS;AACrD,IAAM,SAAS,YAAY,kBAAI,SAAS,QAAQ;AAChD,IAAM,OAAO,YAAY,kBAAI,SAAS,MAAM;AAC5C,IAAM,SAAS,YAAY,kBAAI,SAAS,QAAQ;AAChD,IAAM,UAAU,qBAAO;;;AKpB9B;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA,cAAAC;AAAA;AAEA,IAAAC,gBAAuB;;;ACFvB,IAAAC,gBAA8B;AAC9B,IAAAC,4BAAmB;AAGZ,IAAM,mBAAe,8BAAG;AAAA,EAC7B,OAAO,qBAAqB,6BAAe;AAAA,IACzC,MAAM;AAAA,IACN,UACE;AAAA,IACF,OAAO;AAAA,EACT,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,MAAM;AAAA,QACN,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;;;ADhBD,IAAM,EAAE,aAAAC,cAAa,aAAa,IAAI,oBAAoB,YAAY;AAE/D,IAAMC,QAAO,aAAa,qBAAO,MAAM,MAAM;AAC7C,IAAM,QAAQD,aAAY,qBAAO,OAAO,OAAO;AAC/C,IAAM,WAAWA,aAAY,qBAAO,UAAU,UAAU;AACxD,IAAME,WAAU,qBAAO;;;AEX9B;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA;AAEA,IAAAC,gBAAoB;;;ACFpB,qBAA8B;AAEvB,IAAM,mBAAe,8BAAc,OAAO,EAAE;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AACF;;;ACNA,IAAAC,4BAAmB;AAIZ,IAAM,kBAAc,8BAAG;AAAA,EAC5B,OAAO,qBAAqB,cAAc;AAAA,IACxC,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,EACb,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,QAAQ,CAAC;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC;AAAA,MACP,QAAQ,CAAC;AAAA,MACT,SAAS,CAAC;AAAA,MACV,SAAS,CAAC;AAAA,MACV,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AACF,CAAC;;;AF3DD,IAAM,EAAE,cAAAC,eAAc,aAAAC,aAAY,IAAI,oBAAoB,WAAW;AACrE,IAAM,QAAQ,aAAa,MAAM;AAM1B,IAAMC,QAAOF;AAAA,EAClB,CAAC,UAAsB,oCAAC,kBAAI,KAAJ,EAAS,GAAG,MAAM,KAAK,OAAQ,GAAG,OAAO;AAAA,EACjE;AACF;AAMO,IAAM,QAAQC;AAAA,EACnB,CAAC,UAA2B,oCAAC,kBAAI,MAAJ,EAAU,GAAG,MAAM,MAAM,OAAQ,GAAG,OAAO;AAAA,EACxE;AACF;AAMO,IAAM,YAAYA;AAAA,EACvB,CAAC,UACC,oCAAC,kBAAI,KAAJ,EAAS,GAAG,MAAM,UAAU,OAAO,SAAO,MAAE,GAAG,OAAO;AAAA,EAEzD;AACF;;;AGpCA,IAAAE,gBAAoB;;;ACFb,SAAS,SAAS,OAAmC;AAC1D,SAAO,QAAQ,KAAK;AACtB;;;ACFA,IAAAC,4BAAsC;AAE/B,IAAM,mBAAe,8BAAG;AAAA,EAC7B,MAAM;AAAA,EACN,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,SAAS;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF,CAAC;;;AFhCM,SAAS,OAAO,OAAoB;AACzC,QAAM,CAAC,aAAa,UAAU,IAAI;AAAA,IAChC,aAAa;AAAA,EACf,EAAE,KAAK;AAEP,SACE;AAAA,IAAC,kBAAI;AAAA,IAAJ;AAAA,MACC,MAAK;AAAA,MACJ,GAAG;AAAA,MACJ,WAAW,aAAa;AAAA,QACtB,GAAG;AAAA,QACH,WAAW,WAAW;AAAA,MACxB,CAAC;AAAA,MACD,iBAAe,SAAS,WAAW,QAAQ;AAAA;AAAA,EAC7C;AAEJ;;;AG9BA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,mBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,oBAAAC;AAAA;AAEA,IAAAC,iBAAyB;;;ACFzB,IAAAC,gBAAgC;AAChC,IAAAC,4BAAmB;AAGZ,IAAM,qBAAiB,8BAAG;AAAA,EAC/B,OAAO,qBAAqB,+BAAiB;AAAA,IAC3C,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,EACT,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS,CAAC;AAAA,IACZ;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,QACT,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAW;AAAA,QACX,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AACF,CAAC;;;AD9CM,IAAM,EAAE,aAAAC,cAAa,cAAAC,cAAa,IACvC,oBAAoB,cAAc;AAE7B,IAAMC,QAAOD,cAAa,wBAAS,MAAM,MAAM;AAC/C,IAAM,UAAUD,aAAY,wBAAS,SAAS,SAAS;AACvD,IAAM,QAAQA,aAAY,wBAAS,OAAO,OAAO;AACjD,IAAMG,aAAYH,aAAY,wBAAS,WAAW,WAAW;AAC7D,IAAMI,SAAQJ,aAAY,wBAAS,OAAO,OAAO;AACjD,IAAM,cAAc,wBAAS;AAC7B,IAAMK,WAAU,wBAAS;;;AEbhC,IAAAC,iBAAyB;AAElB,IAAMC,QAAO,wBAAS;;;ACJ7B;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA,oBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAAC,iBAA2B;;;ACF3B,IAAAC,iBAAkC;AAClC,IAAAC,4BAAmB;AAGZ,IAAM,uBAAmB,8BAAG;AAAA,EACjC,OAAO,qBAAqB,kCAAmB;AAAA,IAC7C,SACE;AAAA,IACF,OAAO;AAAA,IACP,kBACE;AAAA,IACF,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aACE;AAAA,IACF,aACE;AAAA,IACF,WAAW;AAAA,EACb,CAAC;AACH,CAAC;;;ADbD,IAAM,EAAE,cAAAC,eAAc,aAAAC,aAAY,IAAI,oBAAoB,gBAAgB;AAEnE,IAAMC,QAAOF,cAAa,0BAAW,MAAM,MAAM;AACjD,IAAM,eAAeC;AAAA,EAC1B,0BAAW;AAAA,EACX;AACF;AACO,IAAME,WAAUF,aAAY,0BAAW,SAAS,SAAS;AACzD,IAAMG,WAAUH,aAAY,0BAAW,SAAS,SAAS;AACzD,IAAM,QAAQA,aAAY,0BAAW,OAAO,OAAO;AACnD,IAAMI,SAAQJ,aAAY,0BAAW,OAAO,OAAO;AACnD,IAAM,cAAcA,aAAY,0BAAW,aAAa,aAAa;AACrE,IAAM,cAAcA,aAAY,0BAAW,aAAa,aAAa;AACrE,IAAMK,cAAaL,aAAY,0BAAW,YAAY,YAAY;AAClE,IAAM,gBAAgBA;AAAA,EAC3B,0BAAW;AAAA,EACX;AACF;AACO,IAAM,cAAcA,aAAY,0BAAW,aAAa,aAAa;AACrE,IAAM,YAAYA,aAAY,0BAAW,WAAW,WAAW;AAC/D,IAAM,QAAQA,aAAY,0BAAW,OAAO,OAAO;AACnD,IAAM,YAAYA,aAAY,0BAAW,WAAW,WAAW;AAC/D,IAAM,YAAYA,aAAY,0BAAW,WAAW,WAAW;AAC/D,IAAM,mBAAmBA;AAAA,EAC9B,0BAAW;AAAA,EACX;AACF;AACO,IAAM,YAAYA,aAAY,0BAAW,WAAW,WAAW;AAC/D,IAAM,cAAcA,aAAY,0BAAW,aAAa,aAAa;AACrE,IAAM,WAAWA,aAAY,0BAAW,UAAU,UAAU;AAC5D,IAAMM,WAAUN,aAAY,0BAAW,SAAS,SAAS;AACzD,IAAM,OAAOA,aAAY,0BAAW,MAAM,MAAM;AAChD,IAAM,cAAcA,aAAY,0BAAW,aAAa,aAAa;AACrE,IAAM,cAAcA,aAAY,0BAAW,aAAa,aAAa;AACrE,IAAM,aAAaA,aAAY,0BAAW,YAAY,YAAY;AAClE,IAAMO,WAAU,0BAAW;;;AEzClC;AAAA;AAAA,kBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,eAAAC;AAAA;AAEA,IAAAC,iBAA4B;;;ACF5B,IAAAC,iBAA8B;AAC9B,IAAAC,4BAAmB;AAGnB,IAAMC,WAAU,6BAAc,WAAW,UAAU,QAAQ,QAAQ;AAE5D,IAAM,mBAAe,8BAAG;AAAA,EAC7B,OAAO,qBAAqBA,UAAS;AAAA,IACnC,UACE;AAAA,IACF,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,cACE;AAAA,EACJ,CAAC;AACH,CAAC;;;ADTD,IAAM,EAAE,aAAAC,cAAa,kBAAAC,kBAAiB,IAAI,oBAAoB,YAAY;AAEnE,IAAMC,QAAOD,kBAAiB,sBAAO,IAAI;AACzC,IAAME,YAAWH,aAAY,sBAAO,UAAU,UAAU;AACxD,IAAMI,gBAAeJ,aAAY,sBAAO,cAAc,cAAc;AACpE,IAAMK,WAAUL,aAAY,sBAAO,SAAS,SAAS;AACrD,IAAMM,eAAcN,aAAY,sBAAO,aAAa,aAAa;AACjE,IAAMO,cAAaP,aAAY,sBAAO,YAAY,YAAY;AAC9D,IAAMQ,SAAQR,aAAY,sBAAO,OAAO,OAAO;AAC/C,IAAMS,WAAUT,aAAY,sBAAO,SAAS,SAAS;AACrD,IAAMU,UAASV,aAAY,mBAAI,SAAS,QAAQ;AAChD,IAAMW,QAAOX,aAAY,mBAAI,SAAS,MAAM;AAC5C,IAAMY,UAASZ,aAAY,mBAAI,SAAS,QAAQ;AAChD,IAAMa,WAAU,sBAAO;;;AEnB9B;AAAA;AAAA,kBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,eAAAC;AAAA;AAEA,IAAAC,iBAA4B;;;ACF5B,IAAAC,iBAA8B;AAC9B,IAAAC,4BAAmB;AAGnB,IAAMC,WAAU,6BAAc,WAAW,UAAU,QAAQ,QAAQ;AAE5D,IAAM,mBAAe,8BAAG;AAAA,EAC7B,OAAO,qBAAqBA,UAAS;AAAA,IACnC,UACE;AAAA,IACF,YACE;AAAA,IACF,SAAS;AAAA,EACX,CAAC;AAAA,EACD,UAAU;AAAA,IACR,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,SACE;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,QACL,SACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,WAAW;AAAA,EACb;AACF,CAAC;;;ADvBD,IAAM,EAAE,aAAAC,cAAa,kBAAAC,kBAAiB,IAAI,oBAAoB,YAAY;AAEnE,IAAMC,QAAOD,kBAAiB,sBAAO,IAAI;AACzC,IAAME,YAAWH,aAAY,sBAAO,UAAU,UAAU;AACxD,IAAMI,gBAAeJ,aAAY,sBAAO,cAAc,cAAc;AACpE,IAAMK,WAAUL,aAAY,sBAAO,SAAS,SAAS;AACrD,IAAMM,eAAcN,aAAY,sBAAO,aAAa,aAAa;AACjE,IAAMO,cAAaP,aAAY,sBAAO,YAAY,YAAY;AAC9D,IAAMQ,SAAQR,aAAY,sBAAO,OAAO,OAAO;AAC/C,IAAMS,WAAUT,aAAY,sBAAO,SAAS,SAAS;AACrD,IAAMU,UAASV,aAAY,mBAAI,SAAS,QAAQ;AAChD,IAAMW,QAAOX,aAAY,mBAAI,SAAS,MAAM;AAC5C,IAAMY,UAASZ,aAAY,mBAAI,SAAS,QAAQ;AAChD,IAAMa,WAAU,sBAAO;;;AEnB9B;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA,eAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAEA,IAAAC,iBAAsB;;;ACFtB,IAAAC,iBAA6B;AAC7B,4BAAwB;AACxB,IAAAC,4BAAmB;AAGnB,IAAM,4BAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,kBAAc,8BAAG;AAAA,EAC5B,OAAO,qBAAqB,6BAAc;AAAA,IACxC,OACE;AAAA,IACF,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,mBAAmB;AAAA,EACrB,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS,CAAC;AAAA,IACZ;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AACF,CAAC;;;ADvDD,IAAM,EAAE,aAAAC,cAAa,cAAAC,cAAa,IAAI,oBAAoB,WAAW;AAE9D,IAAMC,QAAOD,cAAa,qBAAM,MAAM,MAAM;AAC5C,IAAME,SAAQH,aAAY,qBAAM,OAAO,OAAO;AAC9C,IAAMI,SAAQJ,aAAY,qBAAM,OAAO,OAAO;AAC9C,IAAM,aAAaA,aAAY,qBAAM,YAAY,YAAY;AAC7D,IAAM,YAAYA,aAAY,qBAAM,WAAW,WAAW;AAC1D,IAAM,SAASA,aAAY,qBAAM,QAAQ,QAAQ;AACjD,IAAM,WAAWA,aAAY,qBAAM,UAAU,UAAU;AACvD,IAAMK,WAAU,qBAAM;;;AEb7B,IAAAC,iBAAoB;;;ACFpB,IAAAC,6BAAsC;AAG/B,IAAM,uBAAmB,+BAAG;AAAA,EACjC,QAAQ;AAAA,EACR,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF,CAAC;;;ADAM,SAAS,WAAW,OAAwB;AACjD,QAAM,CAAC,aAAa,UAAU,IAAI;AAAA,IAChC,iBAAiB;AAAA,EACnB,EAAE,KAAK;AAEP,SACE;AAAA,IAAC,mBAAI;AAAA,IAAJ;AAAA,MACC,MAAK;AAAA,MACJ,GAAG;AAAA,MACJ,WAAW,iBAAiB;AAAA,QAC1B,GAAG;AAAA,QACH,WAAW,WAAW;AAAA,MACxB,CAAC;AAAA,MACD,iBAAe,SAAS,WAAW,QAAQ;AAAA;AAAA,EAC7C;AAEJ;;;AE/BA,IAAAC,iBAAqB;AAEd,IAAMC,SAAO,oBAAK;;;ACJzB;AAAA;AAAA,iBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA;AAAA;AAAA,eAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAEA,IAAAC,iBAA4B;;;ACF5B,IAAAC,iBAAmC;AACnC,IAAAC,6BAAmB;AAGZ,IAAM,wBAAoB,+BAAG;AAAA,EAClC,OAAO,qBAAqB,mCAAoB;AAAA,IAC9C,SACE;AAAA,IACF,OACE;AAAA,IACF,OAAO;AAAA,IACP,kBACE;AAAA,IACF,kBACE;AAAA,EACJ,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,kBAAkB;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,EACR;AACF,CAAC;;;ADtBD,IAAM,EAAE,aAAAC,cAAa,cAAAC,cAAa,IAAI,oBAAoB,iBAAiB;AAEpE,IAAMC,SAAOD,cAAa,2BAAY,MAAM,MAAM;AAClD,IAAME,WAAUH,aAAY,2BAAY,SAAS,SAAS;AAC1D,IAAM,mBAAmBA;AAAA,EAC9B,2BAAY;AAAA,EACZ;AACF;AACO,IAAM,mBAAmBA;AAAA,EAC9B,2BAAY;AAAA,EACZ;AACF;AACO,IAAMI,SAAQJ,aAAY,2BAAY,OAAO,OAAO;AACpD,IAAMK,SAAQL,aAAY,2BAAY,OAAO,OAAO;AACpD,IAAM,WAAWA,aAAY,2BAAY,UAAU,UAAU;AAC7D,IAAM,YAAYA,aAAY,2BAAY,WAAW,WAAW;AAChE,IAAMM,WAAU,2BAAY;;;AEtBnC;AAAA;AAAA,iBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,YAAAC;AAAA;AAEA,IAAAC,iBAAyB;;;ACFzB,IAAAC,iBAAgC;AAChC,IAAAC,6BAAmB;AAGZ,IAAM,qBAAiB,+BAAG;AAAA,EAC/B,OAAO,qBAAqB,gCAAiB;AAAA,IAC3C,SAAS;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,EACT,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS,CAAC;AAAA,IACZ;AAAA,IACA,aAAa;AAAA,MACX,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,SAAS;AAAA,MACT,aAAa;AAAA,MACb,WAAW;AAAA,QACT,OACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AACF,CAAC;;;ADjCD,IAAM,EAAE,aAAAC,eAAa,cAAAC,cAAa,IAAI,oBAAoB,cAAc;AAEjE,IAAMC,SAAOD,cAAa,wBAAS,MAAM,MAAM;AAC/C,IAAME,SAAQH,cAAY,wBAAS,OAAO,OAAO;AACjD,IAAMI,WAAUJ,cAAY,wBAAS,SAAS,SAAS;AACvD,IAAMK,SAAQL,cAAY,wBAAS,OAAO,OAAO;AACjD,IAAMM,eAAc,wBAAS;AAC7B,IAAMC,WAAU,wBAAS;;;AEbhC;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,eAAAC;AAAA;AAEA,IAAAC,iBAAwB;;;ACFxB,IAAAC,iBAA+B;AAC/B,IAAAC,6BAAmB;AAGZ,IAAM,oBAAgB,+BAAG;AAAA,EAC9B,OAAO,qBAAqB,+BAAgB;AAAA,IAC1C,SACE;AAAA,IACF,YAAY;AAAA,EACd,CAAC;AACH,CAAC;;;ADJD,IAAM,EAAE,kBAAAC,mBAAkB,aAAAC,cAAY,IAAI,oBAAoB,aAAa;AAEpE,IAAMC,SAAOF,kBAAiB,uBAAQ,IAAI;AAC1C,IAAM,SAASC,cAAY,uBAAQ,QAAQ,QAAQ;AACnD,IAAM,QAAQA,cAAY,uBAAQ,OAAO,OAAO;AAChD,IAAM,WAAWA,cAAY,uBAAQ,UAAU,UAAU;AACzD,IAAME,gBAAeF,cAAY,uBAAQ,cAAc,cAAc;AACrE,IAAMG,WAAUH,cAAY,uBAAQ,SAAS,SAAS;AACtD,IAAMI,eAAcJ,cAAY,uBAAQ,aAAa,aAAa;AAClE,IAAMK,aAAYL,cAAY,uBAAQ,WAAW,WAAW;AAC5D,IAAMM,cAAaN,cAAY,uBAAQ,YAAY,YAAY;AAC/D,IAAMO,SAAQP,cAAY,uBAAQ,OAAO,OAAO;AAChD,IAAMQ,WAAUR,cAAY,uBAAQ,SAAS,SAAS;AACtD,IAAMS,YAAU,uBAAQ;;;AEjB/B,IAAAC,iBAAyB;AAElB,IAAMC,SAAO,wBAAS;;;ACJ7B;AAAA;AAAA,iBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA,YAAAC;AAAA;AAEA,IAAAC,iBAA6B;;;ACF7B,IAAAC,iBAAoC;AACpC,IAAAC,6BAAmB;AAGZ,IAAM,yBAAqB,+BAAG;AAAA,EACnC,OAAO,qBAAqB,kCAAmB;AAAA,EAC/C,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI,CAAC;AAAA,IACP;AAAA,IACA,SAAS;AAAA,MACP,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,WACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,QACT,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF,CAAC;;;AD5BD,IAAM,EAAE,cAAAC,eAAc,aAAAC,cAAY,IAAI,oBAAoB,kBAAkB;AAErE,IAAMC,SAAOF,cAAa,4BAAa,MAAM,MAAM;AACnD,IAAMG,aAAYF,cAAY,4BAAa,WAAW,WAAW;AACjE,IAAM,OAAOA,cAAY,4BAAa,MAAM,MAAM;AAClD,IAAM,cAAcA,cAAY,4BAAa,aAAa,aAAa;AACvE,IAAM,WAAWA,cAAY,4BAAa,UAAU,UAAU;AAC9D,IAAMG,SAAQH,cAAY,4BAAa,OAAO,OAAO;AACrD,IAAMI,YAAU,4BAAa;AAC7B,IAAM,cAAc,4BAAa;AACjC,IAAM,kBAAkB,4BAAa;;;AEhB5C;AAAA;AAAA,sBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA;AAAA,mBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,oBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,iBAAAC;AAAA;AAGA,IAAAC,iBAAuB;;;ACHvB,IAAAC,iBAA8B;AAC9B,IAAAC,6BAAmB;AAGZ,IAAM,mBAAe,+BAAG;AAAA,EAC7B,OAAO,qBAAqB,8BAAe;AAAA,IACzC,WACE;AAAA,IACF,YAAY;AAAA,IACZ,SACE;AAAA,IACF,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,EACjB,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,MACA,IAAI;AAAA,QACF,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,QACP,SACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF,CAAC;;;AD9BD,IAAM,EAAE,cAAAC,eAAc,aAAAC,cAAY,IAAI,oBAAoB,YAAY;AAE/D,IAAMC,SAAOF,cAAa,sBAAO,MAAW,MAAM;AAClD,IAAMG,gBAAeF,cAAY,sBAAO,cAAc,cAAc;AACpE,IAAMG,WAAUH,cAAY,sBAAO,SAAS,SAAS;AACrD,IAAMI,WAAUJ,cAAY,sBAAO,SAAS,SAAS;AACrD,IAAMK,aAAYL,cAAY,sBAAO,WAAW,WAAW;AAC3D,IAAMM,QAAON,cAAY,sBAAO,MAAM,MAAM;AAC5C,IAAM,YAAYA,cAAY,sBAAO,WAAW,WAAW;AAC3D,IAAM,iBAAiBA;AAAA,EAC5B,sBAAO;AAAA,EACP;AACF;AACO,IAAM,gBAAgBA,cAAY,sBAAO,eAAe,eAAe;AACvE,IAAMO,YAAWP,cAAY,sBAAO,UAAU,UAAU;AACxD,IAAMQ,SAAQR,cAAY,sBAAO,OAAO,OAAO;AAC/C,IAAM,OAAOA,cAAY,sBAAO,MAAM,MAAM;AAC5C,IAAMS,cAAaT,cAAY,sBAAO,YAAY,YAAY;AAC9D,IAAMU,WAAUV,cAAY,sBAAO,SAAS,SAAS;AACrD,IAAMW,aAAYX,cAAY,sBAAO,WAAW,WAAW;AAC3D,IAAMY,YAAU,sBAAO;AACvB,IAAM,eAAe,sBAAO;AAC5B,IAAMC,eAAc,sBAAO;;;AE7BlC;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,gBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAEA,IAAAC,iBAAoB;;;ACFpB,IAAAC,6BAAmB;;;ACAnB,IAAAC,kBAA8B;AAEvB,IAAM,mBAAe,+BAAc,OAAO,EAAE;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ADNO,IAAM,kBAAc,+BAAG;AAAA,EAC5B,OAAO,qBAAqB,cAAc;AAAA,IACxC,MAAM;AAAA,EACR,CAAC;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,QACF,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF,CAAC;;;ADrBD,IAAM,EAAE,cAAAC,gBAAc,aAAAC,cAAY,IAAI,oBAAoB,WAAW;AAE9D,IAAMC,SAAOF,eAAa,mBAAI,OAAO,MAAM;AAC3C,IAAMG,UAASF,cAAY,mBAAI,OAAO,QAAQ;AAC9C,IAAMG,QAAOH,cAAY,mBAAI,OAAO,MAAM;AAC1C,IAAMI,UAASJ,cAAY,mBAAI,OAAO,QAAQ;AAC9C,IAAM,MAAMA,cAAY,mBAAI,IAAI,KAAK;AACrC,IAAM,UAAUA,cAAY,mBAAI,IAAI,SAAS;AAC7C,IAAM,OAAOA,cAAY,mBAAI,IAAI,MAAM;;;AGd9C;AAAA;AAAA,iBAAAK;AAAA,EAAA,eAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,eAAAC;AAAA;AAEA,IAAAC,iBAAqB;;;ACFrB,IAAAC,iBAA4B;AAC5B,IAAAC,6BAAmB;AAGZ,IAAM,iBAAa,+BAAG;AAAA,EAC3B,OAAO,qBAAqB,0BAAW;AAAA,EACvC,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI,CAAC;AAAA,IACP;AAAA,IACA,SAAS;AAAA,MACP,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,QACP,MAAM;AAAA,QACN,WAAW;AAAA,QACX,SACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF,CAAC;;;AD5BD,IAAM,EAAE,aAAAC,eAAa,cAAAC,eAAa,IAAI,oBAAoB,UAAU;AAE7D,IAAMC,SAAOD,eAAa,oBAAK,MAAM,MAAM;AAC3C,IAAME,WAAUH,cAAY,oBAAK,SAAS,SAAS;AACnD,IAAMI,aAAYJ,cAAY,oBAAK,WAAW,WAAW;AACzD,IAAMK,QAAOL,cAAY,oBAAK,MAAM,MAAM;AAC1C,IAAMM,WAAUN,cAAY,oBAAK,SAAS,SAAS;AACnD,IAAMO,YAAU,oBAAK;;;AEX5B,IAAAC,iBAAwB;AAEjB,IAAMC,SAAO,uBAAQ;;;ACJ5B,IAAAC,cAAkB;AAElB,IAAM,aAAa,cAChB,MAAM;AAAA,EACL,cAAE,OAAO;AAAA,EACT,cAAE,OAAO,EAAE,UAAU,CAAC,QAAQ;AAC5B,UAAM,SAAS,WAAW,GAAG;AAC7B,WAAO,MAAM,MAAM,IAAI,OAAO;AAAA,EAChC,CAAC;AACH,CAAC,EACA,SAAS,EACT,SAAS,EACT,QAAQ,IAAI,EACZ,MAAM,IAAI;AAIN,SAAS,aAAa,OAAgB,WAA0B,MAAM;AAC3E,SAAO,WAAW,MAAM,KAAK,KAAK;AACpC;;;ACNA,IAAM,gBAAgB;AAAA,EACpB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,kBAAkB;AACpB;AAWO,SAAS,aAAa,OAAgB,QAA6B;AACxE,QAAM;AAAA;AAAA,IAEJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,OAAO,OAAO,CAAC,GAAG,eAAe,MAAM;AAE3C,QAAM,YAAY,IAAI,KAAK,aAAa,QAAQ;AAAA,IAC9C,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IAEvB,GAAI,OAAO,aAAa,WACpB;AAAA,MACE,OAAO;AAAA,MACP;AAAA,IACF,IACA,CAAC;AAAA,IAEL,GAAI,UACA;AAAA,MACE,UAAU;AAAA,MACV,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB,IACA,CAAC;AAAA,EACP,CAAC;AAED,SAAO,UAAU,OAAO,aAAa,OAAO,CAAC,CAAC;AAChD;;;AlEhCO,SAAS,QAAQ,OAAqB;AAC3C,QAAM,cAAc;AAAA,QAClB,2BAAW,CAAC,SAAS;AAAA,MACnB,SAAS,IAAI;AAAA,MACb,eAAe,IAAI;AAAA,IACrB,EAAE;AAAA,EACJ;AAEA,SACE,0DACE;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAM,YAAY,QAAQ;AAAA,MAC1B,cAAc,CAAC,YAAY;AACzB,oBAAY,QAAQ,QAAQ,QAAQ,IAAI;AAAA,MAC1C;AAAA,MACA,WAAS;AAAA,MACT,eAAa;AAAA;AAAA,IAEb,oCAAC,eAAO,SAAP,EAAe,SAAO,MAAC,WAAU,eAC/B,MAAM,YACL,oCAAC,YAAO,MAAK,YACX,oCAAC,eAAO,MAAP,MACC,oCAAC,eAAO,UAAP,MACC,oCAAC,gBAAW,CACd,CACF,CACF,CAEJ;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,UAAP,IAAgB,GACjB,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,EAAe,WAAU,mDACxB,oCAAC,aAAQ,GACT,oCAAC,YAAO,GACR,oCAAC,SAAM,OAAO,MAAM,SAAS,CAAC,GAAG,GACjC,oCAAC,SAAI,WAAU,QAAO,GACtB,oCAAC,eAAU,CACb,CACF,CACF;AAAA,EACF,GAEA;AAAA,IAAC,gBAAQ;AAAA,IAAR;AAAA,MACC,MAAM,YAAY,cAAc;AAAA,MAChC,cAAc,CAAC,YAAY;AACzB,oBAAY,cAAc,QAAQ,QAAQ,IAAI;AAAA,MAChD;AAAA,MACA,WAAS;AAAA,MACT,eAAa;AAAA,MACb,aAAa;AAAA,QACX,WAAW;AAAA,MACb;AAAA;AAAA,IAEA,oCAAC,gBAAQ,SAAR,EAAgB,WAAU,kBAAiB,SAAO,QAChD,MAAM,YACL,oCAAC,YAAO,MAAK,YACX,oCAAC,eAAO,MAAP,MACC,oCAAC,eAAO,UAAP,MACC,oCAAC,gBAAW,CACd,CACF,CACF,CAEJ;AAAA,IACA,oCAAC,6BACC,oCAAC,gBAAQ,YAAR,MACC,oCAAC,gBAAQ,SAAR,EAAgB,WAAU,4HACzB,oCAAC,aAAQ,GACT,oCAAC,YAAO,GACR,oCAAC,SAAM,OAAO,MAAM,SAAS,CAAC,GAAG,GACjC,oCAAC,eAAU,CACb,CACF,CACF;AAAA,EACF,CACF;AAEJ;AAEA,SAAS,YAAY;AACnB,SACE,oCAAC,SAAI,WAAU,8CAA2C,0CAE1D;AAEJ;AAEA,SAAS,UAAU;AApHnB;AAqHE,QAAM,eAAe,gBAAgB;AAErC,SACE,oCAAC,SAAI,WAAU,6BACb,oCAAC,eAAO,MAAP,MACC,oCAAC,eAAO,UAAP,MACC,oCAAC,gBAAW,CACd,CACF,GACA,oCAAC,aACC,oCAAC,OAAE,WAAU,4BAAyB,kBAAa,SAAb,mBAAmB,IAAK,GAC9D,oCAAC,OAAE,WAAU,6BACV,kBAAa,SAAb,mBAAmB,eAClB,kBAAa,SAAb,mBAAmB,mBACnB,kBAAa,SAAb,mBAAmB,SACvB,CACF,CACF;AAEJ;AAMA,SAAS,MAAM,OAAmB;AAChC,QAAM,kBAAkB,mBAAmB;AAC3C,QAAM,cAAc;AAAA,QAClB,2BAAW,CAAC,SAAS;AAAA,MACnB,SAAS,IAAI;AAAA,MACb,eAAe,IAAI;AAAA,IACrB,EAAE;AAAA,EACJ;AAEA,SACE,oCAAC,SAAI,WAAU,sBACb,oCAAC,YACE,MAAM,MAAM,IAAI,CAAC,MAAM,UACtB;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,KAAK,OAAO;AAAA,MACjB,WAAU;AAAA;AAAA,IAEV;AAAA,MAAC,YAAAC;AAAA,MAAA;AAAA,QACC,MAAM,KAAK;AAAA,QACX,SAAS,MAAM;AACb,sBAAY,QAAQ,QAAQ,KAAK;AACjC,sBAAY,cAAc,QAAQ,KAAK;AAAA,QACzC;AAAA,QACA,WAAU;AAAA;AAAA,MAEV,oCAAC,KAAK,MAAL,EAAU,WAAU,UAAS;AAAA,MAC9B,oCAAC,UAAK,WAAU,UAAQ,KAAK,KAAM;AAAA,MACnC,oCAAC,oBAAiB,WAAU,wBAAuB;AAAA,IACrD;AAAA,EACF,CACD,CACH,GAEA,oCAAC,YACC,oCAAC,QAAG,WAAU,sDACZ;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,UAAU,gBAAgB;AAAA,MAC1B,SAAS,MAAM;AACb,wBAAgB,OAAO;AACvB,oBAAY,QAAQ,QAAQ,KAAK;AACjC,oBAAY,cAAc,QAAQ,KAAK;AAAA,MACzC;AAAA;AAAA,IAEA,oCAAC,gBAAa,WAAU,UAAS;AAAA,IACjC,oCAAC,UAAK,WAAU,UAAO,SAAO;AAAA,IAC9B,oCAAC,oBAAiB,WAAU,wBAAuB;AAAA,EACrD,CACF,CACF,CACF;AAEJ;AAEA,SAAS,SAAS;AArMlB;AAsME,QAAM,aAAa,cAAc;AACjC,QAAM,cAAc,eAAe;AAAA,IACjC,iBAAiB;AAAA,EACnB,CAAC;AAED,QAAM,cAAc;AAAA,QAClB,2BAAW,CAAC,SAAS;AAAA,MACnB,SAAS,IAAI;AAAA,MACb,eAAe,IAAI;AAAA,MACnB,mBAAmB,IAAI;AAAA,IACzB,EAAE;AAAA,EACJ;AAEA,SACE,oCAAC,SAAI,WAAU,0DACb,oCAAC,SAAI,WAAU,wGAAqG,mBAEpH,GACA,oCAAC,SAAI,WAAU,iCACZ,cAAa,iBAAY,SAAZ,mBAAkB,SAAS;AAAA,IACvC,UAAU,yCAAY,SAAS;AAAA,IAC/B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,SAAI,WAAU,sBACb;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,SAAS,MAAM;AACb,oBAAY,kBAAkB,QAAQ,IAAI;AAC1C,oBAAY,kBAAkB,OAAO,YAAY;AACjD,oBAAY,QAAQ,QAAQ,KAAK;AACjC,oBAAY,cAAc,QAAQ,KAAK;AAAA,MACzC;AAAA;AAAA,IACD;AAAA,EAED,GACA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,MAAM;AACb,oBAAY,kBAAkB,QAAQ,IAAI;AAC1C,oBAAY,kBAAkB,OAAO,SAAS;AAC9C,oBAAY,QAAQ,QAAQ,KAAK;AACjC,oBAAY,cAAc,QAAQ,KAAK;AAAA,MACzC;AAAA;AAAA,IACD;AAAA,EAED,CACF,CACF;AAEJ;;;AmExPA,qCAAkC;AAClC,kCAEO;AAEP,mBAAkB;AAClB,IAAAC,eAAiB;AACjB,IAAAC,iBAA8C;AAC9C,IAAAC,yBAAwB;AAajB,SAAS,OAAO,OAAoB;AACzC,QAAM,CAAC,UAAU,QAAQ,QAAI,4BAAAC;AAAA,IAC3B;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,UACE,+BAAAC,SAAsB;AAAA,QACpB,YAAY;AAAA,QACZ,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,CAAC,cAAc,eAAe,QAAI,yBAAS,CAAC;AAElD,gCAAU,MAAM;AACd,aAAS,QAAQ,QAAiC;AAChD,uBAAgB,iCAAQ,yBAAwB,CAAC;AAAA,IACnD;AAEA,yCAAU,GAAG,UAAU;AACvB,yCAAU,GAAG,QAAQ;AAErB,WAAO,MAAM;AACX,2CAAU,GAAG,QAAQ;AACrB,2CAAU,IAAI,UAAU;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,SACE,oCAAC,SAAI,eAAW,gCAAQ,YAAY,MAAM,SAAS,KACjD,oCAAC,SAAI,KAAK,UAAU,WAAU,qBAC5B,oCAAC,SAAI,WAAU,gBACZ,MAAM,QAAQ,IAAI,CAAC,QAAQ,UAAU;AACpC,UAAM,MACJ;AAAA,MAAC,aAAAC;AAAA,MAAA;AAAA,QACC,KAAK,OAAO;AAAA,QACZ,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,UAAU,UAAU;AAAA;AAAA,IACtB;AAGF,WACE,oCAAC,2BAAS,KAAK,SACZ,CAAC,OAAO,cACP,oCAAC,SAAI,WAAU,qBAAmB,GAAI,IAEtC;AAAA,MAAC,aAAAC;AAAA,MAAA;AAAA,QACC,MAAM,OAAO;AAAA,QACb,WAAU;AAAA;AAAA,MAET;AAAA,IACH,CAEJ;AAAA,EAEJ,CAAC,CACH,CACF,GAEA,oCAAC,SAAI,WAAU,mEACZ,MAAM,QAAQ,IAAI,CAAC,GAAG,UACrB;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAS,MAAM;AACb,6CAAU,SAAS;AAAA,MACrB;AAAA,MACA,cAAY,eAAe,QAAQ,CAAC;AAAA,MACpC,eAAa,SAAS,UAAU,YAAY;AAAA;AAAA,EAC9C,CACD,CACH,CACF;AAEJ;;;ACrGA,IAAAC,iBAAwD;AACxD,gBAA+B;AAM/B,sBAA6C;AAC7C,IAAAA,iBAAqC;AACrC,IAAAC,cAAkB;;;ACXlB,IAAAC,0BAKO;AACP,IAAAC,sBAAiC;AACjC,IAAAC,yBAAsB;;;ACJf,IAAM,wBAAwB,CAAC,UAAsC;AAAA,EAC1E;AAAA,EACA;AACF;;;ADUO,IAAM,qBAGT,CAAC,OAAO,WAAW;AAnBvB;AAoBE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,sCAAiB;AAAA,IAC7B,WAAS,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACvC,GAAG;AAAA,IACH,UAAU,sBAAsB,KAAK;AAAA,IACrC,SAAS,OAAO,EAAE,WAAW,OAAO,MAAM;AACxC,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,iCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM;AAAA,QACX,EAAE,GAAG,OAAO,OAAO,UAAU;AAAA,QAC7B;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB,UAAU;AAhD/B,UAAAC,KAAA;AAiDM,WAAIA,MAAA,qCAAU,aAAV,gBAAAA,IAAoB,aAAa;AACnC,gBAAO,0CAAU,aAAV,mBAAoB;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AEvDA,uBAAsB;AACtB,IAAAC,iBAAyB;AA2BlB,SAAS,uBAIdC,YACA,WACyC;AAnC3C;AAoCE,QAAM,CAAC,MAAM,OAAO,QAAI,yBAAS,CAAC;AAClC,QAAM,CAAC,UAAU,YAAY,QAAI,yBAAS,EAAE;AAE5C,QAAM,cAAc,CAAC,SAAiB;AACpC,YAAQ,CAAC;AACT,iBAAa,IAAI;AAAA,EACnB;AAEA,QAAM,QAAQA,WAAS;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAG;AAAA,EACL,CAAC;AAED,QAAM,eACJ,WAAM,SAAN,mBAAY,MACT,IAAI,CAACC,UAASA,MAAK,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,GAChD,WAAU,CAAC;AAEhB,QAAM,kBAAc,wBAAM,YAAY,QAAQ;AAC9C,QAAM,mBAAmB,KAAK,KAAK,WAAW,SAAS,QAAQ;AAE/D,QAAM,OAAO,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1C,QAAM,cAAY,iBAAM,SAAN,mBAAY,MAAM,GAAG,QAArB,mBAA0B,eAAc;AAC1D,QAAM,aAAa,KAAK,KAAK,YAAY,QAAQ;AACjD,QAAM,cAAc,OAAO;AAC3B,QAAM,cAAc,OAAO;AAE3B,QAAM,OAAO,YAAY;AACvB,QAAI,CAAC,aAAa;AAChB;AAAA,IACF;AAEA,UAAM,WAAW,OAAO;AAExB,QAAI,mBAAmB,UAAU;AAC/B,YAAM,MAAM,cAAc;AAAA,IAC5B;AAEA,YAAQ,CAACC,UAASA,QAAO,CAAC;AAAA,EAC5B;AAEA,QAAM,OAAO,YAAY;AACvB,QAAI,CAAC,aAAa;AAChB;AAAA,IACF;AAEA,YAAQ,CAACA,UAASA,QAAO,CAAC;AAAA,EAC5B;AAEA,QAAM,YAAY,MAAM;AACtB,YAAQ,CAAC;AAAA,EACX;AAEA,QAAM,UAAU,MAAM,aAAa,MAAM;AAEzC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,uBAAuB,SAAS;AAAA,EAC9B,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG;AAAA,EAC3B,iBAAiB;AAAA,EACjB,aAAa;AACf;;;AC/GO,SAAS,UAAU,OAAqC;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,mBAAkB;AAAA,EAC5B;AAEJ;;;ACjBO,SAAS,gBAAgB,OAAqC;AACnE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,mBAAkB;AAAA,EAC5B;AAEJ;;;ACjBO,SAAS,gBAAgB,OAAqC;AACnE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,oBAAmB;AAAA,EAC7B;AAEJ;;;ACjBO,SAAS,WAAW,OAAqC;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,6eAA4e;AAAA,EACtf;AAEJ;;;ACfO,SAAS,YAAY,OAAqC;AAC/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACP,GAAG;AAAA;AAAA,IAEJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA,QACF,SAAQ;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,MAEF;AAAA,QAAC;AAAA;AAAA,UACC,eAAc;AAAA,UACd,KAAI;AAAA,UACJ,aAAY;AAAA,UACZ,MAAK;AAAA,UACL,QAAO;AAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEJ;;;ACdA,IAAM,QAAQ;AACd,IAAM,aAAa;AACnB,IAAM,OAAO;AACb,IAAM,SAAS;AASR,SAAS,WAAW,SAAiB,QAA2B;AACrE,QAAM,QAAO,iCAAQ,SAAQ;AAC7B,QAAM,SAAQ,iCAAQ,UAAS;AAC/B,QAAM,aAAY,iCAAQ,cAAa;AAEvC,MAAI,KAAM,WAAU,QAAQ,KAAK;AAEjC,MAAI,QAAQ,SAAS,GAAG;AACtB,WAAO,QAAQ,YAAY;AAAA,EAC7B;AAEA,MAAI,qBAAqB,QAAQ;AAC/B,cAAU,YAAY;AAAA,EACxB;AAEA,SAAO,QACJ,MAAM,SAAS,EACf,IAAI,CAAC,SAAS;AACb,QAAI,KAAK,SAAS,EAAG,QAAO,KAAK,YAAY;AAE7C,UAAM,YAAY,KAAK,OAAO,CAAC,EAAE,YAAY;AAC7C,UAAM,aAAa,QAAQ,KAAK,UAAU,CAAC,EAAE,YAAY,IAAI,KAAK,UAAU,CAAC;AAE7E,WAAO,UAAU,OAAO,UAAU;AAAA,EACpC,CAAC,EACA,KAAK,GAAG;AACb;AAEA,WAAW,aAAa;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA;AACF;;;ACnEO,SAAS,UAAU,OAAqC;AAC7D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,MAAK;AAAA,MACJ,GAAG;AAAA;AAAA,IAEJ,oCAAC,OAAE,QAAO,iCACR;AAAA,MAAC;AAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACP,GACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,MAAK;AAAA;AAAA,IACP,CACF;AAAA,IACA,oCAAC,cACC;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,GAAE;AAAA,QACF,GAAE;AAAA,QACF,OAAM;AAAA,QACN,QAAO;AAAA,QACP,aAAY;AAAA,QACZ,2BAA0B;AAAA;AAAA,MAE1B,oCAAC,aAAQ,cAAa,KAAI,QAAO,sBAAqB;AAAA,MACtD;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,MAAK;AAAA,UACL,QAAO;AAAA,UACP,QAAO;AAAA;AAAA,MACT;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,QAAO;AAAA,UACP,UAAS;AAAA,UACT,IAAG;AAAA,UACH,QAAO;AAAA;AAAA,MACT;AAAA,MACA,oCAAC,cAAS,IAAG,KAAI;AAAA,MACjB,oCAAC,oBAAe,cAAa,KAAI;AAAA,MACjC,oCAAC,iBAAY,KAAI,aAAY,UAAS,OAAM;AAAA,MAC5C;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAO;AAAA;AAAA,MACT;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,KAAI;AAAA,UACJ,QAAO;AAAA;AAAA,MACT;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,MAAK;AAAA,UACL,QAAO;AAAA,UACP,QAAO;AAAA;AAAA,MACT;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,QAAO;AAAA,UACP,UAAS;AAAA,UACT,IAAG;AAAA,UACH,QAAO;AAAA;AAAA,MACT;AAAA,MACA,oCAAC,cAAS,IAAG,MAAK;AAAA,MAClB,oCAAC,oBAAe,cAAa,MAAK;AAAA,MAClC,oCAAC,iBAAY,KAAI,aAAY,UAAS,OAAM;AAAA,MAC5C;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAO;AAAA;AAAA,MACT;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,KAAI;AAAA,UACJ,QAAO;AAAA;AAAA,MACT;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,IAAG;AAAA,UACH,KAAI;AAAA,UACJ,QAAO;AAAA;AAAA,MACT;AAAA,IACF,GACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,eAAc;AAAA;AAAA,MAEd,oCAAC,UAAK,WAAU,WAAU;AAAA,MAC1B,oCAAC,UAAK,QAAO,YAAW,WAAU,SAAQ,aAAY,KAAI;AAAA,IAC5D,GACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,eAAc;AAAA;AAAA,MAEd,oCAAC,UAAK,WAAU,WAAU;AAAA,MAC1B,oCAAC,UAAK,QAAO,YAAW,WAAU,SAAQ,aAAY,KAAI;AAAA,IAC5D,GACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,eAAc;AAAA;AAAA,MAEd,oCAAC,UAAK,WAAU,WAAU;AAAA,MAC1B,oCAAC,UAAK,QAAO,YAAW,WAAU,SAAQ,aAAY,KAAI;AAAA,IAC5D,CACF;AAAA,EACF;AAEJ;;;AChIO,SAAS,MAAM,OAAmB;AACvC,SACE,oCAAC,SAAI,MAAK,SAAQ,aAAU,UAAS,WAAW,MAAM,aACpD,oCAAC,SAAI,WAAU,sCACb,oCAAC,SAAI,WAAU,mFAAkF,GACjG,oCAAC,aAAU,WAAU,mCAAkC,GACvD,oCAAC,SAAI,WAAU,sIACb,oCAAC,MAAM,MAAN,EAAW,WAAU,qBAAoB,CAC5C,CACF,GACA,oCAAC,QAAG,WAAU,qCAAmC,MAAM,KAAM,GAC7D,oCAAC,OAAE,WAAU,mEACV,MAAM,OACT,CACF;AAEJ;;;AXWO,SAAS,kBAAkB,OAAwB;AArC1D;AAsCE,QAAM,CAAC,KAAK,MAAM,QAAI,yBAAwC,KAAK;AAEnE,QAAM,CAAC,OAAO,QAAQ,QAAI;AAAA,IACxB,CAACC,OAAiBC,WAA8B;AAAA,MAC9C,GAAGD;AAAA,MACH,GAAGC;AAAA,IACL;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM,MAAM,UAAU,CAAC;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,aAAa,cAAc;AAEjC,QAAM,yBAAqB,qCAAqB;AAAA,IAC9C,OAAO,MAAM;AAAA,IACb,aAAa,CAAC,SAAS;AAAA,IACvB,cAAc,CAAC,SACb,WAAW,MAAM;AAAA,MACf,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC;AAAA,EACL,CAAC;AAED,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,uBAAuB,oBAAoB;AAAA,IAC7C,QAAQ;AAAA,MACN,GAAI,MAAM,QAAQ;AAAA,QAChB,YAAY;AAAA,UACV,OAAO,MAAM;AAAA,QACf;AAAA,MACF;AAAA,MACA,GAAI,MAAM,YAAY;AAAA,QACpB,gBAAgB;AAAA,UACd,OAAO,MAAM;AAAA,QACf;AAAA,MACF;AAAA,MACA,GAAI,MAAM,UAAU;AAAA,QAClB,QAAQ;AAAA,UACN,OAAO,MAAM;AAAA,QACf;AAAA,MACF;AAAA,MACA,GAAI,MAAM,aAAa;AAAA,QACrB,iBAAiB;AAAA,UACf,GAAI,MAAM,UAAU,SAAS;AAAA,YAC3B,oBAAoB,IAAI;AAAA,kBACtB,4BAAW,MAAM,UAAU,KAAK;AAAA,cAChC,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,UACA,GAAI,MAAM,UAAU,OAAO;AAAA,YACzB,mBAAmB,IAAI;AAAA,kBACrB,0BAAS,MAAM,UAAU,GAAG;AAAA,cAC5B,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,QAAG,WAAU,2BAAwB,aAAW,GACjD,oCAAC,OAAE,WAAU,iCAA8B,uBAAqB,GAEhE,oCAAC,SAAI,WAAU,mBACb;AAAA,IAAC,qBAAa;AAAA,IAAb;AAAA,MACC,OAAO,MAAM;AAAA,MACb,eAAe,CAAC,YAAY;AAC1B,kBAAU;AACV,iBAAS;AAAA,UACP,MACE,cACG,KAAM,MAAM,aAAa,CAAC,CAAgB,EAC1C,UAAU,QAAQ,KAAK,EAAE,QAAQ;AAAA,QACxC,CAAC;AAAA,MACH;AAAA;AAAA,IAEC,MAAM,UAAU,IAAI,CAAC,SACpB,oCAAC,qBAAa,MAAb,EAAkB,KAAK,MAAM,OAAO,QACnC,oCAAC,qBAAa,UAAb,MACE,WAAW,MAAM;AAAA,MAChB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH,GACA,oCAAC,qBAAa,aAAb,IAAyB,GAC1B,oCAAC,qBAAa,iBAAb,IAA6B,CAChC,CACD;AAAA,IAED,oCAAC,qBAAa,WAAb,IAAuB;AAAA,EAC1B,CACF,GAEA,oCAAC,SAAI,WAAU,YACb,oCAAC,SAAI,WAAU,8BACb;AAAA,IAAC,mBAAW;AAAA,IAAX;AAAA,MACC,WAAS;AAAA,MACT,eAAa;AAAA,MACb,OAAO,EAAC,WAAM,cAAN,mBAAiB,QAAO,WAAM,cAAN,mBAAiB,GAAG,EACjD,OAAO,OAAO,EACd,IAAI,CAAC,UAAM,0BAAU,CAAC,CAAC;AAAA,MAC1B,eAAe,CAAC,YAAY;AAzJxC,YAAAC,KAAAC;AA0Jc,kBAAU;AACV,iBAAS;AAAA,UACP,WAAW;AAAA,YACT,QAAOD,MAAA,QAAQ,MAAM,GAAG,CAAC,MAAlB,gBAAAA,IAAqB,OAAO;AAAA,YACnC,MAAKC,MAAA,QAAQ,MAAM,GAAG,CAAC,MAAlB,gBAAAA,IAAqB,OAAO;AAAA,UACnC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,cAAc,CAAC,YAAY;AACzB,YAAI,QAAQ,KAAM;AAClB,YAAI,MAAM,UAAW;AACrB,eAAO,KAAK;AAAA,MACd;AAAA,MACA,eAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,WAAW;AAAA,MACb;AAAA;AAAA,IAEA;AAAA,MAAC,qBAAa;AAAA,MAAb;AAAA,QACC,OAAO;AAAA,QACP,eAAe,CAAC,YAAY;AAC1B,gBAAM,QAAQ,cAAc,MAAM,QAAQ,KAAK;AAE/C,cAAI,UAAU,SAAS;AACrB,kBAAM,MAAM,oBAAI,KAAK;AAErB,qBAAS;AAAA,cACP,WAAW;AAAA,gBACT,WAAO,4BAAW,GAAG;AAAA,gBACrB,SAAK,0BAAS,GAAG;AAAA,cACnB;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,qBAAS;AAAA,cACP,WAAW;AAAA,YACb,CAAC;AAAA,UACH;AAEA,oBAAU;AACV,iBAAO,KAAK;AAAA,QACd;AAAA;AAAA,MAEA,oCAAC,qBAAa,MAAb,EAAkB,OAAM,SACvB,oCAAC,qBAAa,UAAb,MAAsB,KAAG,GAC1B,oCAAC,qBAAa,aAAb,IAAyB,GAC1B,oCAAC,qBAAa,iBAAb,IAA6B,CAChC;AAAA,MACA,oCAAC,qBAAa,MAAb,EAAkB,OAAM,WACvB,oCAAC,qBAAa,UAAb,MAAsB,OAAK,GAC5B,oCAAC,qBAAa,aAAb,IAAyB,GAC1B,oCAAC,qBAAa,iBAAb,IAA6B,CAChC;AAAA,MAEA,oCAAC,mBAAW,SAAX,MACE,CAAC,QACA;AAAA,QAAC,qBAAa;AAAA,QAAb;AAAA,UACC,OAAM;AAAA,UACN,SAAS,MAAM,IAAI,QAAQ,IAAI;AAAA;AAAA,QAE/B,oCAAC,mBAAW,SAAX,MACC,oCAAC,qBAAa,UAAb,MAAsB,QAAM,GAC7B,oCAAC,qBAAa,aAAb,IAAyB,GAC1B,oCAAC,qBAAa,iBAAb,IAA6B,CAChC;AAAA,MACF,CAEJ;AAAA,MAEA,oCAAC,qBAAa,WAAb,IAAuB;AAAA,IAC1B;AAAA,IACA,oCAAC,6BACC,oCAAC,mBAAW,YAAX,MACC,oCAAC,mBAAW,SAAX,MACC,oCAAC,mBAAW,MAAX,EAAgB,MAAK,SACpB,oCAAC,mBAAW,SAAX,MACE,CAAC,QACA,0DACE,oCAAC,mBAAW,aAAX,MACC,oCAAC,mBAAW,aAAX,MACC,oCAAC,qBAAgB,CACnB,GACA,oCAAC,mBAAW,aAAX,MACC,oCAAC,mBAAW,WAAX,IAAqB,CACxB,GACA,oCAAC,mBAAW,aAAX,MACC,oCAAC,sBAAiB,CACpB,CACF,GACA,oCAAC,mBAAW,OAAX,MACC,oCAAC,mBAAW,WAAX,MACC,oCAAC,mBAAW,UAAX,MACE,IAAI,SAAS,IAAI,CAAC,SAAS,OAC1B,oCAAC,mBAAW,aAAX,EAAuB,KAAK,MAC1B,QAAQ,MAAM,UAAU,GAAG,CAAC,CAC/B,CACD,CACH,CACF,GACA,oCAAC,mBAAW,WAAX,MACE,IAAI,MAAM,IAAI,CAAC,MAAM,OACpB,oCAAC,mBAAW,UAAX,EAAoB,KAAK,MACvB,KAAK,IAAI,CAAC,KAAKC,QACd,oCAAC,mBAAW,WAAX,EAAqB,KAAKA,KAAI,OAAO,OACpC,oCAAC,mBAAW,kBAAX,MACE,IAAI,GACP,CACF,CACD,CACH,CACD,CACH,CACF,CACF,CAEJ,CACF,CACF,CACF,CACF;AAAA,EACF,GAEA,oCAAC,SAAI,WAAU,QAAO,GAEtB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,YAAY;AAAA,MACZ,OAAO,MAAM,WAAW,CAAC,MAAM,QAAQ,IAAI,CAAC;AAAA,MAC5C,eAAe,CAAC,YAAY;AAC1B,cAAM,QAAQ,cACX,KAAM,MAAM,iBAAiB,CAAC,CAAoB,EAClD,UAAU,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE;AAElC,kBAAU;AACV,iBAAS;AAAA,UACP,UAAU,SAAS;AAAA,QACrB,CAAC;AAAA,MACH;AAAA,MACA,WAAS;AAAA,MACT,cAAY;AAAA;AAAA,IAEZ,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,EAAiB,aAAY,eAAc,GAC5C,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,CACF;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,MACE,mBAAmB,MAAM,IAAI,CAAC,aAC7B,oCAAC,eAAO,MAAP,EAAY,KAAK,UAAU,MAAM,YAChC,oCAAC,eAAO,UAAP,MACE,WAAW,UAAU;AAAA,MACpB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH,GACA,oCAAC,eAAO,eAAP,EAAqB,SAAO,QAC3B,oCAAC,eAAU,CACb,CACF,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,GAEA;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,YAAY;AAAA,MACZ,OAAO,MAAM,SAAS,CAAC,MAAM,MAAM,IAAI,CAAC;AAAA,MACxC,eAAe,CAAC,YAAY;AAC1B,cAAM,QAAQ,cACX,KAAK,mBAAmB,EACxB,UAAU,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE;AAElC,kBAAU;AACV,iBAAS;AAAA,UACP,QAAQ,SAAS;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,MACA,WAAS;AAAA,MACT,cAAY;AAAA;AAAA,IAEZ,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,EAAiB,aAAY,UAAS,GACvC,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,CACF;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,MACE,iBAAiB,MAAM,IAAI,CAAC,WAC3B,oCAAC,eAAO,MAAP,EAAY,KAAK,QAAQ,MAAM,UAC9B,oCAAC,eAAO,UAAP,MACE,WAAW,QAAQ;AAAA,MAClB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH,GACA,oCAAC,eAAO,eAAP,EAAqB,SAAO,QAC3B,oCAAC,eAAU,CACb,CACF,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,CACF,GAEC,KAAK,UAAU,KACd;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,UAAU,cAAc;AAAA,MAC9B,OAAO,UAAU,kBAAkB;AAAA,MACnC,SACE,UACI,mCACA;AAAA,MAEN,WAAU;AAAA;AAAA,EACZ,GAGD,KAAK,UAAU,KACd,oCAAC,SAAI,WAAU,6CACb,oCAAC,SAAI,WAAU,yEACb,oCAAC,cAAM,MAAN,EAAW,WAAU,cACpB,oCAAC,cAAM,QAAN,MACC,oCAAC,cAAM,KAAN,MACC,oCAAC,cAAM,SAAN,MAAc,UAAQ,GACvB,oCAAC,cAAM,SAAN,MAAc,iBAAe,GAC9B,oCAAC,cAAM,SAAN,MAAc,aAAW,GAC1B,oCAAC,cAAM,SAAN,MAAc,MAAI,GACnB,oCAAC,cAAM,SAAN,MAAc,YAAU,GACzB,oCAAC,cAAM,SAAN,MAAc,WAAS,GACxB,oCAAC,cAAM,SAAN,MAAc,gBAAc,GAC7B,oCAAC,cAAM,SAAN,MAAc,sBAAoB,GACnC,oCAAC,cAAM,SAAN,MAAc,gBAAc,GAC7B,oCAAC,cAAM,SAAN,MAAc,YAAU,GACzB,oCAAC,cAAM,SAAN,MAAc,WAAS,GACxB,oCAAC,cAAM,SAAN,MAAc,iBAAe,CAChC,CACF,GACA,oCAAC,cAAM,MAAN,MACE,KAAK,IAAI,CAAC,SAAM;AAlZnC,QAAAF;AAmZoB,+CAAC,cAAM,KAAN,EAAU,KAAK,KAAK,MACnB,oCAAC,cAAM,MAAN,UACE,wBAAO,KAAK,iBAAiB,sBAAsB;AAAA,MAClD,QAAI,cAAG,WAAW,QAAQ;AAAA,IAC5B,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,CAAC,CAAC,KAAK,uBACN,wBAAO,KAAK,iBAAiB,sBAAsB;AAAA,MACjD,QAAI,cAAG,WAAW,QAAQ;AAAA,IAC5B,CAAC,CACL,GACA,oCAAC,cAAM,MAAN,MAAY,6BAAM,UAAW,GAC9B,oCAAC,cAAM,MAAN,OAAYA,MAAA,KAAK,aAAL,gBAAAA,IAAe,IAAK,GACjC,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,KAAK;AAAA,MACtB,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,IACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MAAY,KAAK,QAAS,GAC3B,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,QAAQ;AAAA,MACzB,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,IACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,qBAAqB;AAAA,MACtC,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,IACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,eAAe;AAAA,MAChC,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,IACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MAAY,KAAK,MAAO,GACzB,oCAAC,cAAM,MAAN,MAAY,KAAK,KAAK,IAAK,GAC5B,oCAAC,cAAM,MAAN,MAAY,KAAK,aAAc,CAClC;AAAA,GACD,CACH,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,wCACb,oCAAC,WAAE,SACK,MAAK,QAAK,UAClB,GACA,oCAAC,SAAI,WAAU,QAAO,GACtB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAK;AAAA,MACL,OAAO,CAAC,SAAS,SAAS,CAAC;AAAA,MAC3B,eAAe,CAAC,YAAY;AAC1B,cAAM,IAAI,SAAS,QAAQ,MAAM,CAAC,CAAC;AACnC,cAAM,IAAI,MAAM,CAAC,IAAI,KAAK;AAE1B,oBAAY,CAAC;AAAA,MACf;AAAA,MACA,YAAY;AAAA,MACZ,WAAS;AAAA;AAAA,IAET,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,IAAiB,GAClB,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,GACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACE,mBAAmB,MAAM,IAAI,CAAC,SAC7B,oCAAC,eAAO,MAAP,EAAY,KAAK,MAAM,QACrB,mBAAmB,cAAc,IAAI,CACxC,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,GACA,oCAAC,aACC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,mBAAgB,WAAU,UAAS;AAAA,EACtC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,oBAAiB,WAAU,UAAS;AAAA,EACvC,CACF,CACF,CACF,CAEJ,CACF;AAEJ;AAEA,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,yBAAqB,qCAAqB;AAAA,EAC9C,OAAO,uBAAuB,OAAO;AAAA,EACrC,aAAa,CAAC,SAAS,KAAK,SAAS;AAAA,EACrC,cAAc,CAAC,SAAS,GAAG,IAAI;AACjC,CAAC;AAED,IAAM,uBAAmB,qCAAqB;AAAA,EAC5C,OAAO;AAAA,EACP,aAAa,CAAC,SAAS;AAAA,EACvB,cAAc,CAAC,SACb,WAAW,MAAM;AAAA,IACf,WAAW,WAAW,WAAW;AAAA,EACnC,CAAC;AACL,CAAC;AAED,IAAM,gBAAgB,cAAE,KAAK,CAAC,OAAO,SAAS,QAAQ,CAAC;AAEvD,IAAM,kBAAkB,KAAK,eAAe,EAAE,gBAAgB,EAAE;;;AYlhBzD,SAAS,WAAW,OAAwB;AACjD,SAAO,oCAAC,qBAAmB,GAAG,OAAO;AACvC;;;ACTA,IAAAG,iBAAuB;AAEvB,IAAAC,yBAAwB;AACxB,IAAAC,cAAkB;AAClB,IAAAC,kBAA2B;;;ACJpB,SAAS,aAAa,OAAqC;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,8gCAA6gC;AAAA,EACvhC;AAEJ;;;ACnBO,SAAS,MAAM,OAA2C;AAC/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,wBAAuB;AAAA,EACjC;AAEJ;;;ACjBA,IAAAC,iBAAoC;;;ACApC,IAAAC,0BAGO;AACP,IAAAC,sBAAyB;AACzB,IAAAC,yBAAsB;;;ACHf,IAAM,6BAA6B,MAAgB;AAAA,EACxD;AACF;;;ADUO,IAAM,0BAAkD,CAAC,WAAW;AAd3E;AAeE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,8BAAS;AAAA,IACrB,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,2BAA2B;AAAA,IACrC,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,iCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM,4CAAmB;AAAA,QAC9B;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,UACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AE3CO,SAAS,gBAAgB,OAAqC;AACnE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,yIAAwI;AAAA,EAClJ;AAEJ;;;ACnBA,uBAA+C;AAC/C,IAAAC,iBAAsB;AAIf,IAAM,qBAAiB,sBAAM,CAAC,SAA2B;AAC9D,aAAO,2BAAS;AAAA,IACd,QAAQ;AAAA,IACR,eAAe,OAAO,WAAW;AAAA,IACjC,GAAG;AAAA,EACL,CAAC;AACH,CAAC;;;ACVD,IAAAC,gBAAkB;;;ACDlB,IAAAC,SAAuB;AAEvB,SAAS,eACP,UACA,OAA6B,CAAC,GAC9B;AACA,QAAM,cAAoB,cAAwB,MAAM;AACtD,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE,CAAC;AAED,EAAM,0BAAmB,MAAM;AAC7B,gBAAY,UAAU;AAAA,EACxB,CAAC;AAED,SAAa;AAAA,IACX,IAAI,SAAY;AAfpB;AAeuB,+BAAY,YAAZ,qCAAsB,GAAG;AAAA;AAAA;AAAA,IAE5C;AAAA,EACF;AACF;AAQO,SAAS,qBACd,OAC8C;AAC9C,QAAM,EAAE,OAAO,kBAAkB,cAAc,SAAS,IAAI;AAE5D,QAAM,eAAe,eAAe,QAAQ;AAC5C,QAAM,mBAAmB,eAAe,CAAC,MAAM,SAAS,SAAS,IAAI;AAErE,QAAM,CAAC,mBAAmB,oBAAoB,IAAU;AAAA,IACtD;AAAA,EACF;AACA,QAAM,aAAa,qBAAqB;AACxC,QAAM,QAAQ,aAAa,mBAAmB;AAE9C,QAAM,WAAW;AAAA,IACf,CAAC,SAAkC;AACjC,YAAM,SAAS;AACf,YAAM,YAAY,OAAO,SAAS,aAAa,OAAO,KAAK,IAAI;AAE/D,UAAI,CAAC,iBAAiB,OAAO,SAAS,EAAG;AAEzC,UAAI,CAAC,WAAY,sBAAqB,SAAS;AAE/C,mBAAa,SAAS;AAAA,IACxB;AAAA,IACA,CAAC,YAAY,cAAc,OAAO,gBAAgB;AAAA,EACpD;AAEA,SAAO,CAAC,OAAO,QAAQ;AACzB;A;;;;;;;;;;;;;;ACxDA,IAAAC,cAAkB;AAEX,IAAM,0BAA0B,cAAE,KAAK;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;AFGD,IAAM,UAIA;AAAA,EACJ;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACF;AAUO,SAAS,eAAe,OAA4B;AAnD3D;AAoDE,QAAM,YAAU,WAAM,YAAN,mBAAe,UAC3B,QAAQ,OAAO,CAAC,WAAQ;AArD9B,QAAAC;AAqDiC,YAAAA,MAAA,MAAM,YAAN,gBAAAA,IAAe,SAAS,OAAO;AAAA,GAAM,IAChE;AAEJ,QAAM,CAAC,OAAO,QAAQ,IAAI,qBAAqB;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB,QAAQ,CAAC,EAAE;AAAA,IAC/C,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,cAAM,OAAN,EAAY,SAAO,QAClB,oCAAC,aAAI,4BAA0B,CACjC,GACA;AAAA,IAAC,iBAAS;AAAA,IAAT;AAAA,MACC,OAAO,CAAC,KAAK;AAAA,MACb,eAAe,CAAC,aAAa;AAC3B,cAAM,YAAY,SAAS,GAAG,EAAE;AAChC,YAAI,CAAC,UAAW;AAChB,iBAAS,wBAAwB,MAAM,SAAS,CAAC;AAAA,MACnD;AAAA,MACA,WAAU;AAAA;AAAA,IAET,QAAQ,IAAI,CAAC,WACZ;AAAA,MAAC,iBAAS;AAAA,MAAT;AAAA,QACC,KAAK,OAAO;AAAA,QACZ,OAAO,OAAO;AAAA,QACd,WAAU;AAAA;AAAA,MAEV,oCAAC,SAAI,WAAU,UACb;AAAA,QAAC,cAAAC;AAAA,QAAA;AAAA,UACC,KAAK,OAAO;AAAA,UACZ,KAAI;AAAA,UACJ,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,WAAU;AAAA,UACV,WAAW;AAAA;AAAA,MACb,CACF;AAAA,MACA,oCAAC,iBAAS,SAAT,EAAiB,WAAU,cAC1B,oCAAC,iBAAS,WAAT,EAAmB,SAAO,QACzB,oCAAC,eAAU,CACb,CACF;AAAA,MACA,oCAAC,iBAAS,aAAT,IAAqB;AAAA,IACxB,CACD;AAAA,EACH,CACF;AAEJ;;;AGvGA,IAAAC,iBAAuB;AACvB,IAAAC,cAA4B;AAC5B,IAAAD,iBAA0B;AAC1B,6BAAoC;AACpC,IAAAC,cAAkB;AAClB,IAAAC,kBAA2B;;;ACL3B,IAAAC,0BAIO;AACP,IAAAC,sBAAyB;AACzB,IAAAC,yBAAsB;;;ACHf,IAAM,6BAA6B,CAAC,UAA2C;AAAA,EACpF;AAAA,EACA;AACF;;;ADSO,IAAM,0BAAgE,CAC3E,OACA,WACG;AAlBL;AAmBE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,8BAAS;AAAA,IACrB,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,2BAA2B,KAAK;AAAA,IAC1C,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,iCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM,4CAAmB,OAAO;AAAA,QACrC;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,UACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AEjDA,IAAAC,0BAKO;AACP,uBAAqC;AACrC,IAAAC,uBAA4B;AAC5B,IAAAC,yBAAsB;;;ACItB,IAAMC,iBAAgB;AAAA,EACpB,UAAU;AAAA,EACV,YAAY;AACd;AAiBO,SAAS,WACd,MACA,QACA;AACA,QAAM,EAAE,OAAO,UAAU,WAAW,IAAI,OAAO,OAAOA,gBAAe,MAAM;AAE3E,iBAAe,SAAS,MAAc,KAAc;AAClD,UAAM,oBAAoB,OAAO;AACjC,UAAM,SAAS,MAAM,KAAK,GAAG,IAAI;AACjC,UAAM,aAAa,MAAM,MAAM,MAAM;AAErC,QAAI,WAAY,QAAO;AAEvB,UAAM,aAAa,aAAa,IAAI;AACpC,UAAM,YAAY,WAAW,KAAK;AAClC,UAAM,SAAS,KAAK,OAAO,IAAI;AAE/B,QAAI,oBAAoB,GAAG;AACzB,YAAM,MAAM,MAAM;AAClB,aAAO,SAAS,MAAM,oBAAoB,CAAC;AAAA,IAC7C;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,UAAU,SAAkC;AACjD,WAAO,MAAM,SAAS,IAAI;AAAA,EAC5B;AACF;AAEA,SAAS,MAAM,IAAY;AACzB,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;;;AC9DO,IAAM,mCAAmC,MAAmB;AAAA,EACjE;AACF;;;AFaO,IAAM,gCAGT,CAAC,WAAW;AACd,QAAM,cAAc,eAAe;AAEnC,QAAM,eAAW,kCAAY;AAAA,IAC3B,GAAG;AAAA,IACH,aAAa,iCAAiC;AAAA,IAC9C,YAAY,OAAO,UAAU;AAC3B,YAAM,KAAK,0BAAS,SAAS,4BAAW,OAAO,EAAE,SAAS;AAC1D,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,iCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,gBAAM;AAAA,QACJ;AAAA,UACE;AAAA,UACA,GAAG;AAAA,QACL;AAAA,QACA;AAAA,UACE,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAEA,YAAM,OAAO;AAAA,QACX,YAAY;AACV,gBAAMC,WAAU,MAAM,YAAY,WAAW;AAAA,YAC3C,UAAU,mBAAmB;AAAA,YAC7B,SAAS,MAAM,WAAW;AAAA,UAC5B,CAAC;AAED,qCAAAD,SAAUC,SAAQ,WAAW,eAAe;AAE5C,iBAAO,UAAM,oCAAW,IAAI;AAAA,YAC1B,aAAa;AAAA,YACb,SAAS;AAAA,cACP,iBAAiB;AAAA,cACjB,eAAe,UAAUA,SAAQ,KAAK;AAAA,YACxC;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,UACE,MAAMC,MAAK;AACT,mBAAO,CAAC,EAACA,QAAA,gBAAAA,KAAK;AAAA,UAChB;AAAA,UACA,UAAU;AAAA,UACV,YAAY;AAAA,QACd;AAAA,MACF;AAEA,YAAM,MAAM,MAAM,KAAK;AAEvB,UAAI,EAAC,2BAAK,cAAa;AACrB,cAAM,QAAQ,IAAI,MAAM;AACxB,cAAM,OAAO;AACb,cAAM,UAAU;AAChB,cAAM;AAAA,MACR;AAEA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AGzFA,IAAAC,0BAAiC;AACjC,IAAAC,uBAAyB;AACzB,IAAAC,yBAAsB;;;ACAf,IAAM,2BAA2B,MAAgB;AAAA,EACtD;AACF;;;ADOO,IAAM,wBAAuC,CAAC,WAAW;AAXhE;AAYE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,+BAAS;AAAA,IACrB,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,yBAAyB;AAAA,IACnC,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,iCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM,0CAAiB;AAAA,QAC5B;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,UACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AE5BO,SAAS,cAAc,OAAiD;AAC7E,QAAM,CAAC,MAAM,OAAO,IAAI,qBAAqB;AAAA,IAC3C,OAAO,+BAAO;AAAA,IACd,eAAc,+BAAO,gBAAe;AAAA,IACpC,UAAU,+BAAO;AAAA,EACnB,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACvBO,SAAS,cAAc,OAAqC;AACjE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,oBAAmB;AAAA,EAC7B;AAEJ;;;ACnBA,mBAAwD;AAEjD,IAAM,cAA+B,4BAAc;AAAA,EACxD,WAAW;AAAA,EACX,UAAU;AAAA,EACV,KAAK;AAAA,EACL,SAAS;AAAA,EACT,KAAK;AACP,CAAC;;;ACRD,IAAAC,yBAAwB;AAiBjB,SAAS,cAAc,OAA2B;AAjBzD;AAkBE,QAAM,MAAM,MAAM,OAAO;AACzB,QAAM,MAAM,MAAM,OAAO;AAEzB,QAAM,aAAa,cAAc;AAEjC,QAAM,YAAU,WAAM,YAAN,mBAAe,UAC3B,MAAM,UACN,CAAC,KAAK,KAAK,KAAM,GAAI;AAEzB,QAAM,CAAC,OAAO,QAAQ,IAAI,qBAAqB;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB,QAAQ,CAAC;AAAA,IAC7C,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SACE,oCAAC,SAAI,eAAW,gCAAQ,0BAA0B,MAAM,SAAS,KAC9D,QAAQ,IAAI,CAAC,WACZ;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,SAAS,MAAM;AACb,iBAAS,MAAM;AAAA,MACjB;AAAA,MACA,UAAU,MAAM,UAAU,MAAM;AAAA,MAChC,iBAAe,SAAS,UAAU,MAAM;AAAA;AAAA,IAEvC,aAAa,QAAQ;AAAA,MACpB,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH,CACD,CACH;AAEJ;;;ACvDA,IAAAC,iBAAyB;AACzB,IAAAC,gBAAkB;AAClB,IAAAC,eAAiB;AACjB,IAAAC,yBAAwB;AACxB,IAAAC,kBAA2B;AAgBpB,SAAS,gBAAgB,OAA6B;AAC3D,QAAM,cAAc;AAAA,QAClB,4BAAW,CAAC,SAAS;AAAA,MACnB,mBAAmB,IAAI;AAAA,IACzB,EAAE;AAAA,EACJ;AAEA,QAAM,QAAQ,wBAAwB;AACtC,QAAM,SAAS,MAAM,QAAQ,CAAC;AAE9B,QAAM,CAAC,OAAO,QAAQ,IAAI,qBAAqB;AAAA,IAC7C,OAAO,MAAM;AAAA,IACb,cAAc,MAAM,gBAAgB;AAAA,IACpC,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,SACE;AAAA,IAAC,wBAAS;AAAA,IAAT;AAAA,MACC,YAAY,OAAO;AAAA,MACnB,WAAW,MAAM;AAAA,MACjB,SAAQ;AAAA,MACR,eAAe;AAAA;AAAA,IAEf,oCAAC,SAAI,WAAU,8BACb,oCAAC,SAAI,WAAU,UACb,oCAAC,QAAG,WAAU,yCAAsC,sBAEpD,GACA,oCAAC,OAAE,WAAU,8CAA2C,yEAGxD,CACF,GAEA,oCAAC,wBAAS,SAAT,MACC,oCAAC,wBAAS,aAAT,EAAqB,SAAO,QAC3B;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,WAAU;AAAA;AAAA,MAEV,oCAAC,qBAAgB;AAAA,IACnB,CACF,GACA,oCAAC,wBAAS,aAAT,EAAqB,SAAO,QAC3B;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,WAAU;AAAA;AAAA,MAEV,oCAAC,sBAAiB;AAAA,IACpB,CACF,CACF,CACF;AAAA,IAEA,oCAAC,wBAAS,WAAT,EAAmB,WAAU,YAC3B,OAAO,IAAI,CAAC,OAAO,UAClB,oCAAC,wBAAS,MAAT,EAAc,KAAK,MAAM,IAAI,SAC5B,oCAAC,SAAI,WAAU,gCACb;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,MAAM,OAAO,SAAS;AAAA,QACxB;AAAA;AAAA,MAEC,MAAM,OAAO,OACZ;AAAA,QAAC,cAAAC;AAAA,QAAA;AAAA,UACC,KAAK,MAAM,OAAO;AAAA,UAClB,KAAI;AAAA,UACJ,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,WAAU;AAAA;AAAA,MACZ;AAAA,IAEJ,GAEA;AAAA,MAAC,iBAAS;AAAA,MAAT;AAAA,QACC,SAAS,MAAM,OAAO;AAAA,QACtB,iBAAiB,CAAC,YAAY;AAC5B,mBAAS,QAAQ,UAAU,MAAM,KAAK,IAAI;AAAA,QAC5C;AAAA,QACA,WAAU;AAAA;AAAA,MAEV,oCAAC,iBAAS,SAAT,EAAiB,WAAU,cAC1B,oCAAC,iBAAS,WAAT,EAAmB,SAAO,QACzB,oCAAC,eAAU,CACb,CACF;AAAA,MACA,oCAAC,iBAAS,aAAT,IAAqB;AAAA,IACxB,GAEA;AAAA,MAAC,aAAAC;AAAA,MAAA;AAAA,QACC,MAAM,WAAW,MAAM,EAAE;AAAA,QACzB,WAAU;AAAA,QACV,SAAS,MAAM;AACb,sBAAY,kBAAkB,QAAQ,KAAK;AAAA,QAC7C;AAAA;AAAA,MACD;AAAA,IAED,CACF,CACF,CACD,CACH;AAAA,EACF;AAEJ;;;AZxGO,SAAS,eAAe;AAvB/B;AAwBE,QAAM,aAAa,cAAc;AACjC,QAAM,cAAc;AAAA,QAClB,4BAAW,CAAC,SAAS;AAAA,MACnB,mBAAmB,IAAI;AAAA,IACzB,EAAE;AAAA,EACJ;AAEA,QAAM,wBAAwB,8BAA8B;AAAA,IAC1D,UAAU,MAAM;AACd,UAAI,CAAC,KAAK,YAAa;AACvB,aAAO,KAAK,KAAK,aAAa,UAAU,qBAAqB;AAC7D,WAAK,MAAM;AACX,kBAAY,kBAAkB,QAAQ,KAAK;AAAA,IAC7C;AAAA,IACA,QAAQ,OAAO;AACb,cAAQ,MAAM;AAAA,QACZ,aAAa,MAAM;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,QAAM,qBAAqB,sBAAsB;AACjD,QAAM,gBAAgB,mBAAmB,QAAQ;AACjD,QAAM,uBAAuB,wBAAwB;AACrD,QAAM,kBAAkB,qBAAqB;AAC7C,QAAM,kBAAkB,mDAAiB;AACzC,QAAM,gBAAgB,aAAa,mDAAiB,eAAe,CAAC;AACpE,QAAM,gBACJ,iBAAiB,IACb,cAAa,0BAAqB,SAArB,mBAA2B,2BAA2B,CAAC,IACpE,aAAa,mDAAiB,eAAe,CAAC;AAEpD,QAAM,cAAc,wBAAwB;AAC5C,QAAM,SAAS,YAAY,QAAQ,CAAC;AAEpC,QAAMC,cAAa,cAChB,OAAO;AAAA,IACN,QAAQ,cAAE,OAAO,EAAE,YAAY,CAAC,KAAK,QAAQ;AAC3C,YAAM,IAAI,aAAa,KAAK,CAAC;AAC7B,UAAI,IAAI,eAAe;AACrB,YAAI,SAAS;AAAA,UACX,MAAM;AAAA,UACN,MAAM,cAAE,aAAa;AAAA,UACrB,WAAW;AAAA,UACX,SAAS;AAAA,UACT,SAAS,qBAAqB,cAAc,eAAe,CAAC;AAAA,QAC9D,CAAC;AAAA,MACH;AAEA,UAAI,IAAI,eAAe;AACrB,YAAI,SAAS;AAAA,UACX,MAAM;AAAA,UACN,MAAM,cAAE,aAAa;AAAA,UACrB,WAAW;AAAA,UACX,SAAS;AAAA,UACT,SAAS,qBAAqB,cAAc,eAAe,CAAC;AAAA,QAC9D,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACD,OAAO,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,CAAC,EACA,YAAY,CAAC,OAAO,QAAQ;AAC3B,UAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,KAAK;AACrD,UAAM,iBAAiB,aAAa,+BAAO,sBAAsB,CAAC;AAClE,UAAM,iBAAiB,aAAa,+BAAO,sBAAsB,CAAC;AAClE,UAAM,SAAS,aAAa,MAAM,QAAQ,CAAC;AAE3C,QAAI,SAAS,SAAS,gBAAgB;AACpC,UAAI,SAAS;AAAA,QACX,MAAM,CAAC,QAAQ;AAAA,QACf,MAAM,cAAE,aAAa;AAAA,QACrB,SAAS,oCAAoC,eAAe,eAAe,CAAC;AAAA,MAC9E,CAAC;AAAA,IACH;AAEA,QAAI,SAAS,SAAS,gBAAgB;AACpC,UAAI,SAAS;AAAA,QACX,MAAM,CAAC,QAAQ;AAAA,QACf,MAAM,cAAE,aAAa;AAAA,QACrB,SAAS,oCAAoC,cAAc;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAEH,QAAM,WAAO,gCAAQ;AAAA,IACnB,MAAM;AAAA,IACN,cAAU,yBAAYA,WAAU;AAAA,IAChC,eAAe;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,gCAAU,MAAM;AACd,QAAI,eAAe;AACjB,WAAK,MAAM;AAAA,QACT,QAAQ,cAAc,SAAS;AAAA,QAC/B,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,QAAM,eAAe,KAAK,aAAa,OAAO,SAAS;AACrD,0BAAsB,OAAO;AAAA,MAC3B,QAAQ,KAAK,OAAO,SAAS;AAAA,MAC7B,OAAO,KAAK,SAAS;AAAA,IACvB,CAAC;AAAA,EACH,CAAC;AAED,SACE,oCAAC,UAAK,UAAU,cAAc,YAAU,QACtC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd,MAAK;AAAA,MACL,QAAQ,CAAC,MAAG;AA1IpB,YAAAC;AA2IU,mDAAC,cAAM,MAAN,EAAW,SAAS,CAAC,CAAC,KAAK,UAAU,OAAO,UAC3C;AAAA,UAAC,oBAAY;AAAA,UAAZ;AAAA,YACC,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO,EAAE,MAAM;AAAA,YACf,eAAe,CAAC,YAAY;AAC1B,gBAAE,MAAM,SAAS,QAAQ,KAAK;AAAA,YAChC;AAAA,YACA,eAAe;AAAA,cACb,uBAAuB;AAAA,cACvB,uBAAuB;AAAA,YACzB;AAAA,YACA,iBAAe;AAAA;AAAA,UAEf,oCAAC,oBAAY,OAAZ,MAAkB,kCAEnB;AAAA,UACA,oCAAC,oBAAY,SAAZ,MACC,oCAAC,oBAAY,OAAZ,IAAkB,GACnB,oCAAC,oBAAY,kBAAZ,MACC,oCAAC,mBAAc,CACjB,GACA,oCAAC,oBAAY,kBAAZ,MACC,oCAAC,qBAAgB,CACnB,CACF;AAAA,QACF,GACA,oCAAC,cAAM,WAAN,OACEA,MAAA,KAAK,UAAU,OAAO,WAAtB,gBAAAA,IAA8B,OACjC,CACF;AAAA;AAAA;AAAA,EAEJ,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,aAAa,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,MAC3C,UAAU,CAAC,UAAU;AACnB,aAAK,SAAS,UAAU,MAAM,SAAS,GAAG;AAAA,UACxC,aAAa;AAAA,UACb,aAAa;AAAA,UACb,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,WAAU;AAAA;AAAA,EACZ,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd,MAAK;AAAA,MACL,QAAQ,CAAC,MACP;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,EAAE,MAAM;AAAA,UACf,UAAU,EAAE,MAAM;AAAA;AAAA,MACpB;AAAA;AAAA,EAEJ,GAEA,oCAAC,OAAE,WAAU,oBAAiB,sDACuB,KACnD,oCAAC,YAAO,MAAK,UAAS,WAAU,kCAA+B,iCAE/D,GAAS,GAEX,GACA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,UAAU,sBAAsB;AAAA,MAChC,SAAS,OAAO,MAAM;AACpB,cAAM,KAAK,MAAM,KAAK,QAAQ,QAAQ;AACtC,YAAI,CAAC,GAAI;AACT,YAAI,OAAO,UAAU,EAAG;AACxB,YAAI,KAAK,UAAU,OAAO,EAAG;AAC7B,UAAE,eAAe;AACjB,mBAAW,QAAQ,IAAI;AAAA,MACzB;AAAA;AAAA,IAEC,sBAAsB,YACrB,0DACE,oCAAC,iBAAY,GAAE,eAEjB,IAEA;AAAA,EAEJ,GAEA;AAAA,IAAC,oBAAY;AAAA,IAAZ;AAAA,MACC,MAAK;AAAA,MACL,MAAM,WAAW;AAAA,MACjB,cAAc,CAAC,YAAY;AACzB,mBAAW,QAAQ,QAAQ,IAAI;AAAA,MACjC;AAAA,MACA,WAAS;AAAA,MACT,eAAa;AAAA,MACb,eAAe;AAAA,MACf,wBAAwB;AAAA;AAAA,IAExB,oCAAC,6BACC,oCAAC,oBAAY,UAAZ,EAAqB,WAAU,iCAAgC,GAChE,oCAAC,oBAAY,YAAZ,EAAuB,WAAU,mCAChC,oCAAC,oBAAY,SAAZ,MACC,oCAAC,oBAAY,QAAZ,MACC,oCAAC,SAAI,WAAU,uFACb,oCAAC,qBAAgB,CACnB,GACA,oCAAC,oBAAY,cAAZ,MACC,oCAAC,WAAM,CACT,CACF,GACA,oCAAC,oBAAY,MAAZ,MACC,oCAAC,oBAAY,OAAZ,MAAkB,uCAEnB,GACA,oCAAC,oBAAY,aAAZ,MAAwB,kFAGzB,CACF,GACA,oCAAC,oBAAY,QAAZ,MACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,SAAS,MAAM;AACb,qBAAW,QAAQ,KAAK;AAAA,QAC1B;AAAA;AAAA,MACD;AAAA,IAED,GACA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,MAAM;AACb,uBAAa;AACb,qBAAW,QAAQ,KAAK;AAAA,QAC1B;AAAA;AAAA,MACD;AAAA,IAED,CACF,CACF,CACF,CACF;AAAA,EACF,CACF;AAEJ;;;Aa9RO,SAAS,iBAAiB;AAC/B,SAAO;AACT;;;ACFA,IAAAC,iBAAuB;AACvB,IAAAC,cAA4B;AAC5B,IAAAD,iBAA0B;AAC1B,IAAAE,0BAAoC;AACpC,IAAAD,cAAkB;AAClB,IAAAE,kBAA2B;;;ACL3B,IAAAC,0BAKO;AACP,IAAAC,oBAAqC;AACrC,IAAAC,uBAA4B;AAC5B,IAAAC,yBAAsB;;;ACNf,IAAM,kCAAkC,MAAmB;AAAA,EAChE;AACF;;;ADaO,IAAM,+BAGT,CAAC,WAAW;AACd,QAAM,cAAc,eAAe;AAEnC,QAAM,eAAW,kCAAY;AAAA,IAC3B,GAAG;AAAA,IACH,aAAa,gCAAgC;AAAA,IAC7C,YAAY,OAAO,UAAU;AAC3B,YAAM,KAAK,2BAAS,SAAS,6BAAW,OAAO,EAAE,SAAS;AAC1D,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,iCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,gBAAM;AAAA,QACJ;AAAA,UACE;AAAA,UACA,GAAG;AAAA,QACL;AAAA,QACA;AAAA,UACE,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAEA,YAAM,OAAO;AAAA,QACX,YAAY;AACV,gBAAMC,WAAU,MAAM,YAAY,WAAW;AAAA,YAC3C,UAAU,mBAAmB;AAAA,YAC7B,SAAS,MAAM,WAAW;AAAA,UAC5B,CAAC;AAED,qCAAAD,SAAUC,SAAQ,WAAW,eAAe;AAE5C,iBAAO,UAAM,oCAAW,IAAI;AAAA,YAC1B,aAAa;AAAA,YACb,SAAS;AAAA,cACP,iBAAiB;AAAA,cACjB,eAAe,UAAUA,SAAQ,KAAK;AAAA,YACxC;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,UACE,MAAMC,MAAK;AACT,mBAAO,CAAC,EAACA,QAAA,gBAAAA,KAAK;AAAA,UAChB;AAAA,UACA,UAAU;AAAA,UACV,YAAY;AAAA,QACd;AAAA,MACF;AAEA,YAAM,MAAM,MAAM,KAAK;AAEvB,UAAI,EAAC,2BAAK,cAAa;AACrB,cAAM,QAAQ,IAAI,MAAM;AACxB,cAAM,OAAO;AACb,cAAM,UAAU;AAChB,cAAM;AAAA,MACR;AAEA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ADlEO,SAAS,cAAc;AAvB9B;AAwBE,QAAM,aAAa,cAAc;AACjC,QAAM,cAAc;AAAA,QAClB,4BAAW,CAAC,SAAS;AAAA,MACnB,mBAAmB,IAAI;AAAA,IACzB,EAAE;AAAA,EACJ;AAEA,QAAM,wBAAwB,6BAA6B;AAAA,IACzD,UAAU,MAAM;AACd,UAAI,CAAC,KAAK,YAAa;AACvB,aAAO,KAAK,KAAK,aAAa,UAAU,qBAAqB;AAC7D,WAAK,MAAM;AACX,kBAAY,kBAAkB,QAAQ,KAAK;AAAA,IAC7C;AAAA,IACA,QAAQ,OAAO;AACb,cAAQ,MAAM;AAAA,QACZ,aAAa,MAAM;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,QAAM,qBAAqB,sBAAsB;AACjD,QAAM,gBAAgB,mBAAmB,QAAQ;AACjD,QAAM,uBAAuB,wBAAwB;AACrD,QAAM,kBAAkB,qBAAqB;AAC7C,QAAM,kBAAkB,mDAAiB;AACzC,QAAM,gBAAgB,aAAa,mDAAiB,eAAe,CAAC;AACpE,QAAM,gBACJ,iBAAiB,IACb,cAAa,0BAAqB,SAArB,mBAA2B,2BAA2B,CAAC,IACpE,aAAa,mDAAiB,eAAe,CAAC;AAEpD,QAAM,cAAc,wBAAwB;AAC5C,QAAM,SAAS,YAAY,QAAQ,CAAC;AAEpC,QAAMC,cAAa,cAChB,OAAO;AAAA,IACN,QAAQ,cAAE,OAAO,EAAE,YAAY,CAAC,KAAK,QAAQ;AAC3C,YAAM,IAAI,aAAa,KAAK,CAAC;AAC7B,UAAI,IAAI,eAAe;AACrB,YAAI,SAAS;AAAA,UACX,MAAM;AAAA,UACN,MAAM,cAAE,aAAa;AAAA,UACrB,WAAW;AAAA,UACX,SAAS;AAAA,UACT,SAAS,qBAAqB,cAAc,eAAe,CAAC;AAAA,QAC9D,CAAC;AAAA,MACH;AAEA,UAAI,IAAI,eAAe;AACrB,YAAI,SAAS;AAAA,UACX,MAAM;AAAA,UACN,MAAM,cAAE,aAAa;AAAA,UACrB,WAAW;AAAA,UACX,SAAS;AAAA,UACT,SAAS,qBAAqB,cAAc,eAAe,CAAC;AAAA,QAC9D,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACD,OAAO,cAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,CAAC,EACA,YAAY,CAAC,OAAO,QAAQ;AAC3B,UAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,KAAK;AACrD,UAAM,iBAAiB,aAAa,+BAAO,sBAAsB,CAAC;AAClE,UAAM,iBAAiB,aAAa,+BAAO,sBAAsB,CAAC;AAClE,UAAM,SAAS,aAAa,MAAM,QAAQ,CAAC;AAE3C,QAAI,SAAS,SAAS,gBAAgB;AACpC,UAAI,SAAS;AAAA,QACX,MAAM,CAAC,QAAQ;AAAA,QACf,MAAM,cAAE,aAAa;AAAA,QACrB,SAAS,oCAAoC,eAAe,eAAe,CAAC;AAAA,MAC9E,CAAC;AAAA,IACH;AAEA,QAAI,SAAS,SAAS,gBAAgB;AACpC,UAAI,SAAS;AAAA,QACX,MAAM,CAAC,QAAQ;AAAA,QACf,MAAM,cAAE,aAAa;AAAA,QACrB,SAAS,oCAAoC,cAAc;AAAA,MAC7D,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAEH,QAAM,WAAO,iCAAQ;AAAA,IACnB,MAAM;AAAA,IACN,cAAU,yBAAYA,WAAU;AAAA,IAChC,eAAe;AAAA,MACb,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,gCAAU,MAAM;AACd,QAAI,eAAe;AACjB,WAAK,MAAM;AAAA,QACT,QAAQ,cAAc,SAAS;AAAA,QAC/B,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,aAAa,CAAC;AAExB,QAAM,eAAe,KAAK,aAAa,OAAO,SAAS;AACrD,0BAAsB,OAAO;AAAA,MAC3B,QAAQ,KAAK,OAAO,SAAS;AAAA,MAC7B,OAAO,KAAK,SAAS;AAAA,IACvB,CAAC;AAAA,EACH,CAAC;AAED,SACE,oCAAC,UAAK,UAAU,cAAc,YAAU,QACtC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd,MAAK;AAAA,MACL,QAAQ,CAAC,MAAG;AA1IpB,YAAAC;AA2IU,mDAAC,cAAM,MAAN,EAAW,SAAS,CAAC,CAAC,KAAK,UAAU,OAAO,UAC3C;AAAA,UAAC,oBAAY;AAAA,UAAZ;AAAA,YACC,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO,EAAE,MAAM;AAAA,YACf,eAAe,CAAC,YAAY;AAC1B,gBAAE,MAAM,SAAS,QAAQ,KAAK;AAAA,YAChC;AAAA,YACA,eAAe;AAAA,cACb,uBAAuB;AAAA,cACvB,uBAAuB;AAAA,YACzB;AAAA,YACA,iBAAe;AAAA;AAAA,UAEf,oCAAC,oBAAY,OAAZ,MAAkB,kCAEnB;AAAA,UACA,oCAAC,oBAAY,SAAZ,MACC,oCAAC,oBAAY,OAAZ,IAAkB,GACnB,oCAAC,oBAAY,kBAAZ,MACC,oCAAC,mBAAc,CACjB,GACA,oCAAC,oBAAY,kBAAZ,MACC,oCAAC,qBAAgB,CACnB,CACF;AAAA,QACF,GACA,oCAAC,cAAM,WAAN,OACEA,MAAA,KAAK,UAAU,OAAO,WAAtB,gBAAAA,IAA8B,OACjC,CACF;AAAA;AAAA;AAAA,EAEJ,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,aAAa,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,MAC3C,UAAU,CAAC,UAAU;AACnB,aAAK,SAAS,UAAU,MAAM,SAAS,GAAG;AAAA,UACxC,aAAa;AAAA,UACb,aAAa;AAAA,UACb,gBAAgB;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,WAAU;AAAA;AAAA,EACZ,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,KAAK;AAAA,MACd,MAAK;AAAA,MACL,QAAQ,CAAC,MACP;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,EAAE,MAAM;AAAA,UACf,UAAU,EAAE,MAAM;AAAA;AAAA,MACpB;AAAA;AAAA,EAEJ,GAEA,oCAAC,OAAE,WAAU,oBAAiB,sDACuB,KACnD,oCAAC,YAAO,MAAK,UAAS,WAAU,kCAA+B,iCAE/D,GAAS,GAEX,GACA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,UAAU,sBAAsB;AAAA,MAChC,SAAS,OAAO,MAAM;AACpB,cAAM,KAAK,MAAM,KAAK,QAAQ,QAAQ;AACtC,YAAI,CAAC,GAAI;AACT,YAAI,OAAO,UAAU,EAAG;AACxB,YAAI,KAAK,UAAU,OAAO,EAAG;AAC7B,UAAE,eAAe;AACjB,mBAAW,QAAQ,IAAI;AAAA,MACzB;AAAA;AAAA,IAEC,sBAAsB,YACrB,0DACE,oCAAC,iBAAY,GAAE,eAEjB,IAEA;AAAA,EAEJ,GAEA;AAAA,IAAC,oBAAY;AAAA,IAAZ;AAAA,MACC,MAAK;AAAA,MACL,MAAM,WAAW;AAAA,MACjB,cAAc,CAAC,YAAY;AACzB,mBAAW,QAAQ,QAAQ,IAAI;AAAA,MACjC;AAAA,MACA,WAAS;AAAA,MACT,eAAa;AAAA,MACb,eAAe;AAAA,MACf,wBAAwB;AAAA;AAAA,IAExB,oCAAC,6BACC,oCAAC,oBAAY,UAAZ,EAAqB,WAAU,iCAAgC,GAChE,oCAAC,oBAAY,YAAZ,EAAuB,WAAU,mCAChC,oCAAC,oBAAY,SAAZ,MACC,oCAAC,oBAAY,QAAZ,MACC,oCAAC,SAAI,WAAU,uFACb,oCAAC,qBAAgB,CACnB,GACA,oCAAC,oBAAY,cAAZ,MACC,oCAAC,WAAM,CACT,CACF,GACA,oCAAC,oBAAY,MAAZ,MACC,oCAAC,oBAAY,OAAZ,MAAkB,uCAEnB,GACA,oCAAC,oBAAY,aAAZ,MAAwB,kFAGzB,CACF,GACA,oCAAC,oBAAY,QAAZ,MACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,SAAS,MAAM;AACb,qBAAW,QAAQ,KAAK;AAAA,QAC1B;AAAA;AAAA,MACD;AAAA,IAED,GACA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,MAAM;AACb,uBAAa;AACb,qBAAW,QAAQ,KAAK;AAAA,QAC1B;AAAA;AAAA,MACD;AAAA,IAED,CACF,CACF,CACF,CACF;AAAA,EACF,CACF;AAEJ;;;AG9RO,SAAS,oBAAoB;AAClC,SAAO;AACT;;;ACFO,SAAS,cAAc;AAC5B,SAAO;AACT;;;A1BWO,SAAS,UAAU;AACxB,QAAM,uBAAuB,wBAAwB;AACrD,QAAM,kBAAkB,qBAAqB;AAE7C,QAAM,yBAAyB,MAAM;AAjBvC;AAkBI,UAAM,IAAqB,CAAC;AAE5B,QAAI,eAAe,GAAG;AACpB,WAAI,wDAAiB,gCAAjB,mBAA8C;AAChD,UAAE,KAAK,OAAO;AAChB,WAAI,wDAAiB,+BAAjB,mBAA6C;AAC/C,UAAE,KAAK,MAAM;AACf,WAAI,wDAAiB,kCAAjB,mBAAgD;AAClD,UAAE,KAAK,UAAU;AACnB,WAAI,wDAAiB,+BAAjB,mBAA6C;AAC/C,UAAE,KAAK,MAAM;AACf,WAAI,wDAAiB,qCAAjB,mBAAmD;AACrD,UAAE,KAAK,aAAa;AAAA,IACxB,OAAO;AACL,WAAI,wDAAiB,gCAAjB,mBAA8C;AAChD,UAAE,KAAK,OAAO;AAChB,WAAI,wDAAiB,+BAAjB,mBAA6C;AAC/C,UAAE,KAAK,MAAM;AACf,WAAI,wDAAiB,kCAAjB,mBAAgD;AAClD,UAAE,KAAK,UAAU;AACnB,WAAI,wDAAiB,+BAAjB,mBAA6C;AAC/C,UAAE,KAAK,MAAM;AACf,WAAI,wDAAiB,qCAAjB,mBAAmD;AACrD,UAAE,KAAK,aAAa;AAAA,IACxB;AAEA,WAAO;AAAA,EACT,GAAG;AAEH,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAwB;AAElE,gCAAU,MAAM;AACd,QAAI,sBAAsB,SAAS,KAAK,CAAC,eAAe;AACtD,uBAAiB,sBAAsB,CAAC,CAAC;AAAA,IAC3C;AAAA,EACF,GAAG,CAAC,uBAAuB,aAAa,CAAC;AAEzC,MAAI,qBAAqB,WAAW;AAClC,WAAO,oCAAC,eAAY,WAAU,kBAAiB;AAAA,EACjD;AAEA,MAAI,sBAAsB,UAAU,GAAG;AAErC,WACE,oCAAC,SAAI,WAAU,iHACb,oCAAC,mBAAgB,WAAU,UAAS,GAAE,8BAExC;AAAA,EAEJ;AAEA,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA;AAAA,EACX,GAEC,kBAAkB,UAAU,oCAAC,iBAAY,GACzC,kBAAkB,WAAW,oCAAC,kBAAa,GAC3C,kBAAkB,UAAU,oCAAC,iBAAY,GACzC,kBAAkB,cAAc,oCAAC,oBAAe,GAChD,kBAAkB,iBAAiB,oCAAC,uBAAkB,CACzD;AAEJ;;;A2BpFO,SAAS,aAAa;AAC3B,SAAO;AACT;;;A9BmBO,SAAS,kBAAkB,OAA+B;AArBjE;AAsBE,QAAM,cAAc;AAAA,QAClB,4BAAW,CAAC,SAAS;AAAA,MACnB,mBAAmB,IAAI;AAAA,IACzB,EAAE;AAAA,EACJ;AAEA,QAAM,aAAa,cAAc;AACjC,QAAM,cAAc,eAAe;AAAA,IACjC,iBAAiB;AAAA,EACnB,CAAC;AAED,SACE;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,WAAS;AAAA,MACT,eAAa;AAAA,MACb,MAAM,YAAY,kBAAkB;AAAA,MACpC,cAAc,CAAC,YAAY;AACzB,oBAAY,kBAAkB,QAAQ,QAAQ,IAAI;AAAA,MACpD;AAAA,MACA,eAAe;AAAA,MACf,wBAAwB;AAAA;AAAA,IAExB,oCAAC,eAAO,SAAP,EAAe,SAAO,QACpB,MAAM,YAAY,oCAAC,mBAAc,CACpC;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,UAAP,EAAgB,WAAU,gCAA+B,GAC1D,oCAAC,eAAO,YAAP,EAAkB,WAAU,kCAC3B,oCAAC,eAAO,SAAP,EAAe,WAAU,yFACxB,oCAAC,eAAO,cAAP,MACC,oCAAC,WAAM,CACT,GACA,oCAAC,eAAO,QAAP,EAAc,WAAU,8BACvB,oCAAC,SAAI,WAAU,wGACb,oCAAC,kBAAa,CAChB,GACA,oCAAC,eAAO,OAAP,EAAa,WAAU,gCAA6B,QAErD,CACF,GAEA,oCAAC,eAAO,MAAP,EAAY,WAAU,UACrB,oCAAC,OAAE,WAAU,iEAA8D,mBAE3E,GACA,oCAAC,OAAE,WAAU,2EACV,cAAa,iBAAY,SAAZ,mBAAkB,SAAS;AAAA,MACvC,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,IACpB,CAAC,CACH,GAEA;AAAA,MAAC,aAAK;AAAA,MAAL;AAAA,QACC,OAAO,YAAY,kBAAkB;AAAA,QACrC,eAAe,CAAC,YAAY;AAC1B,sBAAY,kBAAkB;AAAA,YAC5B,cAAE,KAAK,CAAC,WAAW,YAAY,CAAC,EAAE,MAAM,QAAQ,KAAK;AAAA,UACvD;AAAA,QACF;AAAA,QACA,WAAS;AAAA,QACT,eAAa;AAAA,QACb,WAAU;AAAA;AAAA,MAEV,oCAAC,aAAK,MAAL,EAAU,WAAU,YACnB,oCAAC,aAAK,SAAL,EAAa,OAAM,WAAU,WAAU,UAAO,SAE/C,GACA,oCAAC,aAAK,SAAL,EAAa,OAAM,cAAa,WAAU,UAAO,YAElD,GACA,oCAAC,aAAK,WAAL,IAAe,CAClB;AAAA,MAEA,oCAAC,aAAK,SAAL,EAAa,OAAM,WAAU,WAAU,iBACtC,oCAAC,aAAQ,CACX;AAAA,MACA,oCAAC,aAAK,SAAL,EAAa,OAAM,cAAa,WAAU,iBACzC,oCAAC,gBAAW,CACd;AAAA,IACF,CACF,CACF,CACF,CACF;AAAA,EACF;AAEJ;AAEA,SAAS,cAAc,OAAwC;AA9G/D;AA+GE,QAAM,aAAa,cAAc;AACjC,QAAM,cAAc,eAAe;AAAA,IACjC,iBAAiB;AAAA,EACnB,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACJ,GAAG;AAAA,MACJ,eAAW,gCAAQ,QAAQ,MAAM,SAAS;AAAA;AAAA,IAE1C,oCAAC,SAAI,WAAU,8FACZ,cAAa,iBAAY,SAAZ,mBAAkB,SAAS;AAAA,MACvC,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,IACpB,CAAC,CACH;AAAA,IACA,oCAAC,SAAI,WAAU,6FACb,oCAAC,gBAAa,WAAU,UAAS,GAAE,QAErC;AAAA,EACF;AAEJ;;;A+BpIA,IAAAC,iBAAuB;AAEvB,IAAAC,gBAAkB;AAClB,IAAAD,iBAAuB;A;;;;;;;;ACLvB,IAAAE,mBAA2B;AAC3B,IAAAC,oBAAsB;AACtB,yBAA4C;AAC5C,IAAAC,kBAA2B;AAIpB,SAAS,gBAAgB;AAC9B;AARF;AAUE,QAAM,eAAe,gBAAgB;AACrC,QAAM,kBAAkB;AAAA,QACtB,4BAAW,CAAC,UAAU,MAAM,UAAU;AAAA,EACxC;AAEA,QAAM,CAAC,oBAAoB,qBAAqB,QAC9C;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,MACE,WAAW,GAAG;AACZ,gBAAO,uBAAG,kBAAiB;AAAA,MAC7B;AAAA,MACA,aAAa,GAAG;AACd,eAAO,IAAI,IAAI,KAAK,CAAC,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAEF,QAAM,MAAM,oBAAI,KAAK;AAErB,QAAM,yBAAyB,yBAC3B,yBAAM,mBAAmB,QAAQ,IAAI,IAAI,QAAQ,GAAG,GAAG,QAAQ;AAAA;AAAA,IACjB;AAAA;AAElD,qCAAW,MAAM;AACf,oBAAgB,QAAQ,IAAI;AAAA,EAC9B,GAAG,sBAAsB;AAEzB,SAAO;AAAA,IACL,MAAM,aAAa,YACf,UACA,kBAAa,SAAb,mBAAmB,YAAW,kBAC5B,QACA,gBAAgB;AAAA,IACtB,OAAO,MAAM;AACX,sBAAgB,QAAQ,KAAK;AAC7B,gCAAsB,6BAAW,oBAAI,KAAK,GAAG,EAAE,CAAC;AAAA,IAClD;AAAA,EACF;AACF;;;ADnCO,SAAS,WAAW,OAAwB;AACjD,QAAM,aAAa,cAAc;AACjC,QAAM,uBAAmB,uBAA0B,IAAI;AAEvD,SACE;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAM,WAAW;AAAA,MACjB,WAAS;AAAA,MACT,eAAa;AAAA,MACb,eAAe;AAAA,MACf,wBAAwB;AAAA,MACxB,gBAAgB,MAAM,iBAAiB;AAAA;AAAA,IAEvC,oCAAC,6BACC,oCAAC,eAAO,UAAP,IAAgB,GACjB,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,EAAe,WAAU,4GACxB;AAAA,MAAC,cAAAC;AAAA,MAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,WAAW;AAAA;AAAA,IACb,GAEA,oCAAC,SAAI,WAAU,iBACb,oCAAC,eAAO,OAAP,EAAa,WAAU,8CAA2C,kBAEnE,GACA,oCAAC,eAAO,aAAP,EAAmB,WAAU,6CAA0C,+FAE1C,KAC5B;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA;AAAA,MACX;AAAA,IAED,CACF,GAEA,oCAAC,SAAI,WAAU,mDACb;AAAA,MAAC,cAAAA;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,KAAI;AAAA,QACJ,WAAU;AAAA,QACV,WAAW;AAAA;AAAA,IACb,GAEA;AAAA,MAAC,cAAAA;AAAA,MAAA;AAAA,QACC,KAAK;AAAA,QACL,KAAI;AAAA,QACJ,WAAU;AAAA,QACV,WAAW;AAAA;AAAA,IACb,CACF,CACF,GAEA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS,WAAW;AAAA;AAAA,MACrB;AAAA,IAED,CACF,CACF,CACF;AAAA,EACF;AAEJ;;;AEtFA,IAAAC,iBAA0C;AAC1C,IAAAC,yBAAsB;AAGf,IAAM,yBAAqB;AAAA,EAChC;AACF;AAEO,IAAM,wBAAwB,MAAM;AACzC,QAAM,cAAU,2BAAW,kBAAkB;AAC7C,6BAAAC,SAAU,OAAO;AACjB,SAAO;AACT;;;ACZA,IAAAC,iBAAiC;;;ACAjC,wBAAwD;AACxD,IAAAC,iBAA0B;AAC1B,IAAAC,sBAAgC;AAOzB,SAAS,iBAAiB;AAC/B,QAAM,CAAC,SAAS,UAAU,QAAI;AAAA,IAC5B;AAAA,IACA;AAAA,EACF;AAEA,QAAM,aAAS,6BAAU;AACzB,QAAM,eAAW,+BAAY;AAC7B,QAAM,mBAAe,mCAAgB;AAErC,QAAM,UAAU,YAAY;AAC1B,WAAO,KAAK,QAAQ;AACpB,eAAW,MAAM;AACf,iBAAW,KAAK;AAAA,IAClB,GAAG,GAAG;AAAA,EACR;AAEA,gCAAU,MAAM;AACd,QAAI,QAAS;AACb,QAAI,CAAC,aAAa,IAAI,QAAQ,EAAG;AACjC,eAAW,IAAI;AAAA,EACjB,GAAG,CAAC,SAAS,cAAc,UAAU,CAAC;AAEtC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;AD3BO,SAAS,oBAAoB,OAAiC;AACnE,QAAM,UAAU,eAAe;AAE/B,SACE,oCAAC,sBAAmB,OAAO,WACxB,MAAM,UAEP,oCAAC,6BACC;AAAA,IAAC;AAAA;AAAA,MACC,WAAS;AAAA,MACT,eAAa;AAAA,MACb,SAAS,QAAQ;AAAA,MACjB,WAAU;AAAA,MACV,0BAAwB;AAAA;AAAA,IACzB;AAAA,IACoC;AAAA,IACnC;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,QAAQ;AAAA,QACjB,WAAU;AAAA;AAAA,MACX;AAAA,IAED;AAAA,EACF,CACF,CACF;AAEJ;;;AElCA,IAAAC,iBAAyC;AAEzC,IAAAC,gBAAkB;AAClB,IAAAD,iBAAuB;AACvB,IAAAE,kBAA2B;;;ACN3B,IAAAC,2BAKO;AACP,IAAAC,uBAA4B;AAC5B,IAAAC,0BAAsB;;;ACLf,IAAM,+BAA+B,MAAmB;AAAA,EAC7D;AACF;;;ADeO,IAAM,4BAMT,CAAC,WAAW;AACd,QAAM,cAAc,eAAe;AAEnC,aAAO,kCAAY;AAAA,IACjB,GAAG;AAAA,IACH,aAAa,6BAA6B;AAAA,IAC1C,YAAY,OAAO,UAAU;AAC3B,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,kCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,kCAAAA,SAAU,QAAQ,WAAW,eAAe;AAE5C,UAAI,sBAAsB,SAAS,MAAM,KAAK,QAAQ,GAAG;AACvD,kBAAM,iDAAuB,MAAM,QAAQ,IAAI;AAAA,UAC7C,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,kBAAM,yCAAe,MAAM,QAAQ,IAAI;AAAA,UACrC,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AE1DO,SAAS,aAAa,OAAqC;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,8SAA6S;AAAA,EACvT;AAEJ;;;AHGO,SAAS,WAAW,OAAwB;AAtBnD;AAuBE,QAAM,UAAM,uBAAuB,IAAI;AAEvC,QAAM,qBAAqB,cAAc;AAAA,IACvC,aAAa;AAAA,IACb,aAAa,MAAM;AACjB,UAAI,CAAC,MAAM;AACT,mBAAW,MAAM;AA7BzB,cAAAC;AA8BU,WAAAA,MAAA,IAAI,YAAJ,gBAAAA,IAAa,eAAe;AAAA,YAC1B,UAAU;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,UACV;AAAA,QACF,GAAG,EAAE;AAAA,MACP;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,mBAAmB,cAAc;AACvC,QAAM,yBAAyB,0BAA0B;AACzD,QAAM,cAAc;AAAA,QAClB,4BAAW,CAAC,SAAS;AAAA,MACnB,YAAY,IAAI;AAAA,MAChB,mBAAmB,IAAI;AAAA,IACzB,EAAE;AAAA,EACJ;AAEA,iBAAeC,kBAAiB;AAC9B,QAAI,YAAY,WAAW,QAAQ,WAAW,WAAW;AACvD,YAAM,uBAAuB,YAAY;AAAA,QACvC,MAAM,YAAY,WAAW,QAAQ;AAAA,QACrC,SAAS,YAAY,WAAW,QAAQ;AAAA,MAC1C,CAAC;AAAA,IACH;AAEA,uBAAmB,QAAQ,IAAI;AAE/B,gBAAY,WAAW,WAAW;AAAA,MAChC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SACE,YAAY,WAAW,QAAQ,WAAW,aAC1C,CAAC,mBAAmB;AAAA,MAEtB,WAAS;AAAA,MACT,eAAe,YAAY,WAAW,QAAQ,WAAW;AAAA,MACzD,WAAU;AAAA;AAAA,IAEV,oCAAC,aAAQ,WAAU,6BAChB,YAAY,WAAW,QAAQ,WAAW,aACzC,oCAAC,SAAI,WAAU,gDACb,oCAAC,eAAY,WAAU,UAAS,CAClC,GAGD,YAAY,WAAW,QAAQ,WAAW,YACzC,oCAAC,WAAgB,GAGlB,YAAY,WAAW,QAAQ,WAAW,aACzC;AAAA,MAAC;AAAA;AAAA,QACC,OAAK,iBAAY,WAAW,QAAQ,YAA/B,mBAAwC,cAAa;AAAA,QAC1D,WAAU;AAAA;AAAA,IACZ,CAEJ;AAAA,IACA,oCAAC,aAAQ,WAAU,0DACjB;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,SAAS,MAAM;AACb,cAAI,YAAY,WAAW,QAAQ,WAAW,WAAW;AACvD,YAAAA,gBAAe;AACf;AAAA,UACF;AAEA,2BAAiB,QAAQ,IAAI;AAAA,QAC/B;AAAA,QACA,UAAU,YAAY,WAAW,QAAQ,WAAW;AAAA,QACpD,cAAW;AAAA,QACX,OAAM;AAAA;AAAA,MAEN,oCAAC,SAAM,WAAU,UAAS;AAAA,IAC5B,GACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,SAAS,MAAM,mBAAmB,QAAQ,IAAI;AAAA,QAC9C,OAAM;AAAA,QACN,cAAW;AAAA;AAAA,MAEX,oCAAC,gBAAa,WAAU,UAAS;AAAA,IACnC,CACF;AAAA,EACF,GAEA;AAAA,IAAC,sBAAO;AAAA,IAAP;AAAA,MACC,MACE,YAAY,WAAW,QAAQ,WAAW,aAC1C,mBAAmB,QACnB,CAAC,iBAAiB;AAAA,MAEpB,WAAS;AAAA,MACT,eAAe;AAAA,MACf,wBAAwB;AAAA;AAAA,IAExB,oCAAC,6BACC,oCAAC,sBAAO,YAAP,EAAkB,WAAU,4BAC3B,oCAAC,sBAAO,SAAP,EAAe,WAAU,6FACxB,oCAAC,aAAQ,WAAU,8DACjB,oCAAC,SAAI,WAAU,2CACb;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,SAAS,MAAM;AACb,cAAI,YAAY,WAAW,QAAQ,WAAW,WAAW;AACvD,YAAAA,gBAAe;AACf;AAAA,UACF;AAEA,2BAAiB,QAAQ,IAAI;AAAA,QAC/B;AAAA,QACA,UACE,YAAY,WAAW,QAAQ,WAAW;AAAA,QAE5C,OAAM;AAAA,QACN,cAAW;AAAA;AAAA,MAEX,oCAAC,mBAAgB,WAAU,UAAS;AAAA,IACtC,CACF,GACA,oCAAC,SAAI,WAAU,sCACZ,CAAC,CAAC,MAAM,QACP;AAAA,MAAC,cAAAC;AAAA,MAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,KAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ,CAEJ,GACA,oCAAC,SAAI,WAAU,4BACb;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,QACX,SAAS,MAAM;AACb,sBAAY,kBAAkB,QAAQ,IAAI;AAAA,QAC5C;AAAA;AAAA,MAEA,oCAAC,gBAAa,WAAU,UAAS;AAAA,MAAE;AAAA,IAErC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,SAAS,MAAM,mBAAmB,QAAQ,KAAK;AAAA,QAC/C,OAAM;AAAA,QACN,cAAW;AAAA;AAAA,MAEX,oCAAC,gBAAa,WAAU,UAAS;AAAA,IACnC,CACF,CACF,GACA,oCAAC,aAAQ,WAAU,UAChB,YAAY,WAAW,QAAQ,WAAW,aACzC,oCAAC,SAAI,WAAU,gDACb,oCAAC,eAAY,WAAU,UAAS,CAClC,GAGD,YAAY,WAAW,QAAQ,WAAW,YACzC,oCAAC,WAAuB,GAGzB,YAAY,WAAW,QAAQ,WAAW,aACzC;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,YAAY,WAAW,QAAQ,QAAQ,aAAa;AAAA,QACzD,WAAU;AAAA;AAAA,IACZ,CAEJ,CACF,CACF,CACF;AAAA,EACF,GAEA;AAAA,IAAC,oBAAY;AAAA,IAAZ;AAAA,MACC,MAAK;AAAA,MACL,MAAM,iBAAiB;AAAA,MACvB,cAAc,CAAC,YAAY;AACzB,yBAAiB,QAAQ,QAAQ,IAAI;AAAA,MACvC;AAAA,MACA,WAAS;AAAA,MACT,eAAe;AAAA,MACf,wBAAwB;AAAA;AAAA,IAExB,oCAAC,6BACC,oCAAC,oBAAY,UAAZ,IAAqB,GACtB,oCAAC,oBAAY,YAAZ,MACC,oCAAC,oBAAY,SAAZ,MACC,oCAAC,oBAAY,QAAZ,MACC,oCAAC,SAAI,WAAU,uFACb,oCAAC,qBAAgB,CACnB,GACA,oCAAC,oBAAY,cAAZ,MACC,oCAAC,WAAM,CACT,CACF,GACA,oCAAC,oBAAY,MAAZ,MACC,oCAAC,oBAAY,OAAZ,MAAkB,WAAS,GAC5B,oCAAC,oBAAY,aAAZ,MAAwB,gCAEzB,CACF,GACA,oCAAC,oBAAY,SAAZ,MACE,CAAC,QACA,oCAAC,oBAAY,QAAZ,MACC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,aAAY;AAAA,QACZ,UAAU,uBAAuB;AAAA,QACjC,SAAS,MAAM;AACb,cAAI,QAAQ,KAAK;AAAA,QACnB;AAAA;AAAA,MACD;AAAA,IAED,GACA;AAAA,MAAC;AAAA;AAAA,QACC,aAAY;AAAA,QACZ,UAAU,uBAAuB;AAAA,QACjC,SAAS,YAAY;AACnB,gBAAMD,gBAAe;AACrB,cAAI,QAAQ,KAAK;AAAA,QACnB;AAAA;AAAA,MACD;AAAA,IAED,CACF,CAEJ,CACF,CACF,CACF;AAAA,EACF,CACF;AAEJ;;;AIvRA,IAAAE,iBAAuC;AAEvC,IAAAC,kBAA2B;;;ACJ3B,IAAAC,2BAOO;AACP,IAAAC,oBAAqC;AACrC,IAAAC,uBAA4B;AAC5B,IAAAC,0BAAsB;;;ACRf,IAAM,kCAAkC,MAAmB;AAAA,EAChE;AACF;;;ADmBO,IAAM,+BAA4D,CACvE,WACG;AACH,QAAM,cAAc,eAAe;AAEnC,aAAO,kCAAY;AAAA,IACjB,GAAG;AAAA,IACH,aAAa,gCAAgC;AAAA,IAC7C,YAAY,OAAO,SAAS;AAC1B,YAAM,KAAK,2BAAS,SAAS,6BAAW,WAAW,EAAE,SAAS;AAC9D,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,kCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,UAAI,sBAAsB,SAAS,KAAK,QAAQ,GAAG;AACjD,kBAAM;AAAA,UACJ;AAAA,YACE;AAAA,YACA,MAAM,KAAK;AAAA,UACb;AAAA,UACA;AAAA,YACE,aAAa;AAAA,YACb,SAAS;AAAA,cACP,iBAAiB;AAAA,cACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AAEA,cAAM,OAAO,MAAM;AAAA,UACjB,YAAY;AACV,kBAAMC,WAAU,MAAM,YAAY,WAAW;AAAA,cAC3C,UAAU,mBAAmB;AAAA,cAC7B,SAAS,MAAM,WAAW;AAAA,YAC5B,CAAC;AAED,wCAAAD,SAAUC,SAAQ,WAAW,eAAe;AAE5C,mBAAO,UAAM,iDAAuB,IAAI;AAAA,cACtC,aAAa;AAAA,cACb,SAAS;AAAA,gBACP,iBAAiB;AAAA,gBACjB,eAAe,UAAUA,SAAQ,KAAK;AAAA,cACxC;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA;AAAA,YACE,OAAO,CAAC,MAAM,CAAC,EAAC,uBAAG;AAAA,YACnB,UAAU;AAAA,YACV,YAAY;AAAA,UACd;AAAA,QACF,EAAE;AAEF,YAAI,EAAC,6BAAM,YAAW;AACpB,gBAAM,QAAQ,IAAI,MAAM;AACxB,gBAAM,OAAO;AACb,gBAAM,UAAU;AAChB,gBAAM;AAAA,QACR;AAEA,eAAO;AAAA,MACT,OAAO;AACL,kBAAM;AAAA,UACJ;AAAA,YACE;AAAA,YACA,MAAM,KAAK;AAAA,UACb;AAAA,UACA;AAAA,YACE,aAAa;AAAA,YACb,SAAS;AAAA,cACP,iBAAiB;AAAA,cACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AAEA,cAAM,OAAO,MAAM;AAAA,UACjB,YAAY;AACV,kBAAMA,WAAU,MAAM,YAAY,WAAW;AAAA,cAC3C,UAAU,mBAAmB;AAAA,cAC7B,SAAS,MAAM,WAAW;AAAA,YAC5B,CAAC;AAED,wCAAAD,SAAUC,SAAQ,WAAW,eAAe;AAE5C,mBAAO,UAAM,yCAAe,IAAI;AAAA,cAC9B,aAAa;AAAA,cACb,SAAS;AAAA,gBACP,iBAAiB;AAAA,gBACjB,eAAe,UAAUA,SAAQ,KAAK;AAAA,cACxC;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA;AAAA,YACE,OAAO,CAAC,MAAM,CAAC,EAAC,uBAAG;AAAA,YACnB,UAAU;AAAA,YACV,YAAY;AAAA,UACd;AAAA,QACF,EAAE;AAEF,YAAI,EAAC,6BAAM,YAAW;AACpB,gBAAM,QAAQ,IAAI,MAAM;AACxB,gBAAM,OAAO;AACb,gBAAM,UAAU;AAChB,gBAAM;AAAA,QACR;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AD1HO,SAAS,kBAAkB,OAA+B;AAfjE;AAgBE,QAAM,eAAe,gBAAgB;AACrC,QAAM,4BAA4B,6BAA6B;AAC/D,QAAM,cAAc;AAAA,QAClB,4BAAW,CAAC,SAAS;AAAA,MACnB,QAAQ,IAAI;AAAA,MACZ,YAAY,IAAI;AAAA,IAClB,EAAE;AAAA,EACJ;AAEA,QAAM,aACJ,kBAAa,SAAb,mBAAmB,YAAW,oBAC1B,QACA,YAAY,WAAW,QAAQ,WAAW,YACxC,OACA,MAAM;AAEd,SACE;AAAA,IAAC,mBAAI;AAAA,IAAJ;AAAA,MACC,MAAK;AAAA,MACJ,GAAG;AAAA,MACJ,SAAS,OAAO,MAAM;AApC5B,YAAAC,KAAAC;AAqCQ,SAAAD,MAAA,MAAM,YAAN,gBAAAA,IAAA,YAAgB;AAEhB,cAAIC,MAAA,aAAa,SAAb,gBAAAA,IAAmB,YAAW,mBAAmB;AACnD,iBAAO,YAAY,OAAO,QAAQ,IAAI;AAAA,QACxC;AAEA,oBAAY,WAAW,WAAW;AAAA,UAChC,MAAM,MAAM;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,QACX,CAAC;AAED,YAAI;AACF,gBAAM,UAAU,MAAM,0BAA0B;AAAA,YAC9C,MAAM;AAAA,UACR;AAEA,sBAAY,WAAW,WAAW;AAAA,YAChC,MAAM,MAAM;AAAA,YACZ;AAAA,YACA,QAAQ;AAAA,UACV,CAAC;AAAA,QACH,SAAS,OAAO;AACd,sBAAY,WAAW,WAAW;AAAA,YAChC,MAAM,MAAM;AAAA,YACZ,SAAS;AAAA,YACT,QAAQ;AAAA,UACV,CAAC;AAED,kBAAQ,MAAM;AAAA,YACZ,aACE,iBAAiB,QAAQ,MAAM,UAAU;AAAA,UAC7C,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA;AAAA,MACA,iBAAe,SAAS,QAAQ;AAAA,MAChC,gBACE,kBAAa,SAAb,mBAAmB,YAAW,oBAC1B,YAAY,OAAO,OACjB,SACA,WACF,YAAY,WAAW,QAAQ,WAAW,YACxC,WACA;AAAA;AAAA,EAEV;AAEJ;;;AGrFA,IAAAC,2BAA0C;;;ACGnC,IAAM,mBAAmB,CAAC,UAAiC,CAAC,iBAAiB,KAAK;;;ADElF,IAAM,qBAAqB,OAAO,UAAuB;AAC9D,QAAM,eAAe,EAAE,sBAAsB;AAAA,IAC3C,UAAU,iBAAiB,KAAK;AAAA,IAChC,SAAS,OAAO,EAAE,WAAW,OAAO,MAAM;AACxC,aAAO,UAAM;AAAA,QACX;AAAA,UACE,GAAG;AAAA,UACH,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,WAAW;AAAA,YACX,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AACH;;;AExBA,IAAAC,+BAEO;AACP,IAAAC,gBAAkB;AAClB,IAAAC,eAAiB;AACjB,IAAAC,iBAAiD;AACjD,IAAAC,yBAAwB;;;ACRxB,IAAAC,2BAKO;AACP,IAAAC,uBAAiC;AAK1B,IAAM,gBAGT,CAAC,OAAO,WAAW;AACrB,aAAO,uCAAiB;AAAA,IACtB,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,sBAAsB;AAAA,IACtB,GAAG;AAAA,IACH,UAAU,iBAAiB,KAAK;AAAA,IAChC,SAAS,CAAC,EAAE,WAAW,OAAO,MAAM;AAClC,iBAAO;AAAA,QACL;AAAA,UACE,GAAG;AAAA,UACH,OAAO;AAAA,QACT;AAAA,QACA;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,WAAW;AAAA,YACX,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB,UAAU;AAtC/B;AAuCM,WAAI,0CAAU,aAAV,mBAAoB,aAAa;AACnC,gBAAO,0CAAU,aAAV,mBAAoB;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC1CO,SAAS,cAAc,OAAqC;AACjE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,iCAAgC;AAAA,EAC1C;AAEJ;;;ACjBO,SAAS,eAAe,OAAqC;AAClE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,mCAAkC;AAAA,EAC5C;AAEJ;;;AHDO,SAAS,aAAa,OAAmB;AAlBhD;AAmBE,QAAM,YAAY,MAAM,aAAa;AAErC,QAAM,aAAa,cAAc;AAAA,IAC/B,QAAQ,YAAY,KAAK;AAAA,IACzB,QAAQ,MAAM;AAAA,EAChB,CAAC;AAED,QAAM,UACJ,gBAAW,SAAX,mBAAiB,MACd,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,GAChD,WAAU,CAAC;AAEhB,QAAM,CAAC,UAAU,QAAQ,QAAI,6BAAAC,SAAiB;AAAA,IAC5C,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,aAAa;AAAA,MACX,uBAAuB;AAAA,QACrB,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,IAAI;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,IAAI;AAE3D,QAAM,wBAAoB;AAAA,IACxB,MAAM,qCAAU;AAAA,IAChB,CAAC,QAAQ;AAAA,EACX;AACA,QAAM,wBAAoB,4BAAY,YAAY;AAChD,QAAI,EAAC,qCAAU,oBAAmB,WAAW,aAAa;AACxD,YAAM,WAAW,cAAc;AAC/B,2CAAU;AACV,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,CAAC,CAAC;AAAA,IACvD;AAEA,yCAAU;AAAA,EACZ,GAAG,CAAC,UAAU,UAAU,CAAC;AAEzB,QAAM,eAAW,4BAAY,CAACC,cAAsC;AAClE,uBAAmB,EAACA,aAAA,gBAAAA,UAAU,gBAAe;AAC7C,uBAAmB,EAACA,aAAA,gBAAAA,UAAU,gBAAe;AAAA,EAC/C,GAAG,CAAC,CAAC;AAEL,gCAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACf,aAAS,QAAQ;AACjB,aAAS,GAAG,UAAU,QAAQ,EAAE,GAAG,UAAU,QAAQ;AAAA,EACvD,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,SAAI,WAAU,uBACb,oCAAC,QAAG,WAAU,2BAAyB,MAAM,OAAQ,GACrD,oCAAC,SAAI,WAAU,QAAO,GACtB,oCAAC,SAAI,WAAU,6CACb;AAAA,IAAC,aAAAC;AAAA,IAAA;AAAA,MACC,MAAM,MAAM;AAAA,MACZ,WAAU;AAAA;AAAA,IACX;AAAA,IAEC,oCAAC,oBAAiB,WAAU,oBAAmB;AAAA,EACjD,GACA,oCAAC,SAAI,WAAU,oBACb;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAW;AAAA;AAAA,IAEX,oCAAC,iBAAc,WAAU,UAAS;AAAA,EACpC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,SAAS;AAAA,MACT,UACE,mBAAmB,CAAC,WAAW,cAC3B,OACA,WAAW;AAAA,MAEjB,cAAW;AAAA;AAAA,IAEV,WAAW,qBACV,oCAAC,eAAY,WAAU,UAAS,IAEhC,oCAAC,kBAAe,WAAU,UAAS;AAAA,EAEvC,CACF,CACF,CACF,GAEA,oCAAC,SAAI,KAAK,UAAU,WAAU,uCAC5B;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA,cAAc,IACV,gBACA,cAAc,IACZ,gBACA;AAAA,MACR;AAAA;AAAA,IAEC,MAAM,IAAI,CAAC,SACV;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,KAAK;AAAA,QACV;AAAA,QACA,WAAU;AAAA;AAAA,MAEV;AAAA,QAAC,cAAAC;AAAA,QAAA;AAAA,UACC,KAAK,KAAK;AAAA,UACV,KAAI;AAAA,UACJ,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,UAAQ;AAAA,UACR,WAAU;AAAA;AAAA,MACZ;AAAA,MAEA,oCAAC,UAAK,WAAU,iGACb,KAAK,IACR;AAAA,IACF,CACD;AAAA,EACH,CACF,CACF;AAEJ;;;AIzIA,eAAsB,MAAM,OAAmB;AAC7C,QAAM,YAAY,MAAM,aAAa;AAErC,QAAM,mBAAmB;AAAA,IACvB,QAAQ,YAAY,KAAK;AAAA,IACzB,QAAQ,MAAM;AAAA,EAChB,CAAC;AAED,SAAO,oCAAC,gBAAc,GAAG,OAAO;AAClC;;;ACpBA,IAAAC,+BAA6B;AAC7B,IAAAC,eAAiB;AACjB,IAAAC,iBAAiD;;;ACJjD,IAAAC,2BAKO;AACP,IAAAC,uBAAiC;;;ACH1B,IAAM,sBAAsB,CAAC,UAAoC,CAAC,oBAAoB,KAAK;;;ADQ3F,IAAM,mBAGT,CAAC,OAAO,WAAW;AACrB,QAAM,YAAQ,uCAAiB;AAAA,IAC7B,GAAG;AAAA,IACH,UAAU,oBAAoB,KAAK;AAAA,IACnC,SAAS,CAAC,EAAE,WAAW,OAAO,MAAM;AAClC,iBAAO;AAAA,QACL,EAAE,GAAG,OAAO,OAAO,UAAU;AAAA,QAC7B;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB,UAAU;AACzB,UAAI,qCAAU,SAAS,aAAa;AAClC,eAAO,SAAS,SAAS;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AErCA,IAAAC,iBAAyB;AAEzB,IAAAC,gBAAkB;AAClB,IAAAC,yBAAwB;;;ACHjB,SAAS,uBAAuB,OAAqC;AAC1E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,8BAA6B;AAAA,EACvC;AAEJ;A;;;;;;;;ADNA,4BAAmB;AAOZ,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AACF,GAA4B;AAC1B,QAAM,aAAa,cAAc;AAEjC,QAAM,cAAc,QAAQ;AAC5B,QAAM,gBAAgB,cAClB,QAAQ,0BACR,QAAQ;AAEZ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAEA,oCAAC,SAAI,WAAU,iCACb,oCAAC,SAAI,WAAU,yBACZ,cACC,oCAAC,SAAI,WAAU,mHACb,oCAAC,UAAK,WAAU,mDAAkD,GAAE,YAEtE,IAEA,oCAAC,SAAI,WAAU,6GACb,oCAAC,0BAAuB,WAAU,YAAW,GAAE,cAEjD,GAGF,oCAAC,SAAI,WAAU,mCAAiC,QAAQ,IAAK,GAC7D,oCAAC,SAAI,WAAU,6EACZ,aAAa,eAAe;AAAA,MAC3B,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB,CAAC,CACH,CACF,GAEA,oCAAC,aACC;AAAA,MAAC,cAAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK,cAAc,qBAAY;AAAA,QAC/B,KAAI;AAAA,QACJ,SAAS;AAAA,QACT,WAAU;AAAA;AAAA,IACZ,CACF,CACF;AAAA,IAEA,oCAAC,SAAI,WAAU,0BACb,oCAAC,SAAI,WAAU,yBACZ,aAAa,GAAG;AAAA,MACf,UAAU,WAAW,SAAS;AAAA,MAC9B,SAAS;AAAA,IACX,CAAC,CACH,GAEA,oCAAC,SAAI,WAAU,oDACZ,cACC,oCAAC,SAAI,WAAU,2BACb;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,sBAAAC,QAAO,2BAA2B;AAAA,QACpC;AAAA;AAAA,MAEA,oCAAC,mBAAgB,WAAU,YAAW;AAAA,IACxC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,sBAAAA,QAAO,2BAA2B;AAAA,QACpC;AAAA;AAAA,MAEA,oCAAC,mBAAgB,WAAU,YAAW;AAAA,IACxC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,sBAAAA,QAAO,2BAA2B;AAAA,QACpC;AAAA;AAAA,MAEA,oCAAC,mBAAgB,WAAU,YAAW;AAAA,IACxC,CACF,IAEA,oCAAC,SAAI,WAAU,2BACb;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,sBAAAA,QAAO,6BAA6B;AAAA,QACtC;AAAA;AAAA,MAEA,oCAAC,oBAAiB,WAAU,YAAW;AAAA,IACzC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,sBAAAA,QAAO,6BAA6B;AAAA,QACtC;AAAA;AAAA,MAEA,oCAAC,oBAAiB,WAAU,YAAW;AAAA,IACzC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,sBAAAA,QAAO,6BAA6B;AAAA,QACtC;AAAA;AAAA,MAEA,oCAAC,oBAAiB,WAAU,YAAW;AAAA,IACzC,CACF,GAGF,oCAAC,SAAI,WAAU,yBACZ,aAAa,mCAAS,yBAAyB;AAAA,MAC9C,UAAU,WAAW,SAAS;AAAA,MAC9B,SAAS;AAAA,IACX,CAAC,CACH,CACF,CACF;AAAA,IAEA;AAAA,MAAC,wBAAS;AAAA,MAAT;AAAA,QACC,WAAU;AAAA,QACV,KAAK;AAAA,QACL,OAAO;AAAA;AAAA,MAEP,oCAAC,wBAAS,OAAT,EAAe,WAAU,qCACxB,oCAAC,wBAAS,OAAT,EAAe,WAAU,mCAAkC,CAC9D;AAAA,IACF;AAAA,IAEA,oCAAC,SAAI,WAAU,iCACZ,cACG,mBAAmB,aAAa,mCAAS,yBAAyB;AAAA,MAChE,UAAU,WAAW,SAAS;AAAA,MAC9B,SAAS;AAAA,IACX,CAAC,CAAC,oDACF;AAAA,MACE,OAAO,mCAAS,IAAI,KAAK;AAAA,MACzB,OAAO,mCAAS,uBAAuB,KAAK;AAAA,IAC9C,CACN;AAAA,EACF;AAEJ;AAEA,IAAM,oCAAoC,CACxC,MACA,UACW;AACX,QAAM,aAAa,UAAU,IAAI,IAAK,OAAO,QAAS;AAEtD,SAAO,cAAc,KACjB,qFACA;AACN;;;AHzKO,SAAS,sBAAsB,OAA4B;AAblE;AAcE,QAAM,CAAC,UAAU,QAAQ,QAAI,6BAAAC,SAAiB;AAAA,IAC5C,OAAO;AAAA,IACP,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,iBAAa,4BAAY,MAAM;AACnC,QAAI,SAAU,UAAS,WAAW;AAAA,EACpC,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,iBAAa,4BAAY,MAAM;AACnC,QAAI,SAAU,UAAS,WAAW;AAAA,EACpC,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,KAAK;AACxD,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,KAAK;AAExD,QAAM,eAAW,4BAAY,MAAM;AACjC,QAAI,CAAC,SAAU;AACf,qBAAiB,SAAS,cAAc,CAAC;AACzC,qBAAiB,SAAS,cAAc,CAAC;AAAA,EAC3C,GAAG,CAAC,QAAQ,CAAC;AAEb,gCAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACf,aAAS;AACT,aAAS,GAAG,UAAU,QAAQ;AAC9B,aAAS,GAAG,UAAU,QAAQ;AAAA,EAChC,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,QAAM,gBAAgB,iBAAiB;AAAA,IACrC,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,SAAS;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,QAAM,aACJ,mBAAc,SAAd,mBAAoB,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,UAAS,CAAC;AAElE,MAAI,SAAS,UAAU,EAAG,QAAO;AAEjC,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,SAAI,WAAU,uCACb,oCAAC,SAAI,WAAU,2BAAyB,MAAM,OAAQ,GACtD,oCAAC,SAAI,WAAU,kCACb;AAAA,IAAC,aAAAC;AAAA,IAAA;AAAA,MACC,MAAM,MAAM;AAAA,MACZ,WAAU;AAAA;AAAA,IACX;AAAA,IAEC,oCAAC,oBAAiB,WAAU,oBAAmB;AAAA,EACjD,GAEA,oCAAC,SAAI,WAAU,oBACb;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACT,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,cAAW;AAAA;AAAA,IAEX,oCAAC,iBAAc,WAAU,UAAS;AAAA,EACpC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACT,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,cAAW;AAAA;AAAA,IAEX,oCAAC,UAAK,WAAU,aAAU,MAAI;AAAA,IAC9B,oCAAC,kBAAe,WAAU,UAAS;AAAA,EACrC,CACF,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,qCAAoC,KAAK,YACtD,oCAAC,SAAI,WAAU,kBACZ,SAAS,IAAI,CAAC,YACb;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,QAAQ;AAAA,MACb;AAAA,MACA,WACE,SAAS,SAAS,IACd,WACA;AAAA;AAAA,EAER,CACD,CACH,CACF,CACF;AAEJ;;;AKhHA,eAAsB,eAAe,OAA4B;AAmB/D,SAAO,oCAAC,yBAAuB,GAAG,OAAO;AAC3C;;;AC5BA,gCAAsB;AACtB,IAAAC,yBAAwB;AAOjB,SAAS,QAAQ,OAAqB;AAC3C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA,MAAM;AAAA,MACR;AAAA;AAAA,IAEA,oCAAC,SAAI,WAAU,qFACb,oCAAC,UAAK,WAAU,mEAAkE,GAClF,oCAAC,cAAK,YAAe,CACvB;AAAA,IACA,oCAAC,0BAAAC,SAAA,EAAU,WAAU,UAClB,MAAM,UAAS,0CAElB;AAAA,EACF;AAEJ;;;AC1BA,IAAAC,uBAA6C;;;ACA7C,IAAAC,2BAA4B;AAK5B,eAAsB,wBAAwB;AAC5C,QAAM,eAAe,EAAE,cAAc;AAAA,IACnC,UAAU,oBAAoB;AAAA,IAC9B,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,aAAO,UAAM,sCAAY;AAAA,QACvB;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AClBA,qBAAwB;AAIxB,eAAsBC,cAA+B;AAJrD;AAKE,QAAM,UAAU,UAAM,wBAAQ;AAC9B,QAAM,eAAc,aAAQ,IAAI,wBAAwB,MAApC,mBAAuC;AAE3D,SAAO,cACH,EAAE,QAAQ,iBAAiB,OAAO,YAAY,IAC9C,EAAE,QAAQ,kBAAkB;AAClC;;;ACPO,SAAS,uBAAuB;AACrC,SAAO,eAAe,EAAE,cAAc;AAAA,IACpC,UAAU,mBAAmB;AAAA,IAC7B,SAAS,YAAY;AACnB,aAAO,MAAMC,YAAW;AAAA,IAC1B;AAAA,EACF,CAAC;AACH;;;ACXA,IAAAC,2BAA0B;AAMnB,IAAM,sBAAsB,YAAY;AAC7C,QAAM,UAAU,MAAMC,YAAW;AAEjC,MAAI,QAAQ,WAAW,kBAAmB;AAE1C,QAAM,eAAe,EAAE,cAAc;AAAA,IACnC,UAAU,kBAAkB;AAAA,IAC5B,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,aAAO,UAAM,oCAAU;AAAA,QACrB;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,UACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;ACtBA,IAAAC,iBAA+B;AAC/B,IAAAC,uBAAoC;AAGpC,IAAAC,yBAAwB;AAMjB,SAAS,UAAU,EAAE,SAAS,GAAsB;AACzD,QAAM,cAAc,eAAe;AAEnC,SACE,oCAAC,4CAAoB,QAAQ,eAC1B,UAED,oCAAC,0BAAQ,WACN,CAAC,UACA;AAAA,IAAC,qBAAM;AAAA,IAAN;AAAA,MACC,KAAK,MAAM;AAAA,MACX,WAAU;AAAA;AAAA,IAEV;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,MAAM,SAAS,UACX,sBACA;AAAA,QACN;AAAA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,YACT;AAAA,YACA,MAAM,SAAS,UACX,sBACA;AAAA,UACN;AAAA;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,eAAW;AAAA,cACT;AAAA,cACA,MAAM,SAAS,UAAU,iBAAiB;AAAA,YAC5C;AAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,oCAAC,SAAI,WAAU,+BACb,oCAAC,qBAAM,OAAN,EAAY,WAAU,mBACpB,MAAM,QACH,MAAM,QACN,MAAM,SAAS,UACb,UACA,SACR,GACA,oCAAC,qBAAM,aAAN,EAAkB,WAAU,wBAC1B,MAAM,cACH,MAAM,cACN,MAAM,SAAS,UACb,0BACA,mCACR,CACF;AAAA,IACA,oCAAC,qBAAM,cAAN,EAAmB,WAAU,kDAC5B,oCAAC,SAAM,WAAU,UAAS,CAC5B;AAAA,EACF,CAEJ,CACF;AAEJ;;;ALjEA,eAAsB,eAAe,EAAE,SAAS,GAAsB;AACpE,QAAM,cAAc,eAAe;AAEnC,QAAM,QAAQ,IAAI;AAAA,IAChB,qBAAqB;AAAA,IACrB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,EACtB,CAAC;AAED,SACE,oCAAC,iBACC,oCAAC,0CAAkB,WAAO,gCAAU,WAAW,KAC7C,oCAAC,2BAAqB,QAAS,CACjC,CACF;AAEJ;;;AMzBA,IAAAC,2BAA0B;;;ACEnB,IAAM,oBAAoB,MAAgB,CAAC,gBAAgB;;;ADG3D,IAAM,sBAAsB,YAAY;AAC7C,QAAM,eAAe,EAAE,cAAc;AAAA,IACnC,UAAU,kBAAkB;AAAA,IAC5B,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,aAAO,UAAM,oCAAU;AAAA,QACrB;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AEhBA,IAAAC,+BAEO;AACP,IAAAC,eAAiB;AACjB,IAAAC,iBAAiD;AACjD,IAAAC,0BAAwB;;;ACPxB,IAAAC,2BAAsC;AACtC,IAAAC,uBAAyB;AAKlB,IAAM,iBAAiC,CAAC,WAAW;AACxD,aAAO,+BAAS;AAAA,IACd,GAAG;AAAA,IACH,UAAU,kBAAkB;AAAA,IAC5B,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,aAAO,UAAM,oCAAU;AAAA,QACrB;AAAA,QACA,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AClBO,SAAS,WAAW,OAAqC;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,qlCAAolC;AAAA,EAC9lC;AAEJ;;;AClBA,IAAAC,gBAAkB;AAClB,IAAAC,qBAA0B;AAC1B,IAAAC,0BAAuB;AAQhB,SAAS,WAAW,OAAwB;AACjD,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,aAAS,8BAAU;AAEzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,MAAM;AAAA,MACX,WAAU;AAAA;AAAA,IAET,MAAM,OAAO,OACZ;AAAA,MAAC,cAAAC;AAAA,MAAA;AAAA,QACC,KAAK,MAAM,OAAO;AAAA,QAClB,KAAK,MAAM;AAAA,QACX,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAQ;AAAA,QACR,WAAU;AAAA;AAAA,IACZ;AAAA,IAEF,oCAAC,SAAI,WAAU,iCACb;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,MAAM,wBAAwB,eAAe;AAAA,QAC/C;AAAA;AAAA,MAEC,MAAM;AAAA,IACT,GAEC,MAAM,yBAAyB,MAAM,eACpC;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,yBAAyB,EAAE,QAAQ,MAAM,YAAY;AAAA;AAAA,IACvD,GAGF,oCAAC,SAAI,WAAU,kBACb;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAQ;AAAA,QACR,SAAS,MAAM,OAAO,KAAK,WAAW,MAAM,EAAE,EAAE;AAAA;AAAA,MACjD;AAAA,IAED,CACF,CACF;AAAA,EACF;AAEJ;;;AHzCO,SAAS,cAAc,OAAmB;AAC/C,QAAM,cAAc,eAAe,CAAC,CAAC;AAErC,QAAM,SAAS,YAAY,QAAQ,CAAC;AAEpC,QAAM,CAAC,UAAU,QAAQ,QAAI,6BAAAC,SAAiB;AAAA,IAC5C,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,aAAa;AAAA,MACX,uBAAuB;AAAA,QACrB,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,IAAI;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,IAAI;AAE3D,QAAM,wBAAoB;AAAA,IACxB,MAAM,qCAAU;AAAA,IAChB,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,wBAAoB,4BAAY,YAAY;AAChD,yCAAU;AAAA,EACZ,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,eAAW,4BAAY,CAACC,cAAsC;AAClE,uBAAmB,EAACA,aAAA,gBAAAA,UAAU,gBAAe;AAC7C,uBAAmB,EAACA,aAAA,gBAAAA,UAAU,gBAAe;AAAA,EAC/C,GAAG,CAAC,CAAC;AAEL,gCAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACf,aAAS,QAAQ;AACjB,aAAS,GAAG,UAAU,QAAQ,EAAE,GAAG,UAAU,QAAQ;AAAA,EACvD,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,SAAI,WAAU,uBACb,oCAAC,QAAG,WAAU,2BAAyB,MAAM,OAAQ,GACrD,oCAAC,SAAI,WAAU,QAAO,GACtB,oCAAC,SAAI,WAAU,6CACb;AAAA,IAAC,aAAAC;AAAA,IAAA;AAAA,MACC,MAAM,MAAM;AAAA,MACZ,WAAU;AAAA;AAAA,IACX;AAAA,IAEC,oCAAC,oBAAiB,WAAU,oBAAmB;AAAA,EACjD,GACA,oCAAC,SAAI,WAAU,oBACb;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAW;AAAA;AAAA,IAEX,oCAAC,iBAAc,WAAU,UAAS;AAAA,EACpC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAW;AAAA;AAAA,IAEX,oCAAC,kBAAe,WAAU,UAAS;AAAA,EACrC,CACF,CACF,CACF,GAEC,OAAO,UAAU,KAChB;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,WAAU;AAAA;AAAA,EACZ,GAGD,OAAO,UAAU,KAChB,oCAAC,SAAI,KAAK,UAAU,WAAU,uCAC5B;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,MACF;AAAA;AAAA,IAEC,OAAO,IAAI,CAAC,UACX;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX;AAAA,QACA,uBAAuB,MAAM;AAAA;AAAA,IAC/B,CACD;AAAA,EACH,CACF,CAEJ;AAEJ;;;AI7GA,eAAsB,OAAO,OAAmB;AAC9C,QAAM,oBAAoB;AAE1B,SAAO,oCAAC,iBAAe,GAAG,OAAO;AACnC;;;ACRO,SAAS,UAAU,OAAuB;AATjD;AAUE,QAAM,QAAQ,gBAAgB;AAC9B,WAAO,WAAM,SAAN,mBAAY,YAAW,kBAC1B,MAAM,WACL,MAAM,YAAY;AACzB;;;ACZA,IAAAC,iBAAuB;AACvB,IAAAC,gBAAuC;AAEvC,IAAAC,mBAA2B;;;ACH3B,IAAAC,iBAAiC;AACjC,IAAAC,eAA4B;AAC5B,IAAAD,iBAAyB;AACzB,IAAAE,0BAAoC;AACpC,IAAAD,eAAkB;AAClB,IAAAE,kBAA2B;;;ACP3B,IAAAC,oBAA4B;AAC5B,IAAAC,iBAAiD;AA6C1C,SAAS,YAAY,MAA8C;AACxE;AAEA,QAAM,OAAM,6BAAM,QAAO;AACzB,QAAM,OAAM,6BAAM,QAAO;AACzB,QAAM,YAAW,6BAAM,aAAY;AACnC,QAAM,YAAW,6BAAM,aAAY;AACnC,QAAM,cAAa,6BAAM,eAAc;AACvC,QAAM,cAAa,6BAAM,eAAc;AAEvC,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,KAAK;AAC1C,QAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAC5C,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAS,GAAG;AAC9C,QAAM,CAAC,YAAY,aAAa,QAAI,yBAAS,KAAK;AAElD,QAAM,YAAQ,4BAAY,MAAM;AAE9B,QAAI,QAAQ;AACV,gBAAU,KAAK;AACf;AAAA,IACF;AAGA,QAAI,SAAS;AAEX,UAAI,YAAY;AACd,kBAAU,IAAI;AAAA,MAChB;AAEA;AAAA,IACF;AAEA,eAAW,IAAI;AACf,iBAAa,MAAM,CAAC;AAAA,EACtB,GAAG,CAAC,YAAY,SAAS,KAAK,MAAM,CAAC;AAErC,WAAS,OAAO;AACd,cAAU,KAAK;AACf,eAAW,KAAK;AAChB,iBAAa,GAAG;AAAA,EAClB;AAEA,WAAS,UAAU;AACjB,SAAK;AACL,UAAM;AAAA,EACR;AAEA,gCAAU,MAAM;AACd,QAAI;AAEJ,QAAI,WAAW,CAAC,QAAQ;AACtB,cAAQ,YAAY,MAAM;AACxB,qBAAa,UAAM,yBAAM,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;AAElD,YAAI,aAAa,KAAK;AACpB,wBAAc,KAAK;AACnB,uBAAa,GAAG;AAChB,qBAAW,KAAK;AAChB,qBAAW;AAAA,QACb;AAAA,MACF,GAAG,WAAW,GAAG;AAAA,IACnB;AAEA,WAAO,MAAM;AACX,UAAI,OAAO;AACT,sBAAc,KAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF,CAAC;AAED,gCAAU,MAAM;AACd,QAAI,QAAS;AACb,QAAI,WAAY;AAChB,QAAI,CAAC,SAAU;AACf,UAAM;AACN,kBAAc,IAAI;AAAA,EACpB,GAAG,CAAC,YAAY,UAAU,SAAS,KAAK,CAAC;AAEzC,gCAAU,MAAM;AACd,WAAO,MAAM;AACX,iBAAW,KAAK;AAChB,gBAAU,KAAK;AACf,mBAAa,GAAG;AAChB,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAER,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,MAAM,GAAW;AACxB,SAAO,KAAK,OAAO,IAAI,OAAO,WAAW,GAAG,IAAI;AAClD;;;AC/IO,SAAS,wBAAwB;AACtC,QAAM,aAAa,cAAc;AAajC,QAAMC,UAAS,CAAC,UAAkB;AAChC,QAAI,MAAM,WAAW,WAAW,aAAa,QAAQ,GAAG;AACtD,aAAO;AAAA,IACT;AAEA,QAAI,MAAM,WAAW,GAAG,GAAG;AACzB,aAAO,WAAW,aAAa,WAAW,MAAM,UAAU,CAAC;AAAA,IAC7D;AAEA,QAAI,MAAM,WAAW,WAAW,aAAa,SAAS,UAAU,CAAC,CAAC,GAAG;AACnE,aAAO,MAAM;AAAA,IACf;AAEA,WAAO,WAAW,aAAa,WAAW;AAAA,EAC5C;AAaA,QAAM,QAAQ,CAAC,UAAkB;AAC/B,UAAM,eAAeA,QAAO,KAAK,EAAE,QAAQ,WAAW,aAAa,UAAU,EAAE;AAE/E,WAAO;AAAA,MACL;AAAA,MACA,UAAU,WAAW,aAAa;AAAA,IACpC;AAAA,EACF;AAYA,QAAM,WAAW,CAAC,UAAoC;AACpD,WAAO,OAAO,UAAU,YAAY,WAAW,aAAa,QAAQ,KAAK,KAAK;AAAA,EAChF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,QAAAA;AAAA,IACA;AAAA,EACF;AACF;;;ACvEA,IAAAC,2BAGO;AACP,IAAAC,uBAA4B;;;ACFrB,IAAM,qCAAqC,MAAmB;AAAA,EACnE;AACF;;;ADKO,IAAM,kCAGT,CAAC,WAAW;AACd,aAAO,kCAAY;AAAA,IACjB,GAAG;AAAA,IACH,aAAa,mCAAmC;AAAA,IAChD,YAAY,OAAO,UAAU;AAC3B,gBAAM,+CAAqB,OAAO;AAAA,QAChC,aAAa;AAAA,QACb,SAAS;AAAA,UACP,iBAAiB;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AExBA,IAAAC,uBAA4B;;;ACK5B,eAAsB,OACpB,OAC+B;AAC/B,QAAM,MAAM,MAAM,MAAM,iBAAiB;AAAA,IACvC,MAAM,KAAK,UAAU,KAAK;AAAA,IAC1B,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,GAAI,oBAAoB;AAAA,QACtB,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,OAAQ,MAAM,IAAI,KAAK;AAE7B,MAAI,CAAC,KAAK,IAAI;AACZ,UAAM,QAAQ,IAAI,MAAM;AACxB,UAAM,OAAO;AACb,UAAM,UAAU;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,KAAK,QAAQ;AACtB;;;AC7BO,IAAM,uBAAuB,MAAmB,CAAC,kBAAkB;;;AFMnE,IAAM,oBAAiE,CAAC,WAAW;AACxF,QAAM,cAAc,eAAe;AAEnC,aAAO,kCAAY;AAAA,IACjB,GAAG;AAAA,IACH,aAAa,qBAAqB;AAAA,IAClC,YAAY,OAAO,UAAU;AAC3B,YAAM,gBAAgB,MAAM,OAAO,KAAK;AAExC,UAAI,CAAC,eAAe;AAClB,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,mBAAmB;AAAA,QAC/B,CAAC;AAAA,MACH;AAEA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;;;AGxBO,SAAS,aAAa,OAAqC;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACP,GAAG;AAAA;AAAA,IAEJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACJ;AAAA,EACF;AAEJ;;;ACnBO,SAAS,WAAW,OAAqC;AAC9D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACP,GAAG;AAAA;AAAA,IAEJ;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,GAAE;AAAA;AAAA,IACJ;AAAA,EACF;AAEJ;;;ATZO,SAAS,aAAa;AArB7B;AAsBE,QAAM,CAAC,MAAM,OAAO,QAAI,yBAAgB,CAAC;AAEzC,QAAM,aAAS,iCAAiB;AAChC,QAAM,cAAc,mBAAe,4BAAW,CAAC,WAAW,OAAO,MAAM,CAAC;AACxE,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,+BAA+B,gCAAgC;AAErE,QAAM,aAAa,cAAc;AACjC,QAAM,qBAAqB,sBAAsB;AAEjD,QAAM,kBAAkB,eAAE,OAAO;AAAA,IAC/B,cAAc,eAAE,OAAO,EAAE,YAAY,CAAC,GAAG,QAAQ;AAC/C,UAAI,CAAC,mBAAmB,SAAS,CAAC,GAAG;AACnC,YAAI,SAAS;AAAA,UACX,MAAM,eAAE,aAAa;AAAA,UACrB,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACD,eAAe,eAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,QAAQ;AACjD,UAAI,CAAC,GAAG;AACN,YAAI,SAAS;AAAA,UACX,MAAM,eAAE,aAAa;AAAA,UACrB,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,QAAM,kBAAkB,eAAE,OAAO;AAAA,IAC/B,kBAAkB,eAAE,MAAM,eAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,EACzE,CAAC;AAED,QAAM,gBAAY,iCAAQ;AAAA,IACxB,cAAU,0BAAY,eAAe;AAAA,IACrC,eAAe;AAAA,MACb,cAAc;AAAA,MACd,eAAe;AAAA,IACjB;AAAA,EACF,CAAC;AAED,QAAM,gBAAY,iCAAQ;AAAA,IACxB,cAAU,0BAAY,eAAe;AAAA,IACrC,eAAe;AAAA,MACb,kBAAkB,MAAM,KAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE;AAAA,IAC7D;AAAA,EACF,CAAC;AAED,QAAM,WAAW,YAAY;AAAA,IAC3B,KAAK;AAAA,IACL,UAAU,MAAO;AAAA,EACnB,CAAC;AAED,SACE,0DACG,SAAS,KACR,0DACE,oCAAC,SAAI,WAAU,iBACb,oCAAC,QAAG,WAAU,6CAA0C,wBAExD,GACA,oCAAC,OAAE,WAAU,6CAA0C,0CAEvD,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU,UAAU,aAAa,OAAO,SAAS;AAC/C,YAAI;AACF,gBAAM,6BAA6B,YAAY;AAAA,YAC7C,SAAS;AAAA,YACT,WAAW,mBAAmB,OAAO,KAAK,YAAY;AAAA,YACtD,QAAQ;AAAA,UACV,CAAC;AAED,kBAAQ,CAAC;AACT,mBAAS,MAAM;AAAA,QACjB,SAAS,GAAG;AACV,kBAAQ,MAAM;AAAA,YACZ,aACE,aAAa,QACT,EAAE,UACF;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA;AAAA,IAED,oCAAC,cAAM,MAAN,EAAW,SAAS,CAAC,CAAC,UAAU,UAAU,OAAO,gBAChD,oCAAC,cAAM,OAAN,MAAY,eAAa,GAC1B,oCAAC,SAAI,WAAU,cACb,oCAAC,WAAW,QAAQ,MAAnB,EAAwB,WAAU,8DAA6D,GAChG;AAAA,MAAC,cAAM;AAAA,MAAN;AAAA,QACC,WAAU;AAAA,QACV,aAAa,GAAG,WAAW,aAAa,QAAQ,GAAG,WAAW,aAAa,OAAO;AAAA,QACjF,GAAG,UAAU,SAAS,cAAc;AAAA;AAAA,IACvC,CACF,GACA,oCAAC,cAAM,WAAN,OACE,eAAU,UAAU,OAAO,iBAA3B,mBAAyC,OAC5C,CACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,UAAU,UAAU;AAAA;AAAA,MAC/B;AAAA,IAED;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,UAAU;AAAA,QACnB,MAAK;AAAA,QACL,QAAQ,CAAC,MACP;AAAA,UAAC,iBAAS;AAAA,UAAT;AAAA,YACC,WAAU;AAAA,YACV,SAAS,EAAE,WAAW;AAAA,YACtB,SAAS,EAAE,MAAM;AAAA,YACjB,iBAAiB,CAAC,YAAY;AAC5B,gBAAE,MAAM,SAAS,QAAQ,OAAO;AAAA,YAClC;AAAA;AAAA,UAEA,oCAAC,iBAAS,SAAT,MACC,oCAAC,iBAAS,WAAT,EAAmB,SAAO,QACzB,oCAAC,eAAU,CACb,CACF;AAAA,UACA,oCAAC,iBAAS,OAAT,MAAe,wUAQhB;AAAA,UACA,oCAAC,iBAAS,aAAT,IAAqB;AAAA,QACxB;AAAA;AAAA,IAEJ;AAAA,EACF,GAEA,oCAAC,SAAI,WAAU,+BACb,oCAAC,QAAG,WAAU,yDAAwD,GACtE,oCAAC,UAAK,WAAU,6EAA0E,IAE1F,CACF,GAEA,oCAAC,SAAI,WAAU,UACb;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,SAAS,MAAM;AACb,eAAO,QAAQ,KAAK;AAAA,MACtB;AAAA;AAAA,IAEA,oCAAC,cAAW,WAAU,UAAS;AAAA,IAAE;AAAA,EAEnC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,SAAS,MAAM;AACb,eAAO,QAAQ,KAAK;AAAA,MACtB;AAAA;AAAA,IAEA,oCAAC,gBAAa,WAAU,UAAS;AAAA,IAAE;AAAA,EAErC,CACF,CACF,GACA,oCAAC,SAAI,WAAU,4DACb,oCAAC,UAAK,WAAU,mBAAgB,wBAA2B,GAC3D;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAS,MAAM;AACb,eAAO,QAAQ,KAAK;AACpB,oBAAY,QAAQ,IAAI;AAAA,MAC1B;AAAA;AAAA,IACD;AAAA,EAED,CACF,CACF,GAGD,SAAS,KACR,oCAAC,SAAI,WAAU,iBACb,oCAAC,QAAG,WAAU,6CAA0C,kBAExD,GACA,oCAAC,OAAE,WAAU,6CAA0C,6DACM,KAC3D,oCAAC,UAAK,WAAU,mBACb,mBAAmB,OAAO,UAAU,UAAU,cAAc,CAAC,CAChE,GAAQ,KAAI,UAEd,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU,UAAU,aAAa,OAAO,EAAE,iBAAiB,MAAM;AAC/D,cAAM,EAAE,aAAa,IAAI,UAAU,UAAU;AAE7C,YAAI;AACF,gBAAM,eAAe,YAAY;AAAA,YAC/B,MAAM;AAAA,YACN,cAAc,mBAAmB,OAAO,YAAY;AAAA,YACpD,kBAAkB,iBAAiB,KAAK,EAAE;AAAA,UAC5C,CAAC;AAED,iBAAO,QAAQ,KAAK;AACpB,oBAAU,MAAM;AAChB,oBAAU,MAAM;AAChB,kBAAQ,CAAC;AAAA,QACX,QAAQ;AACN,kBAAQ,MAAM;AAAA,YACZ,aAAa;AAAA,UACf,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA;AAAA,IAED;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,UAAU;AAAA,QACnB,QAAQ,CAAC,MACP;AAAA,UAAC,iBAAS;AAAA,UAAT;AAAA,YACC,aAAY;AAAA,YACZ,SAAS,EAAE,WAAW;AAAA,YACtB,OAAO,EAAE,MAAM;AAAA,YACf,eAAe,CAAC,YAAY;AAC1B,gBAAE,MAAM,SAAS,QAAQ,KAAK;AAAA,YAChC;AAAA;AAAA,UAEA,oCAAC,iBAAS,SAAT,MACC,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,CAC5B;AAAA,UACA,oCAAC,iBAAS,aAAT,IAAqB;AAAA,QACxB;AAAA;AAAA,IAEJ;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,UAAU,UAAU;AAAA;AAAA,MAC/B;AAAA,IAED;AAAA,IAEA,oCAAC,SAAI,WAAU,iEACb,oCAAC,UAAK,WAAU,mBAAgB,0BAEhC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,SAAS;AAAA,QACnB,SAAS,YAAY;AACnB,gBAAM,6BAA6B,YAAY;AAAA,YAC7C,SAAS;AAAA,YACT,WAAW,mBAAmB;AAAA,cAC5B,UAAU,UAAU,cAAc;AAAA,YACpC;AAAA,UACF,CAAC;AAED,mBAAS,MAAM;AAAA,QACjB;AAAA;AAAA,MAEC,SAAS,UACN,aAAa,SAAS,SAAS,MAC/B;AAAA,IACN,CACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS,MAAM;AACb,kBAAQ,CAAC;AACT,oBAAU,MAAM;AAChB,mBAAS,KAAK;AAAA,QAChB;AAAA;AAAA,MAEA,oCAAC,iBAAc,WAAU,UAAS;AAAA,MAAE;AAAA,IAEtC;AAAA,EACF,CACF,CAEJ;AAEJ;;;ADjTO,SAAS,OAAO,OAAoB;AACzC,QAAM,cAAc,mBAAe,6BAAW,CAAC,WAAW,OAAO,MAAM,CAAC;AAExE,SACE;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAM,YAAY;AAAA,MAClB,cAAc,CAAC,YAAY;AACzB,oBAAY,QAAQ,QAAQ,IAAI;AAAA,MAClC;AAAA,MACA,WAAS;AAAA,MACT,eAAa;AAAA,MACb,eAAe;AAAA,MACf,wBAAwB;AAAA;AAAA,IAExB,oCAAC,eAAO,SAAP,EAAe,SAAO,QACpB,MAAM,YACL,oCAAC,YAAO,MAAK,UAAS,WAAU,0BAAuB,OAEvD,CAEJ;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,UAAP,IAAgB,GACjB,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,EAAe,WAAU,+DACxB;AAAA,MAAC,cAAAC;AAAA,MAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA;AAAA,IACZ,GAEA,oCAAC,SAAI,WAAU,wGACb,oCAAC,eAAO,cAAP,MACC,oCAAC,WAAM,CACT,GAEA;AAAA,MAAC,cAAAA;AAAA,MAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,WAAW;AAAA;AAAA,IACb,GAEA,oCAAC,gBAAW,CACd,CACF,CACF,CACF;AAAA,EACF;AAEJ;;;AWrEA,IAAAC,iBAAuB;AACvB,IAAAC,iBAAuC;AAEvC,IAAAC,mBAA2B;;;ACH3B,IAAAC,iBAAiC;AACjC,IAAAC,eAA4B;AAC5B,IAAAC,oBAAqC;AACrC,IAAAC,qBAAgC;AAChC,IAAAH,iBAAyB;AACzB,IAAAI,0BAAoC;AACpC,IAAAH,eAAkB;AAClB,IAAAI,mBAA2B;;;ACT3B,IAAAC,2BAGO;AACP,IAAAC,uBAA4B;;;ACFrB,IAAM,uBAAuB,MAAmB,CAAC,kBAAkB;;;ADUnE,IAAM,oBAAyD,CACpE,WACG;AACH,aAAO,kCAAY;AAAA,IACjB,GAAG;AAAA,IACH,aAAa,qBAAqB;AAAA,IAClC,YAAY,OAAO,UAAU;AAC3B,aAAO,UAAM,yDAA+B,OAAO;AAAA,QACjD,SAAS;AAAA,UACP,aAAa;AAAA,UACb,iBAAiB;AAAA,UACjB,GAAI,oBAAoB;AAAA,YACtB,aAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;ADRO,SAAS,aAAa;AAtB7B;AAuBE,QAAM,CAAC,MAAM,OAAO,QAAI,yBAAgB,CAAC;AAEzC,QAAM,aAAS,iCAAiB;AAChC,QAAM,aAAS,oCAAgB;AAC/B,QAAM,cAAc,mBAAe,6BAAW,CAAC,WAAW,OAAO,MAAM,CAAC;AACxE,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,+BAA+B,gCAAgC;AAErE,QAAM,aAAa,cAAc;AACjC,QAAM,qBAAqB,sBAAsB;AAEjD,QAAM,kBAAkB,eAAE,OAAO;AAAA,IAC/B,cAAc,eAAE,OAAO,EAAE,YAAY,CAAC,GAAG,QAAQ;AAC/C,UAAI,CAAC,mBAAmB,SAAS,CAAC,GAAG;AACnC,YAAI,SAAS;AAAA,UACX,MAAM,eAAE,aAAa;AAAA,UACrB,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACD,eAAe,eAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,QAAQ;AACjD,UAAI,CAAC,GAAG;AACN,YAAI,SAAS;AAAA,UACX,MAAM,eAAE,aAAa;AAAA,UACrB,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,QAAM,kBAAkB,eAAE,OAAO;AAAA,IAC/B,kBAAkB,eAAE,MAAM,eAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,EACzE,CAAC;AAED,QAAM,gBAAY,iCAAQ;AAAA,IACxB,cAAU,0BAAY,eAAe;AAAA,IACrC,eAAe;AAAA,MACb,cAAc;AAAA,MACd,eAAe;AAAA,IACjB;AAAA,EACF,CAAC;AAED,QAAM,gBAAY,iCAAQ;AAAA,IACxB,cAAU,0BAAY,eAAe;AAAA,IACrC,eAAe;AAAA,MACb,kBAAkB,MAAM,KAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE;AAAA,IAC7D;AAAA,EACF,CAAC;AAED,QAAM,WAAW,YAAY;AAAA,IAC3B,KAAK;AAAA,IACL,UAAU,MAAO;AAAA,EACnB,CAAC;AAED,SACE,0DACG,SAAS,KACR,0DACE,oCAAC,SAAI,WAAU,iBACb,oCAAC,QAAG,WAAU,6CAA0C,mBAExD,GACA,oCAAC,OAAE,WAAU,6CAA0C,uCAEvD,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU,UAAU,aAAa,OAAO,SAAS;AAC/C,YAAI;AACF,gBAAM,6BAA6B,YAAY;AAAA,YAC7C,SAAS;AAAA,YACT,WAAW,mBAAmB,OAAO,KAAK,YAAY;AAAA,UACxD,CAAC;AAED,kBAAQ,CAAC;AACT,mBAAS,MAAM;AAAA,QACjB,SAAS,GAAG;AACV,kBAAQ,MAAM;AAAA,YACZ,aACE,aAAa,QACT,EAAE,UACF;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA;AAAA,IAED,oCAAC,cAAM,MAAN,EAAW,SAAS,CAAC,CAAC,UAAU,UAAU,OAAO,gBAChD,oCAAC,cAAM,OAAN,MAAY,eAAa,GAC1B,oCAAC,SAAI,WAAU,cACb,oCAAC,WAAW,QAAQ,MAAnB,EAAwB,WAAU,8DAA6D,GAChG;AAAA,MAAC,cAAM;AAAA,MAAN;AAAA,QACC,WAAU;AAAA,QACT,GAAG,UAAU,SAAS,cAAc;AAAA;AAAA,IACvC,CACF,GACA,oCAAC,cAAM,WAAN,OACE,eAAU,UAAU,OAAO,iBAA3B,mBAAyC,OAC5C,CACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,UAAU,UAAU;AAAA;AAAA,MAC/B;AAAA,IAED;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,UAAU;AAAA,QACnB,MAAK;AAAA,QACL,QAAQ,CAAC,MACP;AAAA,UAAC,iBAAS;AAAA,UAAT;AAAA,YACC,WAAU;AAAA,YACV,SAAS,EAAE,WAAW;AAAA,YACtB,SAAS,EAAE,MAAM;AAAA,YACjB,iBAAiB,CAAC,YAAY;AAC5B,gBAAE,MAAM,SAAS,QAAQ,OAAO;AAAA,YAClC;AAAA;AAAA,UAEA,oCAAC,iBAAS,SAAT,MACC,oCAAC,iBAAS,WAAT,EAAmB,SAAO,QACzB,oCAAC,eAAU,CACb,CACF;AAAA,UACA,oCAAC,iBAAS,OAAT,MAAe,wUAQhB;AAAA,UACA,oCAAC,iBAAS,aAAT,IAAqB;AAAA,QACxB;AAAA;AAAA,IAEJ;AAAA,EACF,CACF,GAEA,oCAAC,SAAI,WAAU,4DACb,oCAAC,UAAK,WAAU,mBAAgB,wBAA2B,GAC3D;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAS,MAAM;AACb,eAAO,QAAQ,KAAK;AACpB,oBAAY,QAAQ,IAAI;AAAA,MAC1B;AAAA;AAAA,IACD;AAAA,EAED,CACF,CACF,GAGD,SAAS,KACR,oCAAC,SAAI,WAAU,iBACb,oCAAC,QAAG,WAAU,6CAA0C,kBAExD,GACA,oCAAC,OAAE,WAAU,6CAA0C,6DACM,KAC3D,oCAAC,UAAK,WAAU,mBACb,mBAAmB,OAAO,UAAU,UAAU,cAAc,CAAC,CAChE,GAAQ,KAAI,UAEd,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU,UAAU,aAAa,OAAO,EAAE,iBAAiB,MAAM;AAC/D,cAAM,KAAK,2BAAS,SAAS,6BAAW,aAAa,EAAE,SAAS;AAChE,cAAM,EAAE,aAAa,IAAI,UAAU,UAAU;AAE7C,YAAI;AACF,gBAAM,eAAe,YAAY;AAAA,YAC/B;AAAA,YACA,cAAc,mBAAmB,OAAO,YAAY;AAAA,YACpD,kBAAkB,iBAAiB,KAAK,EAAE;AAAA,YAC1C,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,YAC5C,QAAQ,OAAO,IAAI,QAAQ,KAAK;AAAA,YAChC,MAAM,OAAO,IAAI,MAAM,KAAK;AAAA,UAC9B,CAAC;AAED,gBAAM,OAAO,mBAAmB,OAAO,YAAY;AACnD,gBAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AAE7B,cAAI;AACF,kBAAM,eAAe,YAAY;AAAA,cAC/B,MAAM;AAAA,cACN,MAAM,mBAAmB,OAAO,YAAY;AAAA,cAC5C;AAAA,YACF,CAAC;AAAA,UACH,QAAQ;AACN,wBAAY,QAAQ,IAAI;AAAA,UAC1B;AAEA,iBAAO,QAAQ,KAAK;AACpB,oBAAU,MAAM;AAChB,oBAAU,MAAM;AAChB,kBAAQ,CAAC;AAAA,QACX,QAAQ;AACN,kBAAQ,MAAM;AAAA,YACZ,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA;AAAA,IAED;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,UAAU;AAAA,QACnB,QAAQ,CAAC,MACP;AAAA,UAAC,iBAAS;AAAA,UAAT;AAAA,YACC,aAAY;AAAA,YACZ,SAAS,EAAE,WAAW;AAAA,YACtB,OAAO,EAAE,MAAM;AAAA,YACf,eAAe,CAAC,YAAY;AAC1B,gBAAE,MAAM,SAAS,QAAQ,KAAK;AAAA,YAChC;AAAA;AAAA,UAEA,oCAAC,iBAAS,SAAT,MACC,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,GAC1B,oCAAC,iBAAS,OAAT,EAAe,OAAO,GAAG,CAC5B;AAAA,UACA,oCAAC,iBAAS,aAAT,IAAqB;AAAA,QACxB;AAAA;AAAA,IAEJ;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,UAAU,UAAU;AAAA;AAAA,MAC/B;AAAA,IAED;AAAA,IAEA,oCAAC,SAAI,WAAU,iEACb,oCAAC,UAAK,WAAU,mBAAgB,0BAEhC,GACA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,UAAU,SAAS;AAAA,QACnB,SAAS,YAAY;AACnB,gBAAM,6BAA6B,YAAY;AAAA,YAC7C,SAAS;AAAA,YACT,WAAW,mBAAmB;AAAA,cAC5B,UAAU,UAAU,cAAc;AAAA,YACpC;AAAA,UACF,CAAC;AAED,mBAAS,MAAM;AAAA,QACjB;AAAA;AAAA,MAEC,SAAS,UACN,aAAa,SAAS,SAAS,MAC/B;AAAA,IACN,CACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS,MAAM;AACb,kBAAQ,CAAC;AACT,oBAAU,MAAM;AAChB,mBAAS,KAAK;AAAA,QAChB;AAAA;AAAA,MAEA,oCAAC,iBAAc,WAAU,UAAS;AAAA,MAAE;AAAA,IAEtC;AAAA,EACF,CACF,CAEJ;AAEJ;;;ADrSO,SAAS,OAAO,OAAoB;AACzC,QAAM,cAAc,mBAAe,6BAAW,CAAC,WAAW,OAAO,MAAM,CAAC;AAExE,SACE;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAM,YAAY;AAAA,MAClB,cAAc,CAAC,YAAY;AACzB,oBAAY,QAAQ,QAAQ,IAAI;AAAA,MAClC;AAAA,MACA,WAAS;AAAA,MACT,eAAa;AAAA,MACb,eAAe;AAAA,MACf,wBAAwB;AAAA;AAAA,IAExB,oCAAC,eAAO,SAAP,EAAe,SAAO,QACpB,MAAM,YAAY,oCAAC,cAAO,SAAO,CACpC;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,UAAP,IAAgB,GACjB,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,EAAe,WAAU,+DACxB;AAAA,MAAC,eAAAC;AAAA,MAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA;AAAA,IACZ,GAEA,oCAAC,SAAI,WAAU,wGACb,oCAAC,eAAO,cAAP,MACC,oCAAC,WAAM,CACT,GAEA;AAAA,MAAC,eAAAA;AAAA,MAAA;AAAA,QACC,KAAK,MAAM;AAAA,QACX,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA,QACV,WAAW;AAAA;AAAA,IACb,GAEA,oCAAC,gBAAW,CACd,CACF,CACF,CACF;AAAA,EACF;AAEJ;;;AIjEA,IAAAC,+BAA6B;AAC7B,IAAAC,iBAAkB;;;ACHlB,IAAAC,2BAAwC;AACxC,IAAAC,uBAAyB;;;ACClB,IAAM,qBAAqB,MAAgB,CAAC,iBAAiB;;;ADI7D,IAAM,kBAAmC,CAAC,WAAW;AAC1D,aAAO,+BAAS;AAAA,IACd,GAAG;AAAA,IACH,UAAU,mBAAmB;AAAA,IAC7B,SAAS,YAAY;AACnB,aAAO,UAAM,qCAAW;AAAA,QACtB,SAAS;AAAA,UACP,iBAAiB;AAAA,QACnB;AAAA,QACA,aAAa;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AEhBA,IAAM,UAAU;AAChB,IAAM,SACJ,gBAAgB,gBACZ,+CACA;AAcC,SAAS,gBAAgC,MAAS;AACvD,QAAM,KAAK,KAAK,MAAM,KAAK;AAC3B,SAAO,GAAG,MAAM,IAAI,KAAK,SAAS,kBAAkB,CAAC,cAAc,EAAE,iBAAiB,OAAO;AAC/F;;;AHdO,SAAS,eAAe,OAAqB;AAClD,QAAM,aAAa,cAAc;AACjC,QAAM,eAAe,gBAAgB;AACrC,QAAM,UAAU,aAAa,QAAQ,CAAC;AAEtC,QAAM,CAAC,QAAQ,QAAI,6BAAAC,SAAiB;AAAA,IAClC,OAAO;AAAA,IACP,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,EAAC,mCAAS,QAAQ,QAAO;AAE7B,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,SAAI,WAAU,sDACZ,MAAM,OACT,GAEA,oCAAC,SAAI,KAAK,UAAU,WAAU,iCAC5B,oCAAC,SAAI,WAAU,2BACZ,QAAQ,IAAI,CAAC,WACZ;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,OAAO;AAAA,MACZ,WAAU;AAAA;AAAA,IAEV,oCAAC,SAAI,WAAU,kCACZ,OAAO,QACN;AAAA,MAAC,eAAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK,gBAAgB,OAAO,IAAI;AAAA,QAChC,KAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ,CAEJ;AAAA,IAEA,oCAAC,SAAI,WAAU,iBACb,oCAAC,SAAI,WAAU,2BACZ,OAAO,OAAO,IACjB,GACA,oCAAC,SAAI,WAAU,yCACZ,aAAa,OAAO,QAAQ;AAAA,MAC3B,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,IACpB,CAAC,CACH,GACA,oCAAC,SAAI,WAAU,2BACZ,aAAa,OAAO,YAAY;AAAA,MAC/B,kBAAkB;AAAA,IACpB,CAAC,CACH,CACF;AAAA,EACF,CACD,CACH,CACF,CACF;AAEJ;;;AI9DA,eAAsB,QAAQ,OAAqB;AAGjD,SAAO,oCAAC,kBAAgB,GAAG,OAAO;AACpC;;;ACTA,IAAAC,+BAA6B;AAC7B,IAAAC,eAAiB;AACjB,IAAAC,iBAAiD;;;ACJjD,IAAAC,2BAKO;AACP,IAAAC,uBAAiC;;;ACH1B,IAAM,yBAAyB,CAAC,UAAuC;AAAA,EAC5E;AAAA,EACA;AACF;;;ADKO,IAAM,sBAGT,CAAC,OAAO,WAAW;AACrB,QAAM,YAAQ,uCAAiB;AAAA,IAC7B,GAAG;AAAA,IACH,UAAU,uBAAuB,KAAK;AAAA,IACtC,SAAS,CAAC,EAAE,WAAW,OAAO,MAAM;AAClC,iBAAO;AAAA,QACL,EAAE,GAAG,OAAO,OAAO,UAAU;AAAA,QAC7B;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB,UAAU;AA/B/B;AAgCM,WAAI,0CAAU,aAAV,mBAAoB,aAAa;AACnC,gBAAO,0CAAU,aAAV,mBAAoB;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AEpCA,IAAAC,oBAA+B;AAC/B,IAAAC,iBAAkB;AAClB,IAAAC,iBAAoD;AACpD,IAAAC,0BAAwB;;;ACJjB,SAAS,YAAY,OAAqC;AAC/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACd,GAAG;AAAA;AAAA,IAEJ,oCAAC,UAAK,GAAE,+TAA8T;AAAA,EACxU;AAEJ;A;;;;;;;;;;;ADCO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,GAA4B;AAC1B,QAAM,aAAa,cAAc;AAEjC,QAAM,uBAAmB,2BAAI,uBAAI,WAAW,gBAAgB,MAAM,CAAC;AAEnE,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS;AAAA,IACjD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,EACV,CAAC;AAED,QAAM,4BAAwB;AAAA,IAC5B,MAAM,IAAI,KAAK,WAAW,qBAAqB;AAAA,IAC/C,CAAC,WAAW,qBAAqB;AAAA,EACnC;AAEA,QAAM,yBAAyB,eAAAC,QAAM,YAAY,MAAM;AACrD,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,SAAS,sBAAsB,QAAQ,IAAI,IAAI,QAAQ;AAE7D,QAAI,UAAU,GAAG;AACf,uBAAiB,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,KAAK,CAAC;AAChE;AAAA,IACF;AAEA,UAAM,cAAc,KAAK,MAAM,SAAS,GAAI;AAE5C,UAAM,OAAO,KAAK,MAAM,eAAe,OAAO,GAAG;AACjD,UAAM,QAAQ,KAAK,MAAO,eAAe,OAAO,MAAO,IAAI;AAC3D,UAAM,UAAU,KAAK,MAAO,cAAc,OAAQ,EAAE;AAEpD,UAAM,cAAU,wBAAK,EAAE,MAAM,OAAO,SAAS,QAAQ,MAAM,GAAG;AAAA,MAC5D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,qBAAiB,OAAO;AAAA,EAC1B,GAAG,CAAC,qBAAqB,CAAC;AAE1B,gCAAU,MAAM;AACd,2BAAuB;AACvB,UAAM,WAAW,YAAY,wBAAwB,KAAK,GAAI;AAC9D,WAAO,MAAM,cAAc,QAAQ;AAAA,EACrC,GAAG,CAAC,uBAAuB,sBAAsB,CAAC;AAElD,QAAM,YAAY;AAAA,IAChB,EAAE,OAAO,OAAO,OAAO,cAAc,KAAK;AAAA,IAC1C,EAAE,OAAO,QAAQ,OAAO,cAAc,MAAM;AAAA,IAC5C,EAAE,OAAO,OAAO,OAAO,cAAc,QAAQ;AAAA,EAC/C;AAEA,QAAM,kBAAkB;AAAA,IACtB;AAAA,MACE,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SACE,+BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA;AAAA,IAEA,+BAAAA,QAAA,cAAC,SAAI,WAAU,wCACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,mHACb,+BAAAA,QAAA,cAAC,eAAY,WAAU,YAAW,GAAE,YAEtC,GAEA,+BAAAA,QAAA,cAAC,SAAI,WAAU,gBACZ,UAAU,IAAI,CAAC,MAAM,QACpB,+BAAAA,QAAA,cAAC,eAAAA,QAAM,UAAN,EAAe,KAAK,KAAK,SACxB,+BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,QACF;AAAA;AAAA,MAEA,+BAAAA,QAAA,cAAC,UAAK,WAAU,2BACb,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG,GAAG,CACrC;AAAA,MACA,+BAAAA,QAAA,cAAC,UAAK,WAAU,gBAAc,KAAK,KAAM;AAAA,IAC3C,GAEC,MAAM,UAAU,SAAS,KACxB,+BAAAA,QAAA,cAAC,SAAI,WAAU,qDACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,qCAAoC,GACnD,+BAAAA,QAAA,cAAC,SAAI,WAAU,qCAAoC,CACrD,CAEJ,CACD,CACH,CACF;AAAA,IAEA,+BAAAA,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,mDACb,+BAAAA,QAAA,cAAC,aACC,+BAAAA,QAAA,cAAC,SAAI,WAAU,2BAAyB,WAAW,IAAK,GAExD,+BAAAA,QAAA,cAAC,SAAI,WAAU,6EACZ,aAAa,kBAAkB;AAAA,MAC9B,UAAU,WAAW,SAAS;AAAA,MAC9B,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB,CAAC,CACH,CACF,GAEA,+BAAAA,QAAA,cAAC,SAAI,WAAU,gCAA6B,eAAa,CAC3D,GAEA,+BAAAA,QAAA,cAAC,SAAI,WAAU,2BACb,+BAAAA,QAAA,cAAC,SAAI,WAAU,0BACb,+BAAAA,QAAA;AAAA,MAAC,eAAAC;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK,gBAAgB,QAAQ,CAAC,EAAE;AAAA,QAChC,KAAI;AAAA,QACJ,WAAU;AAAA;AAAA,IACZ,CACF,CACF,CACF;AAAA,EACF;AAEJ;;;AHlJO,SAAS,yBAAyB,OAA+B;AAbxE;AAcE,QAAM,CAAC,UAAU,QAAQ,QAAI,6BAAAC,SAAiB;AAAA,IAC5C,OAAO;AAAA,IACP,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,iBAAa,4BAAY,MAAM;AACnC,QAAI,SAAU,UAAS,WAAW;AAAA,EACpC,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,iBAAa,4BAAY,MAAM;AACnC,QAAI,SAAU,UAAS,WAAW;AAAA,EACpC,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,KAAK;AACxD,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,KAAK;AAExD,QAAM,eAAW,4BAAY,MAAM;AACjC,QAAI,CAAC,SAAU;AACf,qBAAiB,SAAS,cAAc,CAAC;AACzC,qBAAiB,SAAS,cAAc,CAAC;AAAA,EAC3C,GAAG,CAAC,QAAQ,CAAC;AAEb,gCAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACf,aAAS;AACT,aAAS,GAAG,UAAU,QAAQ;AAC9B,aAAS,GAAG,UAAU,QAAQ;AAAA,EAChC,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,QAAM,mBAAmB,oBAAoB;AAAA,IAC3C,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,gBACJ,sBAAiB,SAAjB,mBAAuB,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,UAAS,CAAC;AAErE,MAAI,YAAY,UAAU,EAAG,QAAO;AAEpC,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,SAAI,WAAU,oDACb,oCAAC,SAAI,WAAU,2BAAyB,MAAM,OAAQ,GACtD,oCAAC,SAAI,WAAU,kCACb;AAAA,IAAC,aAAAC;AAAA,IAAA;AAAA,MACC,MAAM,MAAM;AAAA,MACZ,WAAU;AAAA;AAAA,IACX;AAAA,IAEC,oCAAC,oBAAiB,WAAU,oBAAmB;AAAA,EACjD,GAEA,oCAAC,SAAI,WAAU,oBACb;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACT,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,cAAW;AAAA;AAAA,IAEX,oCAAC,iBAAc,WAAU,UAAS;AAAA,EACpC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,MACT,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,cAAW;AAAA;AAAA,IAEX,oCAAC,kBAAe,WAAU,UAAS;AAAA,EACrC,CACF,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,0BAAyB,KAAK,YAC3C,oCAAC,SAAI,WAAU,kBACZ,YAAY,IAAI,CAAC,YAAY,UAC5B;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,WAAW;AAAA,MAChB;AAAA,MACA;AAAA,MACA,WACE,YAAY,SAAS,IACjB,WACA;AAAA;AAAA,EAER,CACD,CACH,CACF,CACF;AAEJ;;;AKzGA,eAAsB,kBAAkB,OAA+B;AAYrE,SAAO,oCAAC,4BAA0B,GAAG,OAAO;AAC9C;;;ACnBA,IAAAC,iBAA6C;AAC7C,IAAAC,aAA+B;AAE/B,IAAAC,mBAA6C;AAC7C,IAAAF,iBAAyB;;;ACNzB,IAAAG,2BAKO;AACP,IAAAC,uBAAiC;AACjC,IAAAC,0BAAsB;;;ACJf,IAAM,4BAA4B,CAAC,UAA0C;AAAA,EAClF;AAAA,EACA;AACF;;;ADUO,IAAM,yBAGT,CAAC,OAAO,WAAW;AAnBvB;AAoBE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,uCAAiB;AAAA,IAC7B,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,0BAA0B,KAAK;AAAA,IACzC,SAAS,OAAO,EAAE,WAAW,OAAO,MAAM;AACxC,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,kCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM;AAAA,QACX,EAAE,GAAG,OAAO,OAAO,UAAU;AAAA,QAC7B;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB,UAAU;AAnD/B,UAAAC,KAAA;AAoDM,WAAIA,MAAA,qCAAU,aAAV,gBAAAA,IAAoB,aAAa;AACnC,gBAAO,0CAAU,aAAV,mBAAoB;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;AE3DA,IAAAC,iBAAwD;AAOxD,IAAAC,mBAAqC;AACrC,IAAAD,iBAAyB;AACzB,IAAAE,eAAkB;AAUlB,IAAMC,iBAAgB,eAAE,KAAK,CAAC,OAAO,SAAS,QAAQ,CAAC,EAAE,MAAM,KAAK;AA4BpE,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,iBAAiB,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAExD,SAAS,aAAa,OAA0B;AArEvD;AAsEE,QAAM,yBAAqB,qCAAqB;AAAA,IAC9C,OAAO,MAAM,mBAAmB,CAAC;AAAA,IACjC,aAAa,CAAC,SAAS;AAAA,IACvB,cAAc,CAAC,SACb,WAAW,MAAM;AAAA,MACf,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC;AAAA,EACL,CAAC;AAED,QAAM,6BAAyB,qCAAqB;AAAA,IAClD,OAAO,MAAM,uBAAuB,CAAC;AAAA,IACrC,aAAa,CAAC,SAAS;AAAA,IACvB,cAAc,CAAC,SACb,WAAW,MAAM;AAAA,MACf,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC;AAAA,EACL,CAAC;AAED,QAAM,8BAA0B,qCAAqB;AAAA,IACnD,OAAO;AAAA,IACP,aAAa,CAAC,SAAS;AAAA,IACvB,cAAc,CAAC,SACb,WAAW,MAAM;AAAA,MACf,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC;AAAA,EACL,CAAC;AAED,QAAM,iCAA6B,qCAAqB;AAAA,IACtD,OAAO;AAAA,IACP,aAAa,CAAC,SAAS;AAAA,IACvB,cAAc,CAAC,SACb,WAAW,MAAM;AAAA,MACf,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC;AAAA,EACL,CAAC;AAED,QAAM,CAAC,KAAK,MAAM,QAAI,yBAAc,KAAK;AAEzC,QAAM,eAAe,CAAC,SAAgB;AA5GxC,QAAAC;AA6GI,UAAM,OAAO;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,KAAAA,MAAA,MAAM,aAAN,gBAAAA,IAAA,YAAiB;AAAA,MACf,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AAEA,QAAM,CAAC,WAAW,YAAY,IAAI,qBAAqB;AAAA,IACrD,QAAO,WAAM,UAAN,mBAAa;AAAA,IACpB,gBAAc,WAAM,iBAAN,mBAAoB,cAAa;AAAA,IAC/C,SAASC,YAAW;AAClB,mBAAa,EAAE,WAAAA,WAAU,CAAC;AAAA,IAC5B;AAAA,EACF,CAAC;AAED,QAAM,CAAC,UAAU,WAAW,IAAI,qBAAqB;AAAA,IACnD,QAAO,WAAM,UAAN,mBAAa;AAAA,IACpB,gBAAc,WAAM,iBAAN,mBAAoB,aAAY;AAAA,IAC9C,SAASC,WAAU;AACjB,mBAAa,EAAE,UAAAA,UAAS,CAAC;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,QAAM,CAAC,cAAc,eAAe,IAAI,qBAAqB;AAAA,IAC3D,QAAO,WAAM,UAAN,mBAAa;AAAA,IACpB,gBAAc,WAAM,iBAAN,mBAAoB,iBAAgB;AAAA,IAClD,SAASC,eAAc;AACrB,mBAAa,EAAE,cAAAA,cAAa,CAAC;AAAA,IAC/B;AAAA,EACF,CAAC;AAED,QAAM,CAAC,eAAe,gBAAgB,IAAI,qBAAqB;AAAA,IAC7D,QAAO,WAAM,UAAN,mBAAa;AAAA,IACpB,gBAAc,WAAM,iBAAN,mBAAoB,kBAAiB;AAAA,IACnD,SAASC,gBAAe;AACtB,mBAAa,EAAE,eAAAA,eAAc,CAAC;AAAA,IAChC;AAAA,EACF,CAAC;AAED,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,qBAAqB;AAAA,IACnE,QAAO,WAAM,UAAN,mBAAa;AAAA,IACpB,gBAAc,WAAM,iBAAN,mBAAoB,qBAAoB;AAAA,IACtD,SAASC,mBAAkB;AACzB,mBAAa,EAAE,kBAAAA,kBAAiB,CAAC;AAAA,IACnC;AAAA,EACF,CAAC;AAED,SACE,oCAAC,SAAI,WAAU,8BACb;AAAA,IAAC,mBAAW;AAAA,IAAX;AAAA,MACC,WAAS;AAAA,MACT,eAAa;AAAA,MACb,OAAO,CAAC,uCAAW,OAAO,uCAAW,GAAG,EACrC,OAAO,OAAO,EACd,IAAI,CAAC,UAAM,0BAAU,CAAC,CAAC;AAAA,MAC1B,eAAe,CAAC,YAAY;AA3KpC,YAAAL,KAAAM;AA4KU,qBAAa;AAAA,UACX,QAAON,MAAA,QAAQ,MAAM,GAAG,CAAC,MAAlB,gBAAAA,IAAqB,OAAO;AAAA,UACnC,MAAKM,MAAA,QAAQ,MAAM,GAAG,CAAC,MAAlB,gBAAAA,IAAqB,OAAO;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,MACA,cAAc,CAAC,YAAY;AACzB,YAAI,QAAQ,KAAM;AAClB,YAAI,UAAW;AACf,eAAO,KAAK;AAAA,MACd;AAAA,MACA,eAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,WAAW;AAAA,MACb;AAAA;AAAA,IAEA;AAAA,MAAC,qBAAa;AAAA,MAAb;AAAA,QACC,OAAO;AAAA,QACP,eAAe,CAAC,YAAY;AAC1B,gBAAM,QAAQP,eAAc,MAAM,QAAQ,KAAK;AAE/C,cAAI,UAAU,SAAS;AACrB,kBAAM,MAAM,oBAAI,KAAK;AAErB,yBAAa;AAAA,cACX,WAAO,6BAAW,GAAG;AAAA,cACrB,SAAK,2BAAS,GAAG;AAAA,YACnB,CAAC;AAAA,UACH,OAAO;AACL,yBAAa,IAAI;AAAA,UACnB;AAEA,iBAAO,KAAK;AAAA,QACd;AAAA;AAAA,MAEA,oCAAC,qBAAa,MAAb,EAAkB,OAAM,SACvB,oCAAC,qBAAa,UAAb,MAAsB,KAAG,GAC1B,oCAAC,qBAAa,aAAb,IAAyB,GAC1B,oCAAC,qBAAa,iBAAb,IAA6B,CAChC;AAAA,MACA,oCAAC,qBAAa,MAAb,EAAkB,OAAM,WACvB,oCAAC,qBAAa,UAAb,MAAsB,OAAK,GAC5B,oCAAC,qBAAa,aAAb,IAAyB,GAC1B,oCAAC,qBAAa,iBAAb,IAA6B,CAChC;AAAA,MAEA,oCAAC,mBAAW,SAAX,MACE,CAAC,QACA;AAAA,QAAC,qBAAa;AAAA,QAAb;AAAA,UACC,OAAM;AAAA,UACN,SAAS,MAAM,IAAI,QAAQ,IAAI;AAAA;AAAA,QAE/B,oCAAC,mBAAW,SAAX,MACC,oCAAC,qBAAa,UAAb,MAAsB,QAAM,GAC7B,oCAAC,qBAAa,aAAb,IAAyB,GAC1B,oCAAC,qBAAa,iBAAb,IAA6B,CAChC;AAAA,MACF,CAEJ;AAAA,MAEA,oCAAC,qBAAa,WAAb,IAAuB;AAAA,IAC1B;AAAA,IACA,oCAAC,6BACC,oCAAC,mBAAW,YAAX,MACC,oCAAC,mBAAW,SAAX,MACC,oCAAC,mBAAW,MAAX,EAAgB,MAAK,SACpB,oCAAC,mBAAW,SAAX,MACE,CAAC,QACA,0DACE,oCAAC,mBAAW,aAAX,MACC,oCAAC,mBAAW,aAAX,MACC,oCAAC,qBAAgB,CACnB,GACA,oCAAC,mBAAW,aAAX,MACC,oCAAC,mBAAW,WAAX,IAAqB,CACxB,GACA,oCAAC,mBAAW,aAAX,MACC,oCAAC,sBAAiB,CACpB,CACF,GACA,oCAAC,mBAAW,OAAX,MACC,oCAAC,mBAAW,WAAX,MACC,oCAAC,mBAAW,UAAX,MACE,IAAI,SAAS,IAAI,CAAC,SAAS,OAC1B,oCAAC,mBAAW,aAAX,EAAuB,KAAK,MAC1B,QAAQ,MAAM,UAAU,GAAG,CAAC,CAC/B,CACD,CACH,CACF,GACA,oCAAC,mBAAW,WAAX,MACE,IAAI,MAAM,IAAI,CAAC,MAAM,OACpB,oCAAC,mBAAW,UAAX,EAAoB,KAAK,MACvB,KAAK,IAAI,CAAC,KAAKQ,QACd,oCAAC,mBAAW,WAAX,EAAqB,KAAKA,KAAI,OAAO,OACpC,oCAAC,mBAAW,kBAAX,MACE,IAAI,GACP,CACF,CACD,CACH,CACD,CACH,CACF,CACF,CAEJ,CACF,CACF,CACF,CACF;AAAA,EACF,GAEA,oCAAC,SAAI,WAAU,QAAO,KAErB,WAAM,mBAAN,mBAAsB,aACrB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,YAAY;AAAA,MACZ,OAAO,WAAW,CAAC,QAAQ,IAAI,CAAC;AAAA,MAChC,eAAe,CAAC,YAAY;AAC1B,cAAM,QAAQ,eACX,KAAM,MAAM,mBAAmB,CAAC,CAAgB,EAChD,UAAU,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE;AAClC,oBAAY,SAAS,IAAI;AAAA,MAC3B;AAAA,MACA,WAAS;AAAA,MACT,cAAY;AAAA;AAAA,IAEZ,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,EAAiB,aAAY,aAAY,GAC1C,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,CACF;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,MACE,mBAAmB,MAAM,IAAI,CAAC,SAC7B,oCAAC,eAAO,MAAP,EAAY,KAAK,MAAM,MAAM,QAC5B,oCAAC,eAAO,UAAP,MACE,WAAW,MAAM;AAAA,MAChB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH,GACA,oCAAC,eAAO,eAAP,EAAqB,SAAO,QAC3B,oCAAC,eAAU,CACb,CACF,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,KAGD,WAAM,mBAAN,mBAAsB,iBACrB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,YAAY;AAAA,MACZ,OAAO,eAAe,CAAC,YAAY,IAAI,CAAC;AAAA,MACxC,eAAe,CAAC,YAAY;AAC1B,cAAM,QAAQ,eACX,KAAM,MAAM,uBAAuB,CAAC,CAAoB,EACxD,UAAU,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE;AAClC,wBAAgB,SAAS,IAAI;AAAA,MAC/B;AAAA,MACA,WAAS;AAAA,MACT,cAAY;AAAA;AAAA,IAEZ,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,EAAiB,aAAY,eAAc,GAC5C,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,CACF;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,MACE,uBAAuB,MAAM,IAAI,CAAC,aACjC,oCAAC,eAAO,MAAP,EAAY,KAAK,UAAU,MAAM,YAChC,oCAAC,eAAO,UAAP,MACE,WAAW,UAAU;AAAA,MACpB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH,GACA,oCAAC,eAAO,eAAP,EAAqB,SAAO,QAC3B,oCAAC,eAAU,CACb,CACF,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,KAGD,WAAM,mBAAN,mBAAsB,kBACrB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,YAAY;AAAA,MACZ,OAAO,gBAAgB,CAAC,aAAa,IAAI,CAAC;AAAA,MAC1C,eAAe,CAAC,YAAY;AAC1B,cAAM,QAAQ,eACX,KAAK,gBAAgB,EACrB,UAAU,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE;AAClC,yBAAiB,SAAS,IAAI;AAAA,MAChC;AAAA,MACA,WAAS;AAAA,MACT,cAAY;AAAA;AAAA,IAEZ,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,EAAiB,aAAY,UAAS,GACvC,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,CACF;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,MACE,2BAA2B,MAAM,IAAI,CAAC,WACrC,oCAAC,eAAO,MAAP,EAAY,KAAK,QAAQ,MAAM,UAC9B,oCAAC,eAAO,UAAP,MACE,WAAW,QAAQ;AAAA,MAClB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH,GACA,oCAAC,eAAO,eAAP,EAAqB,SAAO,QAC3B,oCAAC,eAAU,CACb,CACF,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,KAGD,WAAM,mBAAN,mBAAsB,qBACrB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,YAAY;AAAA,MACZ,OAAO,mBAAmB,CAAC,gBAAgB,IAAI,CAAC;AAAA,MAChD,eAAe,CAAC,YAAY;AAC1B,cAAM,QAAQ,eACX,KAAK,mBAAmB,EACxB,UAAU,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE;AAClC,4BAAoB,SAAS,IAAI;AAAA,MACnC;AAAA,MACA,WAAS;AAAA,MACT,cAAY;AAAA;AAAA,IAEZ,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,EAAiB,aAAY,UAAS,GACvC,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,CACF;AAAA,IACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,MACE,wBAAwB,MAAM,IAAI,CAAC,WAClC,oCAAC,eAAO,MAAP,EAAY,KAAK,QAAQ,MAAM,UAC9B,oCAAC,eAAO,UAAP,MACE,WAAW,QAAQ;AAAA,MAClB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH,GACA,oCAAC,eAAO,eAAP,EAAqB,SAAO,QAC3B,oCAAC,eAAU,CACb,CACF,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,CAEJ;AAEJ;;;AHpbO,SAAS,sBAAsB;AACpC,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAoC;AACtE,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAA+B;AAEzE,QAAM,aAAa,cAAc;AAEjC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,uBAAuB,wBAAwB;AAAA,IACjD,QAAQ;AAAA,MACN,GAAI,iBAAiB;AAAA,QACnB,QAAQ;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,GAAI,aAAa;AAAA,QACf,iBAAiB;AAAA,UACf,GAAI,UAAU,SAAS;AAAA,YACrB,oBAAoB,IAAI;AAAA,kBACtB,6BAAW,UAAU,KAAK;AAAA,cAC1B,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,UACA,GAAI,UAAU,OAAO;AAAA,YACnB,mBAAmB,IAAI;AAAA,kBACrB,2BAAS,UAAU,GAAG;AAAA,cACtB,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB;AAAA,QACd,eAAe;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU,CAAC,UAAU;AACnB,kBAAU;AACV,qBAAa,MAAM,SAAS;AAC5B,yBAAiB,MAAM,aAAa;AAAA,MACtC;AAAA;AAAA,EACF,GAEC,KAAK,UAAU,KACd;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,UAAU,cAAc;AAAA,MAC9B,OAAO,UAAU,kBAAkB;AAAA,MACnC,SACE,UACI,uCACA;AAAA,MAEN,WAAU;AAAA;AAAA,EACZ,GAGD,KAAK,UAAU,KACd,oCAAC,SAAI,WAAU,6CACb,oCAAC,SAAI,WAAU,yEACb,oCAAC,cAAM,MAAN,EAAW,WAAU,cACpB,oCAAC,cAAM,QAAN,MACC,oCAAC,cAAM,KAAN,MACC,oCAAC,cAAM,SAAN,MAAc,aAAW,GAC1B,oCAAC,cAAM,SAAN,MAAc,WAAS,GACxB,oCAAC,cAAM,SAAN,MAAc,gBAAc,GAC7B,oCAAC,cAAM,SAAN,MAAc,gBAAc,GAC7B,oCAAC,cAAM,SAAN,MAAc,iBAAe,GAC9B,oCAAC,cAAM,SAAN,MAAc,iBAAe,GAC9B,oCAAC,cAAM,SAAN,MAAc,cAAY,GAC3B,oCAAC,cAAM,SAAN,MAAc,eAAa,GAC5B,oCAAC,cAAM,SAAN,MAAc,QAAM,CACvB,CACF,GAEA,oCAAC,cAAM,MAAN,MACE,KAAK,IAAI,CAAC,SACT,oCAAC,cAAM,KAAN,EAAU,KAAK,KAAK,MACnB,oCAAC,cAAM,MAAN,MAAY,KAAK,aAAc,GAChC,oCAAC,cAAM,MAAN,MAAY,KAAK,SAAU,GAC5B,oCAAC,cAAM,MAAN,MACE,WAAW,KAAK,MAAM;AAAA,IACrB,WAAW,WAAW,WAAW;AAAA,EACnC,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,QAAQ;AAAA,IACzB,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,WAAW;AAAA,IAC5B,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,KAAK;AAAA,IACtB,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,UACE,yBAAO,KAAK,iBAAiB,sBAAsB;AAAA,IAClD,QAAI,eAAG,WAAW,QAAQ;AAAA,EAC5B,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,OACG,KAAK,WAAW,eAChB,KAAK,WAAW,mBAChB,yBAAO,KAAK,qBAAqB,sBAAsB;AAAA,IACrD,QAAI,eAAG,WAAW,QAAQ;AAAA,EAC5B,CAAC,CACL,GACA,oCAAC,cAAM,MAAN,MACC;AAAA,IAAC,cAAM;AAAA,IAAN;AAAA,MACC,SAAQ;AAAA,MACR,aACE,KAAK,WAAW,YAChB,KAAK,WAAW,cAChB,KAAK,WAAW,cACZ,WACA,KAAK,WAAW,YACd,YACA;AAAA;AAAA,IAGR,oCAAC,cAAM,OAAN,MACE,WAAW,KAAK,QAAQ;AAAA,MACvB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH;AAAA,EACF,CACF,CACF,CACD,CACH,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,wCACb,oCAAC,WAAE,SACK,MAAK,QAAK,UAClB,GACA,oCAAC,SAAI,WAAU,QAAO,GACtB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAK;AAAA,MACL,OAAO,CAAC,SAAS,SAAS,CAAC;AAAA,MAC3B,eAAe,CAAC,YAAY;AAC1B,cAAM,IAAI,SAAS,QAAQ,MAAM,CAAC,CAAC;AACnC,cAAM,IAAI,MAAM,CAAC,IAAI,KAAK;AAE1B,oBAAY,CAAC;AAAA,MACf;AAAA,MACA,YAAYC;AAAA,MACZ,WAAS;AAAA;AAAA,IAET,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,IAAiB,GAClB,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,GACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACEA,oBAAmB,MAAM,IAAI,CAAC,SAC7B,oCAAC,eAAO,MAAP,EAAY,KAAK,MAAM,QACrBA,oBAAmB,cAAc,IAAI,CACxC,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,GACA,oCAAC,aACC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,mBAAgB,WAAU,UAAS;AAAA,EACtC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,oBAAiB,WAAU,UAAS;AAAA,EACvC,CACF,CACF,CACF,CAEJ;AAEJ;AAEA,IAAMA,0BAAqB,qCAAqB;AAAA,EAC9C,OAAO,uBAAuB,OAAO;AAAA,EACrC,aAAa,CAAC,SAAS,KAAK,SAAS;AAAA,EACrC,cAAc,CAAC,SAAS,GAAG,IAAI;AACjC,CAAC;;;AItPD,IAAAC,iBAA6C;AAC7C,IAAAC,aAA+B;AAC/B,IAAAC,mBAA6C;AAC7C,IAAAF,iBAAyB;;;ACLzB,IAAAG,2BAKO;AACP,IAAAC,uBAAiC;AACjC,IAAAC,0BAAsB;;;ACJf,IAAM,gCAAgC,CAAC,UAA8C;AAAA,EAC1F;AAAA,EACA;AACF;;;ADUO,IAAM,6BAGT,CAAC,OAAO,WAAW;AAnBvB;AAoBE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,uCAAiB;AAAA,IAC7B,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,8BAA8B,KAAK;AAAA,IAC7C,SAAS,OAAO,EAAE,WAAW,OAAO,MAAM;AACxC,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,kCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,kCAAAA,SAAU,QAAQ,WAAW,eAAe;AAE5C,iBAAO;AAAA,QACL,EAAE,GAAG,OAAO,OAAO,UAAU;AAAA,QAC7B;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB,UAAU;AArD/B,UAAAC,KAAA;AAsDM,WAAIA,MAAA,qCAAU,aAAV,gBAAAA,IAAoB,aAAa;AACnC,gBAAO,0CAAU,aAAV,mBAAoB;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ADxCO,SAAS,0BAA0B;AACxC,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAoC;AAEtE,QAAM,aAAa,cAAc;AAEjC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,uBAAuB,4BAA4B;AAAA,IACrD,QAAQ;AAAA,MACN,GAAI,aAAa;AAAA,QACf,iBAAiB;AAAA,UACf,GAAI,UAAU,SAAS;AAAA,YACrB,oBAAoB,IAAI;AAAA,kBACtB,6BAAW,UAAU,KAAK;AAAA,cAC1B,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,UACA,GAAI,UAAU,OAAO;AAAA,YACnB,mBAAmB,IAAI;AAAA,kBACrB,2BAAS,UAAU,GAAG;AAAA,cACtB,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL;AAAA,MACF;AAAA,MACA,UAAU,CAAC,UAAU;AACnB,qBAAa,MAAM,SAAS;AAC5B,kBAAU;AAAA,MACZ;AAAA;AAAA,EACF,GAEC,KAAK,UAAU,KACd;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,UAAU,cAAc;AAAA,MAC9B,OAAO,UAAU,kBAAkB;AAAA,MACnC,SACE,UACI,2CACA;AAAA,MAEN,WAAU;AAAA;AAAA,EACZ,GAGD,KAAK,UAAU,KACd,oCAAC,SAAI,WAAU,6CACb,oCAAC,SAAI,WAAU,yEACb,oCAAC,cAAM,MAAN,EAAW,WAAU,cACpB,oCAAC,cAAM,QAAN,MACC,oCAAC,cAAM,KAAN,MACC,oCAAC,cAAM,SAAN,MAAc,kBAAgB,GAC/B,oCAAC,cAAM,SAAN,MAAc,kBAAgB,GAC/B,oCAAC,cAAM,SAAN,MAAc,QAAM,GACrB,oCAAC,cAAM,SAAN,MAAc,iBAAe,GAC9B,oCAAC,cAAM,SAAN,MAAc,kBAAgB,GAC/B,oCAAC,cAAM,SAAN,MAAc,SAAO,CACxB,CACF,GAEA,oCAAC,cAAM,MAAN,MACE,KAAK,IAAI,CAAC,SACT,oCAAC,cAAM,KAAN,EAAU,KAAK,KAAK,MACnB,oCAAC,cAAM,MAAN,MACE,WAAW,KAAK,MAAM;AAAA,IACrB,WAAW,WAAW,WAAW;AAAA,EACnC,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,UACE,yBAAO,KAAK,iBAAiB,sBAAsB;AAAA,IAClD,QAAI,eAAG,WAAW,QAAQ;AAAA,EAC5B,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,QAAQ;AAAA,IACzB,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,gBAAgB;AAAA,IACjC,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MAAY,KAAK,eAAgB,GAClC,oCAAC,cAAM,MAAN,MAAY,KAAK,OAAQ,CAC5B,CACD,CACH,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,wCACb,oCAAC,WAAE,SACK,MAAK,QAAK,UAClB,GACA,oCAAC,SAAI,WAAU,QAAO,GACtB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAK;AAAA,MACL,OAAO,CAAC,SAAS,SAAS,CAAC;AAAA,MAC3B,eAAe,CAAC,YAAY;AAC1B,cAAM,IAAI,SAAS,QAAQ,MAAM,CAAC,CAAC;AACnC,cAAM,IAAI,MAAM,CAAC,IAAI,KAAK;AAE1B,oBAAY,CAAC;AAAA,MACf;AAAA,MACA,YAAYC;AAAA,MACZ,WAAS;AAAA;AAAA,IAET,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,IAAiB,GAClB,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,GACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACEA,oBAAmB,MAAM,IAAI,CAAC,SAC7B,oCAAC,eAAO,MAAP,EAAY,KAAK,MAAM,QACrBA,oBAAmB,cAAc,IAAI,CACxC,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,GACA,oCAAC,aACC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,mBAAgB,WAAU,UAAS;AAAA,EACtC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,oBAAiB,WAAU,UAAS;AAAA,EACvC,CACF,CACF,CACF,CAEJ;AAEJ;AAEA,IAAMA,0BAAqB,qCAAqB;AAAA,EAC9C,OAAO,uBAAuB,OAAO;AAAA,EACrC,aAAa,CAAC,SAAS,KAAK,SAAS;AAAA,EACrC,cAAc,CAAC,SAAS,GAAG,IAAI;AACjC,CAAC;;;AGtMD,IAAAC,iBAA6C;AAC7C,IAAAC,aAA+B;AAE/B,IAAAC,mBAA6C;AAC7C,IAAAF,iBAAyB;;;ACNzB,IAAAG,2BAKO;AACP,IAAAC,uBAAiC;AACjC,IAAAC,0BAAsB;;;ACJf,IAAM,+BAA+B,CAAC,UAA6C;AAAA,EACxF;AAAA,EACA;AACF;;;ADUO,IAAM,4BAGT,CAAC,OAAO,WAAW;AAnBvB;AAoBE,QAAM,cAAc,eAAe;AACnC,QAAM,eAAe,gBAAgB;AAErC,QAAM,YAAQ,uCAAiB;AAAA,IAC7B,GAAG;AAAA,IACH,UACE,iCAAQ,aAAY,QAChB,UACA,kBAAa,SAAb,mBAAmB,YAAW;AAAA,IACpC,UAAU,6BAA6B,KAAK;AAAA,IAC5C,SAAS,OAAO,EAAE,WAAW,OAAO,MAAM;AACxC,YAAM,UAAU,MAAM,YAAY,WAAW;AAAA,QAC3C,UAAU,mBAAmB;AAAA,QAC7B,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC;AAED,kCAAAC,SAAU,QAAQ,WAAW,eAAe;AAE5C,kCAAAA,SAAU,QAAQ,WAAW,eAAe;AAE5C,aAAO,UAAM;AAAA,QACX,EAAE,GAAG,OAAO,OAAO,UAAU;AAAA,QAC7B;AAAA,UACE;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,YACP,iBAAiB;AAAA,YACjB,eAAe,UAAU,QAAQ,KAAK;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB,UAAU;AArD/B,UAAAC,KAAA;AAsDM,WAAIA,MAAA,qCAAU,aAAV,gBAAAA,IAAoB,aAAa;AACnC,gBAAO,0CAAU,aAAV,mBAAoB;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AACT;;;ADvCO,SAAS,yBAAyB;AACvC,QAAM,CAAC,WAAW,YAAY,QAAI,yBAAoC;AACtE,QAAM,CAAC,kBAAkB,mBAAmB,QAC1C,yBAAkC;AAEpC,QAAM,aAAa,cAAc;AAEjC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,uBAAuB,2BAA2B;AAAA,IACpD,QAAQ;AAAA,MACN,GAAI,oBAAoB;AAAA,QACtB,QAAQ;AAAA,UACN,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,GAAI,aAAa;AAAA,QACf,iBAAiB;AAAA,UACf,GAAI,UAAU,SAAS;AAAA,YACrB,oBAAoB,IAAI;AAAA,kBACtB,6BAAW,UAAU,KAAK;AAAA,cAC1B,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,UACA,GAAI,UAAU,OAAO;AAAA,YACnB,mBAAmB,IAAI;AAAA,kBACrB,2BAAS,UAAU,GAAG;AAAA,cACtB,WAAW;AAAA,YACb,EAAE,YAAY;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,0DACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB;AAAA,QACd,kBAAkB;AAAA,MACpB;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,MACA,UAAU,CAAC,UAAU;AACnB,kBAAU;AACV,qBAAa,MAAM,SAAS;AAC5B,4BAAoB,MAAM,gBAAgB;AAAA,MAC5C;AAAA;AAAA,EACF,GAEC,KAAK,UAAU,KACd;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,UAAU,cAAc;AAAA,MAC9B,OAAO,UAAU,kBAAkB;AAAA,MACnC,SACE,UACI,0CACA;AAAA,MAEN,WAAU;AAAA;AAAA,EACZ,GAGD,KAAK,UAAU,KACd,oCAAC,SAAI,WAAU,6CACb,oCAAC,SAAI,WAAU,yEACb,oCAAC,cAAM,MAAN,EAAW,WAAU,cACpB,oCAAC,cAAM,QAAN,MACC,oCAAC,cAAM,KAAN,MACC,oCAAC,cAAM,SAAN,MAAc,gBAAc,GAC7B,oCAAC,cAAM,SAAN,MAAc,WAAS,GACxB,oCAAC,cAAM,SAAN,MAAc,mBAAiB,GAChC,oCAAC,cAAM,SAAN,MAAc,eAAa,GAC5B,oCAAC,cAAM,SAAN,MAAc,mBAAiB,GAChC,oCAAC,cAAM,SAAN,MAAc,YAAU,GACzB,oCAAC,cAAM,SAAN,MAAc,iBAAe,GAC9B,oCAAC,cAAM,SAAN,MAAc,WAAS,GACxB,oCAAC,cAAM,SAAN,MAAc,iBAAe,GAC9B,oCAAC,cAAM,SAAN,MAAc,QAAM,CACvB,CACF,GAEA,oCAAC,cAAM,MAAN,MACE,KAAK,IAAI,CAAC,SACT,oCAAC,cAAM,KAAN,EAAU,KAAK,KAAK,MACnB,oCAAC,cAAM,MAAN,MAAY,KAAK,gBAAiB,GACnC,oCAAC,cAAM,MAAN,MAAY,KAAK,SAAU,GAC5B,oCAAC,cAAM,MAAN,MACE,WAAW,KAAK,MAAM;AAAA,IACrB,WAAW,WAAW,WAAW;AAAA,EACnC,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MAAY,KAAK,qBAAsB,GACxC,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,QAAQ;AAAA,IACzB,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,WAAW;AAAA,IAC5B,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACE,aAAa,KAAK,KAAK;AAAA,IACtB,UAAU,WAAW,SAAS;AAAA,IAC9B,kBAAkB;AAAA,EACpB,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MAAY,KAAK,IAAK,GACvB,oCAAC,cAAM,MAAN,UACE,yBAAO,KAAK,iBAAiB,sBAAsB;AAAA,IAClD,QAAI,eAAG,WAAW,QAAQ;AAAA,EAC5B,CAAC,CACH,GACA,oCAAC,cAAM,MAAN,MACC;AAAA,IAAC,cAAM;AAAA,IAAN;AAAA,MACC,SAAQ;AAAA,MACR,aACE,KAAK,WAAW,YAChB,KAAK,WAAW,cAChB,KAAK,WAAW,cACZ,WACA,KAAK,WAAW,YACd,YACA;AAAA;AAAA,IAGR,oCAAC,cAAM,OAAN,MACE,WAAW,KAAK,QAAQ;AAAA,MACvB,WAAW,WAAW,WAAW;AAAA,IACnC,CAAC,CACH;AAAA,EACF,CACF,CACF,CACD,CACH,CACF,CACF,GAEA,oCAAC,SAAI,WAAU,wCACb,oCAAC,WAAE,SACK,MAAK,QAAK,UAClB,GACA,oCAAC,SAAI,WAAU,QAAO,GACtB;AAAA,IAAC,eAAO;AAAA,IAAP;AAAA,MACC,MAAK;AAAA,MACL,OAAO,CAAC,SAAS,SAAS,CAAC;AAAA,MAC3B,eAAe,CAAC,YAAY;AAC1B,cAAM,IAAI,SAAS,QAAQ,MAAM,CAAC,CAAC;AACnC,cAAM,IAAI,MAAM,CAAC,IAAI,KAAK;AAE1B,oBAAY,CAAC;AAAA,MACf;AAAA,MACA,YAAYC;AAAA,MACZ,WAAS;AAAA;AAAA,IAET,oCAAC,eAAO,SAAP,MACC,oCAAC,eAAO,WAAP,IAAiB,GAClB,oCAAC,eAAO,WAAP,EAAiB,SAAO,QACvB,oCAAC,qBAAgB,CACnB,GACA,oCAAC,6BACC,oCAAC,eAAO,YAAP,MACC,oCAAC,eAAO,SAAP,MACEA,oBAAmB,MAAM,IAAI,CAAC,SAC7B,oCAAC,eAAO,MAAP,EAAY,KAAK,MAAM,QACrBA,oBAAmB,cAAc,IAAI,CACxC,CACD,CACH,CACF,CACF,CACF;AAAA,EACF,GACA,oCAAC,aACC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,mBAAgB,WAAU,UAAS;AAAA,EACtC,GACA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,aAAY;AAAA,MACZ,WAAU;AAAA,MACV,UAAU,CAAC,eAAe;AAAA,MAC1B,SAAS,MAAM,KAAK;AAAA;AAAA,IAEpB,oCAAC,oBAAiB,WAAU,UAAS;AAAA,EACvC,CACF,CACF,CACF,CAEJ;AAEJ;AAEA,IAAMA,0BAAqB,qCAAqB;AAAA,EAC9C,OAAO,uBAAuB,OAAO;AAAA,EACrC,aAAa,CAAC,SAAS,KAAK,SAAS;AAAA,EACrC,cAAc,CAAC,SAAS,GAAG,IAAI;AACjC,CAAC;;;AGzOM,SAAS,mBAAmB,OAAgC;AACjE,SACE,oCAAC,SAAI,WAAW,MAAM,aACpB,oCAAC,QAAG,WAAU,2BAAwB,qBAAmB,GACzD,oCAAC,OAAE,WAAU,iCAA8B,+BAE3C,GAEA;AAAA,IAAC,aAAK;AAAA,IAAL;AAAA,MACC,WAAU;AAAA,MACV,cAAa;AAAA,MACb,WAAS;AAAA,MACT,eAAa;AAAA;AAAA,IAEb,oCAAC,SAAI,WAAU,YACb,oCAAC,aAAK,MAAL,MACC,oCAAC,aAAK,SAAL,EAAa,OAAM,kBAAe,cAAY,GAC/C,oCAAC,aAAK,SAAL,EAAa,OAAM,cAAW,UAAQ,GACvC,oCAAC,aAAK,SAAL,EAAa,OAAM,iBAAc,aAAW,GAC7C,oCAAC,aAAK,WAAL,IAAe,CAClB,CACF;AAAA,IAEA,oCAAC,aAAK,SAAL,EAAa,OAAM,gBAAe,WAAU,YAC3C,oCAAC,6BAAwB,CAC3B;AAAA,IACA,oCAAC,aAAK,SAAL,EAAa,OAAM,YAAW,WAAU,YACvC,oCAAC,yBAAoB,CACvB;AAAA,IACA,oCAAC,aAAK,SAAL,EAAa,OAAM,eAAc,WAAU,YAC1C,oCAAC,4BAAuB,CAC1B;AAAA,EACF,CACF;AAEJ;","names":["import_react","import_react_query","import_react_query","invariant","import_react","import_portal_sdk_core","import_react_query","import_react_query","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","import_react","React","useContext","withRootProvider","withProvider","withContext","import_react","anatomy","styles","Context","Root","import_react","import_react","import_tailwind_variants","withContext","Root","Context","Root","import_react","import_tailwind_variants","withProvider","withContext","Root","import_react","import_tailwind_variants","Context","Indicator","Label","Root","withContext","withProvider","import_react","import_react","import_tailwind_variants","withContext","withProvider","Root","Indicator","Label","Context","import_react","Root","Content","Context","Control","Label","Positioner","Root","Trigger","import_react","import_react","import_tailwind_variants","withProvider","withContext","Root","Content","Control","Label","Positioner","Trigger","Context","Backdrop","Body","CloseTrigger","Content","Context","Description","Footer","Header","Positioner","Root","Title","Trigger","import_react","import_react","import_tailwind_variants","anatomy","withContext","withRootProvider","Root","Backdrop","CloseTrigger","Content","Description","Positioner","Title","Trigger","Header","Body","Footer","Context","Backdrop","Body","CloseTrigger","Content","Context","Description","Footer","Header","Positioner","Root","Title","Trigger","import_react","import_react","import_tailwind_variants","anatomy","withContext","withRootProvider","Root","Backdrop","CloseTrigger","Content","Description","Positioner","Title","Trigger","Header","Body","Footer","Context","Context","Input","Label","Root","import_react","import_react","import_tailwind_variants","withContext","withProvider","Root","Label","Input","Context","import_react","import_tailwind_variants","import_react","Root","Context","Control","Input","Label","Root","import_react","import_react","import_tailwind_variants","withContext","withProvider","Root","Control","Input","Label","Context","Context","Control","HiddenInput","Input","Label","Root","import_react","import_react","import_tailwind_variants","withContext","withProvider","Root","Label","Control","Input","HiddenInput","Context","CloseTrigger","Content","Context","Description","Indicator","Positioner","Root","Title","Trigger","import_react","import_react","import_tailwind_variants","withRootProvider","withContext","Root","CloseTrigger","Content","Description","Indicator","Positioner","Title","Trigger","Context","import_react","Root","Context","Indicator","Label","Root","import_react","import_react","import_tailwind_variants","withProvider","withContext","Root","Indicator","Label","Context","ClearTrigger","Content","Context","Control","Indicator","Item","ItemContext","ItemText","Label","Positioner","Root","Trigger","ValueText","import_react","import_react","import_tailwind_variants","withProvider","withContext","Root","ClearTrigger","Content","Control","Indicator","Item","ItemText","Label","Positioner","Trigger","ValueText","Context","ItemContext","Body","Footer","Header","Root","import_react","import_tailwind_variants","import_anatomy","withProvider","withContext","Root","Header","Body","Footer","Content","Context","Indicator","List","Root","Trigger","import_react","import_react","import_tailwind_variants","withContext","withProvider","Root","Content","Indicator","List","Trigger","Context","import_react","Root","import_zod","Link","import_link","import_react","import_tailwind_merge","useEmblaCarousel","emblaCarouselAutoplay","Image","Link","import_react","import_zod","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","_a","import_react","useQuery","page","prev","prev","next","_a","_b","id","import_react","import_tailwind_merge","import_zod","import_shallow","import_react","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","import_react","import_image","React","import_zod","_a","Image","import_react","import_zod","import_shallow","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","import_portal_sdk_core","import_react_query","import_tiny_invariant","defaultConfig","invariant","session","res","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","import_tailwind_merge","import_react","import_image","import_link","import_tailwind_merge","import_shallow","Image","Link","definition","_a","import_react","import_zod","import_react_hook_form","import_shallow","import_portal_sdk_core","import_object_id","import_react_query","import_tiny_invariant","invariant","session","res","definition","_a","import_react","import_image","import_date_fns","import_lodash_es","import_shallow","Image","import_react","import_tiny_invariant","invariant","import_react","import_react","import_usehooks_ts","import_react","import_image","import_shallow","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","_a","endGameSession","Image","import_react","import_shallow","import_portal_sdk_core","import_object_id","import_react_query","import_tiny_invariant","invariant","session","_a","_b","import_portal_sdk_core","import_embla_carousel_react","import_image","import_link","import_react","import_tailwind_merge","import_portal_sdk_core","import_react_query","useEmblaCarousel","emblaApi","Link","Image","import_embla_carousel_react","import_link","import_react","import_portal_sdk_core","import_react_query","import_react","import_image","import_tailwind_merge","Image","styles","useEmblaCarousel","Link","import_tailwind_merge","Primitive","import_react_query","import_portal_sdk_core","getSession","getSession","import_portal_sdk_core","getSession","import_react","import_react_query","import_tailwind_merge","import_portal_sdk_core","import_embla_carousel_react","import_link","import_react","import_tailwind_merge","import_portal_sdk_core","import_react_query","import_image","import_navigation","import_tailwind_merge","Image","useEmblaCarousel","emblaApi","Link","import_react","import_image","import_shallow","import_react","import_zod","import_react_hook_form","import_shallow","import_lodash_es","import_react","format","import_portal_sdk_core","import_react_query","import_react_query","Image","import_react","import_image","import_shallow","import_react","import_zod","import_object_id","import_navigation","import_react_hook_form","import_shallow","import_portal_sdk_core","import_react_query","Image","import_embla_carousel_react","import_image","import_portal_sdk_core","import_react_query","useEmblaCarousel","Image","import_embla_carousel_react","import_link","import_react","import_portal_sdk_core","import_react_query","import_lodash_es","import_image","import_react","import_tailwind_merge","React","Image","useEmblaCarousel","Link","import_react","import_tz","import_date_fns","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","_a","import_react","import_date_fns","import_zod","TabDefinition","_a","timestamp","gameType","gameProvider","depositStatus","withdrawalStatus","_b","id","pageSizeCollection","import_react","import_tz","import_date_fns","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","_a","pageSizeCollection","import_react","import_tz","import_date_fns","import_portal_sdk_core","import_react_query","import_tiny_invariant","invariant","_a","pageSizeCollection"]}
|